:root {
  --pcc-bg: #f5efe2;
  --pcc-paper: #fbf7ec;
  --pcc-ink: #1a2620;
  --pcc-primary: #2f5d3f;
  --pcc-accent: #c0552d;
  --pcc-muted: #7a7567;
  --pcc-line: #d9cfb8;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html, body { background: var(--pcc-bg); color: var(--pcc-ink); }
body {
  font-family: "IBM Plex Sans", system-ui, sans-serif;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

.serif { font-family: "IBM Plex Serif", Georgia, serif; }
.mono { font-family: "IBM Plex Mono", ui-monospace, monospace; }
.tabular { font-variant-numeric: tabular-nums; }

a { color: inherit; text-decoration: none; }
a.link { text-decoration: underline; text-decoration-color: var(--pcc-accent); text-underline-offset: 4px; }
a.link:hover { color: var(--pcc-ink); }

.container { max-width: 72rem; margin: 0 auto; padding: 2rem 1rem; }
@media (min-width: 640px) { .container { padding: 3rem 1.5rem; } }
@media (min-width: 1024px) { .container { padding: 3rem 2rem; } }

.muted { color: var(--pcc-muted); }
.accent { color: var(--pcc-accent); }
.primary { color: var(--pcc-primary); }
.ink { color: var(--pcc-ink); }

.upper { text-transform: uppercase; letter-spacing: 0.2em; font-size: 10px; }
@media (min-width: 640px) { .upper { letter-spacing: 0.25em; font-size: 12px; } }

.header-bar {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center;
  gap: 0.5rem 1rem;
  color: var(--pcc-muted);
}

.divider-top { border-bottom: 2px solid var(--pcc-ink); padding-bottom: 1.5rem; }
@media (min-width: 640px) { .divider-top { padding-bottom: 2rem; } }

h1.title { font-family: "IBM Plex Serif", Georgia, serif; font-size: 1.875rem; font-weight: 700; line-height: 1; letter-spacing: -0.01em; word-break: break-word; }
@media (min-width: 640px) { h1.title { font-size: 3rem; } }

h2.section-title {
  font-family: "IBM Plex Serif", Georgia, serif;
  font-size: 1.25rem; font-weight: 600; letter-spacing: -0.01em;
  display: flex; align-items: baseline; gap: 0.75rem;
}
@media (min-width: 640px) { h2.section-title { font-size: 1.5rem; } }
h2.section-title .glyph { color: var(--pcc-accent); }

.profile-row { margin-top: 1.5rem; display: flex; flex-direction: column; gap: 1.5rem; }
@media (min-width: 640px) { .profile-row { flex-direction: row; align-items: flex-end; justify-content: space-between; } }

.profile-id { display: flex; min-width: 0; align-items: center; gap: 1rem; }
@media (min-width: 640px) { .profile-id { gap: 1.25rem; } }

.avatar {
  width: 4rem; height: 4rem; border: 2px solid var(--pcc-ink); object-fit: cover;
  flex-shrink: 0;
}
@media (min-width: 640px) { .avatar { width: 5rem; height: 5rem; } }
.avatar-fallback {
  display: flex; align-items: center; justify-content: center;
  background: var(--pcc-paper); font-family: "IBM Plex Serif", serif; font-size: 1.875rem;
}

dl.meta { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem 1.5rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; }
@media (min-width: 640px) { dl.meta { grid-template-columns: repeat(3, 1fr); gap: 0.5rem 2rem; } }
dl.meta dt { text-transform: uppercase; letter-spacing: 0.2em; color: var(--pcc-muted); }
dl.meta dd { margin-top: 0.25rem; font-size: 14px; }
dl.meta .span-2 { grid-column: span 2; }
@media (min-width: 640px) { dl.meta .span-2 { grid-column: span 1; } }

.cache-note { margin-top: 1.5rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; color: var(--pcc-muted); }

.section { margin-top: 1.5rem; }
.section + .section { margin-top: 3rem; }

.grid-px {
  display: grid; gap: 1px; background: var(--pcc-line); margin-top: 1.25rem;
  grid-template-columns: 1fr;
}
.cols-2 { grid-template-columns: repeat(2, 1fr); }
@media (min-width: 640px) { .grid-px.sm-2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .grid-px.lg-4 { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 1024px) { .grid-px.lg-5 { grid-template-columns: repeat(5, 1fr); } }
@media (min-width: 1024px) { .grid-px.lg-6 { grid-template-columns: repeat(6, 1fr); } }
.cols-3 { grid-template-columns: repeat(3, 1fr); }

.cell { background: var(--pcc-paper); padding: 1.25rem; }
.cell .label { font-family: "IBM Plex Serif", serif; font-size: 14px; text-transform: uppercase; letter-spacing: 0.2em; color: var(--pcc-muted); }
.cell .glyph { color: var(--pcc-accent); font-size: 1.125rem; }
.cell .big { margin-top: 0.75rem; font-family: "IBM Plex Mono", monospace; font-size: 1.875rem; font-weight: 600; font-variant-numeric: tabular-nums; }
@media (min-width: 640px) { .cell .big { font-size: 2.25rem; } }
.cell .sub { margin-top: 0.25rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; color: var(--pcc-muted); }
.cell .record { margin-top: 1rem; display: flex; gap: 0.75rem; border-top: 1px dashed var(--pcc-line); padding-top: 0.75rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; }
.cell-head { display: flex; justify-content: space-between; align-items: center; }

.activity-num { color: var(--pcc-ink); }
.activity-num.accent { color: var(--pcc-accent); }
.activity-label { margin-top: 0.25rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; text-transform: uppercase; letter-spacing: 0.15em; color: var(--pcc-muted); }

.two-col { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .two-col { grid-template-columns: 1fr 1fr; } }
.three-col { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) { .three-col { grid-template-columns: repeat(3, 1fr); } }

.table-wrap { margin-top: 1.25rem; overflow-x: auto; border: 1px solid var(--pcc-line); }
table { width: 100%; font-family: "IBM Plex Mono", monospace; font-size: 14px; border-collapse: collapse; }
thead { background: var(--pcc-paper); border-bottom: 1px solid var(--pcc-line); }
thead th { text-align: left; padding: 0.75rem 1rem; font-size: 12px; text-transform: uppercase; letter-spacing: 0.15em; color: var(--pcc-muted); font-weight: normal; }
tbody td { padding: 0.75rem 1rem; border-top: 1px dashed var(--pcc-line); }
tbody td.right { text-align: right; }
.result-win { color: var(--pcc-primary); }
.result-loss { color: var(--pcc-accent); }
.result-draw { color: var(--pcc-muted); }

ul.club-list { margin-top: 1rem; font-family: "IBM Plex Mono", monospace; font-size: 14px; list-style: none; }
ul.club-list li { border-left: 2px solid var(--pcc-accent); padding-left: 0.75rem; margin-bottom: 0.5rem; }
ul.club-list .small { font-size: 12px; color: var(--pcc-muted); }

ul.stat-list { margin-top: 1rem; font-family: "IBM Plex Mono", monospace; font-size: 14px; list-style: none; }
ul.stat-list li { display: flex; justify-content: space-between; border-bottom: 1px dashed var(--pcc-line); padding: 0.5rem 0; }

details.archives { margin-top: 1rem; border: 1px solid var(--pcc-line); background: var(--pcc-paper); }
details.archives summary { cursor: pointer; padding: 0.75rem 1.25rem; font-family: "IBM Plex Mono", monospace; font-size: 14px; }
details.archives ul { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.25rem 1rem; border-top: 1px dashed var(--pcc-line); padding: 1.25rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; list-style: none; }
@media (min-width: 640px) { details.archives ul { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 768px) { details.archives ul { grid-template-columns: repeat(4, 1fr); } }

footer.foot { margin-top: 4rem; border-top: 2px solid var(--pcc-ink); padding-top: 1.5rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; text-transform: uppercase; letter-spacing: 0.25em; color: var(--pcc-muted); }

.error-note { font-family: "IBM Plex Mono", monospace; font-size: 12px; color: var(--pcc-muted); margin-top: 0.5rem; }

/* Search page */
.search-wrap { max-width: 36rem; margin: 0 auto; padding: 3rem 1rem; }
@media (min-width: 640px) { .search-wrap { padding: 5rem 1.5rem; } }
@media (min-width: 1024px) { .search-wrap { padding: 5rem 2rem; } }
h1.search-title { font-family: "IBM Plex Serif", Georgia, serif; font-size: 1.875rem; font-weight: 700; line-height: 1.1; letter-spacing: -0.01em; }
@media (min-width: 640px) { h1.search-title { font-size: 3rem; } }
.search-lead { margin-top: 1rem; font-family: "IBM Plex Mono", monospace; font-size: 14px; color: var(--pcc-muted); }

form.search-form { margin-top: 2rem; display: flex; gap: 0.5rem; border: 2px solid var(--pcc-ink); background: var(--pcc-paper); padding: 0.5rem; }
form.search-form input {
  flex: 1; background: transparent; border: none; outline: none;
  font-family: "IBM Plex Mono", monospace; font-size: 16px; padding: 0.5rem 0.75rem; color: var(--pcc-ink);
}
form.search-form button {
  background: var(--pcc-ink); color: var(--pcc-paper); border: none;
  font-family: "IBM Plex Mono", monospace; font-size: 12px; text-transform: uppercase; letter-spacing: 0.2em;
  padding: 0.5rem 1rem; cursor: pointer;
}
form.search-form button:hover { background: var(--pcc-primary); }

.error-banner { margin-top: 2rem; border: 1px solid var(--pcc-accent); padding: 1rem; font-family: "IBM Plex Mono", monospace; font-size: 14px; color: var(--pcc-accent); background: var(--pcc-paper); }

.loading { margin-top: 2rem; font-family: "IBM Plex Mono", monospace; font-size: 12px; color: var(--pcc-muted); text-transform: uppercase; letter-spacing: 0.2em; }

.hidden { display: none !important; }
