/* Shared UI. Loaded after page styles so legacy pages use the same vocabulary. */
html { scroll-padding-top: 96px; }
body { background: var(--bg) !important; color: var(--ink); line-height: 1.6; }
h1, h2, h3, h4, h5, h6 { letter-spacing: -.035em; line-height: 1.2; }
h5, h6 { line-height: 1.4; }
button, input, select, textarea { font: inherit; }
.app-shell, .ranking-shell { max-width: 1248px; }
.card, .modal-content, .filter-card, .podium-card, .my-position-card,
.match-card-live, .op-summary-card, .op-hub-card, .tnt-messages-card,
.tnt-chat-panel, .home-feature-card { border-radius: var(--radius); box-shadow: var(--shadow); }
.card-body { padding: var(--space-6); }
.card .card { box-shadow: none !important; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 10px 16px; font-weight: 650; border-radius: var(--radius-control); }
.btn-sm { min-height: 44px; padding: 8px 12px; font-size: .8125rem; }
.btn-primary { --bs-btn-color: var(--ink); --bs-btn-bg: var(--brand); --bs-btn-border-color: var(--brand); --bs-btn-hover-color: var(--ink); --bs-btn-active-color: var(--ink); }
.btn-primary:hover { transform: none; }
.btn-outline-primary, .btn-outline-success, .btn-outline-dark, .btn-outline-secondary {
  --bs-btn-color: var(--tennis-dark); --bs-btn-border-color: var(--divider-strong);
  --bs-btn-hover-color: var(--tennis-dark); --bs-btn-hover-bg: var(--tennis-soft); --bs-btn-hover-border-color: var(--tennis);
  --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--tennis-dark); --bs-btn-active-border-color: var(--tennis-dark);
}
.btn-success, .btn-dark { --bs-btn-bg: var(--tennis-dark); --bs-btn-border-color: var(--tennis-dark); --bs-btn-hover-bg: var(--tennis); --bs-btn-hover-border-color: var(--tennis); }
.btn-link { color: var(--tennis-dark); }
.btn-outline-danger { --bs-btn-color: var(--color-danger); --bs-btn-border-color: #e9c6c9; }
.btn:disabled, .btn.disabled { opacity: .45; }
.form-control, .form-select { min-height: 48px; border-radius: var(--radius-control); border-color: var(--divider-strong); font-size: 16px; }
.form-control:focus, .form-select:focus, .filter-card .form-control:focus, .filter-card .form-select:focus { border-color: var(--tennis); box-shadow: var(--focus-ring); }
.form-label { margin-bottom: 8px; font-size: .875rem; font-weight: 650; color: var(--ink); }
.form-text, .subtle, .section-description { color: var(--muted); font-size: .8125rem; line-height: 1.6; }
.form-check-input:checked { background-color: var(--tennis); border-color: var(--tennis); }
:is(a, button, input, select, textarea, summary):focus-visible { outline: 3px solid var(--tennis); outline-offset: 3px; }
.badge, .tag { font-weight: 650; letter-spacing: 0; line-height: 1.4; }
.alert { border-radius: var(--radius-control); padding: 16px; }
.alert-success { color: #14542c; background: var(--tennis-soft); border-color: #c6ddc5; }
.alert-danger { color: var(--color-danger); background: var(--color-danger-soft); border-color: #efc5c9; }
.nav-pills .nav-link { min-height: 44px; border-radius: var(--radius-control); color: var(--tennis-dark); font-weight: 650; }
.nav-pills .nav-link.active { color: var(--ink); background: var(--brand); }
.table { --bs-table-bg: transparent; --bs-table-color: var(--ink); --bs-table-border-color: var(--divider); }
.table > :not(caption) > * > * { padding: 16px 12px; vertical-align: middle; }
.table thead th { color: var(--muted); background: var(--surface-muted); font-size: .75rem; font-weight: 650; }
.table tbody tr:hover { --bs-table-bg: #f8faf6; }
.table-responsive { border-radius: var(--radius-control); scrollbar-width: thin; }
.modal-content { border: 1px solid var(--divider); box-shadow: var(--shadow-floating); }
.modal-header, .modal-footer { padding: 16px 24px; border-color: var(--divider); background: var(--card); }
.modal-body { padding: 24px; background: var(--bg); }
.modal-footer { gap: 8px; }
.modal-dialog-scrollable .modal-footer { flex-shrink: 0; }
.app-brand, .ranking-brand { color: var(--tennis-dark); }
.app-logo { width: 44px; height: 44px; border: 0; border-radius: 12px; }
.app-name { letter-spacing: -.04em; }
.bottom-nav { background: rgba(255,255,255,.97); padding-bottom: env(safe-area-inset-bottom, 0px); z-index: 1030; }
.bottom-nav .bn { gap: 4px; padding: 8px 12px; }
.bottom-nav a { min-height: 48px; font-size: 12px; padding: 8px 4px; color: var(--tennis-dark); }
.bottom-nav a.active { border-color: transparent; background: var(--brand-soft); color: var(--tennis-dark); }

/* Public website: calm canvas and an unmistakably sporting green. */
.home-public-header, .app-topbar { background: var(--tennis-dark); border-bottom-color: #315b43; }
.home-header-inner { min-height: 80px; }
:is(.home-public-header, .app-topbar) :is(.app-brand, .app-name, .home-desktop-nav a) { color: #fff; }
.home-brand-subtitle { color: #c5d8cd; }
.home-public-header .home-desktop-nav a:hover { color: var(--brand); }
.home-public-header .home-desktop-nav a.active { color: var(--brand); border-color: var(--brand); }
:is(.home-public-header, .app-topbar) .btn-outline-secondary { --bs-btn-color: #fff; --bs-btn-border-color: #64816f; }
.home-hero { background: var(--bg); color: var(--ink); }
.home-hero::before { background: radial-gradient(ellipse at 95% 45%, #e3ecd9 0, transparent 65%); }
.home-hero::after { display: none; }
.home-hero-grid { min-height: 580px; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 48px; padding-block: 56px; }
.home-hero-emblem { width: 88px; height: 68px; margin: 0 0 16px; filter: none; }
.home-hero h1 { color: var(--tennis-dark); font-size: clamp(2.75rem,4.5vw,4.25rem); line-height: 1.04; letter-spacing: -.055em; margin: 16px 0 24px; }
.home-hero h1 em { color: var(--tennis); }
.home-eyebrow { color: var(--tennis-dark); font-size: 11px; letter-spacing: .08em; }
.home-eyebrow span { background: var(--tennis); box-shadow: 0 0 0 4px var(--tennis-soft); }
.home-hero-copy > p, .home-hero-points { color: var(--muted); }
.home-hero-points span { color: var(--tennis); }
.home-hero .btn-outline-light { --bs-btn-color: var(--tennis-dark); --bs-btn-border-color: var(--divider-strong); --bs-btn-hover-bg: var(--tennis-soft); --bs-btn-hover-color: var(--tennis-dark); --bs-btn-hover-border-color: var(--tennis); }
.home-hero-actions .btn, .home-final-actions .btn { border-radius: var(--radius-control); font-weight: 700; }
.home-product-preview { min-height: 480px; background: var(--tennis-dark); border: 1px solid #315b43; box-shadow: var(--shadow-floating); padding: 24px; }
.home-product-preview::after { display: none; }
.home-preview-heading strong, .home-live-score-head strong, .home-bracket-match strong, .home-bracket-match b small { color: var(--brand); }
.home-preview-round { color: var(--brand) !important; background: #244e37; border-color: #56704b; }
.home-preview-heading span i, .home-live-score-head strong i { background: var(--brand); box-shadow: none; }
.home-bracket-preview { gap: 16px; min-height: 272px; }
.home-bracket-match { background: #1d503a; box-shadow: none; border-color: #39634d; }
.home-bracket-match.active, .home-bracket-match.final-match { border-color: var(--brand); box-shadow: none; }
.home-bracket-match b, .home-bracket-match strong { font-size: 11px; }
.home-bracket-column:not(.final)::after { width: 16px; right: -16px; border-color: #829977; }
.home-bracket-label { color: #c5d8cd; }
.home-live-score { background: #0e3022; border-color: #39634d; box-shadow: none; }
.home-live-status-copy { background: #1d503a; border-color: #39634d; }
.home-capability-strip { background: #edf1e8; border-color: var(--divider); color: var(--tennis-dark); }
.home-feature-card.yellow { background: var(--card); }
.home-feature-card.graphite, .home-audience-panel.organizer, .home-final-cta { background: var(--tennis-dark); }
.home-feature-card, .home-audience-panel { border-radius: var(--radius-hero); }
.home-discovery, .home-features, .home-audience-section { padding-block: 64px; }

/* Player pages keep their current content and filters. */
.ranking-hero, .tnt-messages-hero { background: var(--tennis-dark); border-radius: var(--radius-hero); box-shadow: none; padding: 32px; }
.ranking-hero::after { display: none; }
.ranking-kicker, .tnt-messages-kicker { color: var(--brand); }
.ranking-title { font-size: clamp(2rem,4vw,3rem); line-height: 1.15; }
.filter-card { padding: 24px; margin-top: 24px; }
.filter-card .form-select, .filter-card .form-control { min-height: 48px; border-radius: var(--radius-control); }
.filter-field label { color: var(--muted); font-size: 12px; text-transform: none; letter-spacing: 0; }
.context-strip, .context-meta { color: var(--muted); }
.advanced-filters summary::before { background: var(--tennis-soft); color: var(--tennis); }
.podium-card.first { background: linear-gradient(150deg,var(--brand-soft),#fff); border-color: var(--brand); }
.ranking-avatar, .podium-card.first .ranking-avatar { border-radius: 50%; }
.my-position-card { border-left-color: var(--tennis); border-radius: var(--radius); }
.tag.live { color: #7a5200; background: var(--brand-soft); border-color: #ead687; }
.tag.done { color: #14542c; background: var(--tennis-soft); border-color: #bfdabc; }
.tag.late { color: var(--color-danger); background: var(--color-danger-soft); border-color: #efc5c9; }
.match-card-live { padding: 24px; }
.teamline { padding: 12px; border-color: var(--divider); border-radius: var(--radius-control); background: var(--bg); }
.names .txt { font-weight: 650; }
.player-link:hover { color: var(--tennis); }
.tnt-context-card { border-top: 4px solid var(--tennis) !important; }
.tnt-context-card :is(#title, #tName) { color: var(--tennis-dark); font-size: clamp(1.75rem,3vw,2.25rem); }
.tnt-page-torneio #logoWrap img { border-radius: var(--radius); max-height: 200px; object-fit: contain; }
.tournament-info-chip { background: var(--bg); border-color: var(--divider); padding: 12px 16px; border-radius: var(--radius-control); }
.tournament-public-info .label { color: var(--muted); font-size: 12px; text-transform: none; letter-spacing: 0; }
.tournament-public-info .value { color: var(--ink); font-weight: 650; line-height: 1.5; }
.active-cats-summary { background: var(--tennis-soft); border-color: #c6ddc5; }
.sponsors-card { background: var(--card); border-color: var(--divider) !important; box-shadow: var(--shadow); }
.champions-card { background: var(--brand-soft); border-color: #e8d790 !important; }
body:not(.tnt-public-home) > .container > .d-flex:first-child,
body:not(.tnt-public-home) > .container > .d-flex:first-child > .d-flex:first-child { flex-wrap: wrap; gap: 16px; }
.tnt-page-login > .container { max-width: 1000px !important; }
.tnt-auth-intro { max-width: 600px; margin: 24px 0 32px; }
.tnt-auth-intro h1 { font-size: clamp(2rem,5vw,3rem); color: var(--tennis-dark); margin-top: 24px; }
.tnt-auth-intro p { color: var(--muted); margin-bottom: 0; }
.tnt-page-login .card-body > h4 { font-size: 16px; color: var(--muted); padding-bottom: 16px; border-bottom: 1px solid var(--divider); }
.tnt-page-login .row { --bs-gutter-x: 48px; --bs-gutter-y: 32px; }
.tnt-page-login h6 { font-size: 20px; margin-bottom: 24px; }
.tnt-page-login .mb-2 { margin-bottom: 16px !important; }
.tnt-page-login a:not(.btn):not(.app-brand) { color: var(--tennis-dark); }

/* Administration: stable navigation, tournament context and readable actions. */
#adminApp { max-width: 1440px !important; }
.admin-page-header { min-height: 136px; background: var(--tennis-dark); border-radius: var(--radius-hero); box-shadow: none; padding: 32px; }
.admin-page-header::after { display: none; }
.admin-page-title { font-size: clamp(1.75rem,3vw,2.5rem); }
.admin-page-subtitle { max-width: 600px; color: #c5d8cd; font-weight: 400; line-height: 1.6; }
.admin-page-header .btn-outline-secondary { --bs-btn-color: #fff; --bs-btn-border-color: #64816f; }
.tnt-admin-layout { display: grid; grid-template-columns: 200px minmax(0,1fr); align-items: start; gap: 24px; }
.tnt-admin-nav { position: sticky; top: 24px; display: flex; flex-direction: column; gap: 8px; padding: 16px 0; }
.tnt-admin-nav-label { padding: 8px 16px; color: var(--muted); font-size: 11px; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.tnt-admin-nav a { display: flex; align-items: center; gap: 12px; min-height: 48px; padding: 12px 16px; border-radius: var(--radius-control); color: var(--tennis-dark); text-decoration: none; font-weight: 650; font-size: 14px; }
.tnt-admin-nav a:hover, .tnt-admin-nav a:focus-visible { background: var(--tennis-soft); }
.tnt-admin-nav a.tnt-admin-operation { background: var(--tennis-dark); color: #fff; }
.tnt-admin-nav a span { opacity: .6; font-variant-numeric: tabular-nums; }
.tnt-admin-nav-note { color: var(--muted); padding: 16px; font-size: 12px; border-top: 1px solid var(--divider); margin-top: 16px; }
.tnt-admin-workspace { min-width: 0; }
.tnt-admin-workspace > .card { margin-bottom: 24px !important; overflow: visible; }
.tnt-admin-workspace > .card > .card-body { padding: 24px; }
.admin-selected-card { background: var(--tennis-soft); border: 1px solid #cbdcc7; border-left: 4px solid var(--tennis); border-radius: var(--radius-control); padding: 16px; }
.admin-tabs { flex-direction: row !important; flex-wrap: nowrap; gap: 4px !important; overflow-x: auto; padding: 8px; background: var(--surface-muted); border-radius: var(--radius); scrollbar-width: thin; }
.admin-tabs .nav-item { flex: 1 0 auto; }
.admin-tabs .nav-link { width: 100%; white-space: nowrap; border: 0; box-shadow: none; font-size: 13px; padding: 12px; }
.admin-tabs .nav-link.active { background: var(--tennis-dark); color: #fff; box-shadow: none; }
.admin-tabs .nav-link.active .badge { color: var(--ink) !important; background: var(--brand) !important; border-color: var(--brand) !important; }
.admin-management-actions { gap: 8px !important; }
#btnOpenOperation { background: var(--brand); border-color: var(--brand); color: var(--ink); }
#btnDeleteTournament { margin-left: 8px; }
.admin-management-actions .btn { font-size: 12px; }
.category-workspace-card, .manual-registration-panel, .circuit-members-panel, .bracket-choice-card { background: var(--bg); border-radius: var(--radius); box-shadow: none; }
.category-workspace-card { padding: 24px; }
.category-workspace-actions .btn, .registration-actions .btn { min-height: 44px; }
.section-heading { margin-bottom: 24px; }
.section-kicker { color: var(--tennis); letter-spacing: .08em; font-size: 11px; }
.tnt-page-admin .form-text, .tnt-page-admin .small { font-size: .8125rem; }
.tnt-page-admin :is(h5,h6) { color: var(--tennis-dark); }
.tnt-page-admin .modal-header { border-radius: 16px 16px 0 0; }
.seed-mode-btn { min-height: 112px; padding: 16px; }
.seed-mode-btn.active { background: var(--brand-soft); border-color: var(--brand); box-shadow: none; }
.seed-mode-btn span { font-size: 12px; line-height: 1.6; }

/* Courtside operation: larger controls and less vertical scanning. */
.tnt-page-operacao .app-shell { max-width: 1440px; }
#opHeaderCard { border-top: 4px solid var(--tennis) !important; }
#opHeaderCard h3 { color: var(--tennis-dark); }
.op-toolbar { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)) auto auto; gap: 16px; align-items: end; padding-top: 16px; border-top: 1px solid var(--divider); }
.op-filter-block { display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
.op-filter-block .form-select { max-width: none !important; }
.op-summary-grid { gap: 16px; grid-template-columns: repeat(4,minmax(0,1fr)); }
.op-summary-card { padding: 24px; min-height: 104px; background: var(--card); }
.op-summary-card .n { font-variant-numeric: tabular-nums; font-size: 32px; color: var(--tennis-dark); }
.op-summary-card .l { font-weight: 500; margin-top: 8px; }
.op-summary-card.live { background: var(--brand-soft); border-color: #e8d790; }
.op-summary-card.live .n { color: #7a5200; }
.op-category-chip { min-height: 44px; border-radius: var(--radius-control); padding: 8px 16px; font-weight: 650; }
.op-category-chip.active { color: var(--ink); background: var(--brand); border-color: var(--brand); }
.op-hub-stat .l { font-size: 12px; font-weight: 500; }
.op-hub-logo { height: 136px; background: var(--tennis-soft); }
.op-hub-stat { padding: 12px 4px; border: 0; background: var(--bg); }
.btn-call { color: var(--tennis-dark); background: var(--tennis-soft); border-color: #c6ddc5; }
.btn-call:hover { color: var(--tennis-dark); background: #d3e7d0; }
.match-card-live.focus-live { border-left: 4px solid var(--brand); }
.match-card-live.focus-late { border-left: 4px solid var(--color-danger); }

@media (min-width: 992px) {
  .admin-tabs { position: sticky; top: 16px; z-index: 5; border: 1px solid var(--divider); }
  .tnt-page-login .col-md-6 + .col-md-6 { border-left: 1px solid var(--divider); }
}
@media (max-width: 1199.98px) {
  .home-hero-grid { gap: 32px; }
  .op-toolbar { grid-template-columns: repeat(3,minmax(0,1fr)); }
}
@media (max-width: 991.98px) {
  .home-hero-grid { grid-template-columns: minmax(0,1fr); min-height: 0; gap: 32px; padding-block: 40px; }
  .home-hero-copy { max-width: 680px; }
  .home-product-preview { max-width: 680px; min-height: 0; }
  .tnt-admin-layout { grid-template-columns: minmax(0,1fr); gap: 16px; }
  .tnt-admin-nav { position: static; flex-direction: row; overflow-x: auto; padding: 0 0 8px; scrollbar-width: thin; }
  .tnt-admin-nav a { flex-shrink: 0; border: 1px solid var(--divider); background: var(--card); }
  .tnt-admin-nav-label, .tnt-admin-nav-note { display: none; }
  .tnt-admin-workspace > .card > .card-body { padding: 16px; }
  .op-summary-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 767.98px) {
  body { padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px)); }
  .app-shell, .ranking-shell { padding-inline: 16px !important; }
  .card-body { padding: 16px !important; }
  .home-header-inner { min-height: 72px; }
  .home-brand-subtitle { font-size: 11px; }
  .home-hero h1 { font-size: clamp(2.6rem,11vw,3.5rem); line-height: 1.06; }
  .home-hero-emblem { width: 64px; height: 48px; margin-bottom: 16px; }
  .home-hero-actions { gap: 12px; margin-top: 24px; }
  .home-hero-actions .btn { width: 100%; }
  .home-hero-points { gap: 8px 16px; font-size: 12px; margin-top: 24px; }
  .home-product-preview { padding: 16px; border-radius: var(--radius); }
  .home-bracket-preview { gap: 8px; }
  .home-bracket-column:not(.final)::after { width: 8px; right: -8px; }
  .home-bracket-match { padding: 8px 4px; gap: 4px; grid-template-columns: minmax(0,1fr) 14px; }
  .home-bracket-match b { font-size: 10px; }
  .home-bracket-match b small { display: none; }
  .home-preview-heading { align-items: start; gap: 8px; }
  .home-preview-heading strong { font-size: 14px; }
  .home-preview-round { max-width: 110px; }
  .home-live-match { grid-template-columns: minmax(0,1fr); gap: 12px; }
  .home-live-participants { border-right: 0; padding-right: 0; }
  .home-discovery, .home-features, .home-audience-section { padding-block: 40px; }
  .ranking-hero, .tnt-messages-hero { padding: 24px; }
  .filter-card { padding: 16px; }
  .match-card-live { padding: 16px; }
  .modal-dialog { margin: 8px; }
  .modal-body { padding: 16px; }
  .modal-header, .modal-footer { padding: 16px; }
  .modal-footer .btn { flex: 1 1 auto; }
  .admin-page-header { padding: 24px; flex-wrap: wrap; }
  .tnt-page-admin .admin-page-header .top-actions,
  .tnt-page-operacao > .app-shell > div:first-child .top-actions { display: flex !important; flex-wrap: wrap; }
  #adminApp { padding: 16px !important; }
  .admin-management-actions .btn { flex: 1 1 calc(50% - 8px); }
  #btnDeleteTournament { margin-left: 0; }
  .admin-tabs { margin-inline: 0; }
  .admin-tabs .nav-link { font-size: 13px; }
  .op-toolbar { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
  .op-filter-block:first-child { grid-column: 1 / -1; }
  .op-summary-card { padding: 16px; min-height: 96px; }
  .op-summary-card .n { font-size: 28px; }
  .op-summary-card .l { font-size: 12px; }
  .tnt-page-operacao .metaRow .btn { width: auto; flex: 1 1 calc(50% - 12px); }
  .tnt-page-ao-vivo > .app-shell > div:first-child .top-actions { display: flex !important; max-width: 100%; overflow-x: auto; flex-wrap: nowrap !important; padding-block: 4px; }
  .tnt-page-ao-vivo > .app-shell > div:first-child .top-actions .btn { flex-shrink: 0; white-space: nowrap; }
  .tnt-auth-intro { margin-top: 0; }
  .tnt-page-login > .container { padding-top: 24px !important; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
@media print {
  .tnt-admin-nav, .bottom-nav, .home-public-header { display: none !important; }
  .tnt-admin-layout { display: block; }
  .admin-tabs { position: static; }
  body { padding: 0; background: #fff !important; }
}
