:root {
  --text-caption: .8125rem;
  --text-label: .875rem;
  --text-body: 1rem;
  --text-number: 1.0625rem;
  --text-name: 1.125rem;
  --text-section: 1.375rem;
  --text-heading: 1.75rem;
}
html { font-size: 100%; }
body { font-size: var(--text-body); line-height: 1.55; }
.brand-title { font-size: var(--text-section); line-height: 1.3; word-break: keep-all; min-width: 0; }
.brand-area { min-width: 0; max-width: 100%; }
.leaderboard-tier { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; max-width: 100%; }
.tier-penalty { font-size: var(--text-caption); font-variant-numeric: tabular-nums; line-height: 1.4; color: var(--accent-loss); white-space: nowrap; }
@media(max-width:600px) {
 .leaderboard-tier { display: grid; justify-items: center; gap: 4px; }
 .tier-penalty { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
}
.nav-tab { font-size: .9375rem; min-height: 48px; height: auto; }
.nav-icon { width: 20px; height: 20px; }
.panel-title, .admin-login-title { font-size: var(--text-heading); line-height: 1.25; }
.rules-grid .panel-title { font-size: var(--text-section); }
.overview-summary .stat-card-label { font-size: var(--text-label); }
.overview-summary .stat-card-val { font-size: var(--text-section); }
.stat-grid-summary.overview-summary { flex-wrap: wrap; }
.panel-header { gap: 16px; flex-wrap: wrap; }
.filter-toolbar { flex-wrap: wrap; max-width: 100%; }
.input-search-wrap:has(#pairs-order) { flex-wrap: wrap; max-width: 100%; }
.input-text, .select-input,
.btn-primary, .btn-secondary, .admin-subtab { font-size: var(--text-body); min-height: 44px; height: auto; }
.textarea-input { font-size: var(--text-body); min-height: 10rem; }
.input-text, .select-input { padding-block: 10px; }
.filter-toolbar > .select-input { width: 9.25rem; }
.filter-toolbar #pairs-order { width: 9.75rem; }
.filter-toolbar #rival-player { width: 10.25rem; }
.filter-toolbar #input-pairs-search { width: 13.75rem; }
.form-label, .import-file-actions, .muted-label { font-size: var(--text-label); }
.form-hint, .form-error, #selected-file-name { font-size: var(--text-caption); }
.data-table { font-size: var(--text-number); line-height: 1.5; }
.data-table th { font-size: var(--text-label); height: 48px; font-weight: 550; }
.data-table tbody tr { height: 68px; }
.data-table td { padding-block: 14px; }
.player-primary-name { font-size: var(--text-name); line-height: 1.4; }
.player-name-line { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; max-width: 100%; }
.player-name-line .player-profile-link { min-height: 44px; overflow-wrap: anywhere; }
.warrior-title-criteria { min-width: 0; margin: 0 0 20px; padding: 0; border: 0; }
.warrior-title-criteria legend { padding: 0; }
.streak-badge { display: inline-flex; align-items: center; gap: 3px; padding: 3px 6px; min-height: 26px; border: 1px solid; border-radius: 6px; font-size: var(--text-caption); font-weight: 650; line-height: 1.4; font-variant-numeric: tabular-nums; white-space: nowrap; }
.streak-badge .ui-icon { width: 18px; height: 18px; flex-shrink: 0; }
.streak-win { color: oklch(.85 .11 68); background: oklch(.8 .13 60 / .09); border-color: oklch(.8 .13 60 / .2); }
.streak-loss { color: oklch(.83 .055 215); background: oklch(.8 .07 215 / .08); border-color: oklch(.8 .07 215 / .2); }
@keyframes streak-ember { 0%,100% { opacity: .82; transform: translateY(0) scale(.96); } 50% { opacity: 1; transform: translateY(-1px) scale(1.04); } }
@media(prefers-reduced-motion:no-preference) { .streak-win .ui-icon { animation: streak-ember 1.8s ease-in-out infinite; transform-origin: center bottom; } }
.player-nickname, .missing-nickname, .pair-nickname { font-size: var(--text-caption); }
.rank-number { font-size: var(--text-body); }
.tier-badge { font-size: var(--text-caption); min-height: 28px; min-width: 36px; }
.title-list { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.title-list > .title-pill + .title-pill { margin-left: 0; }
.leaderboard-table .title-list { min-width: 10rem; max-width: 22rem; gap: 6px; }
.title-pill { font-size: .9375rem; font-weight: 600; line-height: 1.4; min-height: 2.25rem; padding: 4px 8px; gap: 6px; }
.title-pill .ui-icon { width: 1.5rem; height: 1.5rem; flex-shrink: 0; }
.title-description-trigger { font-family: inherit; cursor: help; }
.title-description-trigger:focus-visible { outline: 2px solid var(--accent-orange-bright); outline-offset: 3px; }
.low-data-badge { display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 50%; background: transparent; vertical-align: middle; }
.low-data-badge img { width: 22px; height: 22px; display: block; }
.low-data-badge:hover { background: oklch(.78 .1 75 / .1); }
@media(pointer:coarse) { .low-data-badge { min-width: 44px; min-height: 44px; } }
.title-description-tooltip { position: fixed; z-index: 3000; width: max-content; max-width: min(20rem,calc(100vw - 24px)); padding: 10px 12px; border: 1px solid var(--border-strong); border-radius: 8px; background: var(--bg-surface-raised); color: var(--text-primary); box-shadow: 0 6px 20px oklch(.12 .008 75 / .3); font-size: .875rem; font-weight: 500; line-height: 1.5; overflow-wrap: anywhere; }
.title-description-tooltip[hidden] { display: none; }
@media(pointer:coarse) { .title-pill.title-description-trigger, .title-pill.title-description-trigger.title-featured { min-height: 44px; } }
.title-pill.title-featured { position: relative; isolation: isolate; overflow: hidden; font-size: 1rem; min-height: 2.5rem; padding: 4px 10px; gap: 7px; color: oklch(.92 .10 85); border: 1px solid oklch(.78 .12 78 / .44); background: oklch(.78 .12 78 / .14); box-shadow: inset 0 1px 0 oklch(.95 .045 85 / .09), 0 0 12px oklch(.78 .12 78 / .055); }
.title-featured .ui-icon { width: 1.75rem; height: 1.75rem; }
.title-featured > * { position: relative; z-index: 1; }
.title-featured::before { content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: 0; background: linear-gradient(110deg, transparent 20%, oklch(.97 .035 85 / .19) 50%, transparent 80%); transform: translateX(-130%); }
@keyframes title-sheen { 0%,10% { opacity: 0; transform: translateX(-130%); } 18% { opacity: 1; } 32%,100% { opacity: 0; transform: translateX(130%); } }
@media(prefers-reduced-motion:no-preference) {
 .title-featured::before { animation: title-sheen 5.6s cubic-bezier(.22,1,.36,1) infinite; }
 .title-featured.여포::before { animation-delay: 1.4s; }
}
.rules-grid > .panel:first-child th:first-child { width: 9.25rem; }
.rules-grid > .panel:first-child .data-table { min-width: 17rem; }
.title-pill.킬딸러 { color: oklch(.85 .065 80); background: oklch(.85 .065 80 / .09); }
.leaderboard-table td:nth-child(4) > span,
.leaderboard-table td:nth-child(8) > span { font-size: var(--text-caption) !important; }
.leaderboard-table td:nth-child(8) { font-size: var(--text-body) !important; }
.pairs-table .clickable-name { font-size: var(--text-name); }
.pairs-table td strong { font-size: var(--text-name) !important; }
.pairs-table td:last-child { font-size: var(--text-body) !important; }
.pairs-table td:last-child, .leaderboard-table td:nth-child(4) > span { white-space: normal; }
.session-scoreboard { min-width: 0; flex-wrap: wrap; }
.pair-player { gap: 8px; }
.session-title { font-size: var(--text-name); }
.session-date, .team-name, .team-table-title { font-size: var(--text-label); }
.team-pts { font-size: var(--text-heading); }
.result-pill { font-size: var(--text-caption); height: auto; min-height: 28px; padding: 3px 7px; }
.result-pill.pending { color: var(--text-secondary); background: var(--bg-surface-raised); border: 1px solid var(--border-strong); white-space: normal; max-width: 100%; line-height: 1.35; text-align: center; }
.team-table-box .data-table, .players-section .data-table,
.rules-edit-section .data-table { font-size: var(--text-body) !important; }
.team-table-box .data-table td { font-size: var(--text-body); padding-block: 12px; }
.team-table-box .data-table tbody tr { height: 52px; }
.score-rules > div { font-size: var(--text-body); }
.compact-section-title { font-size: var(--text-name); }
.rules-grid .data-table th, .rules-grid .data-table td { font-size: .9375rem; padding: 12px 7px; }
.tier-tables .data-table th { font-size: var(--text-caption) !important; }
.tier-tables .data-table td { font-size: .9375rem !important; padding: 10px 6px !important; }
.tier-tables .tier-badge { font-size: var(--text-caption); min-width: 36px; min-height: 26px; }
.tier-tables th:first-child { width: 52px; }
.drawer-player-name { font-size: var(--text-heading); }
.modal-drawer { overflow: hidden; }
html:has(.modal-overlay:not(.hidden)) { overflow: hidden; }
.drawer-header { flex-shrink: 0; }
.drawer-body { min-height: 0; }
.drawer-player-nick { font-size: var(--text-label); }
.drawer-section-title { font-size: var(--text-body); }
.drawer-body .stat-card-label { font-size: var(--text-label); }
.drawer-body .stat-card-val { font-size: 1.875rem; }
.drawer-body .stat-card-sub { font-size: var(--text-caption); }
.drawer-body .data-table { font-size: var(--text-body); }
.drawer-body .data-table th { font-size: var(--text-label); }
.drawer-body .data-table td { font-size: var(--text-body); }
.rules-edit-section .data-table input { font-size: var(--text-body); min-height: 44px; }
.input-edit-name, .input-edit-nick, #btn-commit-sessions { font-size: var(--text-body) !important; }
.players-section .data-table th:first-child { width: 8rem; }
.players-section .data-table th:last-child { width: 8rem; }
.players-section .input-edit-name, .players-section .input-edit-nick { min-height: 44px; padding: 8px; }
.player-row-actions .btn-secondary { font-size: var(--text-label) !important; min-height: 44px; }
.admin-actions .btn-secondary { font-size: var(--text-label); min-height: 44px; }
.admin-player-empty .empty-result, .toast-notification { font-size: var(--text-body); }
.players-section h3, .import-section h3, .rules-edit-section h3 { font-size: var(--text-name) !important; }
@media (max-width: 1099px) and (min-width: 601px) {
  .nav-tab { font-size: var(--text-label); }
  .leaderboard-table th:nth-child(1), .leaderboard-table td:nth-child(1) { width: 3.125rem !important; }
  .leaderboard-table th:nth-child(2), .leaderboard-table td:nth-child(2) { left: 3.125rem; }
}
@media (max-width: 1099px) {
  .main-nav { overflow-x: auto; }
  .nav-scroller { min-width: max-content; }
  .nav-tab { min-width: max-content; }
}
@media (max-width: 600px) {
  .nav-tab { font-size: var(--text-caption); min-height: 60px; gap: 5px; }
  .nav-tab { padding-inline: 4px; }
  .filter-toolbar > .input-search-wrap:has(#input-filter-search),
  .filter-toolbar > .input-search-wrap:has(#input-session-search) { flex: 1 1 10rem; }
  .filter-toolbar #rival-player, .filter-toolbar #pairs-order { flex: 1 1 8rem; }
  .panel-title { font-size: 1.5rem; }
  .overview-summary .stat-card-label { font-size: var(--text-caption); }
  .overview-summary .stat-card-val { font-size: var(--text-section); }
  .leaderboard-table th { font-size: var(--text-caption); }
  .leaderboard-table td { font-size: var(--text-body); }
  .leaderboard-table tbody tr { height: 76px; }
  .leaderboard-table .player-primary-name { font-size: var(--text-name); min-height: 32px; }
  .leaderboard-table .player-name-line .player-primary-name { min-height: 44px; }
  .player-name-line { column-gap: 5px; }
  .leaderboard-table .player-mobile-meta { font-size: var(--text-caption) !important; line-height: 1.5; white-space: normal; }
  .leaderboard-table .tier-badge { font-size: .75rem; min-width: 32px; min-height: 26px; }
  .leaderboard-panel .table-wrapper { overflow-x: auto; }
  .leaderboard-table, .pairs-table { min-width: 20rem !important; }
  .leaderboard-table th:nth-child(1), .leaderboard-table td:not([colspan]):nth-child(1) { width: 1.75rem !important; }
  .leaderboard-table th:nth-child(3), .leaderboard-table td:not([colspan]):nth-child(3) { width: 2.875rem !important; }
  .leaderboard-table th:nth-child(5), .leaderboard-table td:not([colspan]):nth-child(5) { width: 4.125rem !important; }
  .leaderboard-table th:nth-child(6), .leaderboard-table td:not([colspan]):nth-child(6) { width: 4.25rem !important; }
  .pairs-table th { font-size: var(--text-caption); }
  .pairs-table td { font-size: var(--text-body); }
  .pairs-table th:nth-child(2), .pairs-table th:nth-child(4) { width: 3.25rem; }
  .pairs-table th:nth-child(5) { width: 3.25rem; }
  .pairs-table th:nth-child(6) { width: 4.75rem; }
  .pairs-table .clickable-name { font-size: var(--text-name); min-height: 44px; }
  .pairs-table td strong { font-size: var(--text-body) !important; }
  .pairs-table td:last-child { font-size: var(--text-label) !important; }
  .pairs-table .pair-player .tier-badge { font-size: .75rem; min-height: 24px; min-width: 30px; }
  .tier-tables { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .tier-tables .data-table th { font-size: var(--text-label) !important; }
  .tier-tables .data-table td { font-size: var(--text-body) !important; }
  .score-rules > div { font-size: var(--text-body); }
  .session-title { font-size: var(--text-name); }
  .team-score-chip .team-pts { font-size: 1.625rem; }
  .team-score-chip .team-name { font-size: var(--text-label); }
  .team-score-chip .result-pill { font-size: var(--text-caption); }
  .drawer-player-name { font-size: 1.5rem; }
  .drawer-player-nick { font-size: var(--text-caption); }
  .drawer-body .stat-card { padding: 16px 12px; }
  .drawer-body .data-table th { font-size: .75rem; }
  .drawer-body .data-table td { font-size: var(--text-label); padding: 12px 3px; }
  .drawer-body .table-wrapper .data-table { min-width: 18rem; }
  .map-table th:first-child { width: 3.25rem; }
  .map-table th:nth-child(2) { width: 2.25rem; }
  .map-table th:nth-child(3), .map-table th:nth-child(4) { width: 2.75rem; }
  .map-table th:nth-child(6) { width: 2.875rem; }
  .recent-table th:nth-child(4) { width: 3.1875rem; }
  .recent-table th:nth-child(5) { width: 2.6875rem; }
  .admin-subtab { font-size: var(--text-label); min-height: 44px; min-width: 0; }
  .players-section .data-table th:first-child { width: 6rem; }
  .players-section .data-table th:last-child { width: 4.25rem; }
  .players-section .data-table td { font-size: var(--text-body); }
  .players-section .players-header { flex-direction: column; align-items: stretch; gap: 12px; }
  .players-section .admin-player-search-wrap { flex: none; width: 100%; max-width: none; }
  .player-row-actions { flex-direction: column; }
  .player-row-actions .btn-secondary { width: 100%; }
}

.team-breakdown-grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
.team-breakdown-grid > .team-table-box { padding: 0; min-width: 0; }
.team-table-box .game-table { min-width: calc(18rem + var(--game-player-count) * 13rem); table-layout: fixed; }
.game-map-col { width: min(8rem, 35vw); }
.game-player-col { width: 13rem; }
.game-chicken-col { width: 4rem; }
.game-score-col { width: 6rem; }
.game-table .game-map-cell { position: sticky; left: 0; z-index: 1; background: var(--bg-surface); white-space: normal; }
.game-table thead .game-map-cell { z-index: 2; background: var(--bg-surface-raised); }
.game-table tbody .game-map-cell { font-size: var(--text-body); font-weight: 500; padding: 12px 8px; border-bottom: 1px solid var(--border-subtle); }
.game-table tbody tr:last-child .game-map-cell { border-bottom: 0; }
.game-map-cell strong { font-weight: 650; }
.game-number { color: var(--text-muted); display: inline-block; min-width: 2rem; margin-right: 6px; font-size: var(--text-label); }
.game-table .game-player-heading { padding: 0 8px 10px; }
.game-table .game-player-heading, .game-table .game-player-cell { border-left: 1px solid var(--border-subtle); }
.game-player-name { display: flex; align-items: center; justify-content: center; min-height: 44px; width: 100%; font-size: var(--text-name); font-weight: 650; }
.game-stat-grid { display: grid; grid-template-columns: 1.25fr 3fr 3.75fr 2.75fr; gap: 4px; align-items: center; text-align: right; }
.game-stat-labels { font-size: var(--text-caption); font-weight: 500; color: var(--text-muted); }
.game-stat-labels > :first-child, .game-player-cell .game-stat-grid > :first-child { text-align: center; }
.team-table-box .game-table td { padding: 12px 8px; white-space: nowrap; }
.team-table-box .game-table tbody tr { height: 60px; }
.game-death { color: var(--accent-loss); white-space: normal; }
.game-survived { color: var(--text-muted); }
.game-chicken { color: var(--accent-orange-bright); }
.game-chicken .ui-icon { width: 20px; height: 20px; }
.game-team-score { font-weight: 650; }
.game-table tbody tr:hover .game-map-cell { background: var(--bg-surface-hover); }
.game-sr-label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

.team-kills { color: var(--text-secondary); font-size: var(--text-label); }
.session-date-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 20px; align-items: end; padding: 20px 0; border-bottom: 1px solid var(--border-subtle); }
.session-date-form .session-name-group { grid-column: 1 / -1; }
.session-date-form .form-group { margin: 0; }
.session-record-actions { display: flex; gap: 8px; }
.session-record-actions button { min-height: 44px; }
.btn-delete-session { color: var(--accent-loss); }
.btn-delete-session:hover { background: var(--accent-loss-subtle); border-color: var(--accent-loss); }
@media(max-width:600px) {
 .session-scoreboard { grid-template-columns: repeat(2,minmax(0,1fr)); position: relative; padding-right: 24px; }
 .session-scoreboard > .session-expand-toggle { position: absolute; right: 0; top: 8px; }
 .team-score-chip .team-kills { grid-row: 3; grid-column: 1 / 3; }
 .session-date-form { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
 .session-name-group { grid-column: 1 / -1; }
 .session-date-form > .form-group { grid-column: 1 / -1; }
 .session-record-actions { grid-column: 1 / -1; }
 .session-record-actions button { flex: 1; }
}

.game-chicken-badge { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 34px; border-radius: 8px; background: oklch(.78 .125 72 / .1); border: 1px solid oklch(.78 .125 72 / .25); animation: chicken-glow 3s ease-in-out infinite; }
.game-chicken-icon { width: 30px; height: 30px; overflow: visible; }
@keyframes chicken-glow { 0%,100% { filter: drop-shadow(0 0 2px oklch(.78 .125 72 / .12)); } 50% { filter: drop-shadow(0 0 6px oklch(.78 .125 72 / .42)); } }
@media(prefers-reduced-motion:reduce) { .game-chicken-badge { animation: none; } }

.session-date-form .form-group { min-width: 0; }
.session-id-date, .session-title { min-width: 0; }
.session-title { overflow-wrap: anywhere; }

.session-card { container-type: inline-size; }
.session-date { white-space: nowrap; }
@container (max-width: 72rem) {
 .session-card-header { position: relative; flex-direction: column; align-items: stretch; gap: 14px; }
 .session-id-date { min-width: 0; flex-wrap: wrap; gap: 6px 12px; padding-right: 32px; }
 .session-scoreboard { display: grid; grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); width: 100%; min-width: 0; gap: 12px; position: static; padding-right: 0; }
 .session-scoreboard > .session-expand-toggle { position: absolute; top: 18px; right: 18px; margin: 0; }
 .session-scoreboard > .team-score-chip { display: grid; grid-template-columns: minmax(0, 1fr) auto; min-width: 0; gap: 4px 8px; padding: 12px; align-items: baseline; }
 .team-score-chip .team-name { grid-row: 1; grid-column: 1; min-width: 0; white-space: normal; overflow-wrap: anywhere; }
 .team-score-chip .result-pill { grid-row: 1; grid-column: 2; justify-self: end; }
 .team-score-chip .team-pts { grid-row: 2; grid-column: 1 / -1; min-width: 0; font-size: 1.625rem; line-height: 1.2; overflow-wrap: anywhere; }
 .team-score-chip .team-kills { grid-row: 3; grid-column: 1 / -1; min-width: 0; font-size: var(--text-caption); line-height: 1.4; white-space: normal; overflow-wrap: anywhere; }
}
@container (max-width: 26rem) {
 .session-scoreboard { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: minmax(0, 1fr); gap: 8px; }
 .session-scoreboard > .team-score-chip { grid-template-columns: minmax(0, 2.5rem) minmax(0, 1fr) auto; gap: 4px 8px; }
 .team-score-chip .team-name { grid-column: 1; align-self: center; }
 .team-score-chip .team-pts { grid-row: 1; grid-column: 2; }
 .team-score-chip .result-pill { grid-column: 3; align-self: center; }
 .team-score-chip .team-kills { grid-row: 2; grid-column: 2 / -1; }
}
.recent-table td:nth-child(2) { white-space: normal; overflow-wrap: anywhere; }

.import-meta-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.import-meta-grid .form-group { min-width: 0; }
.import-id-group { grid-column: 1 / -1; }
#form-import-sheet > .btn-primary { width: 100%; }
.import-manual { border-top: 1px solid var(--border-subtle); margin-top: 24px; padding-top: 16px; }
.import-manual > summary { color: var(--text-secondary); font-size: var(--text-body); min-height: 44px; cursor: pointer; }
.import-manual[open] > summary { margin-bottom: 12px; }
.import-manual-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.site-settings-section { max-width: 32rem; }
.site-logo-preview { display: block; width: 128px; height: 128px; object-fit: contain; padding: 12px; background: var(--bg-surface-raised); border: 1px solid var(--border-subtle); border-radius: 12px; }
.site-image-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0 8px; }
.site-image-actions .btn-primary { width: auto; }
@media(max-width:600px) { .import-meta-grid { grid-template-columns: minmax(0,1fr); gap: 0; } }
@media(max-width:600px) { .admin-nav-tabs { overflow-x: auto; }.admin-subtab { flex: 1 0 auto; min-width: max-content; padding-inline: 6px; } }

@media(min-width:701px){.session-date-form{grid-template-columns:repeat(3,minmax(0,1fr)) auto}}

@media(max-width:600px){.leaderboard-table th:nth-child(3),.leaderboard-table td:not([colspan]):nth-child(3){width:4.25rem!important}}

.modal-player-mastery{flex-basis:100%;max-width:100%;margin-top:.375rem;font-size:.8125rem;line-height:1.4;color:var(--text-secondary);overflow-wrap:anywhere}
.modal-player-mastery[hidden]{display:none}

.title-pill.Auto-Aim { color: oklch(.91 .09 80); border-color: oklch(.78 .12 78 / .5); }
@media(prefers-reduced-motion:no-preference) { .title-featured.Auto-Aim::before { animation-delay: 2.8s; } }
