:root {
    color-scheme: dark;
    --bg: #07101d;
    --bg-soft: #0a1525;
    --panel: rgba(14, 27, 46, 0.9);
    --panel-strong: #101e32;
    --panel-soft: rgba(255, 255, 255, 0.04);
    --line: rgba(255, 255, 255, 0.11);
    --line-strong: rgba(255, 255, 255, 0.2);
    --text: #f5f7fb;
    --muted: #91a0b5;
    --accent: #7c5cff;
    --accent-light: #9d86ff;
    --accent-2: #39d6c5;
    --correct: #23b57d;
    --present: #e8a93d;
    --absent: #66758d;
    --danger: #ff6d7d;
    --gold: #f2bd4d;
    --shadow: 0 28px 80px rgba(0, 0, 0, 0.35);
    font-family: Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bg); }
body {
    min-height: 100vh;
    margin: 0;
    overflow-x: hidden;
    color: var(--text);
    background:
        radial-gradient(circle at 50% -10%, rgba(124, 92, 255, 0.22), transparent 34%),
        linear-gradient(180deg, #07101d 0%, #091423 100%);
}
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
button {
    color: inherit;
    -webkit-tap-highlight-color: transparent;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
    touch-action: manipulation;
}
button:focus-visible, a:focus-visible, input:focus-visible {
    outline: 3px solid rgba(57, 214, 197, 0.45);
    outline-offset: 2px;
}
.is-hidden { display: none !important; }
.muted { color: var(--muted); }

.ambient { position: fixed; z-index: -1; border-radius: 50%; filter: blur(90px); pointer-events: none; }
.ambient--one { top: 6%; left: -140px; width: 330px; height: 330px; background: rgba(57, 214, 197, 0.1); }
.ambient--two { right: -130px; bottom: 4%; width: 300px; height: 300px; background: rgba(124, 92, 255, 0.14); }

.site-shell { width: min(100%, 1180px); min-height: 100vh; margin: 0 auto; padding: 0 22px 54px; }
.site-header {
    display: grid;
    grid-template-columns: 220px 1fr 220px;
    align-items: center;
    min-height: 82px;
    border-bottom: 1px solid var(--line);
}
.site-logo { display: inline-flex; flex-direction: column; width: fit-content; }
.site-logo span, .section-kicker {
    color: var(--accent-2);
    font-size: 9px;
    font-weight: 900;
    letter-spacing: .22em;
}
.site-logo strong { margin-top: 2px; font-size: 20px; letter-spacing: -.05em; }
.desktop-nav-shell { display: flex; align-items: center; min-width: 0; gap: 3px; }
.desktop-nav { display: flex; flex: 1 1 auto; min-width: 0; justify-content: center; gap: 7px; }
.desktop-nav-scroll { display: none; flex: 0 0 26px; width: 26px; height: 32px; padding: 0; border: 1px solid var(--line); border-radius: 9px; color: var(--muted); background: rgba(255,255,255,.055); font-size: 20px; font-weight: 900; line-height: 1; cursor: pointer; }
.desktop-nav-shell.has-overflow .desktop-nav-scroll { display: inline-flex; align-items: center; justify-content: center; }
.desktop-nav-scroll:disabled { opacity: .28; cursor: default; }
.desktop-nav a { padding: 10px 14px; border-radius: 12px; color: var(--muted); font-size: 14px; font-weight: 800; }
.desktop-nav a:hover, .desktop-nav a.active { color: #fff; background: rgba(255,255,255,.07); }
.header-user, .guest-actions { display: flex; align-items: center; justify-content: flex-end; gap: 12px; }
.header-user > span { font-size: 13px; font-weight: 800; }
.header-user form { margin: 0; }
.text-button, .text-link { padding: 0; border: 0; color: var(--muted); background: transparent; font-size: 12px; cursor: pointer; }
.mini-primary, .mini-secondary, .mini-danger {
    display: inline-flex; align-items: center; justify-content: center; min-height: 36px; padding: 0 14px;
    border: 1px solid var(--line); border-radius: 11px; font-size: 12px; font-weight: 800; cursor: pointer;
}
.mini-primary { border-color: transparent; background: var(--accent); }
.mini-secondary { background: rgba(255,255,255,.055); }
.mini-danger { color: #ffc0c8; border-color: rgba(255,109,125,.3); background: rgba(255,109,125,.1); }
.page-content { padding-top: 34px; }
.flash { margin: 16px 0 -10px; padding: 13px 16px; border: 1px solid var(--line); border-radius: 14px; font-size: 13px; font-weight: 700; }
.flash--success { color: #aef3d8; background: rgba(35,181,125,.12); border-color: rgba(35,181,125,.3); }
.flash--error { color: #ffc0c8; background: rgba(255,109,125,.12); border-color: rgba(255,109,125,.3); }
.mobile-nav { display: none; }

.primary-button, .secondary-button {
    display: inline-flex; align-items: center; justify-content: center; min-height: 49px; padding: 0 20px;
    border-radius: 14px; border: 1px solid transparent; font-weight: 900; cursor: pointer;
}
.primary-button { color: #fff; background: linear-gradient(135deg, var(--accent), #5d46e8); box-shadow: 0 12px 30px rgba(124,92,255,.25); }
.secondary-button { color: #fff; border-color: var(--line); background: rgba(255,255,255,.055); }
.primary-button:hover, .secondary-button:hover { transform: translateY(-1px); }

.hero { display: grid; grid-template-columns: 1.12fr .88fr; align-items: center; gap: 70px; min-height: 590px; }
.hero__content h1, .dashboard-hero h1, .auth-copy h1 {
    margin: 14px 0 18px; font-size: clamp(40px, 5vw, 68px); line-height: 1.06; letter-spacing: -.065em;
}
.hero__content h1 em { color: var(--accent-light); font-style: normal; }
.hero__content p, .dashboard-hero p, .auth-copy p { max-width: 620px; color: var(--muted); font-size: 17px; line-height: 1.75; }
.hero__actions { display: flex; gap: 10px; margin-top: 30px; }
.hero-board { padding: 34px; border: 1px solid var(--line); border-radius: 32px; background: linear-gradient(145deg, rgba(24,43,70,.92), rgba(9,18,32,.95)); box-shadow: var(--shadow); transform: rotate(2deg); }
.hero-board > div { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 8px; }
.hero-board > strong { display: block; margin-top: 22px; text-align: center; font-size: 34px; letter-spacing: .2em; }
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 60px; }
.feature-card { padding: 26px; border: 1px solid var(--line); border-radius: 22px; background: var(--panel-soft); }
.feature-card b { color: var(--accent-2); font-size: 12px; letter-spacing: .16em; }
.feature-card h3 { margin: 14px 0 8px; font-size: 20px; }
.feature-card p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.7; }

.auth-layout { display: grid; grid-template-columns: 1fr minmax(360px, 440px); align-items: center; gap: 80px; min-height: 660px; }
.auth-copy h1 { font-size: clamp(38px, 4.6vw, 62px); }
.auth-benefits { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.auth-benefits span { padding: 9px 12px; border: 1px solid var(--line); border-radius: 999px; color: #cbd5e4; font-size: 12px; }
.auth-card { padding: 30px; border: 1px solid var(--line); border-radius: 26px; background: rgba(12,24,41,.94); box-shadow: var(--shadow); }
.auth-card h2 { margin: 0 0 5px; font-size: 27px; }
.auth-card > p { margin: 0 0 24px; font-size: 13px; }
.field { display: block; margin-bottom: 16px; }
.field > span { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 800; }
.field input { width: 100%; height: 48px; padding: 0 14px; color: #fff; border: 1px solid var(--line); border-radius: 13px; background: rgba(255,255,255,.045); outline: 0; }
.field input:focus { border-color: var(--accent-2); box-shadow: 0 0 0 3px rgba(57,214,197,.1); }
.field small { display: block; margin-top: 6px; color: var(--muted); font-size: 10px; }
.auth-card .primary-button { width: 100%; margin-top: 5px; }
.auth-switch { margin: 18px 0 0 !important; text-align: center; }
.auth-switch a { color: var(--accent-2); font-weight: 800; }
.form-error { margin-bottom: 18px; padding: 12px 14px; color: #ffc0c8; border: 1px solid rgba(255,109,125,.3); border-radius: 12px; background: rgba(255,109,125,.1); font-size: 12px; }

.dashboard-hero { display: grid; grid-template-columns: minmax(0,1fr) minmax(360px,430px); align-items: end; gap: 34px; padding: 40px 0 30px; }
.dashboard-hero h1 { font-size: clamp(38px, 5vw, 58px); }
.dashboard-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; width: 100%; }
.dashboard-action { display: flex; align-items: center; gap: 11px; min-width: 0; min-height: 72px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 16px; color: var(--text); background: rgba(255,255,255,.045); text-decoration: none; transition: transform .16s ease,border-color .16s ease,background .16s ease; }
.dashboard-action:hover { transform: translateY(-1px); border-color: var(--line-strong); background: rgba(255,255,255,.065); }
.dashboard-action__icon { display: grid; place-items: center; flex: 0 0 38px; width: 38px; height: 38px; border-radius: 12px; background: rgba(255,255,255,.07); font-size: 17px; font-weight: 950; }
.dashboard-action__copy { display: block; min-width: 0; }
.dashboard-action__copy strong,.dashboard-action__copy small { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dashboard-action__copy strong { font-size: 13px; letter-spacing: -.02em; }
.dashboard-action__copy small { margin-top: 4px; color: var(--muted); font-size: 9px; font-weight: 800; }
.dashboard-action--today { border-color: rgba(242,189,77,.28); background: rgba(242,189,77,.075); }
.dashboard-action--competitive { border-color: rgba(124,92,255,.3); background: rgba(124,92,255,.08); }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin: 20px 0 24px; }
.stat-card { padding: 22px; border: 1px solid var(--line); border-radius: 20px; background: var(--panel-soft); }
.stat-card span, .stat-card small { display: block; color: var(--muted); font-size: 11px; }
.stat-card strong { display: block; margin: 8px 0 4px; font-size: 34px; letter-spacing: -.04em; }
.stat-card--accent { background: linear-gradient(145deg, rgba(124,92,255,.24), rgba(124,92,255,.06)); }
.stat-card--gold { background: linear-gradient(145deg, rgba(242,189,77,.18), rgba(242,189,77,.04)); }
.dashboard-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.mode-card { position: relative; min-height: 285px; padding: 27px; overflow: hidden; border: 1px solid var(--line); border-radius: 25px; background: var(--panel); }
.mode-card__icon { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 34px; border-radius: 17px; font-size: 22px; font-weight: 900; background: rgba(255,255,255,.08); }
.mode-card h2 { margin: 8px 0; font-size: 25px; letter-spacing: -.04em; }
.mode-card p { margin: 0; max-width: 470px; color: var(--muted); line-height: 1.7; }
.mode-card > a { position: absolute; left: 27px; right: 27px; bottom: 23px; display: flex; justify-content: space-between; padding-top: 17px; border-top: 1px solid var(--line); font-size: 13px; font-weight: 900; }
.mode-card--single::after, .mode-card--multi::after { content: ''; position: absolute; width: 210px; height: 210px; right: -80px; top: -90px; border-radius: 50%; filter: blur(3px); }
.mode-card--single::after { background: rgba(124,92,255,.18); }
.mode-card--multi::after { background: rgba(57,214,197,.13); }
.section-block { margin-top: 42px; }
.section-heading, .panel-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 16px; }
.section-heading h2, .panel-heading h2 { margin: 5px 0 0; font-size: 24px; }
.section-heading > a { color: var(--muted); font-size: 12px; font-weight: 800; }
.compact-list { overflow: hidden; border: 1px solid var(--line); border-radius: 20px; }
.compact-list > a { display: flex; align-items: center; justify-content: space-between; padding: 17px 20px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.025); }
.compact-list > a:last-child { border-bottom: 0; }
.compact-list strong, .compact-list small { display: block; }
.compact-list small { margin-top: 5px; color: var(--muted); font-size: 10px; }

.page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin: 22px 0 28px; }
.page-heading h1, .detail-heading h1, .room-page-header h1 { margin: 6px 0 7px; font-size: clamp(32px, 4vw, 48px); letter-spacing: -.055em; }
.page-heading p { margin: 0; color: var(--muted); }
.page-heading--actions { align-items: center; }
.tab-bar { display: flex; width: fit-content; gap: 5px; margin-bottom: 20px; padding: 5px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.035); }
.tab-bar a { min-width: 110px; padding: 10px 16px; text-align: center; border-radius: 10px; color: var(--muted); font-size: 13px; font-weight: 800; }
.tab-bar a.active { color: #fff; background: var(--accent); }
.empty-card { padding: 40px 24px; color: var(--muted); border: 1px dashed var(--line-strong); border-radius: 20px; text-align: center; background: rgba(255,255,255,.025); }
.empty-card strong { display: block; margin-bottom: 7px; color: #fff; }
.empty-card p { margin: 0; }

.game-page { width: min(100%, 620px); margin: 0 auto; }
.game-topline { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 16px; }
.game-topline h1 { margin: 5px 0 0; font-size: 31px; }
.timer-card, .race-timer { min-width: 125px; padding: 12px 15px; border: 1px solid var(--line); border-radius: 16px; text-align: right; background: rgba(255,255,255,.04); }
.timer-card small, .race-timer small { display: block; margin-bottom: 4px; color: var(--muted); font-size: 10px; }
.timer-card strong, .race-timer strong { font-variant-numeric: tabular-nums; font-size: 20px; letter-spacing: .04em; }
.game-meta-card { display: grid; grid-template-columns: repeat(3, 1fr) auto; gap: 8px; margin-bottom: 14px; padding: 12px; border: 1px solid var(--line); border-radius: 17px; background: rgba(255,255,255,.035); }
.game-meta-card > div { padding: 4px 8px; border-right: 1px solid var(--line); }
.game-meta-card > div:nth-child(3) { border-right: 0; }
.game-meta-card small, .game-meta-card strong { display: block; }
.game-meta-card small { color: var(--muted); font-size: 9px; }
.game-meta-card strong { margin-top: 3px; font-size: 13px; }
.game-card { padding: 21px; border: 1px solid var(--line); border-radius: 26px; background: rgba(12,24,41,.94); box-shadow: var(--shadow); }
.board { display: grid; gap: 7px; width: min(100%, 380px); margin: 0 auto; }
.board-row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 7px; }
.tile { display: grid; place-items: center; aspect-ratio: 1; min-width: 0; border: 2px solid rgba(255,255,255,.12); border-radius: 12px; color: #fff; background: rgba(255,255,255,.025); font-size: clamp(21px, 5vw, 31px); font-weight: 900; }
.tile.has-letter { border-color: rgba(255,255,255,.35); animation: pop .12s ease-out; }
.tile.correct { border-color: transparent; background: var(--correct); }
.tile.present { border-color: transparent; background: var(--present); }
.tile.absent { border-color: transparent; background: var(--absent); }
.tile.reveal { animation: flip .48s ease both; animation-delay: calc(var(--tile-index, 0) * 85ms); }
.game-message { min-height: 20px; margin: 12px 0 7px; color: var(--danger); text-align: center; font-size: 12px; font-weight: 800; }
.game-message.success { color: #73e2bd; }
.keyboard { display: grid; gap: 6px; margin-top: 8px; }
.keyboard-row { --keyboard-gap: 6px; display: flex; justify-content: center; gap: var(--keyboard-gap); }
.jamo-key { position: relative; display: grid; flex: 0 0 calc((100% - (var(--keyboard-gap) * 8)) / 9); min-width: 0; height: 51px; padding: 3px 0 5px; border: 1px solid var(--line); border-radius: 10px; color: #fff; background: #243852; cursor: pointer; }
.jamo-key small { color: #b5c1d2; font-size: 7px; font-weight: 900; }
.jamo-key strong { font-size: 18px; }
.jamo-key.correct { border-color: transparent; background: var(--correct); }
.jamo-key.present { border-color: transparent; background: var(--present); }
.jamo-key.absent { border-color: rgba(255,255,255,.14); background: var(--absent); opacity: 1; }
.jamo-key.correct small, .jamo-key.present small, .jamo-key.absent small { color: rgba(255,255,255,.7); }
.jamo-key:disabled { cursor: default; }
.action-row { display: grid; grid-template-columns: 1fr 1.35fr; gap: 8px; margin-top: 10px; }
.action-key { min-height: 51px; border: 0; border-radius: 13px; font-weight: 900; cursor: pointer; }
.action-key--delete { color: #c7d0de; background: #25344b; touch-action: none; }
.action-key--submit { color: #fff; background: linear-gradient(135deg, var(--accent), #5d46e8); }
.action-key:disabled { opacity: .45; }
.single-summary { display: grid; grid-template-columns: repeat(3, 1fr) 1.3fr; gap: 8px; margin-top: 14px; }
.single-summary article, .single-summary > a { display: flex; flex-direction: column; justify-content: center; min-height: 69px; padding: 12px 15px; border: 1px solid var(--line); border-radius: 15px; background: rgba(255,255,255,.035); }
.single-summary small { color: var(--muted); font-size: 9px; }
.single-summary strong { margin-top: 4px; font-size: 18px; }
.single-summary > a { color: var(--accent-2); font-size: 12px; font-weight: 900; }

.modal { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: 20px; }
.modal__backdrop { position: absolute; inset: 0; background: rgba(2,7,13,.72); backdrop-filter: blur(5px); }
.modal-sheet { position: relative; z-index: 1; width: min(100%, 450px); max-height: calc(100vh - 40px); overflow: auto; padding: 30px; border: 1px solid var(--line); border-radius: 27px; background: #0d1a2c; box-shadow: var(--shadow); }
.modal-sheet h2 { margin: 8px 0; font-size: 28px; }
.modal-sheet > p { color: var(--muted); line-height: 1.65; }
.modal-close { position: absolute; top: 14px; right: 14px; width: 36px; height: 36px; border: 0; border-radius: 50%; color: var(--muted); background: rgba(255,255,255,.07); font-size: 24px; cursor: pointer; }
.result-sheet, .word-complete-sheet { text-align: center; }
.result-symbol { display: grid; place-items: center; width: 62px; height: 62px; margin: 0 auto 17px; border-radius: 20px; color: #fff; background: linear-gradient(135deg, var(--correct), #159c69); font-size: 30px; font-weight: 900; }
.answer-reveal { margin: 22px 0; padding: 18px; border-radius: 18px; background: rgba(255,255,255,.045); }
.answer-reveal small, .answer-reveal strong, .answer-reveal span { display: block; }
.answer-reveal small { color: var(--muted); font-size: 10px; }
.answer-reveal strong { margin: 7px 0; font-size: 31px; letter-spacing: .1em; }
.answer-reveal span { color: var(--accent-2); font-weight: 900; letter-spacing: .18em; }
.modal-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.word-complete-sheet .primary-button { width: 100%; }

.history-list { overflow: hidden; border: 1px solid var(--line); border-radius: 22px; }
.history-row { display: grid; grid-template-columns: 54px minmax(170px, 1fr) 90px 100px 90px 24px; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.025); }
.history-row:last-child { border-bottom: 0; }
.history-row:hover { background: rgba(255,255,255,.05); }
.history-rank { color: var(--accent-2); font-size: 12px; font-weight: 900; }
.history-main strong, .history-main small { display: block; }
.history-main strong { font-size: 17px; }
.history-main small { margin-top: 5px; color: var(--muted); font-size: 10px; }
.history-metric small, .history-metric strong { display: block; }
.history-metric small { color: var(--muted); font-size: 9px; }
.history-metric strong { margin-top: 4px; font-size: 13px; }
.history-arrow { color: var(--muted); }
.status-chip { display: inline-flex; justify-content: center; width: fit-content; padding: 6px 9px; border-radius: 999px; color: #cbd5e4; background: rgba(255,255,255,.07); font-size: 10px; font-weight: 900; text-transform: uppercase; }
.status-chip--won { color: #aef3d8; background: rgba(35,181,125,.15); }
.status-chip--lost, .status-chip--dnf { color: #ffc0c8; background: rgba(255,109,125,.13); }
.status-chip--skipped { color: #cbd5e4; background: rgba(70,83,106,.3); }
.status-chip--playing { color: #bcb0ff; background: rgba(124,92,255,.16); }
.status-chip--finished { color: #a9eae3; background: rgba(57,214,197,.13); }
.detail-heading { margin: 10px 0 25px; }
.back-link { display: inline-block; margin-bottom: 18px; color: var(--muted); font-size: 12px; font-weight: 800; }
.detail-summary { display: flex; align-items: center; flex-wrap: wrap; gap: 9px 16px; color: var(--muted); font-size: 12px; }
.answer-detail-card { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 24px; border: 1px solid var(--line); border-radius: 20px; background: rgba(255,255,255,.035); }
.answer-detail-card > small { color: var(--muted); }
.mini-board { display: flex; gap: 6px; }
.mini-board .tile { width: 47px; height: 47px; aspect-ratio: auto; font-size: 20px; border-radius: 9px; }
.guess-history { display: grid; gap: 12px; }
.guess-record, .word-result-card { padding: 20px; border: 1px solid var(--line); border-radius: 19px; background: rgba(255,255,255,.027); }
.guess-record header { display: grid; grid-template-columns: 100px 1fr auto; align-items: center; gap: 10px; margin-bottom: 15px; }
.guess-record header span { color: var(--accent-2); font-size: 11px; font-weight: 900; }
.guess-record header strong { font-size: 20px; }
.guess-record header small { color: var(--muted); font-size: 9px; }
.guess-legend { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 13px; }
.guess-legend span { padding: 5px 8px; border-radius: 8px; color: var(--muted); background: rgba(255,255,255,.04); font-size: 9px; }
.word-result-list { display: grid; gap: 14px; }
.word-result-card header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; }
.word-result-card h2 { margin: 5px 0 0; }
.history-guess-line { display: grid; grid-template-columns: 28px 90px 1fr; align-items: center; gap: 10px; padding: 9px 0; border-top: 1px solid var(--line); }
.history-guess-line > b { color: var(--accent-2); }
.history-guess-line > strong { font-size: 14px; }
.rank-badge { display: inline-flex; padding: 7px 11px; border-radius: 999px; color: #271d05; background: var(--gold); font-weight: 900; }

.ranking-podium { display: grid; grid-template-columns: repeat(3, 1fr); gap: 13px; margin-bottom: 18px; }
.podium-card { display: grid; place-items: center; min-height: 150px; padding: 20px; border: 1px solid var(--line); border-radius: 21px; text-align: center; background: rgba(255,255,255,.03); }
.podium-card > span { display: grid; place-items: center; width: 37px; height: 37px; margin-bottom: 12px; border-radius: 50%; font-weight: 900; background: rgba(255,255,255,.08); }
.podium-card strong { font-size: 18px; }
.podium-card small { margin-top: 6px; color: var(--muted); }
.podium-card--1 { border-color: rgba(242,189,77,.35); background: linear-gradient(145deg, rgba(242,189,77,.17), rgba(242,189,77,.03)); }
.podium-card--1 > span { color: #261c04; background: var(--gold); }
.ranking-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 21px; }
.ranking-table { width: 100%; min-width: 700px; border-collapse: collapse; }
.ranking-table th, .ranking-table td { padding: 14px 16px; border-bottom: 1px solid var(--line); text-align: left; font-size: 12px; }
.ranking-table th { color: var(--muted); font-size: 10px; letter-spacing: .06em; }
.ranking-table tr:last-child td { border-bottom: 0; }
.ranking-table tr.is-me { background: rgba(124,92,255,.1); }
.ranking-table td:nth-child(n+3) { font-variant-numeric: tabular-nums; }
.ranking-table td strong { margin-right: 7px; }
.ranking-table td small { padding: 2px 5px; color: var(--accent-2); border-radius: 5px; background: rgba(57,214,197,.1); }
.table-rank { display: grid; place-items: center; width: 29px; height: 29px; border-radius: 9px; background: rgba(255,255,255,.06); font-weight: 900; }

.resume-room { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 20px; padding: 19px 22px; border: 1px solid rgba(57,214,197,.24); border-radius: 19px; background: linear-gradient(135deg, rgba(57,214,197,.12), rgba(124,92,255,.08)); }
.resume-room strong, .resume-room small { display: block; }
.resume-room strong { margin: 4px 0; font-size: 19px; }
.resume-room small { color: var(--muted); }
.resume-room > span { color: var(--accent-2); font-weight: 900; }
.room-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.room-toolbar div { display: flex; align-items: baseline; gap: 7px; }
.room-toolbar strong { font-size: 24px; }
.room-toolbar span { color: var(--muted); font-size: 12px; }
.room-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.room-card { padding: 21px; border: 1px solid var(--line); border-radius: 21px; background: rgba(255,255,255,.033); }
.room-card header { display: flex; justify-content: space-between; align-items: center; }
.room-code { color: var(--muted); font-size: 10px; font-weight: 900; letter-spacing: .1em; }
.live-dot { color: var(--accent-2); font-size: 9px; font-weight: 900; }
.live-dot::before { content: ''; display: inline-block; width: 6px; height: 6px; margin-right: 5px; border-radius: 50%; background: var(--accent-2); box-shadow: 0 0 10px var(--accent-2); }
.room-card h2 { min-height: 52px; margin: 19px 0 4px; font-size: 20px; line-height: 1.35; }
.room-card p { margin: 0; color: var(--muted); font-size: 11px; }
.room-seats { display: flex; align-items: center; gap: 5px; margin: 22px 0 15px; }
.room-seats span { color: #314058; }
.room-seats span.filled { color: var(--accent-2); }
.room-seats small { margin-left: auto; color: var(--muted); }
.room-card form, .room-card .secondary-button { width: 100%; }
.create-room-sheet .primary-button { width: 100%; }

.room-page-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.room-page-header h1 { font-size: 35px; }
.room-header-actions { display: flex; align-items: center; gap: 12px; }
.connection-status { color: var(--muted); font-size: 10px; font-weight: 800; }
.connection-status i { display: inline-block; width: 7px; height: 7px; margin-right: 5px; border-radius: 50%; background: var(--danger); }
.connection-status.online i { background: var(--correct); box-shadow: 0 0 8px var(--correct); }
.room-layout, .multi-game-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(310px, .75fr); gap: 16px; }
.panel-card, .chat-card, .race-sidebar { padding: 22px; border: 1px solid var(--line); border-radius: 23px; background: rgba(12,24,41,.9); }
.panel-heading > span { color: var(--muted); font-size: 12px; font-weight: 900; }
.player-slots { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 20px 0; }
.player-slot { display: flex; align-items: center; min-height: 78px; padding: 13px; border: 1px dashed var(--line-strong); border-radius: 16px; color: var(--muted); }
.player-slot.filled { color: #fff; border-style: solid; background: rgba(255,255,255,.035); }
.player-avatar { display: grid; place-items: center; flex: 0 0 42px; width: 42px; height: 42px; margin-right: 11px; border-radius: 14px; color: #fff; background: linear-gradient(135deg, var(--accent), #4d3cc2); font-weight: 900; }
.player-avatar.empty { color: var(--muted); background: rgba(255,255,255,.055); }
.player-slot strong, .player-slot small { display: block; }
.player-slot small { margin-top: 4px; color: var(--muted); font-size: 9px; }
.player-slot em, .final-rank-row em { padding: 2px 5px; color: var(--accent-2); border-radius: 5px; background: rgba(57,214,197,.1); font-size: 8px; font-style: normal; }
.crown { margin-left: auto; color: var(--gold); }
.panel-card > .primary-button { width: 100%; }
.host-guide { margin: 15px 0 0; color: var(--muted); text-align: center; font-size: 11px; }
.chat-card { display: flex; flex-direction: column; min-height: 480px; }
.chat-messages { flex: 1; min-height: 330px; max-height: 430px; overflow-y: auto; padding-right: 5px; }
.chat-empty { display: grid; place-items: center; min-height: 260px; color: var(--muted); font-size: 12px; }
.chat-message { margin-bottom: 13px; }
.chat-message > div { display: flex; gap: 7px; align-items: baseline; }
.chat-message strong { font-size: 11px; }
.chat-message small { color: var(--muted); font-size: 8px; }
.chat-message p { display: inline-block; max-width: 88%; margin: 5px 0 0; padding: 9px 11px; border-radius: 4px 12px 12px 12px; background: rgba(255,255,255,.07); font-size: 12px; line-height: 1.5; }
.chat-message.mine { text-align: right; }
.chat-message.mine > div { justify-content: flex-end; }
.chat-message.mine p { color: #fff; border-radius: 12px 4px 12px 12px; background: rgba(124,92,255,.35); }
.chat-form { display: grid; grid-template-columns: 1fr 65px; gap: 7px; padding-top: 12px; border-top: 1px solid var(--line); }
.chat-form input { min-width: 0; height: 42px; padding: 0 12px; color: #fff; border: 1px solid var(--line); border-radius: 11px; background: rgba(255,255,255,.045); outline: 0; }
.chat-form button { border: 0; border-radius: 11px; color: #fff; background: var(--accent); font-weight: 800; cursor: pointer; }
.multi-game-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.multi-game-top h2 { margin: 5px 0 0; }
.multi-game-card { width: min(100%, 620px); }
.race-sidebar { min-height: 570px; }
.race-players { display: grid; gap: 9px; }
.race-player { padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.026); }
.race-player.is-me { border-color: rgba(124,92,255,.35); background: rgba(124,92,255,.08); }
.race-player > div:first-child, .race-player footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.race-player strong { font-size: 12px; }
.race-player span, .race-player footer { color: var(--muted); font-size: 9px; }
.progress-bar { height: 7px; margin: 9px 0; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.07); }
.progress-bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--accent), var(--accent-2)); transition: width .35s ease; }
.race-player footer b { color: #fff; font-variant-numeric: tabular-nums; }
.my-word-results { margin-top: 22px; }
.my-word-results > div { display: grid; grid-template-columns: 22px 1fr 42px auto; gap: 7px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 10px; }
.my-word-results > div > b { color: var(--accent-2); }
.my-word-results > div > span.won { color: #7ee7c2; }
.my-word-results > div > span.lost { color: #ff9aaa; }
.my-word-results > div > small { color: var(--muted); }
.waiting-card { display: grid; place-items: center; min-height: 430px; padding: 30px; border: 1px solid var(--line); border-radius: 25px; text-align: center; background: rgba(12,24,41,.88); }
.waiting-card h2 { margin: 16px 0 5px; }
.waiting-card p { margin: 0; color: var(--muted); }
.waiting-spinner { width: 48px; height: 48px; border: 4px solid rgba(255,255,255,.08); border-top-color: var(--accent-2); border-radius: 50%; animation: spin .8s linear infinite; }
.result-view { width: min(100%, 860px); margin: 0 auto; }
.result-hero { margin: 35px 0 25px; text-align: center; }
.result-hero h1 { margin: 7px 0; font-size: 43px; }
.result-hero p { color: var(--muted); }
.final-ranking { display: grid; gap: 9px; }
.final-rank-row { display: grid; grid-template-columns: 48px 48px minmax(150px, 1fr) 90px 120px; align-items: center; gap: 12px; padding: 16px 19px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,255,255,.03); }
.final-rank-row.rank-1 { border-color: rgba(242,189,77,.38); background: linear-gradient(135deg, rgba(242,189,77,.16), rgba(242,189,77,.03)); }
.final-rank-row.is-me { box-shadow: inset 0 0 0 1px rgba(124,92,255,.5); }
.final-rank-number { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; font-weight: 900; background: rgba(255,255,255,.07); }
.rank-1 .final-rank-number { color: #281e05; background: var(--gold); }
.final-rank-row .player-avatar { margin: 0; }
.final-rank-row > div strong, .final-rank-row > div small { display: block; }
.final-rank-row > div small { margin-top: 4px; color: var(--muted); font-size: 9px; }
.final-rank-row > div:nth-last-child(-n+2) { text-align: right; }
.result-actions { display: flex; justify-content: center; gap: 9px; margin-top: 24px; }

@keyframes pop { from { transform: scale(.88); } to { transform: scale(1); } }
@keyframes flip { 0% { transform: rotateX(0); } 45%,55% { transform: rotateX(90deg); } 100% { transform: rotateX(0); } }
@keyframes spin { to { transform: rotate(360deg); } }

@media (max-width: 900px) {
    .site-shell { padding-left: 16px; padding-right: 16px; padding-bottom: 100px; }
    .site-header { grid-template-columns: 1fr auto; }
    .desktop-nav-shell { display: none; }
    .desktop-nav { display: none; }
    .header-user > span { display: none; }
    .mobile-nav {
        position: fixed; z-index: 80; left: 50%; bottom: max(10px, env(safe-area-inset-bottom));
        display: grid; grid-template-columns: repeat(6, 1fr); width: min(calc(100% - 24px), 560px); padding: 7px;
        border: 1px solid var(--line); border-radius: 19px; background: rgba(10,21,37,.94); backdrop-filter: blur(16px); box-shadow: 0 18px 45px rgba(0,0,0,.4); transform: translateX(-50%);
    }
    .mobile-nav a { display: grid; place-items: center; gap: 2px; min-height: 48px; color: var(--muted); border-radius: 13px; }
    .mobile-nav a.active { color: #fff; background: rgba(124,92,255,.2); }
    .mobile-nav span { font-size: 17px; }
    .mobile-nav small { font-size: 8px; font-weight: 800; }
    .hero { grid-template-columns: 1fr; min-height: auto; padding: 70px 0 30px; }
    .hero-board { max-width: 500px; margin: 0 auto; }
    .auth-layout { grid-template-columns: 1fr; gap: 30px; min-height: auto; padding: 40px 0; }
    .auth-copy { text-align: center; }
    .auth-copy p { margin-inline: auto; }
    .auth-benefits { justify-content: center; }
    .room-grid { grid-template-columns: 1fr 1fr; }
    .room-layout, .multi-game-layout { grid-template-columns: 1fr; }
    .race-sidebar { min-height: 0; }
    .dashboard-hero { display: block; }
    .dashboard-actions { max-width: 560px; margin-top: 20px; }
}

@media (max-width: 650px) {
    .site-header { min-height: 68px; }
    .site-logo strong { font-size: 18px; }
    .page-content { padding-top: 22px; }
    .hero__content h1, .dashboard-hero h1, .auth-copy h1 { font-size: 39px; }
    .feature-grid, .stats-grid, .dashboard-grid, .ranking-podium { grid-template-columns: 1fr 1fr; }
    .feature-grid article:last-child { grid-column: 1 / -1; }
    .dashboard-hero { display: block; padding-top: 25px; }
    .dashboard-actions { margin-top: 20px; grid-template-columns: repeat(2,minmax(0,1fr)); }
    .dashboard-action { min-height: 66px; padding: 10px 11px; gap: 9px; }
    .dashboard-action__icon { flex-basis: 34px; width: 34px; height: 34px; border-radius: 10px; font-size: 15px; }
    .dashboard-action__copy strong { font-size: 12px; }
    .stats-grid { gap: 9px; }
    .stat-card { padding: 17px; }
    .stat-card strong { font-size: 28px; }
    .dashboard-grid { grid-template-columns: 1fr; }
    .page-heading { display: block; }
    .page-heading--actions .primary-button { width: 100%; margin-top: 18px; }
    .game-topline { align-items: flex-end; }
    .game-topline h1 { font-size: 26px; }
    .timer-card { min-width: 112px; }
    .game-meta-card { grid-template-columns: repeat(3, 1fr); }
    .game-meta-card .mini-secondary { grid-column: 1 / -1; }
    .game-card { padding: 14px; border-radius: 21px; }
    .board, .board-row { gap: 5px; }
    .tile { border-radius: 9px; }
    .keyboard { gap: 4px; }
    .keyboard-row { --keyboard-gap: 4px; }
    .jamo-key { height: 48px; border-radius: 8px; }
    .single-summary { grid-template-columns: repeat(3, 1fr); }
    .single-summary > a { grid-column: 1 / -1; min-height: 49px; }
    .history-row { grid-template-columns: 45px minmax(120px, 1fr) 70px 78px; gap: 7px; padding: 14px 12px; }
    .history-row .status-chip, .history-arrow { display: none; }
    .history-main strong { font-size: 15px; }
    .history-metric strong { font-size: 11px; }
    .answer-detail-card { display: block; }
    .answer-detail-card .mini-board { margin-top: 13px; }
    .guess-record header { grid-template-columns: auto 1fr; }
    .guess-record header small { display: none; }
    .mini-board .tile { width: 40px; height: 40px; font-size: 17px; }
    .history-guess-line { grid-template-columns: 20px 68px 1fr; }
    .ranking-podium { grid-template-columns: 1fr 1fr 1fr; }
    .podium-card { min-height: 125px; padding: 12px 8px; }
    .podium-card strong { font-size: 13px; }
    .room-grid { grid-template-columns: 1fr; }
    .room-page-header { align-items: flex-start; }
    .room-header-actions { flex-direction: column; align-items: flex-end; }
    .player-slots { grid-template-columns: 1fr; }
    .chat-card { min-height: 430px; }
    .multi-game-top h2 { font-size: 21px; }
    .race-timer { min-width: 112px; }
    .final-rank-row { grid-template-columns: 40px 40px 1fr 60px; gap: 7px; padding: 13px 10px; }
    .final-rank-row > div:last-child { display: none; }
    .final-rank-row .player-avatar { width: 38px; height: 38px; flex-basis: 38px; }
    .result-actions { display: grid; grid-template-columns: 1fr 1fr; }
    .modal-sheet { padding: 25px 20px; }
    .modal-actions { grid-template-columns: 1fr; }
}

@media (max-width: 390px) {
    .site-shell { padding-left: 12px; padding-right: 12px; }
    .feature-grid { grid-template-columns: 1fr; }
    .feature-grid article:last-child { grid-column: auto; }
    .stats-grid { grid-template-columns: 1fr 1fr; }
    .game-card { padding: 11px; }
    .jamo-key strong { font-size: 16px; }
    .jamo-key { height: 45px; }
    .history-row { grid-template-columns: 38px 1fr 62px; }
    .history-row .history-metric:nth-of-type(2) { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* ======================================================================
   v16 - mobile one-screen play UI / 2v2 teams / dynamic 6-slot board
   ====================================================================== */
.board-row { grid-template-columns: repeat(var(--slot-count, 5), minmax(0, 1fr)); }
.tile.hidden {
    color: #fff;
    border-color: rgba(255,255,255,.2);
    background: repeating-linear-gradient(135deg, #27364d 0 7px, #31425d 7px 14px);
}

.room-mode-chip, .room-option-line span, .rule-option-chips span {
    display: inline-flex; align-items: center; min-height: 25px; padding: 0 9px;
    border: 1px solid var(--line); border-radius: 999px;
    color: #d8dff0; background: rgba(255,255,255,.045); font-size: 10px; font-weight: 800;
}
.room-mode-chip { margin: 5px 0 8px; color: #c9bfff; border-color: rgba(124,92,255,.3); background: rgba(124,92,255,.11); }
.room-option-line, .rule-option-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.room-toolbar-actions { display: flex; gap: 7px; }

.create-room-v16 { width: min(100%, 610px); }
.room-mode-picker, .room-option-picker { margin: 16px 0 0; padding: 0; border: 0; }
.room-mode-picker legend, .room-option-picker legend { margin-bottom: 8px; font-size: 12px; font-weight: 900; }
.room-mode-picker { display: grid; gap: 7px; }
.room-mode-picker label, .room-option-picker label {
    display: flex; gap: 10px; align-items: flex-start; padding: 11px 12px;
    border: 1px solid var(--line); border-radius: 13px; background: rgba(255,255,255,.035); cursor: pointer;
}
.room-mode-picker input, .room-option-picker input { margin-top: 3px; accent-color: var(--accent); }
.room-mode-picker span, .room-option-picker span { display: grid; gap: 3px; }
.room-mode-picker b, .room-option-picker b { font-size: 12px; }
.room-mode-picker small, .room-option-picker small { color: var(--muted); font-size: 10px; line-height: 1.45; }
.room-option-picker { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
.create-room-v16 > .primary-button { width: 100%; margin-top: 16px; }

.team-lobby .lobby-main { display: grid; gap: 12px; }
.room-rule-card { padding: 16px; }
.team-select-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.team-select-card {
    padding: 15px; border: 1px solid var(--line); border-radius: 20px;
    background: rgba(255,255,255,.035); overflow: hidden;
}
.team-select-card.team-a { box-shadow: inset 0 0 0 1px rgba(57,214,197,.08); }
.team-select-card.team-b { box-shadow: inset 0 0 0 1px rgba(124,92,255,.1); }
.team-select-card > header { display: grid; grid-template-columns: 1fr auto; margin-bottom: 10px; }
.team-select-card > header span { grid-column: 1 / -1; color: var(--muted); font-size: 8px; font-weight: 900; letter-spacing: .2em; }
.team-select-card > header strong { font-size: 19px; }
.team-select-card > header em { align-self: center; color: var(--muted); font-size: 11px; font-style: normal; }
.team-member-list { display: grid; gap: 6px; min-height: 96px; }
.team-member { display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 12px; background: rgba(255,255,255,.045); }
.team-member.is-me { outline: 1px solid rgba(57,214,197,.4); }
.team-member div { min-width: 0; display: grid; gap: 2px; }
.team-member strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.team-member strong em { color: var(--accent-2); font-size: 9px; font-style: normal; }
.team-member small { color: var(--muted); font-size: 9px; }
.empty-team { margin: 10px 0; color: var(--muted); font-size: 11px; }
.team-choose-button { width: 100%; min-height: 38px; margin-top: 10px; border: 1px solid var(--line); border-radius: 11px; background: rgba(255,255,255,.06); font-size: 11px; font-weight: 900; cursor: pointer; }
.team-a .team-choose-button:not(:disabled) { border-color: rgba(57,214,197,.35); }
.team-b .team-choose-button:not(:disabled) { border-color: rgba(124,92,255,.45); }
.team-choose-button:disabled { opacity: .45; }
.unassigned-card { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 9px 12px; border: 1px dashed var(--line); border-radius: 14px; }
.unassigned-card > small { flex: 0 0 auto; color: var(--muted); }
.unassigned-card > div { display: flex; flex-wrap: wrap; gap: 6px; }
.unassigned-card .team-member { padding: 5px 8px; }

.turn-guide { min-height: 16px; margin: 3px 0 0; color: var(--accent-2); font-size: 10px; font-weight: 800; }
#slotBadge { display: inline-block; margin-left: 5px; padding: 3px 6px; border-radius: 999px; color: #d9d2ff; background: rgba(124,92,255,.15); font-size: 8px; vertical-align: middle; }
.live-team-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; margin-bottom: 7px; }
.race-player {
    display: grid; grid-template-columns: auto 1fr; gap: 1px 6px; min-width: 0; padding: 7px 8px;
    border: 1px solid var(--line); border-radius: 11px; text-align: left; background: rgba(255,255,255,.035); cursor: pointer;
}
.race-player > span { grid-row: 1 / 3; align-self: center; display: grid; place-items: center; width: 27px; height: 27px; border-radius: 8px; font-size: 9px; font-weight: 900; }
.race-player.team-a > span { color: #8cf2e7; background: rgba(57,214,197,.14); }
.race-player.team-b > span { color: #c3b7ff; background: rgba(124,92,255,.17); }
.race-player strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 10px; }
.race-player small { color: var(--muted); font-size: 8px; }
.race-player.is-turn { border-color: var(--accent-2); box-shadow: 0 0 0 1px rgba(57,214,197,.17); }
.race-player.is-me { background: rgba(255,255,255,.075); }

.compact-action-row { justify-content: flex-end; }
.compact-action-row .action-key--delete { display: none; }
.compact-action-row .action-key--submit { width: 100%; min-height: 44px; }
.jamo-key--delete {
    display: grid !important;
    touch-action: none !important;
    flex: 0 0 calc((100% - (var(--keyboard-gap) * 8)) / 9) !important;
    min-width: 0;
    background: #29384e !important;
}
.jamo-key--delete strong { font-size: 18px; }
.keyboard-event-english .jamo-key[data-letter] strong { font-size: 15px; letter-spacing: .02em; }
.keyboard-event-blank .jamo-key[data-letter] { background: #172439; }

.event-toast {
    position: fixed; z-index: 90; top: max(14px, env(safe-area-inset-top)); left: 50%; transform: translateX(-50%);
    width: min(calc(100% - 30px), 430px); padding: 11px 15px; border: 1px solid rgba(242,189,77,.4);
    border-radius: 14px; color: #ffe7a2; background: rgba(28,24,13,.96); box-shadow: var(--shadow);
    font-size: 12px; font-weight: 900; text-align: center;
}

.team-result-board { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 14px; }
.team-result-card { display: grid; grid-template-columns: 1fr auto; gap: 7px 20px; padding: 20px; border: 1px solid var(--line); border-radius: 20px; background: rgba(255,255,255,.04); }
.team-result-card > span { grid-column: 1 / -1; color: var(--muted); font-size: 8px; font-weight: 900; letter-spacing: .2em; }
.team-result-card h2 { margin: 0; font-size: 25px; }
.team-result-card div { text-align: right; }
.team-result-card div strong, .team-result-card div small { display: block; }
.team-result-card div small { color: var(--muted); font-size: 8px; }
.team-result-card.winner { border-color: rgba(57,214,197,.42); background: linear-gradient(135deg, rgba(57,214,197,.13), rgba(124,92,255,.06)); }
.final-rank-row { width: 100%; color: inherit; text-align: left; cursor: pointer; }

.player-history-sheet { width: min(100%, 620px); max-height: min(82vh, 760px); overflow: auto; }
.player-history-content { display: grid; gap: 10px; margin-top: 15px; }
.history-live-word { padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.035); }
.history-live-word header { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 8px; font-size: 10px; }
.history-live-word header span { color: var(--accent-2); }
.history-live-word p { margin: 8px 0 0; color: var(--muted); font-size: 10px; }
.history-live-guess { display: grid; grid-template-columns: 20px 70px 1fr; align-items: center; gap: 7px; margin-top: 6px; }
.history-live-guess > b { color: var(--muted); font-size: 9px; }
.history-live-guess > span { overflow: hidden; text-overflow: ellipsis; font-size: 10px; font-weight: 800; }
.history-live-guess .mini-board { justify-content: flex-end; }
.history-live-guess .tile { width: 27px; height: 27px; font-size: 11px; }

@media (max-width: 900px) {
    .room-option-picker { grid-template-columns: 1fr; }
    .team-lobby { grid-template-columns: 1fr; }
}

/* 작은 모바일은 게임 중 본문 자체를 스크롤하지 않습니다. */
@media (max-width: 650px) {
    body.play-screen-page { min-height: 100dvh; }
    body.no-scroll-game, body.single-play-page { height: 100dvh; overflow: hidden; }
    body.no-scroll-game .site-shell, body.single-play-page .site-shell {
        height: 100dvh; min-height: 0; padding: 0 8px 5px; display: flex; flex-direction: column;
    }
    body.no-scroll-game .site-header, body.single-play-page .site-header {
        flex: 0 0 42px; min-height: 42px; grid-template-columns: 1fr auto;
    }
    body.no-scroll-game .desktop-nav, body.single-play-page .desktop-nav,
    body.no-scroll-game .header-user > span, body.single-play-page .header-user > span { display: none; }
    body.no-scroll-game .site-logo span, body.single-play-page .site-logo span { display: none; }
    body.no-scroll-game .site-logo strong, body.single-play-page .site-logo strong { font-size: 16px; }
    body.no-scroll-game .page-content, body.single-play-page .page-content {
        flex: 1 1 auto; min-height: 0; padding-top: 5px; overflow: hidden;
    }
    body.no-scroll-game .mobile-nav, body.single-play-page .mobile-nav { display: none; }

    .room-page { height: 100%; min-height: 0; display: flex; flex-direction: column; }
    .room-page-header { flex: 0 0 37px; min-height: 37px; margin-bottom: 3px; padding: 0 2px; }
    .room-page-header h1, .room-page-header .section-kicker { display: none; }
    .room-page-header .back-link { font-size: 10px; }
    .room-header-actions { gap: 4px; }
    .room-header-actions .connection-status { font-size: 8px; }
    .room-header-actions .mini-danger, .room-header-actions .mini-secondary { min-height: 27px; padding: 0 8px; font-size: 9px; }

    .multi-game-layout { flex: 1 1 auto; min-height: 0; display: block; }
    .compact-game-shell { height: 100%; min-height: 0; display: flex; flex-direction: column; }
    .compact-game-top { flex: 0 0 auto; margin-bottom: 3px; }
    .compact-game-top h2 { margin: 0; font-size: 15px; }
    .compact-game-top .section-kicker { font-size: 7px; }
    .race-timer { padding: 5px 8px; border-radius: 10px; }
    .race-timer small { font-size: 7px; }
    .race-timer strong { font-size: 15px; }
    .turn-guide { max-width: 250px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 8px; }
    .live-team-strip { flex: 0 0 auto; gap: 3px; margin-bottom: 3px; }
    .race-player { padding: 4px; gap: 0 3px; border-radius: 8px; }
    .race-player > span { width: 22px; height: 22px; border-radius: 6px; font-size: 7px; }
    .race-player strong { font-size: 8px; }
    .race-player small { font-size: 7px; }

    .compact-play-card { flex: 1 1 auto; min-height: 0; width: 100%; padding: 7px; border-radius: 14px; display: flex; flex-direction: column; justify-content: space-between; }
    .compact-play-card .board { flex: 1 1 auto; min-height: 0; max-height: 43%; width: min(100%, 330px); margin: 0 auto; gap: 3px; }
    .compact-play-card .board-row { gap: 3px; min-height: 0; }
    .compact-play-card .tile { min-height: 0; aspect-ratio: auto; height: 100%; border-radius: 7px; font-size: clamp(15px, 5.5vw, 23px); }
    .compact-play-card .game-message { flex: 0 0 17px; min-height: 17px; margin: 2px 0; font-size: 8px; }
    .compact-play-card .keyboard { flex: 0 0 auto; gap: 3px; }
    .compact-play-card .keyboard-row { --keyboard-gap: 3px; }
    .compact-play-card .jamo-key { height: clamp(34px, 6.2vh, 43px); border-radius: 6px; padding: 1px 0 2px; }
    .compact-play-card .jamo-key strong { font-size: 14px; }
    .compact-play-card .jamo-key small { font-size: 5px; }
    .compact-action-row { margin-top: 3px; }
    .compact-action-row .action-key--submit { min-height: clamp(34px, 5.5vh, 42px); border-radius: 9px; font-size: 11px; }
    .my-word-results { display: none !important; }

    .single-play-page .game-page { height: 100%; min-height: 0; display: flex; flex-direction: column; }
    .single-play-page .game-topline { flex: 0 0 39px; margin-bottom: 3px; }
    .single-play-page .game-topline h1 { margin: 0; font-size: 15px; }
    .single-play-page .game-topline .section-kicker { display: none; }
    .single-play-page .timer-card { min-height: 33px; padding: 4px 8px; }
    .single-play-page .timer-card small { font-size: 6px; }
    .single-play-page .timer-card strong { font-size: 14px; }
    .single-play-page .game-meta-card { flex: 0 0 34px; margin-bottom: 3px; padding: 3px 7px; border-radius: 10px; }
    .single-play-page .game-meta-card > div:nth-child(2) { display: none; }
    .single-play-page .game-meta-card small { font-size: 6px; }
    .single-play-page .game-meta-card strong { font-size: 11px; }
    .single-play-page .game-meta-card .mini-secondary { min-height: 27px; padding: 0 8px; font-size: 8px; }
    .single-play-page .game-card { flex: 1 1 auto; min-height: 0; padding: 7px; border-radius: 14px; display: flex; flex-direction: column; justify-content: space-between; }
    .single-play-page .game-card .board { flex: 1 1 auto; min-height: 0; max-height: 43%; width: min(100%, 330px); margin: 0 auto; gap: 3px; }
    .single-play-page .game-card .board-row { gap: 3px; min-height: 0; }
    .single-play-page .game-card .tile { min-height: 0; aspect-ratio: auto; height: 100%; border-radius: 7px; font-size: clamp(15px, 5.5vw, 23px); }
    .single-play-page .game-card .game-message { flex: 0 0 17px; min-height: 17px; margin: 2px 0; font-size: 8px; }
    .single-play-page .game-card .keyboard { gap: 3px; }
    .single-play-page .game-card .keyboard-row { --keyboard-gap: 3px; }
    .single-play-page .game-card .jamo-key { height: clamp(34px, 6.2vh, 43px); }
    .single-play-page .game-card .action-row { margin-top: 3px; }
    .single-play-page .game-card .action-key--submit { width: 100%; min-height: clamp(34px, 5.5vh, 42px); }
    .single-play-page .single-summary { display: none; }

    .team-select-grid { grid-template-columns: 1fr 1fr; gap: 7px; }
    .team-select-card { padding: 10px; border-radius: 14px; }
    .team-member-list { min-height: 76px; }
    .chat-card { min-height: 260px; }
    .team-result-board { grid-template-columns: 1fr; }
}

@media (max-width: 390px), (max-height: 700px) and (max-width: 650px) {
    .compact-play-card .jamo-key, .single-play-page .game-card .jamo-key { height: 32px; }
    .compact-play-card .board, .single-play-page .game-card .board { max-height: 40%; }
    .live-team-strip { margin-bottom: 2px; }
    .race-player strong { display: none; }
    .race-player { grid-template-columns: auto 1fr; }
}
.help-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.help-card { padding: 22px; border: 1px solid var(--line); border-radius: 22px; background: rgba(255,255,255,.035); }
.help-card--wide { grid-column: 1 / -1; }
.help-card h2 { margin: 7px 0 10px; }
.help-card p, .help-card li { color: var(--muted); font-size: 13px; line-height: 1.7; }
.help-card ul { margin: 10px 0 0; padding-left: 20px; }
.help-example { display: grid; grid-template-columns: 55px 1fr auto; gap: 10px; align-items: center; margin-top: 7px; padding: 10px 12px; border-radius: 12px; background: rgba(255,255,255,.045); }
.help-example span { letter-spacing: .12em; font-weight: 800; }
.help-example em { color: var(--accent-2); font-size: 10px; font-style: normal; }
.mode-help-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 12px 0; }
.mode-help-list section { padding: 13px; border-radius: 14px; background: rgba(255,255,255,.04); }
.mode-help-list p { margin: 5px 0 0; font-size: 11px; }
@media (max-width: 650px) {
    .help-grid { grid-template-columns: 1fr; }
    .help-card--wide { grid-column: auto; }
    .mode-help-list { grid-template-columns: 1fr; }
    .help-card { padding: 16px; border-radius: 17px; }
}
@media (max-width: 650px) {
    .compact-play-card .board,
    .single-play-page .game-card .board {
        flex: 0 0 auto;
        height: min(33vh, 235px);
        max-height: none;
        grid-template-rows: repeat(5, minmax(0, 1fr));
    }
}
@media (max-width: 390px), (max-height: 700px) and (max-width: 650px) {
    .compact-play-card .board,
    .single-play-page .game-card .board { height: min(29vh, 195px); max-height: none; }
}

/* v18: 모바일 방 나가기 버튼 터치 보장 */
.room-page-header {
    position: relative;
    z-index: 35;
    pointer-events: auto;
}
.room-header-actions,
.room-header-actions > * {
    position: relative;
    z-index: 36;
    pointer-events: auto;
}
#leaveRoomButton {
    touch-action: manipulation;
    pointer-events: auto !important;
}
.race-player.solo > span {
    background: rgba(57,214,197,.14);
    color: var(--accent-2);
}
.final-rank-row.solo-row {
    border-color: rgba(57,214,197,.18);
}


/* v20 room entry stability */
.leave-room-form {
    margin: 0;
    display: inline-flex;
    position: relative;
    z-index: 80;
    pointer-events: auto !important;
}
.leave-room-form button {
    pointer-events: auto !important;
}
.room-page-header {
    isolation: isolate;
}
#lobbyView.is-hidden,
#gameView.is-hidden,
#resultView.is-hidden {
    display: none !important;
}
#lobbyView:not(.is-hidden),
#gameView:not(.is-hidden),
#resultView:not(.is-hidden) {
    visibility: visible;
}
@media (max-width: 720px) {
    .room-page-header {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 10px;
    }
    .room-page-header > div:first-child {
        min-width: 0;
        flex: 1 1 auto;
    }
    .room-page-header h1 {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .room-header-actions {
        flex: 0 0 auto;
        gap: 6px;
    }
    .connection-status {
        display: none;
    }
}


/* v21 community / dictionary / mailbox / stable multiplayer lobby header */
.admin-header-link { color:#ffd477; font-size:11px; font-weight:900; }
.community-list,.mail-list,.admin-word-list { display:grid; gap:8px; }
.community-row,.mail-row,.admin-word-list article { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:15px 16px; border:1px solid var(--line); border-radius:15px; background:rgba(255,255,255,.035); }
.community-row div,.mail-row div,.admin-word-list article>div:first-child { min-width:0; display:grid; gap:4px; }
.community-row strong,.mail-row strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.community-row small,.mail-row small,.admin-word-list small { color:var(--muted); font-size:11px; }
.mail-row.is-unread { border-color:rgba(57,214,197,.35); background:rgba(57,214,197,.065); }
.unread-dot { padding:4px 7px; border-radius:999px; background:var(--accent); color:#061411; font-size:9px; font-weight:900; }
.content-form { width:min(100%,720px); display:grid; gap:14px; padding:22px; border:1px solid var(--line); border-radius:19px; background:rgba(255,255,255,.035); }
.content-form textarea { width:100%; resize:vertical; }
.form-note { margin:0; color:var(--muted); font-size:12px; }
.post-content { min-height:180px; padding:22px; border:1px solid var(--line); border-radius:18px; background:rgba(255,255,255,.035); line-height:1.75; word-break:break-word; }
.danger-zone,.detail-actions { margin-top:14px; }
.answer-word-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.answer-word-card { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px; border:1px solid var(--line); border-radius:15px; background:rgba(255,255,255,.035); }
.answer-word-card>div { display:grid; gap:2px; }
.answer-word-card>div>span { color:var(--muted); font-size:9px; }
.answer-word-card strong { font-size:17px; }
.answer-word-card small { color:var(--muted); font-size:10px; }
.boom-button { min-height:32px; padding:0 10px; border:1px solid rgba(255,109,125,.35); border-radius:10px; color:#ffc0c8; background:rgba(255,109,125,.1); font-size:10px; font-weight:900; cursor:pointer; }
.boom-button.is-done,.boom-button:disabled { opacity:.55; cursor:default; }
.inline-boom-form { margin-top:12px; }
.word-card-actions,.admin-word-actions { display:flex; align-items:center; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.word-card-actions form,.admin-word-actions form { margin:0; }
.admin-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; align-items:start; }
.admin-grid .content-form { width:100%; }
.inline-filter { display:flex; gap:7px; margin-bottom:10px; }
.inline-filter input { flex:1; }
.admin-word-list article { align-items:flex-start; }
.check-line { display:flex; align-items:center; gap:8px; font-size:13px; }

/* 대기방에서는 헤더 높이를 고정하지 않고, 나가기 버튼을 독립 행 영역에 둡니다. */
body.room-lobby-active .room-page { height:auto; min-height:0; display:block; }
body.room-lobby-active .room-page-header { min-height:0; height:auto; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:start; gap:10px; margin-bottom:12px; padding:2px 0 4px; overflow:visible; }
body.room-lobby-active .room-header-actions { position:relative; display:flex !important; flex-direction:row !important; align-items:center !important; justify-content:flex-end; gap:6px; min-width:max-content; }
body.room-lobby-active .leave-room-form { position:relative; inset:auto; margin:0; flex:none; }
body.room-lobby-active #leaveRoomButton { position:relative; inset:auto; min-width:58px; z-index:2; }
body.room-lobby-active .room-page-header .connection-status { white-space:nowrap; }

@media (max-width:900px) { .admin-grid { grid-template-columns:1fr; } }
@media (max-width:650px) {
    body.room-lobby-active { height:auto !important; overflow:auto !important; }
    body.room-lobby-active .site-shell { height:auto !important; min-height:100dvh !important; padding-bottom:76px; }
    body.room-lobby-active .page-content { overflow:visible !important; min-height:auto !important; }
    body.room-lobby-active .room-page-header { display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; min-height:44px !important; height:auto !important; flex:none !important; margin-bottom:10px !important; }
    body.room-lobby-active .room-page-header h1 { display:block; margin:2px 0 0; font-size:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    body.room-lobby-active .room-page-header .section-kicker { display:none; }
    body.room-lobby-active .room-header-actions { flex-direction:row !important; align-items:center !important; }
    body.room-lobby-active .connection-status { display:none !important; }
    body.room-lobby-active .room-header-actions .mini-danger, body.room-lobby-active .room-header-actions .mini-secondary { min-height:32px; padding:0 10px; font-size:10px; }
    .answer-word-grid { grid-template-columns:1fr; }
    .community-row,.mail-row,.admin-word-list article { padding:12px; }
    .mobile-nav { overflow-x:auto; justify-content:flex-start; }
    .mobile-nav a { flex:0 0 58px; min-width:58px; }
}

@media (max-width:900px) {
    .mobile-nav { display:flex; grid-template-columns:none; overflow-x:auto; justify-content:flex-start; scrollbar-width:none; }
    .mobile-nav::-webkit-scrollbar { display:none; }
    .mobile-nav a { flex:0 0 58px; min-width:58px; }
}

/* v21 final: 대기방 상단 나가기 버튼과 본문이 절대 겹치지 않도록 분리 */
@media (max-width:650px) {
    body.room-lobby-active .room-page-header {
        position:relative !important;
        z-index:100 !important;
        width:100% !important;
        box-sizing:border-box !important;
    }
    body.room-lobby-active .room-header-actions {
        position:relative !important;
        z-index:101 !important;
        align-self:start !important;
    }
    body.room-lobby-active #lobbyView {
        position:relative !important;
        z-index:1 !important;
        margin-top:0 !important;
        clear:both !important;
    }
    body.room-lobby-active #leaveRoomButton {
        min-width:62px !important;
        white-space:nowrap !important;
    }
}
@media (max-width:360px) {
    body.room-lobby-active .room-header-actions > a.mini-secondary { display:none !important; }
}


/* v22 point economy / attendance / shop */
.header-points{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:0 9px;border:1px solid rgba(255,208,86,.32);border-radius:999px;background:rgba(255,208,86,.09);color:#ffd56c;font-size:11px;font-weight:900;white-space:nowrap}.header-player-name{display:inline-flex;align-items:center;gap:5px}.header-player-name em{padding:3px 6px;border-radius:999px;background:rgba(124,92,255,.15);color:#c8baff;font-size:8px;font-style:normal;font-weight:900}.header-user.has-gold-frame .header-player-name{padding:5px 8px;border:1px solid rgba(255,208,86,.55);border-radius:10px;box-shadow:0 0 14px rgba(255,208,86,.12)}
.point-big-badge{display:inline-flex;align-items:center;justify-content:center;padding:14px 18px;border-radius:18px;border:1px solid rgba(255,208,86,.32);background:linear-gradient(135deg,rgba(255,208,86,.14),rgba(255,255,255,.03));color:#ffd56c;font-size:24px;font-weight:950}.point-balance-panel{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border:1px solid rgba(255,208,86,.24);border-radius:14px;background:rgba(255,208,86,.06)}.point-balance-panel strong{color:#ffd56c;font-size:20px}.mail-point-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:rgba(255,208,86,.13);color:#ffd56c;font-size:10px}.mail-point-gift{display:flex;align-items:center;gap:12px;margin:14px 0;padding:16px;border:1px solid rgba(255,208,86,.28);border-radius:16px;background:rgba(255,208,86,.07)}.mail-point-gift strong{color:#ffd56c;font-size:22px}.mail-point-gift small{color:var(--muted)}
.daily-reward-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.daily-card{padding:24px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.035)}.daily-card h2{margin:6px 0 8px}.daily-reward-number{margin:16px 0;color:#ffd56c;font-size:42px;font-weight:950}.daily-history-row{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border-bottom:1px solid var(--line)}.daily-history-row span{color:#ffd56c;font-weight:900}.roulette-wrap{position:relative;width:220px;height:220px;margin:18px auto}.roulette-wheel{width:100%;height:100%;position:relative;border:8px solid rgba(255,255,255,.12);border-radius:50%;background:conic-gradient(#795cff 0 60deg,#14304d 60deg 120deg,#c29431 120deg 180deg,#17394a 180deg 240deg,#6648d6 240deg 300deg,#a96b28 300deg 360deg);box-shadow:0 18px 45px rgba(0,0,0,.28);transition:transform .3s}.roulette-wheel span{position:absolute;left:50%;top:50%;color:white;font-size:13px;font-weight:950;transform-origin:0 0}.roulette-wheel span:nth-child(1){transform:rotate(30deg) translate(58px) rotate(-30deg)}.roulette-wheel span:nth-child(2){transform:rotate(90deg) translate(58px) rotate(-90deg)}.roulette-wheel span:nth-child(3){transform:rotate(150deg) translate(58px) rotate(-150deg)}.roulette-wheel span:nth-child(4){transform:rotate(210deg) translate(58px) rotate(-210deg)}.roulette-wheel span:nth-child(5){transform:rotate(270deg) translate(58px) rotate(-270deg)}.roulette-wheel span:nth-child(6){transform:rotate(330deg) translate(58px) rotate(-330deg)}.roulette-pointer{position:absolute;z-index:3;left:50%;top:-16px;transform:translateX(-50%);color:#ffd56c;font-size:28px;text-shadow:0 3px 8px #000}.roulette-wheel.is-spinning{transition:transform 2.35s cubic-bezier(.12,.65,.18,1)}
.shop-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.shop-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:22px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.035)}.shop-card p{min-height:48px;color:var(--muted)}.shop-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:rgba(124,92,255,.13);font-size:24px}.shop-price{color:#ffd56c;font-size:23px}.shop-card form,.shop-card button{width:100%}.point-log{border:1px solid var(--line);border-radius:18px;overflow:hidden}.point-log>div{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border-bottom:1px solid var(--line)}.point-log>div:last-child{border-bottom:0}.point-log span{display:flex;flex-direction:column}.point-log small{color:var(--muted);font-size:10px}.point-log strong.plus{color:#72e2ba}.point-log strong.minus{color:#ff8996}
body.theme-key-neon .jamo-key{border-color:rgba(57,214,197,.38);box-shadow:inset 0 0 12px rgba(57,214,197,.08),0 0 10px rgba(57,214,197,.07)}body.theme-key-neon .jamo-key strong{text-shadow:0 0 10px rgba(57,214,197,.35)}
@media(max-width:760px){.daily-reward-grid,.shop-grid{grid-template-columns:1fr}.roulette-wrap{width:190px;height:190px}.header-points{min-height:27px;padding:0 7px}.header-player-name em{display:none}}

/* v23 inventory / duration shop / team history */
.duration-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;width:100%}.duration-buttons button{display:flex;flex-direction:column;gap:2px;padding:8px 5px}.duration-buttons small{font-size:9px;color:#ffd56c}.item-expiry{padding:7px 9px;border-radius:9px;background:rgba(57,214,197,.08);color:#8cf0df;font-size:10px}.profile-summary-card{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}.profile-summary-card>div{padding:16px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.035)}.profile-summary-card small,.profile-summary-card strong{display:block}.profile-summary-card small{color:var(--muted);font-size:9px}.profile-summary-card strong{margin-top:5px}.inventory-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.inventory-card{padding:18px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.035)}.inventory-card.equipped{border-color:rgba(57,214,197,.45);box-shadow:inset 0 0 0 1px rgba(57,214,197,.12)}.inventory-card p{min-height:42px;color:var(--muted);font-size:11px}.inventory-card form{margin-top:12px}.inventory-card button{width:100%}.team-history-actions{display:flex;justify-content:flex-end;gap:6px;margin:-1px 0 4px}.team-history-actions button:disabled{opacity:.4;cursor:not-allowed}.team-history-guess{grid-template-columns:20px minmax(90px,140px) 1fr}.team-result-card.draw{border-color:rgba(242,189,77,.42);background:rgba(242,189,77,.07)}.team-bonus strong{color:#ffd56c}.mail-point-gift form{margin-left:auto}.mail-point-gift form button{min-height:36px}.jamo-key:not(.correct):not(.present):not(.absent){border-color:rgba(255,255,255,.16)}
@media(max-width:650px){.profile-summary-card,.inventory-grid{grid-template-columns:1fr}.duration-buttons{grid-template-columns:repeat(3,1fr)}.team-history-actions{justify-content:stretch}.team-history-actions button{flex:1}.team-history-guess{grid-template-columns:18px 90px 1fr}}

@media(max-width:650px){body.no-scroll-game .team-history-actions button{min-height:24px;padding:0 6px;font-size:8px}.team-history-actions{margin:0 0 2px}}


/* v24: 싱글플레이 돌아가기 버튼 */
.single-heading {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}
.single-heading > div {
    min-width: 0;
}
.single-back-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-height: 34px;
    padding: 0 11px;
    border: 1px solid var(--line);
    border-radius: 11px;
    background: rgba(255,255,255,.055);
    color: var(--muted);
    font-size: 11px;
    font-weight: 850;
    white-space: nowrap;
    touch-action: manipulation;
}
.single-back-button:hover,
.single-back-button:focus-visible {
    color: #fff;
    background: rgba(255,255,255,.1);
}
@media (max-width: 650px) {
    .single-play-page .single-heading {
        gap: 7px;
    }
    .single-play-page .single-back-button {
        min-height: 28px;
        padding: 0 8px;
        border-radius: 8px;
        font-size: 9px;
    }
}


/* v25 season / guild / item battle */
.guild-mini-badge{color:#9fe9da;font-size:9px;font-style:normal;margin-right:4px}.season-hero,.guild-dashboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:20px}.season-hero{grid-template-columns:1fr 2fr}.season-hero>div,.guild-dashboard>article{padding:18px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.04);display:grid;gap:5px}.season-hero small,.guild-dashboard small{color:var(--muted);font-size:10px}.season-hero strong,.guild-dashboard strong{font-size:21px}.quest-grid,.guild-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.quest-card,.guild-card{padding:17px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.035)}.quest-card.claimed{opacity:.65}.quest-progress{height:8px;margin:12px 0;border-radius:99px;background:rgba(255,255,255,.07);overflow:hidden}.quest-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:99px}.quest-card p,.guild-card p{color:var(--muted);font-size:11px;line-height:1.6}.guild-card>div{display:flex;gap:10px;align-items:center;margin:12px 0}.guild-card>div strong{margin-left:auto}.guild-rank{color:var(--accent-2);font-weight:900}.guild-member-list,.guild-chat{display:grid;gap:7px;max-height:360px;overflow:auto}.guild-member-list>div,.guild-chat>div{display:flex;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03)}.guild-chat>div{justify-content:flex-start}.guild-chat span{color:var(--muted)}.two-column-content{display:grid;grid-template-columns:1fr 1fr;gap:16px}.compact-form{margin-top:14px}.battle-item-bar{display:flex;align-items:center;gap:5px;margin:0 0 5px;overflow-x:auto}.battle-item-bar button{flex:0 0 auto;min-height:30px;padding:0 9px;border:1px solid rgba(103,213,196,.25);border-radius:10px;background:rgba(57,214,197,.08);font-size:9px;font-weight:900}.battle-item-bar button b{margin-left:4px;color:var(--accent-2)}.battle-item-bar span{font-size:9px;color:#ffd477;white-space:nowrap}.battle-shop-card .primary-button{width:100%}
@media(max-width:760px){.quest-grid,.guild-grid,.guild-dashboard,.season-hero,.two-column-content{grid-template-columns:1fr}.season-hero>div,.guild-dashboard>article{padding:13px}.battle-item-bar{margin-bottom:3px}.battle-item-bar button{min-height:26px;padding:0 7px;font-size:8px}}

.season-end-reward{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:15px;padding:14px 16px;border:1px solid rgba(255,212,119,.32);border-radius:16px;background:rgba(255,212,119,.07)}.season-end-reward div{display:grid;gap:3px}.season-end-reward span{color:var(--muted);font-size:11px}.battle-inventory-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.battle-inventory-grid article{display:flex;justify-content:space-between;gap:8px;padding:13px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.035)}.battle-inventory-grid span{color:var(--accent-2);font-weight:900}@media(max-width:650px){.season-end-reward{align-items:stretch;flex-direction:column}.battle-inventory-grid{grid-template-columns:1fr}}

.theme-key-season-wave .jamo-key{border-color:rgba(170,150,255,.58)!important;background:linear-gradient(180deg,rgba(120,94,255,.28),rgba(24,37,70,.98))!important;box-shadow:0 0 0 1px rgba(91,226,218,.12) inset}.theme-key-season-wave .jamo-key small{color:#b9fff5}
@media (min-width:901px){
  .site-header{grid-template-columns:150px minmax(0,1fr) max-content;column-gap:12px}
  .desktop-nav-shell{min-width:0;overflow:hidden}
  .desktop-nav{min-width:0;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;gap:3px;scroll-behavior:smooth}
  .desktop-nav::-webkit-scrollbar{display:none}
  .desktop-nav a{flex:0 0 auto;padding:7px 8px;font-size:11px;white-space:nowrap}
  .desktop-nav-scroll{height:30px;flex-basis:24px;width:24px;font-size:17px}
  .header-user{min-width:max-content;flex-wrap:nowrap;gap:9px;white-space:nowrap}
  .header-user>*{flex:0 0 auto}
  .header-player-name{flex-wrap:nowrap;white-space:nowrap;word-break:keep-all;overflow-wrap:normal}
  .guild-mini-badge,.header-player-name em,.header-user .text-button,.header-user .admin-header-link{white-space:nowrap;word-break:keep-all}
  .header-user form{flex:0 0 auto}
}


/* ======================================================================
   v26 - account UI themes + beginner-friendly multiplayer flow
   ====================================================================== */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* account UI theme palettes */
body.ui-theme-black{color-scheme:dark}
body.ui-theme-green{color-scheme:dark;--bg:#06150f;--bg-soft:#0a2018;--panel:rgba(10,35,26,.93);--panel-strong:#0c2a1f;--line:rgba(144,234,188,.16);--line-strong:rgba(144,234,188,.28);--text:#f2fff8;--muted:#8fb7a4;--accent:#26a96c;--accent-light:#4bc98a;--accent-2:#83e6af;--shadow:0 28px 80px rgba(0,0,0,.38);background:radial-gradient(circle at 50% -10%,rgba(38,169,108,.25),transparent 35%),linear-gradient(180deg,#06150f 0%,#092019 100%)}
body.ui-theme-yellow{color-scheme:dark;--bg:#1a1607;--bg-soft:#241e09;--panel:rgba(39,32,10,.94);--panel-strong:#30280d;--line:rgba(255,224,112,.17);--line-strong:rgba(255,224,112,.3);--text:#fffbed;--muted:#c3b782;--accent:#e7b728;--accent-light:#f3ca50;--accent-2:#ffe27a;--correct:#2fb777;--present:#e7a62f;--shadow:0 28px 80px rgba(0,0,0,.4);background:radial-gradient(circle at 50% -10%,rgba(231,183,40,.24),transparent 34%),linear-gradient(180deg,#191506 0%,#252009 100%)}
body.ui-theme-white{color-scheme:light;--bg:#f3f5f8;--bg-soft:#e9edf2;--panel:rgba(255,255,255,.94);--panel-strong:#fff;--panel-soft:rgba(20,34,52,.04);--line:rgba(20,34,52,.12);--line-strong:rgba(20,34,52,.22);--text:#172033;--muted:#68758a;--accent:#5f4be7;--accent-light:#735ff0;--accent-2:#168f7f;--absent:#7c8798;--shadow:0 22px 60px rgba(31,45,61,.13);background:radial-gradient(circle at 50% -10%,rgba(95,75,231,.11),transparent 33%),linear-gradient(180deg,#f8f9fb 0%,#eef2f6 100%)}
body.ui-theme-green .ambient--one{background:rgba(74,205,137,.12)}body.ui-theme-green .ambient--two{background:rgba(38,169,108,.14)}
body.ui-theme-yellow .ambient--one{background:rgba(255,224,122,.11)}body.ui-theme-yellow .ambient--two{background:rgba(231,183,40,.13)}
body.ui-theme-white .ambient{opacity:.45}body.ui-theme-white .ambient--one{background:rgba(22,143,127,.13)}body.ui-theme-white .ambient--two{background:rgba(95,75,231,.12)}
body.ui-theme-white .panel-card,body.ui-theme-white .chat-card,body.ui-theme-white .race-sidebar,body.ui-theme-white .game-card,body.ui-theme-white .waiting-card{background:rgba(255,255,255,.96)}
body.ui-theme-white .mobile-nav{background:rgba(255,255,255,.96);box-shadow:0 16px 40px rgba(31,45,61,.16)}
body.ui-theme-white .desktop-nav a:hover,body.ui-theme-white .desktop-nav a.active,body.ui-theme-white .mobile-nav a.active{color:#fff;background:var(--accent)}
body.ui-theme-white .player-slot.filled,body.ui-theme-white .chat-form input{color:var(--text)}
body.ui-theme-white .chat-message p,body.ui-theme-white .room-card,body.ui-theme-white .team-select-card,body.ui-theme-white .team-member,body.ui-theme-white .inventory-card,body.ui-theme-white .profile-summary-card>div{background:rgba(31,45,61,.035)}
body.ui-theme-white .room-mode-chip,body.ui-theme-white .room-option-line span,body.ui-theme-white .rule-option-chips span{color:#4b5364}
body.ui-theme-white .jamo-key:not(.correct):not(.present):not(.absent){background:#e6eaf0!important;color:#202a3b!important;border-color:#cbd2dc!important}
body.ui-theme-white .tile:not(.correct):not(.present):not(.absent):not(.hidden){color:#172033;background:#fff;border-color:#cbd2dc}
body.ui-theme-white .header-points{color:#8b6700;background:rgba(218,174,28,.12);border-color:rgba(179,135,0,.28)}

/* my page theme picker */
.theme-settings .section-heading p{margin:5px 0 0;color:var(--muted);font-size:11px}.ui-theme-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.ui-theme-option{position:relative;display:grid;gap:6px;padding:14px;border:2px solid var(--line);border-radius:17px;cursor:pointer;background:var(--panel-soft)}.ui-theme-option input{position:absolute;opacity:0;pointer-events:none}.ui-theme-option:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}.ui-theme-option strong{font-size:13px}.ui-theme-option small{color:var(--muted);font-size:9px}.theme-preview{display:flex;gap:4px;height:40px;padding:7px;border-radius:11px}.theme-preview i{flex:1;border-radius:6px}.ui-theme-option--black .theme-preview{background:#07101d}.ui-theme-option--black .theme-preview i:nth-child(1){background:#7c5cff}.ui-theme-option--black .theme-preview i:nth-child(2){background:#39d6c5}.ui-theme-option--black .theme-preview i:nth-child(3){background:#66758d}.ui-theme-option--green .theme-preview{background:#06150f}.ui-theme-option--green .theme-preview i:nth-child(1){background:#26a96c}.ui-theme-option--green .theme-preview i:nth-child(2){background:#83e6af}.ui-theme-option--green .theme-preview i:nth-child(3){background:#315c49}.ui-theme-option--yellow .theme-preview{background:#1a1607}.ui-theme-option--yellow .theme-preview i:nth-child(1){background:#e7b728}.ui-theme-option--yellow .theme-preview i:nth-child(2){background:#ffe27a}.ui-theme-option--yellow .theme-preview i:nth-child(3){background:#6b5e29}.ui-theme-option--white .theme-preview{background:#f3f5f8;border:1px solid #d8dde5}.ui-theme-option--white .theme-preview i:nth-child(1){background:#5f4be7}.ui-theme-option--white .theme-preview i:nth-child(2){background:#168f7f}.ui-theme-option--white .theme-preview i:nth-child(3){background:#a7b0bd}.theme-save-button{grid-column:1/-1}

/* multiplayer list: expose the primary decisions first */
.multi-easy-heading{margin-bottom:14px}.multi-start-panel{display:grid;grid-template-columns:1.2fr .8fr;gap:10px;margin-bottom:12px}.multi-start-primary,.multi-start-secondary{display:flex;align-items:center;gap:13px;min-height:88px;padding:16px 18px;border:1px solid var(--line);border-radius:20px;text-align:left;cursor:pointer}.multi-start-primary{color:#fff;border-color:transparent;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 68%,#261f6c))}.multi-start-secondary{background:var(--panel-soft)}.multi-start-primary>span,.multi-start-secondary>span{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;border-radius:14px;background:rgba(255,255,255,.13);font-size:25px;font-weight:900}.multi-start-secondary>span{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.multi-start-panel strong,.multi-start-panel small{display:block}.multi-start-panel strong{font-size:16px}.multi-start-panel small{margin-top:4px;color:inherit;opacity:.72;font-size:10px;line-height:1.45}.multi-flow-card{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:8px;margin-bottom:22px;padding:12px;border:1px solid var(--line);border-radius:17px;background:var(--panel-soft)}.multi-flow-card>div{display:flex;align-items:center;gap:9px;min-width:0}.multi-flow-card b,.lobby-flow-guide b{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;border-radius:50%;color:#fff;background:var(--accent);font-size:11px}.multi-flow-card span,.multi-flow-card strong,.multi-flow-card small{display:block}.multi-flow-card strong{font-size:11px}.multi-flow-card small{margin-top:2px;color:var(--muted);font-size:8px}.multi-flow-card>i{color:var(--muted);font-style:normal}.room-card .secondary-button{font-size:13px;font-weight:900}.room-toolbar{scroll-margin-top:16px}
.create-room-intro{color:var(--muted)}.create-step-label{display:flex;align-items:center;gap:8px;margin:18px 0 8px}.create-step-label b{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;color:#fff;background:var(--accent);font-size:10px}.create-step-label span{font-size:12px;font-weight:900}.create-step-label small{margin-left:5px;color:var(--muted);font-size:8px;font-weight:700}.create-room-v16 .room-mode-picker,.create-room-v16 .room-option-picker{margin-top:0}.create-room-submit{min-height:52px;font-size:14px}

/* room lobby: action strip is physically separated from gameplay UI */
.room-page-header--simple{align-items:center;margin-bottom:8px}.room-page-header--simple .connection-status{margin-left:auto}.room-action-strip{position:relative;z-index:30;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;margin-bottom:13px;padding:10px 12px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.room-action-help strong,.room-action-help small{display:block}.room-action-help strong{font-size:11px}.room-action-help small{margin-top:2px;color:var(--muted);font-size:8px}.leave-room-form{display:block;margin:0!important}.room-leave-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 16px;border:1px solid rgba(255,109,125,.38);border-radius:12px;color:#fff;background:#d94f60;font-weight:900;cursor:pointer}.room-leave-button{white-space:nowrap}.room-help-button{min-height:42px}.lobby-flow-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;padding:10px;border:1px solid var(--line);border-radius:17px;background:var(--panel-soft)}.lobby-flow-guide>div{display:flex;align-items:center;gap:8px;padding:8px;border-radius:12px;opacity:.58}.lobby-flow-guide>div.is-done{opacity:1;background:color-mix(in srgb,var(--accent-2) 8%,transparent)}.lobby-flow-guide>div.is-done b{background:var(--correct)}.lobby-flow-guide strong,.lobby-flow-guide small{display:block}.lobby-flow-guide strong{font-size:10px}.lobby-flow-guide small{margin-top:2px;color:var(--muted);font-size:8px;line-height:1.3}
.result-exit-notice{margin:18px 0 4px;padding:16px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:17px;text-align:center;background:color-mix(in srgb,var(--accent) 8%,transparent)}.result-exit-notice strong{font-size:15px}.result-exit-notice p{margin:5px 0 0;color:var(--muted);font-size:10px}.match-end-guide-sheet{text-align:center}.match-end-guide-sheet p{color:var(--muted);line-height:1.6}.match-end-guide-sheet p b{color:var(--text)}.match-end-guide-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}

@media(max-width:760px){.ui-theme-picker{grid-template-columns:1fr 1fr}.multi-start-panel{grid-template-columns:1fr}.multi-flow-card{grid-template-columns:1fr;gap:5px}.multi-flow-card>i{display:none}.multi-flow-card>div{padding:4px}.room-action-strip{grid-template-columns:1fr auto;padding:9px}.room-action-help{grid-column:1/-1}.room-help-button{display:none}.room-leave-button{min-width:108px;min-height:44px}.lobby-flow-guide{grid-template-columns:1fr}.match-end-guide-actions{grid-template-columns:1fr}.room-page-header--simple h1{font-size:18px!important}.room-page-header--simple .connection-status{display:none}.room-action-strip{margin-bottom:10px}}
@media(max-width:390px){.ui-theme-picker{grid-template-columns:1fr}.multi-start-primary,.multi-start-secondary{min-height:76px;padding:13px}.room-action-strip{display:flex;align-items:center;justify-content:space-between}.room-action-help{min-width:0}.room-action-help small{display:none}.room-leave-button{min-width:104px;padding:0 12px}}

/* v27 모바일 메뉴 / 흰색 테마 폼 안정화 */
.mobile-nav--compact{grid-template-columns:repeat(5,1fr)!important}.mobile-nav--compact button{border:0;background:transparent;color:var(--muted);font:inherit}.mobile-nav--compact button.active{color:var(--accent-2)}
.mobile-more-sheet{position:fixed;inset:0;z-index:200}.mobile-more-backdrop{position:absolute;inset:0;border:0;background:rgba(0,0,0,.56)}.mobile-more-sheet>section{position:absolute;left:10px;right:10px;bottom:76px;padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--panel);box-shadow:var(--shadow)}.mobile-more-sheet header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.mobile-more-sheet header button{border:0;background:transparent;color:var(--text);font-size:24px}.mobile-more-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.mobile-more-grid a{padding:13px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.04);font-weight:800}
body.ui-theme-white .field input,body.ui-theme-white .field textarea,body.ui-theme-white .field select,body.ui-theme-white input,body.ui-theme-white textarea,body.ui-theme-white select{color:var(--text);background:#fff;border-color:rgba(14,30,50,.18)}body.ui-theme-white input::placeholder,body.ui-theme-white textarea::placeholder{color:#7b8797}body.ui-theme-white .mobile-more-sheet>section{background:#fff}


/* v28 server monitor */
.monitor-heading{align-items:center}.monitor-tabs,.monitor-range-tabs{display:flex;gap:7px;margin:0 0 16px}.monitor-tabs a,.monitor-range-tabs a{padding:9px 14px;border:1px solid var(--line);border-radius:12px;color:var(--muted);font-size:12px;font-weight:900;background:rgba(255,255,255,.035)}.monitor-tabs a.active,.monitor-range-tabs a.active{color:#fff;border-color:transparent;background:var(--accent)}
.monitor-status-line{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;color:var(--muted);font-size:11px}.monitor-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.monitor-kpi-grid article{display:grid;gap:5px;padding:16px;border:1px solid var(--line);border-radius:17px;background:rgba(255,255,255,.035)}.monitor-kpi-grid small,.monitor-kpi-grid em{color:var(--muted);font-size:10px;font-style:normal}.monitor-kpi-grid strong{font-size:25px;font-variant-numeric:tabular-nums}.monitor-two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.monitor-panel{margin-top:12px;padding:18px}.monitor-two-col .monitor-panel{margin-top:0}.monitor-db-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.monitor-db-grid div,.monitor-health div{padding:12px;border-radius:12px;background:rgba(255,255,255,.04)}.monitor-db-grid small,.monitor-health span{display:block;color:var(--muted);font-size:9px}.monitor-db-grid strong,.monitor-health strong{display:block;margin-top:4px;font-size:17px}.monitor-note{margin:10px 0 0;font-size:10px}.monitor-health{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.monitor-health-message{margin-top:10px;padding:11px 12px;border-radius:12px;font-size:11px;font-weight:800;background:rgba(57,214,197,.09);color:#8ef1dc}.monitor-health-message.warn{background:rgba(255,193,7,.12);color:#ffe49a}.monitor-health-message.danger{background:rgba(255,109,125,.12);color:#ffc0c8}.monitor-error-list{display:grid;gap:7px}.monitor-error-list article{display:flex;justify-content:space-between;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025)}.monitor-error-list article div{min-width:0}.monitor-error-list strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.monitor-error-list small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.monitor-error-list article>span{flex:0 0 auto;color:var(--danger);font-size:9px}.monitor-history-list{display:grid;gap:8px}.monitor-history-row{display:grid;grid-template-columns:175px 1fr 125px;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}.monitor-history-time strong,.monitor-history-values strong{display:block;font-size:11px}.monitor-history-time small,.monitor-history-values small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.monitor-history-values{text-align:right}.monitor-bar{height:9px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.06)}.monitor-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.monitor-history-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.monitor-history-summary article{padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.monitor-history-summary small{color:var(--accent-2);font-size:9px;font-weight:900}.monitor-history-summary p{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.6}
body.ui-theme-white .monitor-kpi-grid article,body.ui-theme-white .monitor-db-grid div,body.ui-theme-white .monitor-health div,body.ui-theme-white .monitor-error-list article,body.ui-theme-white .monitor-history-summary article{background:#fff}
@media(max-width:720px){.monitor-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.monitor-two-col,.monitor-history-summary{grid-template-columns:1fr}.monitor-history-row{grid-template-columns:105px 1fr 85px;gap:7px}.monitor-history-time small{display:none}.monitor-kpi-grid strong{font-size:20px}}

/* v30 board owner edit/delete */
.post-manage-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.post-manage-actions form { margin:0; }
.post-manage-actions .mini-danger { min-height:40px; padding:0 14px; cursor:pointer; }
@media (max-width:650px) {
    .post-manage-actions { display:grid; grid-template-columns:1fr 1fr; }
    .post-manage-actions .secondary-button, .post-manage-actions form, .post-manage-actions .mini-danger { width:100%; }
}

/* v31: 게임 플레이 화면은 PC에서도 한 화면에 고정 */
.action-row,
.compact-action-row {
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
}
.action-row .action-key--submit,
.compact-action-row .action-key--submit {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    justify-self: stretch;
}

body.single-play-page,
body.no-scroll-game {
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
}
body.single-play-page .site-shell,
body.no-scroll-game .site-shell {
    height: 100dvh;
    min-height: 0;
    padding-bottom: 8px;
    display: flex;
    flex-direction: column;
}
body.single-play-page .site-header,
body.no-scroll-game .site-header {
    flex: 0 0 62px;
    min-height: 62px;
}
body.single-play-page .page-content,
body.no-scroll-game .page-content {
    flex: 1 1 auto;
    min-height: 0;
    padding-top: 9px;
    overflow: hidden;
}
body.single-play-page .mobile-nav,
body.no-scroll-game .mobile-nav {
    display: none !important;
}

@media (min-width: 651px) {
    body.single-play-page .site-header,
    body.no-scroll-game .site-header {
        grid-template-columns: 180px 1fr 220px;
    }
    body.single-play-page .desktop-nav,
    body.no-scroll-game .desktop-nav {
        gap: 3px;
    }
    body.single-play-page .desktop-nav a,
    body.no-scroll-game .desktop-nav a {
        padding: 7px 8px;
        font-size: 11px;
    }
    body.single-play-page .site-logo span,
    body.no-scroll-game .site-logo span {
        display: none;
    }

    .single-play-page .game-page {
        height: 100%;
        min-height: 0;
        display: flex;
        flex-direction: column;
    }
    .single-play-page .game-topline {
        flex: 0 0 48px;
        margin-bottom: 5px;
    }
    .single-play-page .game-topline h1 { margin: 1px 0 0; font-size: 22px; }
    .single-play-page .game-topline .section-kicker { font-size: 7px; }
    .single-play-page .timer-card { min-height: 43px; padding: 6px 10px; }
    .single-play-page .timer-card small { margin-bottom: 1px; font-size: 8px; }
    .single-play-page .timer-card strong { font-size: 16px; }
    .single-play-page .game-meta-card {
        flex: 0 0 44px;
        margin-bottom: 5px;
        padding: 5px 9px;
    }
    .single-play-page .game-meta-card > div { padding: 2px 8px; }
    .single-play-page .game-meta-card small { font-size: 8px; }
    .single-play-page .game-meta-card strong { font-size: 11px; }
    .single-play-page .game-meta-card .mini-secondary { min-height: 31px; }
    .single-play-page .game-card {
        flex: 1 1 auto;
        min-height: 0;
        padding: 10px 14px;
        border-radius: 18px;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }
    .single-play-page .game-card .board {
        flex: 1 1 auto;
        min-height: 0;
        height: min(38vh, 300px);
        max-height: 43%;
        width: min(100%, 340px);
        gap: 4px;
        grid-template-rows: repeat(5, minmax(0, 1fr));
    }
    .single-play-page .game-card .board-row { gap: 4px; min-height: 0; }
    .single-play-page .game-card .tile { height: 100%; min-height: 0; aspect-ratio: auto; border-radius: 8px; font-size: clamp(18px, 3vh, 26px); }
    .single-play-page .game-card .game-message { flex: 0 0 18px; min-height: 18px; margin: 3px 0; font-size: 10px; }
    .single-play-page .game-card .keyboard { flex: 0 0 auto; gap: 4px; margin-top: 2px; }
    .single-play-page .game-card .keyboard-row { --keyboard-gap: 4px; }
    .single-play-page .game-card .jamo-key { height: clamp(37px, 5.6vh, 45px); border-radius: 8px; }
    .single-play-page .game-card .jamo-key strong { font-size: 15px; }
    .single-play-page .game-card .action-row { margin-top: 4px; }
    .single-play-page .game-card .action-key--submit { min-height: clamp(37px, 5.2vh, 44px); }
    .single-play-page .single-summary { display: none; }

    body.no-scroll-game .room-page {
        height: 100%;
        min-height: 0;
        display: flex;
        flex-direction: column;
    }
    body.no-scroll-game .room-page-header {
        flex: 0 0 30px;
        min-height: 30px;
        margin-bottom: 3px;
        align-items: center;
    }
    body.no-scroll-game .room-page-header h1,
    body.no-scroll-game .room-page-header .section-kicker { display: none; }
    body.no-scroll-game .room-page-header .back-link { font-size: 10px; }
    body.no-scroll-game .room-action-strip {
        flex: 0 0 38px;
        min-height: 38px;
        margin-bottom: 4px;
        padding: 3px 8px;
        border-radius: 11px;
    }
    body.no-scroll-game .room-action-help small { display: none; }
    body.no-scroll-game .room-action-help strong { font-size: 9px; }
    body.no-scroll-game .room-help-button,
    body.no-scroll-game .room-leave-button { min-height: 30px; padding: 0 10px; font-size: 9px; }
    body.no-scroll-game .multi-game-layout {
        flex: 1 1 auto;
        min-height: 0;
        display: block;
    }
    body.no-scroll-game .compact-game-shell {
        height: 100%;
        min-height: 0;
        display: flex;
        flex-direction: column;
    }
    body.no-scroll-game .compact-game-top { flex: 0 0 auto; margin-bottom: 3px; }
    body.no-scroll-game .compact-game-top h2 { margin: 0; font-size: 16px; }
    body.no-scroll-game .compact-game-top .section-kicker { font-size: 7px; }
    body.no-scroll-game .race-timer { padding: 5px 9px; border-radius: 10px; }
    body.no-scroll-game .race-timer small { margin-bottom: 1px; font-size: 7px; }
    body.no-scroll-game .race-timer strong { font-size: 15px; }
    body.no-scroll-game .turn-guide { margin: 2px 0 0; font-size: 9px; }
    body.no-scroll-game .live-team-strip { flex: 0 0 auto; gap: 4px; margin-bottom: 3px; }
    body.no-scroll-game .race-player { padding: 5px 7px; border-radius: 9px; }
    body.no-scroll-game .battle-item-bar { margin-bottom: 3px; }
    body.no-scroll-game .team-history-actions { margin: 0 0 3px; }
    body.no-scroll-game .compact-play-card {
        flex: 1 1 auto;
        min-height: 0;
        width: 100%;
        max-width: 620px;
        margin: 0 auto;
        padding: 9px 13px;
        border-radius: 17px;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }
    body.no-scroll-game .compact-play-card .board {
        flex: 1 1 auto;
        min-height: 0;
        height: min(31vh, 255px);
        max-height: 42%;
        width: min(100%, 325px);
        margin: 0 auto;
        gap: 4px;
        grid-template-rows: repeat(5, minmax(0,1fr));
    }
    body.no-scroll-game .compact-play-card .board-row { gap: 4px; min-height: 0; }
    body.no-scroll-game .compact-play-card .tile { height: 100%; min-height: 0; aspect-ratio: auto; border-radius: 8px; font-size: clamp(17px, 2.8vh, 24px); }
    body.no-scroll-game .compact-play-card .game-message { flex: 0 0 18px; min-height: 18px; margin: 2px 0; font-size: 9px; }
    body.no-scroll-game .compact-play-card .keyboard { flex: 0 0 auto; gap: 4px; margin-top: 2px; }
    body.no-scroll-game .compact-play-card .keyboard-row { --keyboard-gap: 4px; }
    body.no-scroll-game .compact-play-card .jamo-key { height: clamp(35px, 5vh, 43px); border-radius: 8px; }
    body.no-scroll-game .compact-play-card .action-row { margin-top: 4px; }
    body.no-scroll-game .compact-play-card .action-key--submit { min-height: clamp(36px, 5vh, 43px); }
    body.no-scroll-game .my-word-results { display: none !important; }
}

@media (min-width:651px) and (max-height:800px) {
    body.single-play-page .site-header,
    body.no-scroll-game .site-header { flex-basis: 52px; min-height: 52px; }
    body.single-play-page .page-content,
    body.no-scroll-game .page-content { padding-top: 5px; }
    .single-play-page .game-topline { flex-basis: 40px; }
    .single-play-page .game-meta-card { flex-basis: 38px; }
    .single-play-page .game-card .board { height: min(32vh, 235px); max-height: 40%; }
    .single-play-page .game-card .jamo-key,
    body.no-scroll-game .compact-play-card .jamo-key { height: 35px; }
    .single-play-page .game-card .action-key--submit,
    body.no-scroll-game .compact-play-card .action-key--submit { min-height: 35px; }
    body.no-scroll-game .room-action-strip { flex-basis: 34px; min-height: 34px; }
    body.no-scroll-game .compact-play-card .board { height: min(27vh, 210px); max-height: 38%; }
}

/* v31: 관리자/사용자 포인트 원장 */
.admin-point-layout { display:grid; grid-template-columns:minmax(260px,.72fr) minmax(0,1.7fr); gap:16px; align-items:start; }
.admin-user-panel { position:sticky; top:12px; max-height:calc(100vh - 30px); overflow:hidden; }
.admin-user-search { display:grid; grid-template-columns:1fr auto; gap:7px; margin-bottom:12px; }
.admin-user-search input { min-width:0; height:38px; padding:0 11px; color:var(--text); border:1px solid var(--line); border-radius:10px; background:var(--panel-soft); }
.admin-user-list { display:grid; gap:5px; max-height:620px; overflow:auto; padding-right:3px; }
.admin-user-row { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:11px 12px; border:1px solid transparent; border-radius:12px; background:var(--panel-soft); }
.admin-user-row:hover,.admin-user-row.active { border-color:color-mix(in srgb,var(--accent) 45%,var(--line)); background:color-mix(in srgb,var(--accent) 10%,var(--panel-soft)); }
.admin-user-row span { min-width:0; }
.admin-user-row strong,.admin-user-row small { display:block; }
.admin-user-row strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }
.admin-user-row small { margin-top:3px; color:var(--muted); font-size:8px; }
.admin-user-row b { flex:0 0 auto; font-size:11px; color:var(--accent-2); }
.admin-point-main { min-width:0; }
.point-admin-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; margin-bottom:12px; }
.point-admin-summary article { padding:15px; border:1px solid var(--line); border-radius:16px; background:var(--panel-soft); }
.point-admin-summary small,.point-admin-summary span,.point-admin-summary strong { display:block; }
.point-admin-summary small { color:var(--muted); font-size:9px; }
.point-admin-summary strong { margin-top:5px; font-size:20px; }
.point-admin-summary span { margin-top:4px; color:var(--muted); font-size:8px; }
.admin-point-grant { margin-bottom:18px; }
.admin-grant-fields { display:grid; grid-template-columns:180px minmax(0,1fr) auto; gap:9px; align-items:end; }
.admin-grant-fields .field { margin:0; }
.admin-grant-fields .primary-button { min-width:120px; }
.admin-point-note { margin:10px 0 0; font-size:10px; }
.point-ledger-section { margin-top:18px; }
.point-ledger-list { overflow:hidden; border:1px solid var(--line); border-radius:17px; }
.point-ledger-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:14px; padding:13px 15px; border-bottom:1px solid var(--line); background:var(--panel-soft); }
.point-ledger-row:last-child { border-bottom:0; }
.point-ledger-main { min-width:0; }
.point-ledger-main strong,.point-ledger-main small,.point-ledger-amount strong,.point-ledger-amount small { display:block; }
.point-ledger-main strong { font-size:12px; }
.point-ledger-main small { margin-top:4px; color:var(--muted); font-size:8px; }
.point-ledger-amount { text-align:right; font-variant-numeric:tabular-nums; }
.point-ledger-amount strong { font-size:14px; }
.point-ledger-row.is-plus .point-ledger-amount strong { color:#73e2bd; }
.point-ledger-row.is-minus .point-ledger-amount strong { color:#ff9aaa; }
.point-ledger-amount small { margin-top:3px; color:var(--muted); font-size:8px; }
.point-pagination { display:flex; align-items:center; justify-content:center; gap:14px; margin-top:14px; font-size:11px; }
.point-pagination a { padding:7px 10px; border:1px solid var(--line); border-radius:9px; background:var(--panel-soft); font-weight:800; }
.point-pagination span { color:var(--muted); }
.point-history-summary { margin-top:4px; }
@media(max-width:850px){.admin-point-layout{grid-template-columns:1fr}.admin-user-panel{position:static;max-height:none}.admin-user-list{max-height:330px}.point-admin-summary{grid-template-columns:1fr 1fr}.admin-grant-fields{grid-template-columns:1fr 1fr}.admin-grant-fields .primary-button{grid-column:1/-1;width:100%}}
@media(max-width:520px){.point-admin-summary{grid-template-columns:1fr 1fr}.point-admin-summary strong{font-size:16px}.admin-grant-fields{grid-template-columns:1fr}.admin-grant-fields .primary-button{grid-column:auto}.point-ledger-row{padding:11px 12px;gap:8px}.point-ledger-main small{line-height:1.5}.point-ledger-amount strong{font-size:12px}}

/* v32 readability / navigation / roulette / word search */
.mobile-more-grid a{display:flex;align-items:center;gap:10px;min-height:48px}.mobile-more-grid .more-menu-icon{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;border-radius:9px;background:color-mix(in srgb,var(--accent) 12%,transparent);font-size:16px}.mobile-more-grid a>span:last-child{min-width:0}
.word-search-form{margin:0 0 16px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--panel-soft)}.word-search-form label{display:block;margin-bottom:8px;color:var(--muted);font-size:11px;font-weight:850}.word-search-form>div{display:flex;gap:8px}.word-search-form input{flex:1;min-width:0;height:44px;padding:0 13px;border:1px solid var(--line);border-radius:12px;color:var(--text);background:rgba(255,255,255,.045);outline:0}.word-search-form .primary-button,.word-search-form .secondary-button{min-width:72px;min-height:44px;padding:0 14px}.boom-button.is-done{border-color:rgba(255,109,125,.4);color:#ff9cab;background:rgba(255,109,125,.1)}.point-rank-value{color:#ffd56c}
/* 룰렛 숫자는 섹터 중앙에 수평으로 고정합니다. */
.roulette-wheel span{display:grid;place-items:center;width:44px;height:24px;left:auto;top:auto;transform:translate(-50%,-50%)!important;transform-origin:center!important;text-align:center;line-height:1}
.roulette-wheel span:nth-child(1){left:66%;top:22%}.roulette-wheel span:nth-child(2){left:82%;top:50%}.roulette-wheel span:nth-child(3){left:66%;top:78%}.roulette-wheel span:nth-child(4){left:34%;top:78%}.roulette-wheel span:nth-child(5){left:18%;top:50%}.roulette-wheel span:nth-child(6){left:34%;top:22%}
/* 흰색 테마에서 밝은 글씨가 배경에 묻히지 않도록 명시적으로 대비를 올립니다. */
body.ui-theme-white .secondary-button,body.ui-theme-white .mini-secondary,body.ui-theme-white .text-button,body.ui-theme-white .back-link,body.ui-theme-white .section-heading>a,body.ui-theme-white .mobile-more-grid a,body.ui-theme-white .room-card .secondary-button{color:#263247;background:#fff;border-color:#c7ced8}
body.ui-theme-white .secondary-button:hover,body.ui-theme-white .mini-secondary:hover,body.ui-theme-white .mobile-more-grid a:hover{color:#111827;background:#edf0f5;border-color:#aeb8c6}
body.ui-theme-white .empty-card strong,body.ui-theme-white .race-player footer b,body.ui-theme-white .profile-summary-card strong,body.ui-theme-white .inventory-card h3,body.ui-theme-white .shop-card h2,body.ui-theme-white .daily-card h2,body.ui-theme-white .answer-word-card strong,body.ui-theme-white .community-row strong,body.ui-theme-white .mail-row strong{color:#172033}
body.ui-theme-white .detail-summary,body.ui-theme-white .detail-summary span,body.ui-theme-white .page-heading p,body.ui-theme-white .section-heading p,body.ui-theme-white .muted,body.ui-theme-white small{color:#5c687a}
body.ui-theme-white .chat-message.mine p{color:#fff;background:#5f4be7}
body.ui-theme-white .roulette-wheel span{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.65)}
body.ui-theme-white .point-rank-value{color:#8b6700}
@media(max-width:650px){.word-search-form>div{display:grid;grid-template-columns:minmax(0,1fr) auto}.word-search-form .secondary-button{grid-column:1/-1;width:100%}.ranking-tabs{overflow-x:auto;white-space:nowrap}}

body.ui-theme-white .daily-reward-number,body.ui-theme-white .daily-history-row span,body.ui-theme-white .point-log .plus{color:#7a5a00}body.ui-theme-white .section-kicker{color:#5441c7}body.ui-theme-white .status-chip{color:#334155}

/* v33: 상점 장착 효과 / 길드 가입 UX */
/* 네온 키패드는 UI 테마보다 최종 우선순위를 가져 실제 게임에서 분명하게 보입니다. */
body.theme-key-neon .jamo-key:not(.correct):not(.present):not(.absent),
body.ui-theme-white.theme-key-neon .jamo-key:not(.correct):not(.present):not(.absent){
    color:#edffff!important;
    border-color:#48ffe2!important;
    background:linear-gradient(180deg,#123d47 0%,#071b25 100%)!important;
    box-shadow:inset 0 0 0 1px rgba(72,255,226,.28),inset 0 0 18px rgba(72,255,226,.16),0 0 10px rgba(72,255,226,.48),0 0 22px rgba(84,112,255,.18)!important;
}
body.theme-key-neon .jamo-key:not(.correct):not(.present):not(.absent) small{color:#7fffe9!important;text-shadow:0 0 7px rgba(72,255,226,.8)}
body.theme-key-neon .jamo-key:not(.correct):not(.present):not(.absent) strong{color:#fff!important;text-shadow:0 0 5px #48ffe2,0 0 13px rgba(72,255,226,.9)!important}
body.theme-key-neon .keyboard{filter:drop-shadow(0 0 8px rgba(72,255,226,.16))}
body.theme-key-neon .jamo-key.correct,body.theme-key-neon .jamo-key.present,body.theme-key-neon .jamo-key.absent{box-shadow:0 0 9px rgba(72,255,226,.18)}

/* 황금 프로필은 헤더, 내정보, 멀티 참가자 영역에서 확인할 수 있습니다. */
body.theme-profile-gold .header-user.has-gold-frame .header-player-name,
.profile-summary-card.equipped-profile-gold .profile-nickname-preview{
    border:1px solid #ffd05a!important;
    background:linear-gradient(135deg,rgba(255,211,92,.18),rgba(173,108,9,.08))!important;
    box-shadow:0 0 0 1px rgba(255,226,142,.14) inset,0 0 15px rgba(255,197,61,.38)!important;
}
.profile-summary-card.equipped-profile-gold .profile-nickname-preview{border-radius:14px}
.profile-summary-card.equipped-profile-gold .profile-nickname-preview strong{color:#ffd76e}
.has-gold-cosmetic .player-avatar{border:2px solid #ffd05a!important;box-shadow:0 0 0 2px rgba(255,208,90,.12),0 0 12px rgba(255,201,60,.48)!important;color:#ffe6a0!important}
.has-gold-cosmetic{box-shadow:inset 0 0 0 1px rgba(255,208,90,.28)!important}

/* 칭호는 모바일에서도 숨기지 않고, 게임 참가자 이름 앞에도 표시합니다. */
.header-player-name em,.equipped-title-badge,.player-title-badge{display:inline-flex!important;align-items:center;justify-content:center;margin-right:5px;padding:3px 7px;border:1px solid rgba(176,154,255,.42);border-radius:999px;background:linear-gradient(135deg,rgba(124,92,255,.25),rgba(69,214,198,.13));color:#d9d0ff!important;font-size:8px!important;font-style:normal;font-weight:950;line-height:1.1;white-space:nowrap;box-shadow:0 0 10px rgba(124,92,255,.15)}
.player-title-badge{padding:2px 5px;font-size:7px!important;vertical-align:1px}
body.ui-theme-white .equipped-title-badge,body.ui-theme-white .player-title-badge{color:#4d3bb1!important;background:#eeeafd;border-color:#bbb0ec}
.equipped-effect-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-6px 0 18px;padding:11px 14px;border:1px solid var(--line);border-radius:13px;background:var(--panel-soft);font-size:10px}.equipped-effect-summary span{color:var(--muted)}

.guild-card-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.guild-card-title h3{margin:0}.guild-policy-badge{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;font-size:8px;font-weight:900;white-space:nowrap}.guild-policy-badge.auto{color:#7ff0d2;background:rgba(57,214,197,.1);border:1px solid rgba(57,214,197,.25)}.guild-policy-badge.approval{color:#ffd876;background:rgba(255,206,81,.1);border:1px solid rgba(255,206,81,.26)}
.guild-cooldown-notice,.guild-leave-warning{display:grid;gap:4px;margin:0 0 16px;padding:13px 15px;border:1px solid rgba(255,180,76,.34);border-radius:14px;background:rgba(255,180,76,.08)}.guild-cooldown-notice strong,.guild-leave-warning strong{color:#ffd071}.guild-cooldown-notice span,.guild-leave-warning span,.guild-cooldown-notice small{color:var(--muted);font-size:10px}
.guild-pending-card,.guild-management-card{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--panel-soft)}.guild-pending-card h2,.guild-management-card h2{margin:3px 0 5px}.guild-pending-card p,.guild-management-card p{margin:0;color:var(--muted);font-size:10px}.guild-pending-card form{flex:0 0 auto}
.guild-policy-form{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr)) auto;gap:8px;align-items:stretch;min-width:min(100%,520px)}.guild-policy-form label{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025);cursor:pointer}.guild-policy-form input{accent-color:var(--accent)}.guild-policy-form span,.guild-policy-form b,.guild-policy-form small{display:block}.guild-policy-form small{margin-top:2px;color:var(--muted);font-size:8px}.guild-policy-form .primary-button{min-width:92px}
.guild-request-list{display:grid;gap:8px}.guild-request-list article{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-soft)}.guild-request-list strong,.guild-request-list small{display:block}.guild-request-list small{margin-top:4px;color:var(--muted);font-size:9px}.guild-request-actions{display:flex;gap:6px}.guild-request-actions form{margin:0}.guild-request-actions button{min-height:34px;padding:0 12px}
@media(max-width:760px){.equipped-effect-summary,.guild-pending-card,.guild-management-card{align-items:stretch;flex-direction:column}.guild-policy-form{grid-template-columns:1fr;width:100%;min-width:0}.guild-policy-form .primary-button{width:100%}.guild-request-list article{align-items:stretch;flex-direction:column}.guild-request-actions,.guild-request-actions form,.guild-request-actions button{width:100%}.header-player-name em{display:inline-flex!important}}
.shop-card.is-equipped-shop{border-color:color-mix(in srgb,var(--accent-2) 55%,var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-2) 12%,transparent)}.shop-equipped-badge{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;background:rgba(57,214,197,.1);border:1px solid rgba(57,214,197,.28);color:#7ff0d2;font-size:8px;font-weight:950}body.ui-theme-white .shop-equipped-badge{color:#176b59;background:#e5f8f3;border-color:#9bd6c8}

/* v34: 서버 당첨 결과와 룰렛 화살표 정지 위치 동기화 */
.roulette-result{margin:12px 0 10px;padding:11px 14px;border:1px solid rgba(255,208,86,.35);border-radius:13px;background:rgba(255,208,86,.08);color:#ffd56c;text-align:center;font-size:14px;font-weight:950}
body.ui-theme-white .roulette-result{color:#745400;background:#fff7d9;border-color:#e7cb70}


/* v35 SEO public pages */
.seo-intro-copy{display:grid;gap:8px;padding:18px 20px;border:1px solid var(--line);border-radius:18px;background:var(--panel-soft)}
.seo-intro-copy p{margin:0;color:var(--muted);font-size:12px;line-height:1.85}.seo-intro-copy strong{color:var(--text)}
.seo-intro-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.about-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);align-items:center;gap:28px;padding:32px 0 28px}.about-hero h1{margin:8px 0 12px;font-size:clamp(36px,5vw,68px);line-height:.98;letter-spacing:-.055em}.about-hero h1 em{color:var(--accent-2);font-style:normal}.about-hero p{max-width:720px;margin:0;color:var(--muted);font-size:14px;line-height:1.8}.about-jamo-demo{display:grid;grid-template-columns:repeat(5,52px);justify-content:center;gap:8px;padding:28px;border:1px solid var(--line);border-radius:24px;background:var(--panel-soft);box-shadow:var(--shadow)}.about-jamo-demo .tile{display:grid;place-items:center;width:52px;height:52px;border-radius:12px;font-size:22px;font-weight:950}.about-jamo-demo strong{grid-column:1/-1;margin-top:10px;text-align:center;font-size:11px;color:var(--muted)}
.about-copy-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.about-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.about-mode-grid .panel-card{padding:20px}.about-mode-grid h3{margin:0 0 8px}.about-mode-grid p{margin:0;color:var(--muted);font-size:11px;line-height:1.75}.about-cta{text-align:center;padding:32px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 10%,var(--panel-soft)),var(--panel-soft))}.about-cta h2{margin:6px 0 8px;font-size:28px}.about-cta p{margin:0;color:var(--muted)}.about-cta .hero__actions{justify-content:center}
@media(max-width:860px){.about-hero{grid-template-columns:1fr}.about-jamo-demo{max-width:420px;width:100%;margin:0 auto}.about-copy-grid{grid-template-columns:1fr}.about-mode-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.guest-actions .text-link:first-child{display:none}.about-hero{padding-top:18px}.about-hero h1{font-size:38px}.about-jamo-demo{grid-template-columns:repeat(5,minmax(0,1fr));padding:18px;gap:5px}.about-jamo-demo .tile{width:100%;height:auto;aspect-ratio:1}.about-mode-grid{grid-template-columns:1fr}.seo-intro-actions{display:grid;grid-template-columns:1fr}.seo-intro-actions a{width:100%}.about-cta{padding:24px 16px}}


/* v36: 정답 붐업/붐따 반응 및 정렬 */
.word-sort-bar{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px}
.word-sort-bar a{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:11px;background:var(--panel-soft);color:var(--muted);font-size:10px;font-weight:900}
.word-sort-bar a.active{border-color:rgba(92,239,183,.55);background:rgba(92,239,183,.12);color:#aaf8d7}
.word-reaction-actions,.inline-reaction-forms{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.word-reaction-actions form,.inline-reaction-forms form{margin:0}
.boomup-button{min-height:32px;padding:0 10px;border:1px solid rgba(92,239,183,.38);border-radius:10px;color:#aaf8d7;background:rgba(92,239,183,.10);font-size:10px;font-weight:900;cursor:pointer;white-space:nowrap}
.boomup-button.is-done{border-color:rgba(92,239,183,.72);color:#071a13;background:rgba(92,239,183,.88)}
.boom-button.is-done{opacity:1;cursor:pointer;border-color:rgba(255,109,125,.7);color:#fff;background:rgba(255,109,125,.38)}
body.ui-theme-white .word-sort-bar a{color:#4b5565;background:#fff}
body.ui-theme-white .word-sort-bar a.active{color:#086246;background:#dff8ee;border-color:#74cdb0}
body.ui-theme-white .boomup-button{color:#087454;background:#e8faf3;border-color:#8bd4bc}
body.ui-theme-white .boomup-button.is-done{color:#fff;background:#168b67;border-color:#168b67}
body.ui-theme-white .boom-button{color:#a02c3d;background:#fff0f2;border-color:#eab2bb}
body.ui-theme-white .boom-button.is-done{color:#fff;background:#c64b60;border-color:#c64b60}
@media(max-width:650px){.answer-word-card{align-items:flex-start}.word-reaction-actions{justify-content:flex-end}.word-sort-bar{display:grid;grid-template-columns:repeat(3,1fr)}.word-sort-bar a{padding:0 6px}.inline-reaction-forms{width:100%}.inline-reaction-forms form{flex:1}.inline-reaction-forms button{width:100%}}


/* v37: multiplayer play screen bottom submit button visibility */
body.no-scroll-game .room-action-strip {
    flex: 0 0 32px;
    min-height: 32px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    margin-bottom: 2px;
    padding: 0;
    border: 0;
    background: transparent;
}
body.no-scroll-game .room-action-help,
body.no-scroll-game .room-help-button {
    display: none !important;
}
body.no-scroll-game .room-leave-button {
    min-width: 88px;
    min-height: 30px;
    padding: 0 10px;
    border-radius: 9px;
    font-size: 9px;
}
body.no-scroll-game .compact-play-card {
    overflow: hidden;
    padding-bottom: max(9px, env(safe-area-inset-bottom));
}
body.no-scroll-game .compact-play-card .action-row,
body.no-scroll-game .compact-play-card .compact-action-row {
    flex: 0 0 auto;
    width: 100%;
    min-height: 38px;
    margin-top: 3px;
}
body.no-scroll-game .compact-play-card .action-key--submit {
    flex: 1 0 auto;
    width: 100%;
    min-height: 38px;
    max-height: 42px;
}

@media (max-width: 650px) {
    body.no-scroll-game .room-page-header {
        flex: 0 0 31px;
        min-height: 31px;
    }
    body.no-scroll-game .room-action-strip {
        flex-basis: 30px;
        min-height: 30px;
        margin-bottom: 2px;
    }
    body.no-scroll-game .room-leave-button {
        min-height: 28px;
        min-width: 82px;
        padding: 0 9px;
    }
    body.no-scroll-game .compact-play-card {
        padding: 6px 7px max(8px, env(safe-area-inset-bottom));
    }
    body.no-scroll-game .compact-play-card .board {
        max-height: 39%;
    }
    body.no-scroll-game .compact-play-card .jamo-key {
        height: clamp(31px, 5.2dvh, 40px);
    }
    body.no-scroll-game .compact-play-card .action-row,
    body.no-scroll-game .compact-play-card .compact-action-row {
        min-height: 36px;
    }
    body.no-scroll-game .compact-play-card .action-key--submit {
        min-height: 36px;
        max-height: 40px;
    }
}

@media (max-width: 650px) and (max-height: 720px) {
    body.no-scroll-game .compact-play-card .board { max-height: 35%; }
    body.no-scroll-game .compact-play-card .jamo-key { height: 30px; }
    body.no-scroll-game .compact-play-card .game-message { flex-basis: 15px; min-height: 15px; }
    body.no-scroll-game .compact-play-card .action-row,
    body.no-scroll-game .compact-play-card .compact-action-row,
    body.no-scroll-game .compact-play-card .action-key--submit { min-height: 34px; }
}

@media (min-width: 651px) and (max-height: 800px) {
    body.no-scroll-game .room-action-strip { flex-basis: 30px; min-height: 30px; }
    body.no-scroll-game .compact-play-card .board { max-height: 35%; }
    body.no-scroll-game .compact-play-card .jamo-key { height: 33px; }
    body.no-scroll-game .compact-play-card .action-key--submit { min-height: 35px; }
}


/* v41: 키패드 입력감 / 페이징 / 모바일 헤더 / 관리자 오류 안정화 */
.jamo-key{height:56px}
.jamo-key strong{font-size:20px}
.keyboard.key-touch-feedback .jamo-key{transition:transform .08s ease,filter .08s ease,box-shadow .08s ease}
.keyboard.key-touch-feedback .jamo-key.is-key-pressed{transform:translateY(2px) scale(.94);filter:brightness(1.28);box-shadow:inset 0 0 0 2px rgba(255,255,255,.2),0 2px 8px rgba(0,0,0,.2)!important}
.feedback-setting-form{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:18px;background:var(--panel-soft)}
.feedback-setting-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}
.feedback-setting-row span{min-width:0}.feedback-setting-row strong,.feedback-setting-row small{display:block}.feedback-setting-row small{margin-top:4px;color:var(--muted);font-size:10px;line-height:1.5}.feedback-setting-row input{width:22px;height:22px;flex:0 0 auto;accent-color:var(--accent)}
.feedback-setting-form>.primary-button{width:100%}
.lobby-inactive-note{margin:8px 0 0;padding:9px 11px;border-radius:11px;color:#ffdca2;background:rgba(242,189,77,.09);font-size:10px;text-align:center}
.pagination{display:flex;align-items:center;justify-content:center;gap:10px;margin:22px 0 4px}.pagination-pages{display:flex;align-items:center;gap:5px}.pagination a,.pagination strong,.pagination span{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 9px;border:1px solid var(--line);border-radius:10px;font-size:11px;font-weight:850}.pagination strong{color:#fff;border-color:transparent;background:var(--accent)}.pagination span:not(.pagination-arrow){border-color:transparent;color:var(--muted)}.pagination-arrow{min-width:72px!important}.pagination .disabled{opacity:.38}
.guest-actions a,.hero__actions a{white-space:nowrap;word-break:keep-all}
.monitor-error-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;max-width:100%;overflow:hidden}.monitor-error-list article div{min-width:0;overflow:hidden}.monitor-error-list strong{white-space:normal;overflow-wrap:anywhere;word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.45}.monitor-error-list small{overflow-wrap:anywhere;word-break:break-word}.monitor-error-list article>span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:650px){.jamo-key{height:52px}.jamo-key strong{font-size:18px}.guest-actions{gap:8px}.guest-actions .text-link{display:none}.guest-actions .text-link[href="login.php"]{display:inline-flex;min-width:48px;justify-content:center}.guest-actions .mini-primary{min-width:72px}.hero__actions{display:grid;grid-template-columns:1fr 1fr}.hero__actions a{width:100%;min-width:0}.pagination{gap:5px}.pagination a,.pagination strong,.pagination span{min-width:32px;height:34px;padding:0 7px}.pagination-pages a:nth-of-type(n+5){display:none}.pagination-arrow{min-width:62px!important}.feedback-setting-row{align-items:flex-start}.monitor-error-list article{grid-template-columns:1fr}.monitor-error-list article>span{max-width:100%;margin-top:4px}}
/* 플레이 화면은 키패드를 키우는 대신 보드가 조금 더 유연하게 줄어듭니다. */
.single-play-page .game-card .jamo-key{height:clamp(41px,6vh,49px)}
body.no-scroll-game .compact-play-card .jamo-key{height:clamp(40px,5.7dvh,48px)}
body.no-scroll-game .compact-play-card .board{max-height:39%}
@media(max-width:650px){body.no-scroll-game .compact-play-card .jamo-key{height:clamp(37px,5.5dvh,44px)}body.no-scroll-game .compact-play-card .board{max-height:36%}}
@media(max-width:650px) and (max-height:720px){body.no-scroll-game .compact-play-card .jamo-key{height:34px}body.no-scroll-game .compact-play-card .board{max-height:31%}}
@media(min-width:651px) and (max-height:800px){body.no-scroll-game .compact-play-card .jamo-key{height:38px}body.no-scroll-game .compact-play-card .board{max-height:32%}}


/* v42 retention loop */
.daily-result-score{display:flex;justify-content:space-between;align-items:end;margin:18px 0}.daily-result-score strong{font-size:36px}.daily-result-rank{display:flex;justify-content:space-between;padding:14px;border-radius:14px;background:rgba(255,255,255,.05)}.daily-result-streak{text-align:center;padding:12px;font-weight:800}.ladder-hero{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:22px;border:1px solid var(--line);border-radius:22px;background:var(--panel);margin-bottom:20px}.ladder-hero>div{display:flex;gap:16px;align-items:center}.ladder-hero>div>span{font-size:42px}.ladder-hero strong{font-size:34px}.ladder-hero p{margin:4px 0;color:var(--muted)}.ladder-hero>p{grid-column:1/-1;margin:0;color:var(--muted)}.competitive-find-button{min-width:190px}.ladder-result-card{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:12px 0;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.ladder-result-card strong{font-size:22px}.ladder-result-card .positive{color:#49d98a}.ladder-result-card .negative{color:#ff8797}.achievement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.achievement-card{display:flex;gap:14px;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--panel);opacity:.72}.achievement-card.unlocked{opacity:1;border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.achievement-icon{font-size:32px}.achievement-card h3{margin:3px 0}.achievement-card p{color:var(--muted);margin:0 0 10px}.achievement-progress{height:8px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}.achievement-progress i{display:block;height:100%;background:var(--accent)}.achievement-card b{display:block;margin-top:6px}.friend-search{display:flex;gap:10px;margin-bottom:18px}.friend-search input{flex:1}.friend-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.friend-actions{display:flex;gap:8px}.friend-actions form{margin:0}.friend-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.friend-card{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.friend-card>span{font-size:28px}.friend-card>div{flex:1}.friend-card h3,.friend-card p{margin:0}.friend-card p{color:var(--muted);margin-top:5px}.rival-chip{display:inline-block;margin-top:7px;padding:4px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 13%,transparent)}#rematchButton{flex:1}.result-actions{flex-wrap:wrap}
@media(max-width:760px){.ladder-hero{grid-template-columns:1fr}.ladder-hero .primary-button,.ladder-hero .secondary-button{width:100%}.achievement-grid,.friend-grid{grid-template-columns:1fr}.friend-search{flex-direction:column}.daily-result-score strong{font-size:30px}}


/* v44 retention loop */
.daily-play-box{display:flex;align-items:center;gap:16px;margin:0 0 18px;padding:17px 18px;border:1px solid var(--line);border-radius:20px;background:var(--panel)}
.daily-play-box.is-ready{border-color:color-mix(in srgb,#ffd56c 58%,var(--line));background:color-mix(in srgb,#ffd56c 8%,var(--panel))}.daily-play-box.is-claimed{opacity:.78}.daily-play-box__icon{font-size:34px}.daily-play-box__body{flex:1;min-width:0}.daily-play-box__body small{display:block;color:var(--muted);margin-bottom:3px}.daily-play-box__body strong{display:block;font-size:17px}.daily-play-box__body p{margin:4px 0 9px;color:var(--muted)}.daily-play-box form{margin:0}.play-box-progress{height:8px;border-radius:999px;background:rgba(255,255,255,.09);overflow:hidden}.play-box-progress i{display:block;height:100%;border-radius:inherit;background:var(--accent)}
.play-box-mini{display:flex;align-items:center;gap:12px;padding:13px 15px;margin:12px 0;border:1px solid color-mix(in srgb,#ffd56c 40%,var(--line));border-radius:16px;background:color-mix(in srgb,#ffd56c 6%,var(--panel))}.play-box-mini>span{font-size:26px}.play-box-mini small{display:block;color:var(--muted)}.play-box-mini strong{display:block;margin-top:2px}.play-box-mini p{margin:3px 0 0;color:var(--muted)}
.ladder-protection{grid-column:1/-1;display:flex!important;align-items:center;gap:12px;padding:12px 14px;border:1px solid color-mix(in srgb,#8fb8ff 44%,var(--line));border-radius:14px;background:color-mix(in srgb,#8fb8ff 8%,var(--panel))}.ladder-protection.is-hidden{display:none!important}.ladder-protection>span{font-size:24px}.ladder-protection strong{display:block}.ladder-protection p{margin:2px 0 0;color:var(--muted)}
.text-goal-button{margin-top:7px;padding:0;border:0;background:transparent;color:var(--accent);font:inherit;font-weight:850;cursor:pointer;text-align:left}
body.ui-theme-white .daily-play-box,body.ui-theme-white .play-box-mini,body.ui-theme-white .ladder-protection{color:#172033}.daily-play-box .primary-button,.daily-play-box .secondary-button{white-space:nowrap}
@media(max-width:650px){.daily-play-box{align-items:flex-start;flex-wrap:wrap}.daily-play-box__body{min-width:calc(100% - 54px)}.daily-play-box form,.daily-play-box>a{width:100%}.daily-play-box form button,.daily-play-box>a{width:100%;justify-content:center}}
.ladder-protection-inline{display:block;flex-basis:100%;font-style:normal;color:var(--muted);font-size:13px}


/* v45: compact point shop / bundle purchases / additional keypad themes */
.shop-category{margin-top:18px}.compact-shop-heading{margin-bottom:10px}.compact-shop-heading h2{font-size:18px}.compact-shop-heading p{margin:3px 0 0;color:var(--muted);font-size:10px}
.shop-grid--compact{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.shop-card--compact{gap:7px;padding:13px;border-radius:16px;min-width:0}.shop-card--compact .shop-icon{width:38px;height:38px;border-radius:11px;font-size:18px}.shop-card-compact-head{display:flex;align-items:center;gap:9px;width:100%;min-width:0}.shop-card-compact-head>div:last-child{min-width:0}.shop-card--compact h3{margin:1px 0 0;font-size:13px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shop-card--compact p{min-height:34px;margin:0;color:var(--muted);font-size:9px;line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.shop-card--compact .item-expiry{font-size:8px}.shop-card--compact .shop-equipped-badge{min-height:21px;padding:0 7px}.duration-buttons--compact{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.duration-buttons--compact button{min-width:0;min-height:42px;padding:5px 3px;border-radius:9px}.duration-buttons--compact b,.duration-buttons--compact small{display:block}.duration-buttons--compact b{font-size:9px}.duration-buttons--compact small{font-size:8px;margin-top:2px}.battle-bulk-buy-form{display:grid!important;grid-template-columns:1fr 1fr;gap:6px;width:100%}.battle-bulk-buy-form button{display:grid;place-items:center;align-content:center;min-width:0;min-height:45px;padding:5px 4px}.battle-bulk-buy-form b,.battle-bulk-buy-form small{display:block}.battle-bulk-buy-form small{font-size:8px;margin-top:2px}.shop-theme-preview--cherry{background:linear-gradient(135deg,#5c2038,#ff7aa8)!important;color:#fff}.shop-theme-preview--ocean{background:linear-gradient(135deg,#073c5b,#28d5da)!important;color:#fff}.shop-theme-preview--sunset{background:linear-gradient(135deg,#742e26,#ffb44d)!important;color:#fff}.shop-theme-preview--violet{background:linear-gradient(135deg,#29135d,#9f72ff)!important;color:#fff}.shop-theme-preview--mono{background:linear-gradient(135deg,#111,#dadada)!important;color:#fff}.shop-theme-preview--neon{background:linear-gradient(135deg,#08242a,#48ffe2)!important;color:#fff}
@media(max-width:1050px){.shop-grid--compact{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.shop-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.shop-card--compact{padding:11px}.shop-card--compact h3{font-size:12px}.duration-buttons--compact{gap:4px}.duration-buttons--compact button{min-height:40px}}@media(max-width:390px){.shop-grid--compact{grid-template-columns:1fr 1fr}.shop-card--compact{padding:9px}.shop-card--compact .shop-icon{width:34px;height:34px}.shop-card--compact p{font-size:8px}}
body.ui-theme-white .shop-card--compact h3{color:#172033}

/* 체리 블라썸 */
body.theme-key-cherry .jamo-key:not(.correct):not(.present):not(.absent),body.ui-theme-white.theme-key-cherry .jamo-key:not(.correct):not(.present):not(.absent){color:#fff7fb!important;border-color:#ff8eb5!important;background:linear-gradient(180deg,#6e2c48 0%,#321424 100%)!important;box-shadow:inset 0 0 0 1px rgba(255,167,196,.22),0 4px 10px rgba(130,35,77,.28)!important}body.theme-key-cherry .jamo-key strong{color:#fff!important;text-shadow:0 0 7px rgba(255,130,174,.7)!important}
/* 오션 */
body.theme-key-ocean .jamo-key:not(.correct):not(.present):not(.absent),body.ui-theme-white.theme-key-ocean .jamo-key:not(.correct):not(.present):not(.absent){color:#ecffff!important;border-color:#4dd9e1!important;background:linear-gradient(180deg,#0d4e69 0%,#082d45 100%)!important;box-shadow:inset 0 0 0 1px rgba(87,226,234,.18),0 4px 10px rgba(0,104,139,.26)!important}body.theme-key-ocean .jamo-key strong{color:#fff!important;text-shadow:0 0 7px rgba(68,225,234,.55)!important}
/* 선셋 */
body.theme-key-sunset .jamo-key:not(.correct):not(.present):not(.absent),body.ui-theme-white.theme-key-sunset .jamo-key:not(.correct):not(.present):not(.absent){color:#fff9ee!important;border-color:#ffb04b!important;background:linear-gradient(180deg,#8b3e2e 0%,#47201e 100%)!important;box-shadow:inset 0 0 0 1px rgba(255,190,100,.2),0 4px 10px rgba(164,66,38,.25)!important}body.theme-key-sunset .jamo-key strong{color:#fff!important;text-shadow:0 0 7px rgba(255,171,73,.62)!important}
/* 바이올렛 */
body.theme-key-violet .jamo-key:not(.correct):not(.present):not(.absent),body.ui-theme-white.theme-key-violet .jamo-key:not(.correct):not(.present):not(.absent){color:#faf7ff!important;border-color:#a984ff!important;background:linear-gradient(180deg,#4d2a81 0%,#261544 100%)!important;box-shadow:inset 0 0 0 1px rgba(191,166,255,.2),0 4px 11px rgba(96,53,178,.28)!important}body.theme-key-violet .jamo-key strong{color:#fff!important;text-shadow:0 0 7px rgba(177,145,255,.66)!important}
/* 모노크롬 */
body.theme-key-mono .jamo-key:not(.correct):not(.present):not(.absent),body.ui-theme-white.theme-key-mono .jamo-key:not(.correct):not(.present):not(.absent){color:#f8fafc!important;border-color:#8c939e!important;background:linear-gradient(180deg,#34383e 0%,#17191d 100%)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),0 3px 8px rgba(0,0,0,.28)!important}body.theme-key-mono .jamo-key strong{color:#fff!important;text-shadow:none!important}

/* v46: 관리자 버전 표시 */
.admin-version-badge{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:0 8px;border:1px solid rgba(124,92,255,.42);border-radius:999px;background:rgba(124,92,255,.14);color:#d8ceff;font-size:10px;font-weight:950;letter-spacing:.04em;white-space:nowrap}
.admin-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}
.admin-version-panel{display:flex;align-items:center;gap:8px;min-height:42px;padding:7px 11px;border:1px solid var(--line);border-radius:12px;background:rgba(124,92,255,.09);white-space:nowrap}
.admin-version-panel small{color:var(--muted);font-size:10px;font-weight:800}
.admin-version-panel strong{color:var(--text);font-size:16px;font-weight:950}
body.ui-theme-white .admin-version-badge{border-color:rgba(91,68,210,.32);background:rgba(91,68,210,.09);color:#4e3bb7}
body.ui-theme-white .admin-version-panel{background:#f4f1ff;border-color:#d8d0fb}
@media(max-width:650px){.admin-version-badge{min-height:22px;padding:0 7px;font-size:9px}.admin-heading-actions{width:100%;justify-content:flex-start}.admin-version-panel{min-height:38px}.admin-heading-actions .detail-actions{width:100%}}

/* v47 notice board */
.community-row--notice{border-color:rgba(124,92,255,.28);background:linear-gradient(135deg,rgba(124,92,255,.095),rgba(255,255,255,.035))}
.community-row--notice strong::before{content:"📢";margin-right:7px}
body.ui-theme-white .community-row--notice{border-color:#d8d0fb;background:#f7f5ff}
@media(max-width:650px){.tab-bar{width:100%;overflow-x:auto}.tab-bar a{min-width:82px;padding:9px 11px;white-space:nowrap}}

/* v49 오늘의 자모 공유 / 친구 초대 / 성장 지표 */
.today-home-card{display:flex;align-items:center;gap:16px;padding:18px 20px;margin:0 0 18px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.045);color:var(--text);text-decoration:none}.today-home-card__icon{font-size:34px}.today-home-card>div{flex:1;min-width:0}.today-home-card small{display:block;color:var(--muted);font-weight:800}.today-home-card strong{display:block;margin:3px 0;font-size:18px}.today-home-card p{margin:0;color:var(--muted)}.today-home-card>b{white-space:nowrap}.daily-public-hero{max-width:760px;margin:48px auto;padding:42px;text-align:center;border:1px solid var(--line);border-radius:28px;background:rgba(255,255,255,.045)}.daily-public-sun{display:block;font-size:62px;margin-bottom:8px}.daily-public-hero h1{font-size:42px;margin:8px 0 12px}.daily-public-hero>p{font-size:18px;color:var(--muted)}.daily-public-count{display:flex;justify-content:center;align-items:baseline;gap:8px;margin:24px 0}.daily-public-count strong{font-size:48px}.daily-public-count span{color:var(--muted)}.daily-public-features{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:24px}.daily-public-features span{padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.04)}.daily-share-preview{padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.035);text-align:left}.daily-share-preview small{display:block;color:var(--muted);margin-bottom:8px}.daily-share-preview strong{display:flex;gap:6px;flex-wrap:wrap}.daily-share-preview i{font-style:normal;padding:7px 10px;border-radius:9px;background:rgba(255,255,255,.06)}.daily-share-preview i.win{background:rgba(25,195,125,.16)}.daily-share-preview i.lose{background:rgba(100,116,139,.18)}.daily-share-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.daily-share-actions .primary-button{grid-column:1/-1}.invite-register-note{display:flex;flex-direction:column;gap:3px;padding:11px 13px;margin:10px 0;border:1px solid rgba(25,195,125,.35);border-radius:12px;background:rgba(25,195,125,.08)}.invite-card{padding:20px;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.04);margin-bottom:22px}.invite-card__main{display:flex;gap:13px;align-items:flex-start}.invite-card__icon{font-size:34px}.invite-card h2{margin:2px 0 4px}.invite-card p{margin:0;color:var(--muted)}.invite-link-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;margin:16px 0}.invite-link-row input{min-width:0;width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:var(--panel);color:var(--text)}.invite-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.invite-stats span{padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03)}.invite-stats small{display:block;color:var(--muted)}.invite-stats strong{display:block;margin-top:3px}.invite-landing{max-width:650px;margin:48px auto;text-align:center;padding:36px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.045)}.invite-landing__icon{font-size:56px}.invite-landing h1{font-size:34px}.invite-landing p{color:var(--muted)}.invite-reward-flow{display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap;margin:20px 0}.invite-reward-flow span{padding:9px 12px;border-radius:999px;border:1px solid var(--line)}.growth-kpi-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px}.growth-kpi-grid article{padding:16px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.04);min-width:0}.growth-kpi-grid small,.growth-kpi-grid em{display:block;color:var(--muted);font-style:normal}.growth-kpi-grid strong{display:block;font-size:25px;margin:4px 0}.growth-kpi-grid--compact article{padding:12px}.growth-kpi-grid--compact strong{font-size:20px}.admin-growth-more{text-align:right;margin:-8px 0 16px}.admin-growth-more a{font-weight:800}.growth-definition{margin-bottom:18px}.growth-definition p{line-height:1.7}.growth-table{border:1px solid var(--line);border-radius:15px;overflow:hidden}.growth-table__head,.growth-table__row{display:grid;grid-template-columns:1.4fr .7fr 1fr 1fr;gap:10px;padding:11px 14px;align-items:center}.growth-table__head{background:rgba(255,255,255,.06);font-weight:800}.growth-table__row+.growth-table__row{border-top:1px solid var(--line)}
@media(max-width:850px){.growth-kpi-grid{grid-template-columns:repeat(2,1fr)}.invite-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.today-home-card{align-items:flex-start;padding:14px}.today-home-card>b{display:none}.daily-public-hero,.invite-landing{margin:18px 0;padding:24px 16px}.daily-public-hero h1{font-size:30px}.daily-public-count strong{font-size:38px}.invite-link-row{grid-template-columns:1fr 1fr}.invite-link-row input{grid-column:1/-1}.growth-kpi-grid{grid-template-columns:1fr 1fr}.growth-kpi-grid article:last-child{grid-column:1/-1}.growth-table__head,.growth-table__row{grid-template-columns:1.2fr .55fr .8fr .8fr;font-size:12px;padding:9px 8px}}

/* v53: 오늘의 결과 전용 / 경쟁전 대기열 / 시즌 티어 가이드 */
.daily-result-page-body .site-main{max-width:920px}
.daily-result-standalone{max-width:760px;margin:30px auto 54px}
.daily-result-standalone__head{text-align:center;margin-bottom:18px}
.daily-result-standalone__head .daily-public-sun{font-size:54px;margin-bottom:2px}
.daily-result-standalone__head h1{margin:7px 0 8px;font-size:34px}
.daily-result-standalone__head p{margin:0;color:var(--muted);line-height:1.7}
.daily-result-sheet--standalone{padding:24px;border:1px solid var(--line);border-radius:24px;background:var(--panel);box-shadow:0 18px 48px rgba(0,0,0,.15)}
.daily-result-sheet--standalone .daily-result-rank{margin-bottom:4px}
.daily-result-complete-note{margin:13px 0;padding:11px 13px;border:1px solid rgba(25,195,125,.28);border-radius:12px;background:rgba(25,195,125,.08);color:#7be2ad;text-align:center;font-size:12px;font-weight:800}
.daily-share-actions--standalone{margin-top:12px}
body.ui-theme-white .daily-result-sheet--standalone{box-shadow:0 18px 48px rgba(28,35,55,.09)}
body.ui-theme-white .daily-result-complete-note{color:#187a4a;background:#edf9f3;border-color:#b8e3cc}

.competitive-queue-panel{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:15px 17px;border:1px solid rgba(124,92,255,.34);border-radius:16px;background:linear-gradient(135deg,rgba(124,92,255,.13),rgba(57,214,197,.06));overflow:hidden}
.competitive-queue-panel.is-hidden{display:none}
.competitive-queue-copy{min-width:0;flex:1}
.competitive-queue-panel strong{display:block;font-size:14px}
.competitive-queue-panel p{margin:3px 0 0!important;color:var(--muted);font-size:12px}
.competitive-queue-panel p b{color:var(--text);font-size:14px}
.competitive-queue-panel small{display:block;margin-top:5px;color:var(--accent-2);font-size:9px;font-weight:850;letter-spacing:.04em}
.competitive-search-spinner{position:relative;display:grid;place-items:center;width:48px;height:48px;flex:0 0 48px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:50%;background:rgba(255,255,255,.035)}
.competitive-search-spinner::before,.competitive-search-spinner::after{content:'';position:absolute;border-radius:50%;border:2px solid transparent}
.competitive-search-spinner::before{inset:4px;border-top-color:var(--accent);border-right-color:color-mix(in srgb,var(--accent) 38%,transparent);animation:competitiveSearchSpin 1.05s linear infinite}
.competitive-search-spinner::after{inset:10px;border-bottom-color:var(--accent-2);animation:competitiveSearchSpinReverse .8s linear infinite}
.competitive-search-spinner b{position:relative;z-index:2;font-size:15px;animation:competitiveSearchPulse 1.2s ease-in-out infinite}
.competitive-search-spinner i{position:absolute;inset:-4px;border-radius:50%;box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 40%,transparent);animation:competitiveQueuePulse 1.5s ease-out infinite}
.competitive-search-bars{display:flex;align-items:center;gap:3px;height:30px;flex:0 0 auto}
.competitive-search-bars i{display:block;width:3px;height:8px;border-radius:99px;background:var(--accent-2);animation:competitiveSearchBar .9s ease-in-out infinite}
.competitive-search-bars i:nth-child(2){animation-delay:.12s}.competitive-search-bars i:nth-child(3){animation-delay:.24s}.competitive-search-bars i:nth-child(4){animation-delay:.36s}
@keyframes competitiveQueuePulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 48%,transparent)}70%{box-shadow:0 0 0 12px transparent}100%{box-shadow:0 0 0 0 transparent}}
@keyframes competitiveSearchSpin{to{transform:rotate(360deg)}}
@keyframes competitiveSearchSpinReverse{to{transform:rotate(-360deg)}}
@keyframes competitiveSearchPulse{0%,100%{transform:scale(.92);opacity:.75}50%{transform:scale(1.08);opacity:1}}
@keyframes competitiveSearchBar{0%,100%{height:7px;opacity:.4}50%{height:25px;opacity:1}}
body.ui-theme-white .competitive-queue-panel{background:linear-gradient(135deg,#f4f1ff,#effaf8);border-color:#d7cffb}
body.ui-theme-white .competitive-search-spinner{background:#fff}

.season-tier-guide .section-heading p{margin:5px 0 0;color:var(--muted)}
.season-tier-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.season-tier-card{padding:15px 13px;border:1px solid var(--line);border-radius:16px;background:var(--panel-soft);min-width:0}
.season-tier-card small,.season-tier-card span,.season-tier-card em{display:block}
.season-tier-card small{color:var(--muted);font-size:9px;font-weight:800}
.season-tier-card strong{display:block;margin:5px 0 4px;font-size:16px}
.season-tier-card span{font-size:11px;font-weight:800}
.season-tier-card em{margin-top:7px;color:var(--muted);font-size:9px;font-style:normal}
.season-tier-card.is-current{border-color:color-mix(in srgb,var(--accent) 65%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--panel))}
.season-tier-card.is-current small,.season-tier-card.is-current strong{color:color-mix(in srgb,var(--accent) 82%,white)}
.season-xp-guide{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}
.season-xp-guide>strong{margin-right:3px;font-size:12px}
.season-xp-guide>span{padding:7px 9px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:10px}
.season-xp-guide b{color:var(--text)}
body.ui-theme-white .season-tier-card.is-current strong,body.ui-theme-white .season-tier-card.is-current small{color:#4f3aba}

@media(max-width:900px){.season-tier-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.season-tier-card:last-child{grid-column:span 2}}
@media(max-width:650px){.daily-result-standalone{margin:14px auto 30px}.daily-result-standalone__head h1{font-size:27px}.daily-result-sheet--standalone{padding:16px;border-radius:18px}.daily-share-actions--standalone{grid-template-columns:1fr}.daily-share-actions--standalone .primary-button{grid-column:auto}.ladder-hero{grid-template-columns:1fr}.ladder-hero>.primary-button,.ladder-hero>.secondary-button{width:100%}.competitive-queue-panel{grid-column:1}.season-tier-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.season-tier-card:last-child{grid-column:1/-1}.season-xp-guide{align-items:stretch}.season-xp-guide>strong{width:100%}.season-xp-guide>span{flex:1 1 calc(50% - 7px);text-align:center}}

@media(max-width:650px){.competitive-search-bars{display:none}.competitive-search-spinner{width:42px;height:42px;flex-basis:42px}.competitive-queue-panel{padding:13px 14px}}

/* v55 · 시즌 이전 랭킹 */
.season-page-menu{display:flex;gap:8px;margin:-4px 0 18px;padding:5px;border:1px solid var(--line);border-radius:14px;background:var(--panel-soft);width:max-content;max-width:100%}
.season-page-menu a{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 14px;border-radius:10px;color:var(--muted);font-size:11px;font-weight:900;text-decoration:none;white-space:nowrap}
.season-page-menu a:hover,.season-page-menu a:focus-visible{color:var(--text);background:rgba(255,255,255,.05)}
.season-page-menu a.is-active{color:var(--text);background:color-mix(in srgb,var(--accent) 14%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line))}
.season-anchor{scroll-margin-top:96px}
.previous-season-block{scroll-margin-top:96px}
.previous-season-heading{align-items:flex-end;gap:16px}
.previous-season-heading p{margin:5px 0 0;color:var(--muted)}
.previous-season-picker{display:grid;gap:5px;min-width:min(360px,100%)}
.previous-season-picker label{color:var(--muted);font-size:9px;font-weight:900}
.previous-season-picker select{width:100%;min-height:40px;padding:0 36px 0 11px;border:1px solid var(--line);border-radius:11px;background:var(--panel);color:var(--text);font-size:11px;font-weight:800}
.previous-season-summary{display:grid;grid-template-columns:1fr 2fr 1fr;gap:9px;margin-bottom:12px}
.previous-season-summary>div{display:grid;gap:4px;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-soft)}
.previous-season-summary small{color:var(--muted);font-size:9px;font-weight:800}
.previous-season-summary strong{font-size:12px}
.previous-season-note{margin:9px 0 0;color:var(--muted);font-size:10px;text-align:right}
@media(max-width:650px){.season-page-menu{width:100%}.season-page-menu a{flex:1}.previous-season-heading{align-items:stretch}.previous-season-picker{min-width:0;width:100%}.previous-season-summary{grid-template-columns:1fr}.previous-season-summary>div{padding:11px 12px}}

/* v57: 랭킹 플레이어 길드 / 칭호 / 프로필 테두리 표시 */
.ranking-player{display:flex;align-items:center;gap:9px;min-width:0}
.ranking-player--podium{justify-content:center;max-width:100%}
.ranking-player-avatar{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:rgba(255,255,255,.055);color:var(--text);font-size:13px;font-weight:950;line-height:1}
.ranking-player.has-gold-ranking-frame .ranking-player-avatar{border:2px solid #ffd05a;background:linear-gradient(145deg,rgba(255,215,95,.2),rgba(139,83,6,.12));box-shadow:0 0 0 2px rgba(255,208,90,.1),0 0 13px rgba(255,201,60,.46);color:#ffe39a}
.ranking-player-copy{display:grid;gap:3px;min-width:0;text-align:left}
.ranking-player--podium .ranking-player-copy{text-align:center}
.ranking-player-meta{display:flex;align-items:center;gap:3px;min-height:14px;flex-wrap:wrap}
.ranking-player--podium .ranking-player-meta{justify-content:center}
.ranking-player-meta .guild-mini-badge{margin-right:0;font-size:8px;line-height:1.2}
.ranking-player-meta .player-title-badge{margin-right:0;padding:2px 5px;font-size:7px!important}
.ranking-player-name-line{display:flex;align-items:center;gap:5px;min-width:0}
.ranking-player-name-line strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ranking-me-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 5px;border-radius:5px;background:rgba(57,214,197,.1);color:var(--accent-2);font-size:8px;font-weight:900;white-space:nowrap}
.ranking-table td:nth-child(2){min-width:190px}
.ranking-table td:nth-child(2) strong{margin-right:0}
.podium-card .ranking-player{margin-top:2px}
.podium-card .ranking-player-copy>strong{font-size:16px}
body.ui-theme-white .ranking-player-avatar{background:#f5f7fb;border-color:#d9dfeb;color:#273247}
body.ui-theme-white .ranking-player.has-gold-ranking-frame .ranking-player-avatar{background:linear-gradient(145deg,#fff8dc,#fff1ba);border-color:#d9a91d;color:#765300;box-shadow:0 0 0 2px rgba(217,169,29,.08),0 0 10px rgba(217,169,29,.25)}
@media(max-width:650px){.ranking-player-avatar{flex-basis:30px;width:30px;height:30px;font-size:12px}.ranking-table td:nth-child(2){min-width:170px}.podium-card .ranking-player-avatar{display:none}.podium-card .ranking-player-copy>strong{font-size:12px}.ranking-player--podium .ranking-player-meta{gap:2px}}

/* v59: 경쟁전 티어 가이드 / 시즌 XP 전용 / 오류제보 / 키패드 미리보기 */
.ladder-tier-guide .section-heading p,.season-xp-section .section-heading p{margin:5px 0 0;color:var(--muted)}
.ladder-tier-grid,.season-reward-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.ladder-tier-card,.season-reward-card{padding:15px 13px;border:1px solid var(--line);border-radius:16px;background:var(--panel-soft);min-width:0}
.ladder-tier-card small,.ladder-tier-card em,.season-reward-card small,.season-reward-card span,.season-reward-card em{display:block}
.ladder-tier-card small,.season-reward-card small{color:var(--muted);font-size:9px;font-weight:800}
.ladder-tier-card strong,.season-reward-card strong{display:block;margin:5px 0 4px;font-size:15px}
.ladder-tier-card em,.season-reward-card em{margin-top:6px;color:var(--muted);font-size:9px;font-style:normal}
.ladder-tier-card.is-current{border-color:color-mix(in srgb,var(--accent) 65%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--panel))}
.ladder-tier-card.is-current small,.ladder-tier-card.is-current strong{color:color-mix(in srgb,var(--accent) 82%,white)}
.ladder-tier-note{margin:10px 2px 0;color:var(--muted);font-size:10px}
.season-reward-card span{font-size:14px;font-weight:950;color:var(--accent-2)}
.season-xp-guide--sources{margin-bottom:12px}
body.ui-theme-white .ladder-tier-card.is-current small,body.ui-theme-white .ladder-tier-card.is-current strong{color:#4f3aba}

.community-row--bug{border-color:rgba(255,126,126,.25);background:linear-gradient(135deg,rgba(255,104,104,.075),rgba(255,255,255,.025))}
.community-row--bug strong::before{content:"🐞";margin-right:7px}
body.ui-theme-white .community-row--bug{border-color:#f0c4c4;background:#fff8f8}
.community-board-tabs a{min-width:86px}

.shop-keypad-preview-details{width:100%;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.025);overflow:hidden}
.shop-keypad-preview-details summary{display:flex;align-items:center;justify-content:center;min-height:34px;padding:7px 9px;cursor:pointer;color:var(--text);font-size:9px;font-weight:900;list-style:none;user-select:none}
.shop-keypad-preview-details summary::-webkit-details-marker{display:none}
.shop-keypad-preview-details[open] summary{border-bottom:1px solid var(--line);background:rgba(255,255,255,.035)}
.shop-keypad-preview{display:grid;gap:5px;padding:9px;background:#0b1320}
.shop-keypad-preview>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.shop-keypad-preview span{display:grid;place-items:center;min-height:25px;border:1px solid #536178;border-radius:6px;background:linear-gradient(180deg,#263246,#151e2d);color:#f7fbff;font-size:10px;font-weight:950;box-shadow:inset 0 0 0 1px rgba(255,255,255,.035)}
.shop-keypad-preview .shop-keypad-preview-actions{grid-template-columns:1fr 1fr}
.shop-keypad-preview .shop-keypad-preview-actions span{min-height:27px;font-size:8px}
.shop-keypad-preview--neon span{border-color:#39d6c5;background:linear-gradient(180deg,#123b3c,#071f24);box-shadow:inset 0 0 8px rgba(57,214,197,.12);text-shadow:0 0 7px rgba(57,214,197,.55)}
.shop-keypad-preview--cherry span{border-color:#ff8eb5;background:linear-gradient(180deg,#6e2c48,#321424);box-shadow:inset 0 0 0 1px rgba(255,167,196,.18)}
.shop-keypad-preview--ocean span{border-color:#4dd9e1;background:linear-gradient(180deg,#0d4e69,#082d45)}
.shop-keypad-preview--sunset span{border-color:#ffb04b;background:linear-gradient(180deg,#8b3e2e,#47201e)}
.shop-keypad-preview--violet span{border-color:#a984ff;background:linear-gradient(180deg,#4d2a81,#261544)}
.shop-keypad-preview--mono span{border-color:#8c939e;background:linear-gradient(180deg,#34383e,#17191d)}
.shop-keypad-preview--season-wave span{border-color:#aa96ff;background:linear-gradient(180deg,#5c48b9,#182546);box-shadow:inset 0 0 0 1px rgba(91,226,218,.14)}
.shop-keypad-preview--season-wave .shop-keypad-preview-actions span{color:#b9fff5}
body.ui-theme-white .shop-keypad-preview-details{background:#fff}
body.ui-theme-white .shop-keypad-preview-details[open] summary{background:#f5f7fb}

@media(max-width:900px){.ladder-tier-grid,.season-reward-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.ladder-tier-grid,.season-reward-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ladder-tier-card:last-child,.season-reward-card:last-child{grid-column:1/-1}.community-board-tabs{overflow-x:auto}.community-board-tabs a{flex:0 0 auto}.shop-keypad-preview span{min-height:28px}}


/* v63: 홈 빠른 시작 UI 정돈 / 친구·라이벌 및 업적 메뉴 제거 */
@media(max-width:380px){
  .dashboard-actions{gap:7px}
  .dashboard-action{min-height:62px;padding:9px 10px;gap:8px}
  .dashboard-action__icon{flex-basis:31px;width:31px;height:31px;font-size:14px}
  .dashboard-action__copy strong{font-size:11px}
  .dashboard-action__copy small{font-size:8px}
}
body.ui-theme-white .dashboard-action{background:#fff;border-color:#dfe5ee}
body.ui-theme-white .dashboard-action--today{background:#fffaf0;border-color:#ead7a7}
body.ui-theme-white .dashboard-action--competitive{background:#f7f4ff;border-color:#d7cff9}

/* v64: 상점 가로 스크롤 / 실제 게임과 동일한 네온 미리보기 / 이미지 키패드 5종 */
.shop-horizontal-scroll{
    display:flex!important;
    grid-template-columns:none!important;
    gap:10px;
    overflow-x:auto;
    overflow-y:hidden;
    padding:2px 2px 10px;
    scroll-snap-type:x proximity;
    overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
    scrollbar-color:color-mix(in srgb,var(--accent) 45%,transparent) transparent;
}
.shop-horizontal-scroll::-webkit-scrollbar{height:6px}
.shop-horizontal-scroll::-webkit-scrollbar-track{background:transparent}
.shop-horizontal-scroll::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--accent) 42%,transparent);border-radius:999px}
.shop-horizontal-scroll>.shop-card{
    flex:0 0 clamp(245px,27vw,292px);
    width:clamp(245px,27vw,292px);
    scroll-snap-align:start;
    align-self:flex-start;
}
@media(max-width:650px){
  .shop-horizontal-scroll{margin-right:-12px;padding-right:12px;gap:8px}
  .shop-horizontal-scroll>.shop-card{flex-basis:min(78vw,290px);width:min(78vw,290px)}
}

/* 네온 미리보기는 실제 게임 키의 외곽광/내부광/문자광을 그대로 축소해서 표현 */
.shop-keypad-preview--neon{filter:drop-shadow(0 0 8px rgba(72,255,226,.16))}
.shop-keypad-preview--neon span{
    color:#edffff!important;
    border-color:#48ffe2!important;
    background:linear-gradient(180deg,#123d47 0%,#071b25 100%)!important;
    box-shadow:inset 0 0 0 1px rgba(72,255,226,.28),inset 0 0 18px rgba(72,255,226,.16),0 0 10px rgba(72,255,226,.48),0 0 22px rgba(84,112,255,.18)!important;
    text-shadow:0 0 5px #48ffe2,0 0 13px rgba(72,255,226,.9)!important;
}

/* 이미지 배경 키패드 공통 */
body[class*="theme-key-bg-"] .jamo-key:not(.correct):not(.present):not(.absent){
    color:#fff!important;
    background-size:cover!important;
    background-position:center!important;
    background-repeat:no-repeat!important;
    border-color:rgba(255,255,255,.42)!important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.09),0 4px 12px rgba(0,0,0,.3)!important;
    text-shadow:0 1px 4px rgba(0,0,0,.9),0 0 8px rgba(0,0,0,.55)!important;
}
body[class*="theme-key-bg-"] .jamo-key:not(.correct):not(.present):not(.absent) small,
body[class*="theme-key-bg-"] .jamo-key:not(.correct):not(.present):not(.absent) strong{color:#fff!important;text-shadow:0 1px 4px rgba(0,0,0,.95),0 0 8px rgba(0,0,0,.72)!important}

body.theme-key-bg-city .jamo-key:not(.correct):not(.present):not(.absent){background-image:linear-gradient(rgba(5,10,22,.20),rgba(5,10,22,.58)),url('keypad-bg/city-night.svg')!important}
body.theme-key-bg-space .jamo-key:not(.correct):not(.present):not(.absent){background-image:linear-gradient(rgba(7,5,20,.14),rgba(7,5,20,.48)),url('keypad-bg/galaxy.svg')!important;border-color:rgba(198,174,255,.58)!important}
body.theme-key-bg-sakura .jamo-key:not(.correct):not(.present):not(.absent){background-image:linear-gradient(rgba(47,12,34,.12),rgba(47,12,34,.52)),url('keypad-bg/sakura-night.svg')!important;border-color:rgba(255,166,202,.62)!important}
body.theme-key-bg-ocean .jamo-key:not(.correct):not(.present):not(.absent){background-image:linear-gradient(rgba(0,44,73,.12),rgba(0,44,73,.48)),url('keypad-bg/ocean-light.svg')!important;border-color:rgba(129,239,255,.62)!important}
body.theme-key-bg-aurora .jamo-key:not(.correct):not(.present):not(.absent){background-image:linear-gradient(rgba(3,18,25,.10),rgba(3,18,25,.52)),url('keypad-bg/aurora.svg')!important;border-color:rgba(118,255,215,.58)!important}

/* 상점 아이콘과 미리보기에도 실제 이미지 사용 */
.shop-theme-preview--bg-city{background-image:linear-gradient(rgba(5,10,22,.10),rgba(5,10,22,.42)),url('keypad-bg/city-night.svg')!important;background-size:cover!important;background-position:center!important;color:#fff!important}
.shop-theme-preview--bg-space{background-image:linear-gradient(rgba(7,5,20,.08),rgba(7,5,20,.38)),url('keypad-bg/galaxy.svg')!important;background-size:cover!important;background-position:center!important;color:#fff!important}
.shop-theme-preview--bg-sakura{background-image:linear-gradient(rgba(47,12,34,.05),rgba(47,12,34,.35)),url('keypad-bg/sakura-night.svg')!important;background-size:cover!important;background-position:center!important;color:#fff!important}
.shop-theme-preview--bg-ocean{background-image:linear-gradient(rgba(0,44,73,.04),rgba(0,44,73,.30)),url('keypad-bg/ocean-light.svg')!important;background-size:cover!important;background-position:center!important;color:#fff!important}
.shop-theme-preview--bg-aurora{background-image:linear-gradient(rgba(3,18,25,.05),rgba(3,18,25,.36)),url('keypad-bg/aurora.svg')!important;background-size:cover!important;background-position:center!important;color:#fff!important}

.shop-keypad-preview--bg-city span{background-image:linear-gradient(rgba(5,10,22,.20),rgba(5,10,22,.58)),url('keypad-bg/city-night.svg')!important;background-size:cover!important;background-position:center!important}
.shop-keypad-preview--bg-space span{background-image:linear-gradient(rgba(7,5,20,.14),rgba(7,5,20,.48)),url('keypad-bg/galaxy.svg')!important;background-size:cover!important;background-position:center!important;border-color:rgba(198,174,255,.58)}
.shop-keypad-preview--bg-sakura span{background-image:linear-gradient(rgba(47,12,34,.12),rgba(47,12,34,.52)),url('keypad-bg/sakura-night.svg')!important;background-size:cover!important;background-position:center!important;border-color:rgba(255,166,202,.62)}
.shop-keypad-preview--bg-ocean span{background-image:linear-gradient(rgba(0,44,73,.12),rgba(0,44,73,.48)),url('keypad-bg/ocean-light.svg')!important;background-size:cover!important;background-position:center!important;border-color:rgba(129,239,255,.62)}
.shop-keypad-preview--bg-aurora span{background-image:linear-gradient(rgba(3,18,25,.10),rgba(3,18,25,.52)),url('keypad-bg/aurora.svg')!important;background-size:cover!important;background-position:center!important;border-color:rgba(118,255,215,.58)}
.shop-keypad-preview--bg-city span,.shop-keypad-preview--bg-space span,.shop-keypad-preview--bg-sakura span,.shop-keypad-preview--bg-ocean span,.shop-keypad-preview--bg-aurora span{color:#fff!important;text-shadow:0 1px 4px rgba(0,0,0,.95),0 0 7px rgba(0,0,0,.65)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),0 2px 7px rgba(0,0,0,.26)}

/* v65 ranking search */
.ranking-search-form{margin:12px 0 8px}
.ranking-search-form input[type=search]{min-width:0}
.ranking-search-summary{margin:0 0 12px;color:var(--muted);font-size:11px}
@media(max-width:650px){.ranking-search-form{display:grid;grid-template-columns:minmax(0,1fr) auto}.ranking-search-form>a{grid-column:1/-1;justify-content:center}}

/* v66 admin monitor history / active user detail */
.monitor-kpi-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.monitor-more-button{appearance:none;border:0;background:transparent;color:var(--accent-2);font:inherit;font-size:10px;font-weight:900;padding:2px 0;cursor:pointer}.monitor-more-button:hover{text-decoration:underline}.monitor-active-users[hidden]{display:none!important}.monitor-active-users .section-heading{align-items:flex-start}.monitor-active-user-summary{margin-bottom:9px;color:var(--muted);font-size:10px}.monitor-active-user-list{display:grid;gap:7px}.monitor-active-user-list article{display:grid;grid-template-columns:minmax(130px,.8fr) minmax(0,1.2fr);gap:14px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025)}.monitor-active-user-name,.monitor-active-user-meta{min-width:0}.monitor-active-user-name strong,.monitor-active-user-meta strong{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monitor-active-user-name small,.monitor-active-user-meta small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.monitor-active-user-meta{text-align:right}.monitor-history-count{flex:0 0 auto;color:var(--muted);font-size:10px;font-weight:800}body.ui-theme-white .monitor-active-user-list article{background:#fff}@media(max-width:650px){.monitor-active-user-list article{grid-template-columns:1fr;gap:7px}.monitor-active-user-meta{text-align:left}.monitor-active-users .section-heading{gap:8px}.monitor-history-count{display:none}}

/* v67 오늘의 자모 보상 결과 */
.daily-result-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0 8px}.daily-result-summary article{min-width:0;padding:14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.035)}.daily-result-summary small{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.daily-result-summary strong{display:block;font-size:20px;white-space:nowrap}.daily-result-summary span{display:block;margin-top:5px;color:var(--muted);font-size:12px}.daily-result-summary__reward{border-color:color-mix(in srgb,#f1c75b 48%,var(--line))!important;background:color-mix(in srgb,#f1c75b 7%,var(--panel))!important}.daily-result-summary__reward strong{color:#f1c75b}.daily-ranking-board{margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.025)}.daily-ranking-board__head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:12px}.daily-ranking-board__head small{color:var(--accent);letter-spacing:.12em}.daily-ranking-board__head h2{margin:3px 0 0;font-size:20px}.daily-ranking-board__head p{margin:0;color:var(--muted);font-size:12px;text-align:right;line-height:1.55}.daily-ranking-table{display:grid;gap:6px}.daily-ranking-row{display:grid;grid-template-columns:58px minmax(110px,1.4fr) 92px 82px 86px;gap:8px;align-items:center;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.035);font-size:13px}.daily-ranking-row--head{background:transparent;color:var(--muted);font-size:11px;padding-top:2px;padding-bottom:4px}.daily-ranking-row.is-me{outline:1px solid color-mix(in srgb,var(--accent) 60%,transparent);background:color-mix(in srgb,var(--accent) 9%,var(--panel))}.daily-ranking-row>span:nth-child(3),.daily-ranking-row>span:nth-child(4),.daily-ranking-row>span:nth-child(5){text-align:right;white-space:nowrap}.daily-ranking-nickname{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.daily-ranking-nickname em{display:inline-block;margin-left:5px;padding:2px 6px;border-radius:999px;background:var(--accent);color:#08241a;font-style:normal;font-size:10px;font-weight:900}.daily-ranking-reward{font-weight:900;color:#f1c75b}
@media(max-width:760px){.daily-result-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-ranking-board{padding:12px}.daily-ranking-board__head{align-items:flex-start;flex-direction:column;gap:7px}.daily-ranking-board__head p{text-align:left}.daily-ranking-table{overflow-x:auto;padding-bottom:2px}.daily-ranking-row{min-width:560px}}

/* v69 board comments / account withdrawal */
.comment-count-badge{display:inline-flex;align-items:center;margin-left:7px;padding:2px 6px;border-radius:999px;color:var(--accent-2);background:color-mix(in srgb,var(--accent-2) 10%,transparent);font-size:9px;font-style:normal;font-weight:900;vertical-align:middle}.board-comments{margin-top:28px}.board-comments__heading{align-items:end}.board-comments__heading h2 small{color:var(--accent-2);font-size:.62em}.comment-limit-note{color:var(--muted);font-size:10px}.comment-compose{display:grid;gap:8px;padding:14px;margin-bottom:14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.03)}.comment-compose>label{font-size:11px;font-weight:900}.comment-compose>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.comment-compose textarea{width:100%;min-height:76px;padding:11px 12px;resize:vertical;border:1px solid var(--line);border-radius:12px;color:var(--text);background:rgba(255,255,255,.045);outline:0}.comment-compose textarea:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px rgba(57,214,197,.08)}.comment-compose .primary-button{min-width:76px}.comment-compose>small{color:var(--muted);font-size:9px}.comment-list{display:grid;gap:8px}.comment-card{position:relative;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.comment-card.is-mine{border-color:color-mix(in srgb,var(--accent-2) 28%,var(--line));background:color-mix(in srgb,var(--accent-2) 5%,transparent)}.comment-card__meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.comment-card__meta strong{font-size:11px}.comment-card__meta em{padding:2px 5px;border-radius:999px;color:var(--accent-2);background:color-mix(in srgb,var(--accent-2) 10%,transparent);font-size:8px;font-style:normal;font-weight:900}.comment-card__meta span{color:var(--muted);font-size:9px}.comment-card p{margin:8px 0 0;padding-right:56px;line-height:1.65;font-size:12px;word-break:break-word}.comment-card form{position:absolute;right:10px;top:10px;margin:0}.comment-delete-button{padding:4px 7px;border:1px solid rgba(255,109,125,.28);border-radius:8px;color:#ffc0c8;background:rgba(255,109,125,.08);font-size:8px;font-weight:900;cursor:pointer}.comment-empty{margin-top:0}.account-delete-zone{margin-top:22px;border-color:rgba(255,109,125,.22);background:rgba(255,109,125,.025)}.account-delete-zone .section-heading p{max-width:700px;color:var(--muted);font-size:11px;line-height:1.6}.account-delete-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin-top:12px}.account-delete-form .field{margin:0}.account-delete-form .danger-button{min-height:48px}.account-delete-disabled{margin-top:12px;padding:12px 14px;border:1px solid rgba(255,109,125,.22);border-radius:12px;color:#ffc0c8;background:rgba(255,109,125,.07);font-size:11px}.form-success{margin-bottom:18px;padding:12px 14px;color:#9ff0df;border:1px solid rgba(57,214,197,.28);border-radius:12px;background:rgba(57,214,197,.09);font-size:12px}
body.ui-theme-white .comment-compose textarea{color:var(--text);background:#fff;border-color:rgba(14,30,50,.18)}body.ui-theme-white .comment-card{background:#fff}body.ui-theme-white .account-delete-zone{background:#fffafa}
@media(max-width:720px){.comment-compose>div{grid-template-columns:1fr}.comment-compose .primary-button{width:100%}.comment-card p{padding-right:0;padding-top:3px}.comment-card form{position:static;margin-top:8px;text-align:right}.account-delete-form{grid-template-columns:1fr}.account-delete-form .danger-button{width:100%}}
