/* Shared editorial cards for admin, spectator and isolated examples. */
.bracket-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:stretch}
.bracket-card{display:flex;flex-direction:column;min-width:0;padding:24px;background:#fff;color:#25272d;border:1px solid #e4e6ea;border-radius:18px;box-shadow:0 3px 14px rgb(25 33 45 / 4%);overflow-wrap:anywhere;transition:transform .18s ease,box-shadow .18s ease}
@media(hover:hover){.bracket-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgb(25 33 45 / 8%)}}
.bracket-card:focus-within{border-color:#c9a4a8}
.bracket-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin:0 0 24px;padding:0;max-width:none;border:0}
.bracket-heading>div{min-width:0}
.match-sport{display:block;font-size:.75rem;font-weight:750;letter-spacing:.07em;text-transform:uppercase;color:#a8202e}
.match-phase{margin:6px 0 0;font-size:.78rem;line-height:1.5;color:#626771}
.bracket-card .badge,.match-detail .badge{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;max-width:54%;font-size:.7rem;font-weight:650;line-height:1.4;padding:6px 8px;border-radius:6px;background:#f0f1f3;color:#50545d;text-align:left}
.bracket-card .badge[data-status=SOON],.match-detail .badge[data-status=SOON]{background:#fff5df;color:#825617}
.bracket-card .badge[data-status=LIVE],.match-detail .badge[data-status=LIVE]{background:#fcecee;color:#ae2030}
.badge[data-status=LIVE]::before{content:"";width:6px;height:6px;border-radius:50%;flex-shrink:0;background:#c51d2b}
.bracket-card .badge[data-status=POSTPONED],.match-detail .badge[data-status=POSTPONED]{background:#fff5df;color:#825617}
.bracket-card .badge[data-status=CANCELLED],.match-detail .badge[data-status=CANCELLED]{background:#f4eff0;color:#7b3b42}
.bracket-sides{display:grid;grid-template-columns:minmax(0,1fr) 84px minmax(0,1fr);gap:12px;align-items:start}
.match-team{min-width:0;text-align:center}
.match-logo{display:grid;place-items:center;width:76px;height:76px;margin:0 auto;background:#f8f8fa;border:1px solid #e7e8ed;border-radius:16px;padding:12px;box-sizing:border-box;color:#6b5158;font-size:1.35rem;font-weight:750;letter-spacing:.03em}
.match-logo img{display:block;width:100%;height:100%;object-fit:contain}
.match-team[data-winner=true] .match-logo{border-color:#d6e3dc;background:#f5f9f6}
.match-team-copy strong{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:.95rem;line-height:1.4;margin:12px 0 0;min-height:2.8em;font-weight:700}
.match-team-copy small{display:block;font-size:.75rem;color:#626771;line-height:1.5;margin-top:4px}
.match-team-copy .match-team-id{font-size:.65rem;color:#727782;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.match-score{padding-top:10px;text-align:center;min-width:0}
.match-score b{display:block;font-size:1.85rem;line-height:1.2;font-weight:800;letter-spacing:-.045em;white-space:nowrap;font-variant-numeric:tabular-nums;color:#24272d}
.match-score b[data-long-score=true]{font-size:1.25rem}
.match-score small{display:block;margin:5px 0;font-size:.66rem;color:#626771;line-height:1.4}
.match-outcomes{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;margin-top:8px}
.match-outcome,.match-qualification{font-size:.67rem;line-height:1.4}
.match-outcome{color:#656973}.match-outcome[data-result=WIN]{color:#356447;font-weight:700;background:#edf6ef;padding:3px 7px;border-radius:5px}
.match-qualification{color:#525863;border-left:1px solid #d8dbe0;padding:3px 6px}
.match-outcome:not([data-result=WIN]){padding:3px 0}
.match-live-meta{margin-top:12px}
.match-unit-summary,.match-score-time{margin:4px 0;color:#686e78;font-size:.72rem;line-height:1.5}
.match-card-footer{margin-top:auto;padding-top:20px}
.match-schedule{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;padding-top:16px;border-top:1px solid #eceef1;font-size:.76rem;line-height:1.5;color:#505660}
.match-schedule>span{display:flex;gap:8px;align-items:flex-start;min-width:0}
.match-schedule .match-venue,.match-schedule .match-pending{grid-column:1/-1}
.match-icon{flex-shrink:0;color:#848a94;margin-top:1px}
.match-result{margin:12px 0 0;font-size:.75rem;line-height:1.5;font-weight:600;color:#46534b}
.match-example{margin:12px 0 0;padding:8px 10px;border-radius:6px;font-size:.65rem;line-height:1.5;font-weight:600;letter-spacing:.025em;color:#91525a;background:#faf3f4}
.bracket-card button[data-match-detail]{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:44px;margin-top:12px;padding:10px 0;background:transparent;color:#a91e2d;border:0;border-radius:6px;font:inherit;font-size:.82rem;font-weight:650;text-align:left;cursor:pointer}
.bracket-card button[data-match-detail] .match-icon{color:inherit}
.bracket-card button[data-match-detail]:hover{color:#801723}
.bracket-card button[data-match-detail]:focus-visible,.match-dialog button:focus-visible,.bracket-filters :focus-visible,.match-preview-tools :focus-visible,.bracket-state button:focus-visible{outline:2px solid #b51c2b;outline-offset:4px}
#matchPreview{max-width:530px}
.match-preview-notice{padding:16px 20px;background:#faf3f4;border:1px solid #eadcdf;border-radius:12px;font-size:.85rem;color:#6f3940;line-height:1.6}
.match-dialog{max-width:680px;width:calc(100% - 48px);max-height:88vh;max-height:88dvh;padding:0;border:1px solid #e4e6ea;border-radius:20px;background:#fff;color:#25272d;box-sizing:border-box;overflow:hidden;box-shadow:0 24px 72px rgb(22 35 55 / 18%)}
.match-dialog::backdrop{background:rgb(24 29 38 / 46%)}
.match-dialog[open]{display:flex;flex-direction:column}
.match-dialog .dialog-heading{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:1px solid #eceef1;background:#fff}
.match-dialog .dialog-heading h2{font-size:1.05rem;line-height:1.4;margin:0;overflow-wrap:anywhere}
.match-dialog .dialog-heading button{flex-shrink:0;min-width:44px;min-height:44px;border:1px solid #e2e5e9;border-radius:10px;background:#f9fafb;color:#424955;font:inherit;font-size:1.4rem;cursor:pointer}
.match-dialog-body{flex:1;min-height:0;padding:24px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.match-detail-context{font-size:.8rem;color:#626771;margin:0 0 8px;line-height:1.5}
.match-detail .bracket-sides{margin:24px 0}
.match-detail .match-team-copy strong{display:block;overflow:visible;min-height:0}
.match-detail .match-schedule{font-size:.85rem}
.match-detail section:empty{display:none}
.match-detail section{margin-top:24px}
.match-detail h3{font-size:.87rem;margin:0 0 12px;font-weight:750}
.match-detail section>p{font-size:.86rem;line-height:1.6;margin:8px 0}
.match-detail-muted{color:#68707c}
.match-set-list{list-style:none;margin:0;padding:0;border:1px solid #e8eaf0;border-radius:10px;overflow:hidden}
.match-set-list li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;font-size:.85rem;border-bottom:1px solid #eceef1}
.match-set-list li:last-child{border-bottom:0}
.match-set-list strong{font-variant-numeric:tabular-nums}
.public-information{white-space:pre-wrap}
.match-event-list{margin:0;padding-left:20px}
.match-event-list li{font-size:.84rem;line-height:1.6;padding:0 0 16px 8px}
.match-event-list small{display:block;color:#68707c;font-size:.75rem}
.match-event-list p{white-space:pre-wrap;margin:4px 0}
.match-detail-audit{display:block;margin:0;padding:16px 0 0;border-top:1px solid #eceef1;color:#68707c;font-size:.7rem;line-height:1.6}
.match-detail-audit p{margin:4px 0}
.match-skeleton{min-height:320px;pointer-events:none}
.skeleton-header,.skeleton-line,.skeleton-footer,.skeleton-teams i,.skeleton-teams b{display:block;background:#f0f1f4;border-radius:6px}
.skeleton-header{width:62%;height:32px}
.skeleton-teams{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:32px 20px 20px}
.skeleton-teams i{width:72px;height:72px;border-radius:16px}
.skeleton-teams b{width:50px;height:20px}
.skeleton-line{height:12px;margin-top:12px;width:86%}.skeleton-line.short{width:58%}
.skeleton-footer{margin-top:auto;height:44px}
@media(max-width:900px){.bracket-cards{grid-template-columns:minmax(0,1fr)}}
@media(max-width:420px){.bracket-card{padding:20px}.bracket-heading{gap:8px}.bracket-sides{grid-template-columns:minmax(0,1fr) 84px minmax(0,1fr);gap:8px}.match-logo{width:64px;height:64px;padding:10px;border-radius:14px}.match-team-copy strong{font-size:.86rem}.match-score b{font-size:1.5rem}.match-score b[data-long-score=true]{font-size:1.05rem}.match-score small{font-size:.62rem}.match-schedule{font-size:.72rem;gap:8px}.match-schedule>span{gap:6px}}
.match-score b[data-extra-long-score=true]{font-size:.75rem}
@media(max-width:600px){.match-dialog{position:fixed;inset:auto 0 0;margin:0;width:100%;max-width:none;max-height:92vh;max-height:92dvh;border-radius:20px 20px 0 0}.match-dialog .dialog-heading{padding:16px 20px}.match-dialog-body{padding:20px}}
@media(prefers-reduced-motion:reduce){.bracket-card{transition:none}.bracket-card:hover{transform:none}}
/* Spectator summaries: readable rows and consistent score column. */
.bracket-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:stretch}
.bracket-card{padding:22px;border-radius:var(--ui-radius-card);border-color:var(--ui-line);box-shadow:var(--ui-shadow);transition:box-shadow .16s,border-color .16s}
@media(hover:hover){.bracket-card:hover{transform:none;box-shadow:var(--ui-shadow-hover);border-color:#d2d8e1}}
.bracket-card .bracket-heading{align-items:flex-start;gap:12px;margin:0 0 20px}.bracket-card .match-heading-title{min-width:0;font-size:13px;line-height:1.6}.bracket-card .match-sport{display:block;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.bracket-card .match-phase{display:block;font-size:13px;color:var(--ui-muted);margin:3px 0 0}.bracket-card .badge{font-size:11px;line-height:1.5;padding:5px 9px;max-width:48%;border-radius:999px}
.bracket-card .badge[data-status=FINISHED]{background:var(--ui-success-soft);color:var(--ui-success)}
.match-rows{display:grid;gap:16px}.bracket-card .match-row-team{display:grid;grid-template-columns:44px minmax(0,1fr) 48px;align-items:center;gap:12px;min-height:48px;text-align:left}.bracket-card .match-logo{width:44px;height:44px;padding:7px;margin:0;border-radius:12px;font-size:14px;background:var(--ui-soft);color:var(--ui-muted)}
.bracket-card .match-team-copy{min-width:0}.bracket-card .match-team-copy strong{display:block;overflow:visible;font-size:15px;line-height:1.45;margin:0;min-height:0;font-weight:650}.bracket-card .match-team-copy small{font-size:12px;line-height:1.5;margin:3px 0 0;color:var(--ui-muted)}
.bracket-card .match-outcomes{justify-content:flex-start;gap:6px;margin:4px 0 0}.bracket-card .match-outcomes:empty{display:none}.bracket-card .match-outcome,.bracket-card .match-qualification{font-size:11px;line-height:1.4}.bracket-card .match-qualification{border:0}
.match-row-score{min-width:0;text-align:center;font-variant-numeric:tabular-nums;background:var(--ui-soft);padding:8px 3px;border-radius:10px}.match-row-score b{display:block;font-size:24px;line-height:1.2;letter-spacing:-.02em;white-space:nowrap}
.match-summary{font-size:12px;color:var(--ui-muted);line-height:1.7;margin-top:16px;padding:10px 12px;border-radius:10px;background:var(--ui-soft)}.match-summary:empty{display:none}
.bracket-card .match-card-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-top:auto;padding-top:16px}.bracket-card .match-card-footer::before{content:'';grid-column:1/-1;border-top:1px solid var(--ui-line)}
.bracket-card .match-schedule{grid-template-columns:minmax(0,1fr);gap:6px;padding:0;border:0;font-size:12px;line-height:1.5;color:var(--ui-muted)}.bracket-card .match-icon{width:16px;height:16px}.bracket-card button[data-match-detail]{width:auto;min-width:72px;min-height:44px;justify-content:flex-end;gap:8px;margin:0;padding:8px 0;font-size:13px;align-self:center}
.match-skeleton{min-height:250px}.match-skeleton .skeleton-header{height:28px}.match-skeleton .skeleton-teams{margin:24px 0}.match-skeleton .skeleton-teams i{width:44px;height:44px;border-radius:12px}.match-skeleton .skeleton-footer{height:24px;margin-top:20px}
.match-dialog .dialog-heading{margin:0;max-width:none}.match-detail-audit{background:transparent;padding-right:0;padding-left:0}.match-dialog-body{font-size:14px}.match-detail .match-team-copy strong{font-size:15px;line-height:1.5}.match-detail .match-team-copy small{font-size:12px}
@media(max-width:767px){.bracket-cards{grid-template-columns:minmax(0,1fr);gap:16px}}
@media(max-width:420px){.bracket-card{padding:18px}.bracket-card .bracket-heading{margin-bottom:16px}.bracket-card .match-row-team{grid-template-columns:40px minmax(0,1fr) 42px;gap:10px}.bracket-card .match-logo{width:40px;height:40px}.bracket-card .match-team-copy strong{font-size:14px}.match-row-score b{font-size:22px}.bracket-card .badge{font-size:11px}.match-detail .bracket-sides{grid-template-columns:minmax(0,1fr) 66px minmax(0,1fr);gap:8px}}
@media(prefers-reduced-motion:reduce){.bracket-card{transition:none}}
