.ui-page-header {margin:0 0 var(--space-5);min-width:0}
.ui-page-header h1 {font-size:var(--text-title);line-height:1.4;margin:0;color:var(--ink);overflow-wrap:anywhere}
.ui-page-header .eyebrow {font-size:var(--text-xs);color:var(--accent);margin:0 0 var(--space-2);font-weight:700;letter-spacing:.12em}
.ui-page-header .lead {font-size:var(--text-body);line-height:1.7;margin:var(--space-2) 0 0}
.ui-filter-bar {display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-3);padding:var(--space-4);margin:0 0 var(--space-5);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.ui-filter-bar label {display:grid;gap:var(--space-2);font-size:var(--text-xs);min-width:0;flex:1 1 140px}
.ui-filter-bar :is(select,input,button) {font-size:var(--text-md);min-height:44px;max-width:100%;min-width:0;border-radius:var(--radius-small)}
.ui-player-chip {display:flex;align-items:start;gap:var(--space-2);min-width:0;max-width:100%;text-align:left}
.ui-player-chip-main {min-width:0;flex:1}
.ui-player-chip .player-name-link {font-size:var(--text-body);font-weight:700;line-height:1.5;overflow-wrap:anywhere;color:var(--ink)}
.ui-player-chip .player-club {display:block;font-size:var(--text-xs);color:var(--muted);line-height:1.6;overflow-wrap:anywhere;margin-top:var(--space-1)}
.ui-player-chip .favorite-btn {flex:0 0 44px;min-width:44px;min-height:44px;padding:10px;align-self:center;background:transparent;color:var(--muted);border:1px solid var(--line)}
.ui-player-chip .favorite-btn[aria-pressed=true] {color:var(--accent);background:var(--green-2)}
.ui-player-chip .favorite-icon {width:20px;height:20px}
.ui-player-chip .favorite-label {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.ui-ranking-list {display:grid;gap:var(--space-3);margin:0;padding:0;list-style:none}
.ui-ranking-item {min-width:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:clip}
.ui-ranking-summary {display:grid;grid-template-columns:48px minmax(0,1fr) minmax(110px,auto);align-items:center;gap:var(--space-4);padding:var(--space-4);list-style:none;cursor:pointer;min-height:80px}
.ui-ranking-summary::-webkit-details-marker {display:none}
.ui-ranking-summary .ranking-place {font:700 var(--text-lg) var(--number-font);color:var(--ink-2);text-align:center}
.ui-ranking-summary .ranking-name {min-width:0}
.ui-ranking-evidence .pb-competition small {display:block;font-size:var(--text-xs);color:var(--muted)}
.ui-ranking-summary .ranking-value {font:700 var(--text-value) var(--number-font);font-variant-numeric:tabular-nums;text-align:right;color:var(--ink);line-height:1.2;white-space:nowrap}
.ui-ranking-summary .ranking-value small {display:block;font:400 var(--text-xs) var(--font-body);color:var(--muted);margin-top:var(--space-1);white-space:normal}
.ui-ranking-evidence {border-top:1px solid var(--line);padding:var(--space-4);font-size:var(--text-md);line-height:1.65;overflow-wrap:anywhere}
.ui-ranking-evidence dl {display:flex;flex-wrap:wrap;gap:var(--space-4);margin:0 0 var(--space-3)}
.ui-ranking-evidence dl div {min-width:0;flex:1 1 120px}
.ui-ranking-evidence dt {color:var(--muted);font-size:var(--text-xs)}
.ui-ranking-evidence dd {margin:var(--space-1) 0 0}
.ui-ranking-evidence ul {padding-left:20px}
.ui-pagination {display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-3);margin:var(--space-5) 0;font-size:var(--text-sm)}
.ui-pagination :is(a,button) {min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border:1px solid var(--line);border-radius:var(--radius-small);background:var(--surface)}
.ui-section-card,.ui-details-block {min-width:0;padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin-bottom:var(--space-4)}
.ui-details-block>summary {min-height:44px;cursor:pointer;font-weight:650;font-size:var(--text-md)}
.ui-status-note {padding:var(--space-3) var(--space-4);font-size:var(--text-md);line-height:1.6;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-small);overflow-wrap:anywhere}
.ui-status-note[data-status=error] {color:var(--red);background:var(--red-2)}
.ui-data-table {max-width:100%;min-width:0;overflow:auto;border:1px solid var(--line);border-radius:var(--radius-small)}
.ui-data-table table {width:100%;border-collapse:collapse;font-size:var(--text-md)}
.ui-data-table :is(th,td) {padding:var(--space-3);text-align:left;border-bottom:1px solid var(--line)}
.ui-data-table thead th {position:sticky;top:0;background:var(--surface-2);font-size:var(--text-xs);z-index:1}
.ui-metric-card {padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:0}
.ui-metric-card>strong {display:block;font:700 var(--text-value) var(--number-font);margin-top:var(--space-2)}
@media(max-width:600px) {
  .ui-page-header h1 {font-size:var(--text-xl)}
  .ui-filter-bar {padding:var(--space-3)}
  .ui-filter-bar label {flex-basis:100%}
  .ui-ranking-summary {grid-template-columns:24px minmax(0,1fr) auto;gap:var(--space-2);padding:var(--space-3)}
  .ui-ranking-summary .ranking-place {font-size:var(--text-md)}
  .ui-ranking-summary .ranking-value {font-size:22px}
  .ui-player-chip .player-name-link {font-size:var(--text-md)}
  .ui-player-chip {flex-wrap:wrap}
  .ui-player-chip .favorite-btn {flex-basis:44px}
  .ui-section-card,.ui-details-block {padding:var(--space-4)}
}
/* Candidate batch controls share the same 44px touch target as other filters. */
.identity-batch {min-width:0}
.identity-batch .identity-form {min-width:0;padding:var(--space-4)}
.identity-batch label {min-width:0;overflow-wrap:anywhere}
.identity-batch textarea {box-sizing:border-box;max-width:100%;min-width:0}
.candidate-actions {display:flex;flex-wrap:wrap;gap:var(--space-2)}
.candidate-actions button,.candidate-group button {min-height:44px;white-space:normal}
.candidate-group {margin:var(--space-5) 0 var(--space-3);overflow-wrap:anywhere}
.candidate-group h2 {font-size:var(--text-md)}
.identity-candidate h3 {font-size:var(--text-lg);overflow-wrap:anywhere}
.candidate-select {display:flex;align-items:center;gap:var(--space-2);min-height:44px}
.candidate-select input {width:22px;height:22px}
.identity-candidate li {overflow-wrap:anywhere}
/* Open/close marker shared by ranking rows and result tables: quiet grey circle, "›" closed, "⌄" open. */
.ui-ranking-toggle,.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle {display:inline-grid;place-items:center;flex:none;width:28px;height:28px;min-width:28px;min-height:28px;padding:0;border:0;border-radius:999px;background:#eef2f6;color:#7a8aa3;box-shadow:none;transition:color .15s,background-color .15s}
.ui-ranking-toggle svg,.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle .detail-chevron {width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transform:none;transition:transform .15s}
.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle:hover,.ui-ranking-summary:hover .ui-ranking-toggle {background:#e3e9f0;color:var(--ink-2)}
.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle[aria-expanded=true],details[open]>.ui-ranking-summary .ui-ranking-toggle {color:var(--ink)}
.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle[aria-expanded=true] .detail-chevron,details[open]>.ui-ranking-summary .ui-ranking-toggle svg {transform:rotate(90deg)}
details[open]>.ui-ranking-summary,.player-page .competition-results .appearance-row:has(.detail-toggle[aria-expanded=true]) {background:#f8fafc}
.ui-ranking-summary {grid-template-columns:48px minmax(0,1fr) minmax(110px,auto) 28px}
.ui-ranking-summary .ranking-value small {white-space:nowrap}
.ui-ranking-links {display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:var(--space-3) 0 0}
.ui-ranking-links a {font-weight:600;color:var(--accent)}
/* Player results: two date lines, right-aligned so the month/day of start and end line up. */
.player-page .competition-results .result-date :is(.date-start,.date-end) {display:block;width:max-content;margin-left:auto;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.player-page .competition-results .result-date .date-end {color:#8391a7}
.player-page .competition-results .event-phase.completed {display:none}
@media(max-width:600px) {
  .ui-ranking-summary {grid-template-columns:24px minmax(0,1fr) auto 24px}
  .ui-ranking-toggle,.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle {width:24px;height:24px;min-width:24px;min-height:24px}
  .ui-ranking-toggle svg,.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle .detail-chevron {width:14px;height:14px}
  /* Fixed-width score and rank columns: status words stack on two lines instead of widening the row. */
  .player-page .competition-results .stack-label>span {display:block}
  .player-page .competition-results :is(.total-score,td[data-label="最終順位"]) :is(small,.stack-label) {font-size:11px;line-height:1.3;white-space:nowrap}
  .player-page .competition-results .short-label>span {display:none}
  .player-page .competition-results .short-label::before {content:attr(data-short-1);display:block}
  .player-page .competition-results .short-label::after {content:attr(data-short-2);display:block}
}
/* The generic right-edge chevron (dashboard.css) would double the ranking row's own toggle. */
.site-layout .content-area details:not(.radar-axis):not(.affiliation-listing) > summary.ui-ranking-summary {padding:var(--space-4)}
.site-layout .content-area details > summary.ui-ranking-summary::after {content:none}
/* Improvement cards keep the brighter red; small red text elsewhere stays on the readable --red. */
.bad-card {--red:#ff3247}
/* Status words (FS未進出, 個人総合なし …) break at fixed points and follow the column's alignment. */
:is(.player-page,.competition-page) .competition-results .stack-label>span {display:block}
.player-page .competition-results .total-score small {display:block;text-align:inherit;font-size:11px;line-height:1.3}
.competition-page .competition-standings .competition-place .result-status {display:inline-block;font-size:11px;line-height:1.3;white-space:nowrap}
/* Entry lists (no results yet): names with the affiliation printed for this competition. */
.entry-list {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2) var(--space-3);margin:0;padding:0;list-style:none}
.entry-list>li {min-width:0;padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.entry-list small {display:block;font-size:var(--text-xs);color:var(--muted)}
@media(max-width:600px) {
  .site-layout .content-area details:not(.radar-axis):not(.affiliation-listing) > summary.ui-ranking-summary {padding:var(--space-3)}
  .player-page .competition-results .appearance-row > .total-score small {text-align:right}
  .entry-list {grid-template-columns:minmax(0,1fr)}
}
/* Trial-history options: "対象" and "並び順" are separate segmented controls, one selection each. */
:is(.player-page,.category-cards-page) .history-modes {display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 10px;margin-bottom:14px}
.history-mode-label {font-size:var(--text-xs);color:var(--muted);white-space:nowrap}
.history-segment {display:inline-flex;flex-wrap:wrap;justify-self:start;gap:2px;padding:3px;border:1px solid var(--line);border-radius:10px;background:#f1f5f9}
:is(.player-page,.category-cards-page) .history-segment button {min-height:32px;padding:5px 12px;border:0;border-radius:7px;background:transparent;color:var(--ink-2);font-size:var(--text-sm);font-weight:600;box-shadow:none}
:is(.player-page,.category-cards-page) .history-segment button:hover {color:var(--ink)}
:is(.player-page,.category-cards-page) .history-segment button[aria-pressed=true] {background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(15,35,70,.12)}
/* Several non-jump strengths: a compact list inside the same slot, one per row. */
.signature-candidates {display:grid;gap:8px;margin:2px 0 0;padding:0;list-style:none}
.signature-candidates>li {display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 10px;min-width:0}
.signature-candidates>li+li {padding-top:8px;border-top:1px dashed var(--line)}
.signature-candidates .signature-element {grid-row:1/3;height:auto}
.signature-candidates .signature-reason,.signature-candidates small {grid-column:2;text-align:right}
.player-page .signature-candidates small {grid-column:2}
/* Loading spinner: the hidden chevron and the spinner share one grid cell, so the spinner stays centred
   (auto-placement otherwise pushed the chevron into a second row and the spinner to the top). */
.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle .detail-chevron,
.site-layout :is(.player-page,.competition-page) .detail-toggle.detail-toggle[aria-busy=true]::after {grid-area:1/1;margin:0}
