:root{--ink:#18221d;--paper:#f3f0e7;--card:#fffdf8;--line:#d7d1c3;--atp:#d75d36;--wta:#256b61;--muted:#73786f}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}header{padding:26px 4vw 22px;display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid var(--line)}h1,h2,h3,p{margin:0}h1{font-family:Georgia,serif;font-size:clamp(34px,5vw,64px);letter-spacing:-.045em;font-weight:500}h1 em{color:var(--atp);font-weight:400}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.16em;color:var(--muted)}.header-note{text-align:right;font-size:13px;line-height:1.5;color:var(--muted)}main{width:min(1440px,94vw);margin:22px auto 80px}.control-panel{display:grid;grid-template-columns:240px 1fr 300px;gap:24px;background:var(--ink);color:white;padding:18px 22px;border-radius:16px;align-items:end}.control-panel label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.12em;margin-bottom:9px;color:#b9c2bc}.segmented{display:flex}.segmented button{border:1px solid #506058;background:transparent;color:white;padding:9px 22px;cursor:pointer}.segmented button:first-child{border-radius:8px 0 0 8px}.segmented button:last-child{border-radius:0 8px 8px 0}.segmented .active{background:white;color:var(--ink)}input[type=range]{width:100%;accent-color:var(--atp)}input[type=search]{width:100%;border:0;border-radius:8px;padding:11px 13px;background:#f7f4ea;font-size:14px}.timeline-card{margin-top:18px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px}.section-title{display:flex;justify-content:space-between;align-items:end}.section-title h2{font-family:Georgia,serif;font-size:26px;margin-top:4px}.legend{font-size:12px;color:var(--muted)}.legend span{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 5px 0 14px}.atp-dot{background:var(--atp)}.wta-dot{background:var(--wta)}.timeline{height:130px;margin-top:20px;display:grid;grid-template-columns:repeat(53,1fr);gap:2px;align-items:end;border-bottom:1px solid var(--line)}.tick{height:100%;display:flex;align-items:end;gap:1px;cursor:pointer;position:relative}.tick .bar{width:50%;min-height:2px;border-radius:3px 3px 0 0;opacity:.75}.tick:hover .bar,.tick.active .bar{opacity:1}.tick.active:after{content:'';position:absolute;inset:-8px -2px;border:1px solid var(--ink);border-radius:5px}.bar.atp{background:var(--atp)}.bar.wta{background:var(--wta)}.week-heading{display:flex;justify-content:space-between;align-items:end;margin:35px 0 15px}.week-heading h2{font:500 34px Georgia,serif}.week-heading p{color:var(--muted)}.tour-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.tour-label{font-size:12px;font-weight:900;letter-spacing:.16em;padding-bottom:8px;border-bottom:3px solid}.tour-label.atp{color:var(--atp)}.tour-label.wta{color:var(--wta)}.event-list{display:grid;gap:9px;margin-top:10px}.event{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:15px;cursor:pointer;transition:.15s}.event:hover{transform:translateY(-2px);box-shadow:0 8px 22px #2c31271a}.event h3{font:500 22px Georgia,serif}.meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.pill{font-size:11px;background:#ebe7dc;border-radius:20px;padding:5px 8px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:13px}.stat strong{display:block;font-size:20px}.stat span{font-size:10px;color:var(--muted);text-transform:uppercase}.empty{color:var(--muted);padding:24px 0}.detail,.player-results{margin-top:22px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px}.hidden{display:none}.detail-head{display:flex;justify-content:space-between;gap:20px}.close{border:0;background:#eee8dc;border-radius:50%;width:34px;height:34px;cursor:pointer}.tabs{display:flex;gap:8px;margin:18px 0 12px}.tabs button{border:1px solid var(--line);background:white;padding:8px 13px;border-radius:20px;cursor:pointer}.tabs .active{background:var(--ink);color:white}.table-wrap{overflow:auto;max-height:600px}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;position:sticky;top:0;background:var(--ink);color:white;padding:10px}td{padding:9px 10px;border-bottom:1px solid #e8e3d8}.rank{font-weight:800;font-variant-numeric:tabular-nums}.status{font-size:10px;padding:4px 6px;border-radius:10px;background:#e6eee9}.review{background:#f7dfd5;color:#893a22}.player-card{padding:13px 0;border-bottom:1px solid var(--line);cursor:pointer}.player-card strong{font-family:Georgia,serif;font-size:19px}.history{margin-top:10px}.history-row{display:grid;grid-template-columns:70px 1fr 90px 80px;gap:10px;padding:7px 0;border-top:1px solid #ebe6da;font-size:12px}footer{padding:22px 4vw;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}@media(max-width:800px){.control-panel{grid-template-columns:1fr}.tour-columns{grid-template-columns:1fr}.timeline{overflow-x:auto}.header-note{display:none}.stats{grid-template-columns:repeat(3,1fr)}.section-title{align-items:start;gap:10px}.legend{white-space:nowrap}}

/* Actions belong with the title, not at the foot of a long scroll: they are how you
   leave this page, and a reader should not have to reach the bottom to find them. */
header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.header-actions{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:6px}
.hbtn{font-family:inherit;font-size:13px;font-weight:600;color:var(--ink);text-decoration:none;
  background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 15px;
  cursor:pointer;white-space:nowrap;transition:border-color .15s,background .15s}
.hbtn:hover{border-color:var(--atp);background:var(--paper)}
.hbtn:focus-visible{outline:2px solid var(--atp);outline-offset:2px}
@media (max-width:640px){header{align-items:flex-start}.header-actions{padding-bottom:0}}

@media (max-width:720px){
  header{padding:18px 16px 16px}
  main{padding:0 16px}
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .table-wrap table{min-width:560px}
  .tour-columns{grid-template-columns:1fr}
  footer{padding:20px 16px;font-size:12px}
}

/* No page should scroll sideways. Long unbreakable strings — file paths, URLs, ids —
   are what usually force it, so they are allowed to wrap mid-word; anything that
   genuinely needs its width (a wide table, a chart) scrolls inside its own box. */
html,body{max-width:100%;overflow-x:hidden}
main,section,article,p,td,th,li,h1,h2,h3{min-width:0;overflow-wrap:anywhere}
a{overflow-wrap:anywhere}
