/*
 * 週間ランキング（/games/ranking/）。template-parts/games/ranking-page.php・assets/js/games-ranking.js
 *
 * 冒頭（番号と締め切りまでの時計）・参加の札・板の切り替え・表彰台（真ん中が 1 位・せり上がる）・20 位までの列・先週の 1〜3 位。
 * 動きは transform と opacity だけ。ルートの文字サイズは 62.5%（1rem = 10px）なので px で書く。頭文字 grk-。
 */

.grk-page {
	background: var(--ga-ground, #fff4e1);
	color: var(--ga-text, #2b2620);
	padding: 18px 16px 110px;
}
.grk {
	max-width: 960px;
	margin: 0 auto;
	font: 400 16px/1.75 system-ui, -apple-system, "Segoe UI", "Hiragino Sans", "Noto Sans JP", sans-serif;
}
.grk *,
.grk *::before,
.grk *::after {
	box-sizing: border-box;
}
.grk :where(h1, h2, p, ol, ul) {
	margin: 0;
	padding: 0;
}
.grk :where(ol, ul) {
	list-style: none;
}
.grk [hidden] {
	display: none !important;
}
.grk-h {
	font: 700 clamp(20px, 2.6vw, 24px)/1.35 var(--ga-brandfont);
	color: var(--ga-ink);
}

/* 冒頭 */
.grk-hero {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 18px;
	margin-top: 16px;
}
@media (max-width: 640px) {
	.grk-hero {
		grid-template-columns: minmax(0, 1fr);
	}
}
.grk-kicker {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font: 400 16px/1 var(--ga-num);
	letter-spacing: 0.12em;
	color: var(--ga-ink);
}
.grk-kicker span {
	padding: 5px 10px 4px;
	border-radius: 6px;
	background: var(--ga-ink);
	color: #ffd84d;
	letter-spacing: 0.16em;
}
.grk-hero__title {
	margin-top: 10px !important;
	font: 700 clamp(32px, 5.4vw, 54px)/1.15 var(--ga-brandfont);
	color: var(--ga-ink);
}
.grk-hero__lead {
	max-width: 40em;
	margin-top: 10px !important;
	color: var(--ga-muted);
}
.grk-clock {
	display: grid;
	justify-items: center;
	gap: 2px;
	padding: 12px 18px;
	border: 3px solid var(--ga-ink);
	border-radius: 18px;
	background: var(--ga-screen, #17120e);
	color: #f1ede6;
	box-shadow: 5px 5px 0 #ffd84d;
}
.grk-clock p {
	font-size: 12px;
	font-weight: 700;
	color: rgba(241, 237, 230, 0.7);
}
.grk-clock b {
	font: 400 30px/1 var(--ga-num);
	color: #ffd84d;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.grk-clock small {
	font-size: 11px;
	color: rgba(241, 237, 230, 0.6);
}

/* 参加 */
.grk-player {
	display: grid;
	gap: 10px;
	margin-top: 22px;
	padding: clamp(16px, 3vw, 24px);
	border: 3px solid var(--ga-ink);
	border-radius: 22px;
	background: var(--ga-surface, #fff);
	box-shadow: 6px 6px 0 var(--ga-ink);
}
.grk-player__out,
.grk-player__in {
	display: grid;
	gap: 8px;
	justify-items: start;
}
.grk-player__out p {
	max-width: 46em;
	font-size: 14px;
}
.grk-player__out .ga-play {
	margin-top: 4px;
}
.grk-player__label {
	font-size: 12px;
	font-weight: 700;
	color: var(--ga-muted);
}
.grk-player__name {
	padding: 6px 16px;
	border: 3px solid var(--ga-ink);
	border-radius: 14px;
	background: #ffd84d;
	font: 700 clamp(22px, 4vw, 30px)/1.3 var(--ga-brandfont);
	color: var(--ga-ink);
	perspective: 600px;
}
.grk-player__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}
.grk-player__leave {
	background: var(--ga-ground, #fff4e1) !important;
	font-weight: 700 !important;
}
.grk-player__note {
	font-size: 12px;
	color: var(--ga-muted);
}
.grk-err {
	padding: 8px 12px;
	border: 2px solid #c0341d;
	border-radius: 12px;
	background: #fdebe7;
	color: #8f2414;
	font-weight: 700;
	font-size: 14px;
}

/* 切り替え */
.grk-tabs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
	margin-top: 26px;
}
.grk-tab {
	display: grid;
	gap: 2px;
	padding: 10px 14px;
	border: 3px solid var(--ga-ink);
	border-radius: 16px;
	background: #fff;
	color: var(--ga-ink);
	text-align: left;
	cursor: pointer;
	font: inherit;
	box-shadow: 0 4px 0 var(--ga-ink);
	transition: transform 0.15s var(--ga-pop), background-color 0.15s ease;
}
.grk-tab b {
	font: 700 16px/1.3 var(--ga-brandfont);
}
.grk-tab small {
	font-size: 12px;
	color: var(--ga-muted);
}
.grk-tab.is-on {
	background: var(--ga-ink);
	color: #ffd84d;
	transform: translateY(-2px);
	box-shadow: 0 6px 0 var(--ga-accent);
}
.grk-tab.is-on small {
	color: rgba(241, 237, 230, 0.7);
}
.grk-tab:focus-visible {
	outline: 3px solid var(--ga-accent);
	outline-offset: 3px;
}

/* 板 */
.grk-board {
	display: grid;
	gap: 16px;
	margin-top: 16px;
	padding: clamp(16px, 3vw, 28px);
	border: 3px solid var(--ga-ink);
	border-radius: 24px;
	background:
		radial-gradient(circle at 50% 0%, rgba(255, 216, 77, 0.35), transparent 55%),
		var(--ga-surface, #fff);
	box-shadow: 8px 8px 0 var(--ga-ink);
}
.grk-board__count {
	font-size: 13px;
	font-weight: 700;
	color: var(--ga-muted);
}
/* 表彰台（2・1・3 の順・真ん中がいちばん高い） */
.grk-podium {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: end;
	gap: 10px;
	min-height: 40px;
}
.grk-podium__step {
	display: grid;
	justify-items: center;
	align-content: start;
	gap: 4px;
	padding: 12px 6px 14px;
	border: 3px solid var(--ga-ink);
	border-radius: 18px 18px 6px 6px;
	background: #fff;
	text-align: center;
	min-width: 0;
}
.grk-podium__step.is-1 {
	min-height: 196px;
	background: linear-gradient(#ffe680, #ffd84d);
	box-shadow: 0 0 0 4px rgba(255, 216, 77, 0.45), 0 10px 30px rgba(255, 179, 0, 0.35);
}
.grk-podium__step.is-1::before {
	content: "";
	width: 40px;
	height: 26px;
	background: var(--ga-ink);
	clip-path: polygon(0 100%, 0 20%, 25% 60%, 50% 0, 75% 60%, 100% 20%, 100% 100%);
}
.grk-podium__step.is-2 {
	min-height: 160px;
	background: linear-gradient(#f3f3f3, #d9dde3);
}
.grk-podium__step.is-3 {
	min-height: 136px;
	background: linear-gradient(#ffd9b8, #f0b07c);
}
.grk-podium__step.is-me {
	outline: 4px solid var(--ga-accent);
	outline-offset: 3px;
}
.grk-podium__rank {
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	border: 3px solid var(--ga-ink);
	border-radius: 50%;
	background: var(--ga-ink);
	color: #fff;
	font: 400 24px/1 var(--ga-num);
}
.grk-podium__step b {
	max-width: 100%;
	font: 700 clamp(13px, 2.2vw, 16px)/1.35 var(--ga-brandfont);
	color: var(--ga-ink);
	overflow-wrap: anywhere;
}
.grk-podium__score {
	font: 400 clamp(20px, 3.6vw, 28px)/1 var(--ga-num);
	color: var(--ga-ink);
	font-variant-numeric: tabular-nums;
}
.grk-podium__step small {
	font-size: 11px;
	color: rgba(29, 24, 19, 0.65);
}
.grk-podium.is-in .grk-podium__step {
	transform-origin: bottom;
	animation: grk-rise 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) both;
	animation-delay: calc(var(--d, 0) * 140ms);
}
@keyframes grk-rise {
	from { opacity: 0; transform: translate3d(0, 40px, 0) scaleY(0.6); }
}
/* 列 */
.grk-list {
	display: grid;
	gap: 6px;
}
.grk-row {
	display: grid;
	grid-template-columns: 44px minmax(0, 1fr) auto;
	align-items: center;
	gap: 10px;
	padding: 8px 12px;
	border: 2px solid var(--ga-line, #e8e1d4);
	border-radius: 14px;
	background: #fff;
}
.grk-row.is-me {
	border-color: var(--ga-accent);
	background: var(--ga-accent-soft, #ffedca);
}
.is-animate .grk-row {
	animation: grk-row 0.4s var(--ga-out) both;
	animation-delay: calc(var(--i, 0) * 40ms + 300ms);
}
@keyframes grk-row {
	from { opacity: 0; transform: translate3d(-18px, 0, 0); }
}
.grk-row__rank {
	font: 400 20px/1 var(--ga-num);
	color: var(--ga-muted);
	text-align: center;
}
.grk-row__name {
	font-weight: 700;
	color: var(--ga-ink);
	overflow-wrap: anywhere;
}
.grk-row__score {
	font: 400 18px/1 var(--ga-num);
	color: var(--ga-ink);
	white-space: nowrap;
}
.grk-board__me {
	padding: 8px 14px;
	border-radius: 12px;
	background: var(--ga-ink);
	color: #fff;
	font-weight: 700;
	font-size: 14px;
}
.grk-empty p {
	padding: 18px;
	border: 2px dashed var(--ga-line-strong, #d8cebb);
	border-radius: 16px;
	text-align: center;
	font-weight: 700;
	color: var(--ga-muted);
}
.grk-board__go {
	justify-self: center;
	margin-top: 0;
}
.grk-last {
	display: grid;
	gap: 6px;
	padding-top: 12px;
	border-top: 1px dashed var(--ga-line-strong, #d8cebb);
}
.grk-last__h {
	font-size: 13px;
	font-weight: 700;
	color: var(--ga-muted);
}
.grk-last ol {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 14px;
	font-size: 14px;
}

/* きまり */
.grk-how {
	display: grid;
	gap: 12px;
	margin-top: 30px;
}
.grk-how__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
	gap: 12px;
}
.grk-how__list li {
	display: grid;
	gap: 4px;
	padding: 14px 16px;
	border: 2px solid var(--ga-line-strong, #d8cebb);
	border-radius: 16px;
	background: #fff;
	font-size: 14px;
}
.grk-how__list b {
	font: 700 15px/1.4 var(--ga-brandfont);
	color: var(--ga-ink);
}

@media (prefers-reduced-motion: reduce) {
	.grk * {
		animation: none !important;
		transition: none !important;
	}
}
