:root{font-family:Roboto,"Segoe UI",system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--surface);font-size:16px;line-height:1.55;--primary:#d0bcff;--border:#49454f;--surface:#141218;--card:#4f378b;--ink:#e6e0e9;--muted:#cac4d0;--on-primary:#381e72;--error-bg:#93000a;--error:#ffdad6;color-scheme:dark}
*{box-sizing:border-box}body{margin:0}a{color:var(--primary)}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{border:1px solid var(--primary);background:var(--primary);color:var(--on-primary);padding:.65rem 1.15rem;border-radius:24px;cursor:pointer}button:hover{filter:brightness(.94)}button:disabled{opacity:.4;cursor:default}button.secondary,.pages button{background:transparent;color:var(--primary)}:focus-visible{outline:3px solid #d38b2c;outline-offset:3px}[hidden]{display:none!important}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px max(5vw,20px);background:var(--surface);border-bottom:1px solid var(--border)}.brand{text-decoration:none;color:var(--ink);font-size:1.3rem;font-weight:750;display:flex;align-items:center;gap:12px}.brand-logo{width:48px;height:48px;flex:none;object-fit:contain;background:#142538;border-radius:12px}.brand{font-weight:600}.brand small{font-size:.85rem;font-weight:400;border-left:1px solid var(--border);padding-left:12px}.public-label{color:var(--muted);font-size:.9rem}main{max-width:1120px;margin:auto;padding:24px 24px 64px;min-height:70vh}.hero{padding:28px 0 32px;max-width:860px}.eyebrow{font-size:.75rem;font-weight:750;letter-spacing:.14em;color:var(--primary)}h1{font-size:clamp(2rem,5vw,3.4rem);line-height:1.15;letter-spacing:-.02em;margin:12px 0 20px;overflow-wrap:anywhere}h2{font-size:1.4rem;margin:20px 0}p{margin:12px 0}.hero>p:not(.eyebrow){color:var(--muted)}.back{text-decoration:none;font-size:.9rem}.detail-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}#updated{color:var(--muted);font-size:.8rem}#notice:empty{display:none}#notice.error{background:var(--error-bg);color:var(--error);padding:16px;border-radius:8px}
form{display:flex;gap:16px;align-items:end;padding:20px;background:var(--card);border-radius:24px;margin-bottom:28px}label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;font-weight:600}form label:first-child{flex:1}input,select{min-width:0;background:var(--surface);color:inherit;border:1px solid var(--border);border-radius:7px;padding:10px 12px;font-weight:400}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:16px}.tile{display:block;background:var(--card);padding:22px;border:1px solid var(--border);border-radius:24px;color:inherit;text-decoration:none;overflow-wrap:anywhere}.tile h2,.tile h3{margin:10px 0;font-size:1.2rem}.tile small{color:var(--muted)}.badge{display:inline-block;padding:3px 9px;background:var(--card);color:var(--primary);border-radius:20px;font-size:.75rem;font-weight:650}.pages{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:28px}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);margin-bottom:28px;flex-wrap:wrap}.tabs button{border:0;border-radius:8px 8px 0 0;background:transparent;color:var(--muted)}.tabs button[aria-pressed=true]{background:var(--card);color:var(--primary);box-shadow:inset 0 -3px var(--primary)}.table-scroll{overflow:auto;border:1px solid var(--border);border-radius:10px;background:var(--surface)}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}th{background:var(--card);font-size:.8rem}td:nth-child(2){min-width:170px;white-space:normal}td small{display:block;color:var(--muted)}td:nth-child(3){font-weight:750;color:var(--primary)}details{margin-top:20px;color:var(--muted);font-size:.9rem}summary{cursor:pointer;color:var(--primary)}.round-header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.result{font-size:1.4rem;font-weight:700;display:block;margin:12px 0;color:var(--primary)}footer{border-top:1px solid var(--border);padding:26px;text-align:center;font-size:.85rem;color:var(--muted)}footer span{display:block;font-size:.8rem;margin-top:6px}
@media(max-width:600px){main{padding:16px 16px 40px}.public-label{display:none}form{flex-direction:column;align-items:stretch;padding:16px}.hero{padding-top:20px}.tile{padding:18px}th,td{padding:12px}.detail-actions button{flex:1}}

/* Fixed Caballo64 dark palette: identical across browser theme preferences. */

/* Original Android ic_chess_tournament paths, with the same theme roles. */
.catalog-hero{display:flex;align-items:center;gap:32px;max-width:none}.catalog-hero>div{flex:1}.catalog-hero p:not(.eyebrow){color:var(--muted)}
.tournament-art{flex:none;width:192px;height:160px}.art-container{fill:var(--card)}.art-primary{fill:var(--primary)}.art-secondary{fill:#ccc2dc}.art-ink{fill:var(--ink)}.art-surface{fill:var(--surface)}

@media(max-width:600px){.catalog-hero{flex-direction:column-reverse;align-items:flex-start;gap:8px}.tournament-art{width:120px;height:100px}}

/* Compact tournament lists, sharing Caballo64's Material palette. */
#detail .hero{padding:18px 0 24px;max-width:none}#detail h1{font-size:clamp(1.65rem,3.5vw,2.5rem)}
.player-filters{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:16px}.player-filters label:first-child{flex:1;min-width:180px}.player-filters select{max-width:100%}
.table-hint{font-size:.8rem;color:var(--muted)}tbody tr:nth-child(even){background:color-mix(in srgb,var(--card) 25%,var(--surface))}tbody tr:hover{background:color-mix(in srgb,var(--card) 45%,var(--surface))}
.players-table td:nth-child(3),.pairings-table td:nth-child(3){font-weight:400;color:var(--ink)}.pairings-table td:nth-child(5){min-width:170px;white-space:normal}.match-result{font-weight:700;color:var(--primary);text-align:center}.pairings-table th:nth-child(4){text-align:center}
@media(min-width:850px){.table-hint{display:none}}

/* Shared home banner: original mobile logo and the same two-line tagline. */
.brand-banner{padding-top:24px;padding-bottom:24px;gap:24px}.brand-banner .brand{gap:16px;min-width:0}.brand-banner .brand-logo{width:104px;height:104px;border-radius:20px}.brand-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.brand-name{font-size:28px;line-height:1.2;font-weight:700}.brand-tagline{font-size:14px;line-height:1.6;font-weight:400;color:var(--muted)}.banner-section{font-size:14px;color:var(--primary);font-weight:600}
@media(max-width:600px){.brand-banner{padding:18px 16px}.brand-banner .brand-logo{width:80px;height:80px;border-radius:16px}.brand-banner .brand{align-items:flex-start;gap:12px}.banner-section{display:none}.brand-tagline{font-size:14px}.brand-name{font-size:26px}}

.tournament-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:12px;overflow:hidden}.tournament-list>li+li{border-top:1px solid var(--border)}.tournament-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;color:var(--ink);text-decoration:none}.tournament-list>li:nth-child(even){background:color-mix(in srgb,var(--card) 25%,var(--surface))}.tournament-row:hover{background:color-mix(in srgb,var(--card) 40%,var(--surface))}.tournament-row:focus-visible{outline-offset:-3px}.tournament-row h3{margin:0 0 8px;font-size:1.05rem;overflow-wrap:anywhere}.tournament-row time,.catalog-order{color:var(--muted);font-size:.85rem}.tournament-row time{flex-shrink:0}.empty-list{padding:20px}
@media(max-width:600px){.tournament-row{align-items:flex-start;flex-direction:column;gap:10px;padding:16px}}

.tournament-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto}.tournament-row-icon{width:48px;height:40px}.tournament-row-title{min-width:0}.home-navigation{font-size:14px;font-weight:600;flex-shrink:0;text-underline-offset:4px}
@media(max-width:600px){.brand-banner{flex-wrap:wrap;gap:12px}.home-navigation{margin-left:92px}.tournament-row{grid-template-columns:48px minmax(0,1fr);column-gap:12px;align-items:center}.tournament-row time{grid-column:2;white-space:normal}}

/* Keep ranking columns close together, including on narrow phone screens. */
#elo-ranking{margin:20px 0 40px}#elo-ranking .table-scroll{max-width:600px;margin-top:14px}.elo-ranking-table th,.elo-ranking-table td{padding:10px 8px}.elo-ranking-table th:first-child,.elo-ranking-table td:first-child,.elo-ranking-table th:last-child,.elo-ranking-table td:last-child{width:1%;text-align:center}.elo-ranking-table td:nth-child(2){min-width:0;overflow-wrap:anywhere}
#standings .table-scroll{max-width:760px}
.standings-table th,.standings-table td{padding:10px 8px}
.standings-table th:not(:nth-child(2)),.standings-table td:not(:nth-child(2)){width:1%;text-align:center}
.standings-table td:nth-child(2){min-width:0;white-space:normal;overflow-wrap:anywhere}
.standings-table th:last-child{white-space:normal;min-width:54px;line-height:1.25}
@media(min-width:601px){
  #standings .table-scroll{width:fit-content;max-width:100%}
  .standings-table{width:auto}
  .standings-table th:not(:nth-child(2)),.standings-table td:not(:nth-child(2)){width:auto;padding-left:12px;padding-right:12px}
  .standings-table td:nth-child(2){min-width:150px;max-width:280px}
}
@media(max-width:600px){
  .standings-table{font-size:13px}
  .standings-table th,.standings-table td{padding:9px 5px}
  .standings-table th{font-size:12px}
  .standings-table th:nth-child(2){width:30%}
  .standings-table td:nth-child(2){min-width:78px}
  .standings-table th:last-child{min-width:40px}
  .standings-table td small{font-size:11px}
}

/* Published tournaments and current ratings share the desktop home page. */
.catalog-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.8fr);gap:28px;align-items:start}
.catalog-tournaments{min-width:0}.catalog-columns #elo-ranking{min-width:0;margin:0}
.catalog-columns h2{margin-top:0}.catalog-columns #elo-ranking .table-scroll{max-width:none}
.catalog-columns #filters{padding:14px;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.catalog-columns #filters label:first-child{min-width:160px}.catalog-columns #filters select{max-width:130px}
.catalog-columns .tournament-row{grid-template-columns:40px minmax(0,1fr);gap:8px 12px;padding:14px}
.catalog-columns .tournament-row-icon{width:40px;height:34px;grid-row:span 2}
.catalog-columns .tournament-row time{grid-column:2;white-space:normal}
.catalog-hero{padding:12px 0 24px}.catalog-hero h1{font-size:clamp(1.7rem,3vw,2.4rem);margin:8px 0 12px}
.catalog-hero .tournament-art{width:144px;height:120px}
@media(max-width:849px){.catalog-columns{grid-template-columns:minmax(0,1fr);gap:32px}}
