.auth{display:grid;grid-template-columns:minmax(260px,1fr) minmax(280px,420px);gap:28px;align-items:start;padding-top:10vh}
.auth>form{grid-column:2;padding:22px;border:1px solid var(--line);background:var(--panel)}
.auth>form+form{margin-top:-18px}.auth>.message{grid-column:2;margin:0}#email-form button:disabled{cursor:wait;opacity:.65}
.page-head button:not(.control-quiet),#start-match{font-weight:700}.split{display:grid;grid-template-columns:1fr 280px;gap:24px}.settings{align-self:start;padding:18px;background:var(--panel)}
.roster,.bot-grid{display:grid;gap:8px}.roster label{display:flex;align-items:center;gap:12px;margin:0;padding:12px;border:1px solid transparent;background:var(--panel)}.roster label:has(input:checked){border-color:var(--red)}.roster input{width:auto}.roster strong{min-width:140px}
.roster-group{display:grid;gap:8px}.roster-group h3{margin:14px 0 2px;font-size:15px}.roster-name{display:grid;min-width:160px;gap:2px}.roster-name span,.selection-note{color:var(--muted);font-size:13px}.selection-note{margin:16px 0}.settings summary,.workspace summary{cursor:pointer;color:var(--ink);font-weight:600}.settings details label{margin:16px 0 0}.workspace{padding:16px 0}.workspace summary{font-size:16px}.workspace[open] summary{margin-bottom:12px}
.tag{font:12px/1.4 ui-monospace,monospace;color:var(--sand)}.bot-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.bot{padding:16px;border:1px solid var(--line);background:var(--panel)}.bot h3{margin:0}.bot .actions{justify-content:flex-start}.workspace{margin-top:24px;padding-top:8px;border-top:1px solid var(--line)}.workspace ol{padding-left:22px;color:var(--muted)}
.bot-options,.bot-connections{margin-top:14px}.bot-options summary,.bot-connections summary{color:var(--muted);cursor:pointer;min-height:32px}.bot-options .actions,.bot-connections .actions{margin-top:10px}#one-time-value{white-space:pre-wrap;overflow-wrap:anywhere}#token-message:empty{display:none}
.house-copy-row{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.house-copy-row label{min-width:min(320px,100%);margin:0}.house-copy-row select{width:100%}#house-copy-status:empty,#house-copy-message:empty{display:none}
.start-actions{justify-content:flex-start;margin-top:18px}.start-guide{padding:14px 0;border-block:1px solid var(--line)}.start-guide summary{width:max-content;cursor:pointer;font-weight:700}.start-guide ol{padding-left:22px;color:var(--muted)}.start-guide li+li{margin-top:8px}.start-guide a,#practice-start a,.auth a{color:var(--ink)}
.public-roster-group{margin-top:24px}.public-roster-group h2{margin-bottom:12px}.public-roster-group .bot p:last-of-type{margin-bottom:18px}.public-roster-group .bot .control{display:inline-flex;align-items:center;min-height:44px}
#more-replays{margin-top:16px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{padding:10px;border-bottom:1px solid #393b35;text-align:left;white-space:nowrap}th{color:var(--muted);font-size:13px}
.quiet{background:transparent}dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 20px}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere;font-family:ui-monospace,monospace}#one-time-token{margin-top:12px;padding:12px;overflow-wrap:anywhere;background:#111310;font-family:ui-monospace,monospace}
.replay-list-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:26px 0 12px}.replay-list-head h2{margin:0}.replay-list-head label{display:flex;align-items:center;gap:8px;margin:0;white-space:nowrap}.replay-list-head select{width:auto;min-height:44px}
.match-records{display:grid;gap:8px}.match-record{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 20px;padding:15px 18px;border:1px solid var(--line);background:var(--panel)}.match-record h3{margin:0;font-size:clamp(18px,2vw,22px);line-height:1.2;overflow-wrap:anywhere}.record-result{display:flex;gap:8px 14px;align-items:baseline;flex-wrap:wrap;margin:6px 0 0}.record-result strong{color:var(--ink)}.record-result span{font-size:13px}.record-actions{display:flex;align-items:center}.record-actions a{display:flex;justify-content:space-between;gap:24px;min-width:110px;min-height:44px;padding:11px 14px;color:var(--ink);text-decoration:none;font-weight:700}.record-actions .watch{background:var(--action)}.record-pending,.empty-records{display:flex;align-items:center;gap:12px;color:var(--muted)}.empty-records::before{content:"";flex:none;width:40px;height:40px;background:url(/brand/dent-reverse.svg) center/contain no-repeat}.match-record details{grid-column:1/-1}.match-record summary{width:max-content;max-width:100%;color:var(--muted);cursor:pointer;font-size:13px}.match-record details dl{margin:12px 0 0;font-size:13px}.match-record details dd{color:var(--muted)}.match-record details a{color:var(--ink)}
.bot-result{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}.bot-result p{margin:0 0 10px}.bot-result strong{color:var(--ink)}
@media(max-width:720px){#identity{font-size:13px;min-width:0;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth,.split{grid-template-columns:1fr}.auth>form,.auth>.message{grid-column:1}.auth>form+form{margin-top:0}.roster strong{min-width:0}.roster label{flex-wrap:wrap}.roster-name{min-width:0;flex:1}.roster .tag{flex-basis:100%;padding-left:25px}.settings{order:-1}.match-record{grid-template-columns:minmax(0,1fr) auto;padding:14px}.record-actions a{min-width:80px;gap:10px}.record-result{display:block}.record-result span{display:block;margin-top:4px}.match-record details{grid-column:1/-1}.replay-list-head{align-items:start;flex-wrap:wrap}}

.check-row{display:flex;align-items:center;gap:.5rem;margin:.25rem 0}
.check-row input{width:auto;margin:0}

/* Rankings overview and rating history. Series colours are validated for the dark panel. */
#rankings-overview,.rating-chart{--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181}
.pool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));gap:1rem;margin:1rem 0}
.pool-card{display:flex;flex-direction:column;gap:.6rem;text-align:left;padding:1rem;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--ink);font:inherit;cursor:pointer;width:100%}
.pool-card:hover,.pool-card:focus-visible{border-color:var(--sand)}
.pool-head{display:flex;justify-content:space-between;gap:.5rem;align-items:baseline;flex-wrap:wrap}
.pool-head span,.pool-stats,.pool-open,.activity figcaption,.pool-leaders small{color:var(--muted);font-size:.85rem}
.pool-open{margin-top:auto}
.pool-leaders{margin:0;padding-left:1.4rem;display:grid;gap:.25rem}
.pool-leaders li{display:flex;justify-content:space-between;gap:.5rem}
.pool-leaders .rating{font-variant-numeric:tabular-nums}
.activity{margin:0}
.activity svg{display:block;width:100%;height:2.25rem}
.activity .baseline{vector-effect:non-scaling-stroke}
.activity rect{fill:var(--series-1)}
.activity .baseline,.rating-chart .baseline{stroke:var(--line);stroke-width:1}
.rating-chart{position:relative;margin:.5rem 0 1.5rem}
.chart-legend{display:flex;flex-wrap:wrap;gap:.25rem 1rem;list-style:none;margin:0 0 .5rem;padding:0;font-size:.9rem}
.chart-legend small,.chart-tip small{color:var(--muted)}
.swatch{display:inline-block;width:.75rem;height:.75rem;border-radius:2px;margin-right:.35rem;vertical-align:-1px}
.swatch.s1{background:var(--series-1)}.swatch.s2{background:var(--series-2)}.swatch.s3{background:var(--series-3)}.swatch.s4{background:var(--series-4)}.swatch.s5{background:var(--series-5)}
.chart-frame{position:relative}
.rating-chart svg{display:block;width:100%;height:auto;overflow:visible}
.rating-chart .grid{stroke:var(--line);stroke-width:1;opacity:.5}
.rating-chart .tick,.rating-chart .end-label{fill:var(--muted);font-size:11px}
.rating-chart .end-label{fill:var(--ink)}
.rating-chart .series{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.rating-chart .series.s1,.rating-chart .dot.s1{stroke:var(--series-1)}.rating-chart .series.s2,.rating-chart .dot.s2{stroke:var(--series-2)}.rating-chart .series.s3,.rating-chart .dot.s3{stroke:var(--series-3)}.rating-chart .series.s4,.rating-chart .dot.s4{stroke:var(--series-4)}.rating-chart .series.s5,.rating-chart .dot.s5{stroke:var(--series-5)}
.rating-chart .dot{fill:var(--panel);stroke-width:2}
.rating-chart .crosshair{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
.rating-chart .hit{fill:transparent;cursor:crosshair}
.chart-tip{position:absolute;pointer-events:none;background:var(--panel-low);border:1px solid var(--line);border-radius:6px;padding:.5rem .75rem;font-size:.85rem;min-width:12rem;max-width:18rem;z-index:2}
.chart-tip p{margin:0 0 .25rem;color:var(--muted)}
.chart-tip ul{list-style:none;margin:0;padding:0;display:grid;gap:.15rem}

.site-footer{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;align-items:center;max-width:1180px;margin:2.5rem auto 0;padding:1.25rem 16px 2rem;border-top:1px solid var(--line);color:var(--muted);font-size:.85rem}
.site-footer a{color:var(--muted)}.site-footer a:hover{color:var(--ink)}.site-footer span{margin-left:auto}

/* Tournaments */
.tournament-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:1rem 1.1rem;margin:1rem 0}
.tournament-head{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:flex-start}
.tournament-head h2{margin:0 0 .25rem}.tournament-head p{margin:0;color:var(--muted)}
.tournament-when{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem}.tournament-when span{color:var(--muted);font-size:.85rem}
.tournament-enter{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap;margin-top:.75rem}.tournament-enter label{flex:1 1 16rem}
.tournament-mine{margin:.5rem 0;padding-left:1.2rem}.tournament-mine button{margin-left:.5rem}
.tournament-week{display:grid;gap:.4rem}.tournament-week div{display:grid;grid-template-columns:minmax(10rem,1.4fr) 1fr 1.4fr auto;gap:.75rem;padding:.55rem .75rem;background:var(--panel);border:1px solid var(--line);border-radius:6px}
.tournament-week span{color:var(--muted)}
@media (max-width:640px){.tournament-week div{grid-template-columns:1fr 1fr}.tournament-when{align-items:flex-start}}
.tournament-results{display:grid;gap:.4rem}.tournament-result{display:grid;grid-template-columns:minmax(10rem,1.4fr) auto 2fr auto;gap:.75rem;text-align:left;padding:.55rem .75rem;background:var(--panel);border:1px solid var(--line);border-radius:6px;color:var(--ink);font:inherit;cursor:pointer}
.tournament-result:hover,.tournament-result:focus-visible{border-color:var(--sand)}.tournament-result span{color:var(--muted)}
@media (max-width:640px){.tournament-result{grid-template-columns:1fr 1fr}}
.tournament-live-link{width:auto}
.tournament-pairings{margin:.25rem 0 1rem;padding-left:1.2rem;display:grid;gap:.2rem}.tournament-pairings small,.tournament-card td small{color:var(--muted)}
