html {
    min-height: 100%;
}

:root {
    --chess-bg: #e8e6e3;
    --chess-surface: #f8f7f5;
    --chess-surface-strong: #ffffff;
    --chess-ink: #312e2b;
    --chess-muted: #706d69;
    --chess-border: #d6d2cc;
    --chess-blue: #3692e7;
    --chess-blue-dark: #2476bd;
    --chess-green: #629924;
    --chess-gold: #bf811d;
    --chess-shadow: 0 2px 7px rgba(0, 0, 0, .16), 0 12px 32px rgba(49, 46, 43, .08);
    --bs-primary: #3692e7;
    --bs-primary-rgb: 54, 146, 231;
    --bs-link-color: #2476bd;
    --bs-link-hover-color: #1c5d96;
    --bs-body-color: #312e2b;
    --bs-border-color: #d6d2cc;
}

body {
    min-height: 100vh;
    color: var(--chess-ink);
    background:
        radial-gradient(circle at 12% -10%, rgba(255, 255, 255, .95), transparent 34rem),
        linear-gradient(135deg, #eceae7 0%, #dedbd6 100%) fixed;
    font-family: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
    letter-spacing: -.01em;
}

.app-page { max-width: 1660px; }
.app-surface {
    max-width: 1600px;
    overflow: hidden;
    border-radius: .65rem;
    background: color-mix(in srgb, var(--chess-surface) 94%, transparent);
    box-shadow: var(--chess-shadow);
}

.page-eyebrow {
    margin-bottom: .3rem;
    color: var(--chess-green);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.page-title {
    color: var(--chess-ink);
    font-size: clamp(1.65rem, 3vw, 2.4rem);
    font-weight: 750;
    letter-spacing: -.04em;
}
.page-subtitle { color: var(--chess-muted); }

.card {
    border-color: var(--chess-border);
    border-radius: .65rem !important;
}
.shadow-sm { box-shadow: 0 2px 8px rgba(49, 46, 43, .11) !important; }
.form-control, .form-select {
    border-color: var(--chess-border);
    border-radius: .45rem;
    background-color: var(--chess-surface-strong);
}
.form-control:focus, .form-select:focus {
    border-color: var(--chess-blue);
    box-shadow: 0 0 0 .2rem rgba(54, 146, 231, .16);
}
.btn {
    border-radius: .4rem;
    font-weight: 650;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}
.badge { border-radius: .3rem; letter-spacing: .01em; }
.card-header { color: var(--chess-ink); }
.table { --bs-table-color: var(--chess-ink); }
.alert { border: 0; border-radius: .5rem; }
.list-group-item { border-color: var(--chess-border); }
.list-group-item-action:hover { background: #f1efec; }
.auth-page { display: grid; min-height: 100vh; place-items: center; }
.auth-page .app-page { width: 100%; }
.auth-card { background: rgba(255, 255, 255, .96); }
.detail-page section.card { overflow: hidden; }
.detail-page .card-header { background: rgba(248, 247, 245, .8) !important; }

.user-menu-trigger {
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--chess-muted);
    background: var(--chess-surface-strong);
}
.user-menu-trigger:hover, .user-menu-trigger:focus { color: var(--chess-blue-dark); background: #fff; }
.user-menu { min-width: 230px; border-radius: .55rem; }
.user-menu-email { max-width: 195px; }
.profile-nav { top: 1rem; border-radius: .65rem; overflow: hidden; }
.profile-section { scroll-margin-top: 1rem; }
.favorite-states-fieldset { border: 0; padding: 0; }
.favorite-states-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .55rem;
    margin-bottom: 1.25rem;
}
.favorite-state-option {
    display: grid;
    grid-template-columns: auto 2rem minmax(0, 1fr);
    align-items: center;
    gap: .45rem;
    min-height: 2.5rem;
    padding: .5rem .6rem;
    border: 1px solid #dedad4;
    border-radius: .5rem;
    background: #fff;
    cursor: pointer;
}
.favorite-state-option:hover { border-color: #86b7fe; background: #f8fbff; }
.favorite-state-option:has(.form-check-input:checked) {
    border-color: #86b7fe;
    background: #eef6ff;
}
.favorite-state-option .form-check-input { margin: 0; }
.favorite-state-option span { min-width: 0; font-size: .85rem; }

@media (max-width: 767.98px) {
    .favorite-states-grid { grid-template-columns: 1fr; }
}

.tournament-tabs .btn {
    border: 0;
    padding: .62rem .9rem;
    box-shadow: none;
}
.tournament-tabs .btn-outline-primary,
.tournament-tabs .btn-outline-warning,
.tournament-tabs .btn-outline-info,
.tournament-tabs .btn-outline-secondary {
    color: var(--chess-muted);
    background: rgba(49, 46, 43, .06);
}

.tournament-table {
    margin: -.35rem 0 0;
    border-collapse: separate;
    border-spacing: 0 .5rem;
}
.tournament-surface .table-responsive { overflow: visible; }
.tournament-table thead th {
    padding: .45rem .65rem;
    border: 0;
    color: var(--chess-muted);
    background: transparent;
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    vertical-align: top;
}
.tournament-title-heading { width: 100%; min-width: 32rem; }
.tournament-period-heading,
.tournament-date { width: 6.25rem; min-width: 6.25rem; }
.tournament-filter-heading { min-width: 7.5rem; }
.tournament-filter-heading label {
    display: block;
    min-height: 1rem;
    margin-bottom: .3rem;
    line-height: 1rem;
}
.tournament-filter-heading .form-select {
    min-width: 7rem;
    font-size: .75rem;
    font-weight: 500;
    letter-spacing: normal;
    text-transform: none;
}
.tournament-table tbody tr:not(.mes-separador) > td {
    padding: .8rem .65rem;
    border-top: 1px solid var(--chess-border);
    border-bottom: 1px solid var(--chess-border);
    background: var(--chess-surface-strong);
    vertical-align: middle;
}
.tournament-table tbody tr:not(.mes-separador) > td:first-child {
    border-left: 1px solid var(--chess-border);
    border-radius: .5rem 0 0 .5rem;
}
.tournament-table tbody tr:not(.mes-separador) > td:last-child {
    border-right: 1px solid var(--chess-border);
    border-radius: 0 .5rem .5rem 0;
}
.tournament-table tbody tr:not(.mes-separador):hover > td {
    background: #fbfaf8;
    border-color: #beb9b2;
}
.tournament-table tbody tr.highlight-row > td {
    background: #fff6d8;
    border-color: #e6cc78;
}
.tournament-table .mes-separador td {
    padding: 1rem .4rem .15rem !important;
    border: 0;
    color: var(--chess-muted) !important;
    background: transparent !important;
    font-size: .8rem;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.tournament-main-cell { min-width: 32rem; }
.tournament-title-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
}
.tournament-title {
    color: var(--chess-blue-dark);
    font-size: .94rem;
    font-weight: 750;
    line-height: 1.25;
    text-decoration: none;
}
.tournament-title:hover { color: #164f7d; text-decoration: underline; }
.tournament-enrolled { color: var(--chess-green); font-size: 1.25rem; line-height: 1; }
.tournament-actions .btn { box-shadow: none; }
.tournament-actions .btn-favorito.btn-outline-warning {
    color: #805000;
    background: #fff7d6;
    border-color: #b87500;
}
.tournament-actions .btn-favorito.btn-outline-warning:hover,
.tournament-actions .btn-favorito.btn-outline-warning:focus-visible {
    color: #3d2800;
    background: #ffe69c;
    border-color: #805000;
}
.tournament-actions .btn-favorito.btn-warning {
    color: #17130a;
    background: #ffc107;
    border-color: #b87500;
}
.tournament-actions .btn-favorito > i { font-size: 1.1rem; }
.tournament-date { white-space: normal; }
.tournament-date-stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .15rem;
    line-height: 1.15;
    white-space: nowrap;
}
.tournament-date-stack time:first-child { font-weight: 750; }
.tournament-date-stack time:last-child { color: var(--chess-muted); font-size: .82rem; }
.mobile-field-icon,
.mobile-location-uf { display: none; }

@media (min-width: 992px) {
    .tournament-centered-heading,
    .tournament-centered-cell { text-align: center; }
    .tournament-date-stack { align-items: center; }
}

.jogadores-titulos { margin-top: .55rem; }
.title-count { padding: .28rem .48rem; font-size: .67rem; }
.title-count-tooltip {
    position: relative;
    border: 0;
    cursor: help;
}
.title-count-tooltip:focus-visible {
    outline: 3px solid rgba(54, 146, 231, .35);
    outline-offset: 2px;
}
.title-player-tooltip {
    position: absolute;
    z-index: 1080;
    bottom: calc(100% + .55rem);
    left: 0;
    display: none;
    width: max-content;
    min-width: 14rem;
    max-width: min(24rem, 80vw);
    padding: .65rem;
    border: 1px solid #4a4743;
    border-radius: .45rem;
    color: #f8f7f5;
    background: #312e2b;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .28);
    text-align: left;
    white-space: normal;
}
.title-player-tooltip::after {
    content: "";
    position: absolute;
    top: 100%;
    left: .8rem;
    border: .38rem solid transparent;
    border-top-color: #312e2b;
}
.title-count-tooltip:hover .title-player-tooltip,
.title-count-tooltip:focus .title-player-tooltip,
.title-count-tooltip:focus-within .title-player-tooltip { display: grid; gap: .35rem; }
.title-player-tooltip > strong {
    padding-bottom: .25rem;
    border-bottom: 1px solid rgba(255, 255, 255, .16);
    color: #b3d67c;
    font-size: .68rem;
    letter-spacing: .08em;
}
.title-player-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 1rem;
    align-items: baseline;
    font-size: .76rem;
    font-weight: 500;
}
.title-player-row b { color: #ddd; font-variant-numeric: tabular-nums; }
.jogadores-top-rating {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .3rem .45rem;
    margin-top: .5rem;
    color: var(--chess-muted);
    font-size: .76rem;
}
.rating-player {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    padding: .22rem .4rem;
    border: 1px solid #ddd8d1;
    border-radius: .35rem;
    background: #f3f1ee;
    white-space: nowrap;
}
.rating-title { color: var(--chess-blue-dark); font-weight: 800; }
.rating-player strong { color: var(--chess-ink); }
.mobile-player-remainder { display: none; }
.tournament-action-label { display: none; }

@media (max-width: 991.98px) {
    .app-page { padding-left: .75rem; padding-right: .75rem; }
    .app-surface { border-radius: .5rem; }
    .tournament-table { min-width: 0; border-spacing: 0 .75rem; }
    .tournament-table thead { display: block; margin-bottom: .5rem; }
    .tournament-table thead tr { display: flex; gap: .5rem; }
    .tournament-table thead th { display: none; }
    .tournament-table thead th.tournament-filter-heading {
        display: block;
        flex: 1 1 0;
        padding: .25rem 0;
    }
    .tournament-table tbody,
    .tournament-table tr,
    .tournament-table td { display: block; width: 100%; }
    .tournament-table tbody tr:not(.mes-separador) {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
    }
    .tournament-table tbody tr:not(.mes-separador) > td {
        padding: .5rem .75rem;
        border: 0;
        border-left: 1px solid var(--chess-border);
        border-right: 1px solid var(--chess-border);
        border-radius: 0;
    }
    .tournament-table tbody tr:not(.mes-separador) > td:first-child {
        grid-column: 2;
        grid-row: 1;
        border-top: 1px solid var(--chess-border);
        border-radius: 0 .5rem 0 0;
    }
    .tournament-table tbody tr:not(.mes-separador) > td:nth-child(2) {
        grid-column: 1;
        grid-row: 1;
        padding-top: .8rem;
        border-top: 1px solid var(--chess-border);
        border-radius: .5rem 0 0 0;
    }
    .tournament-table tbody tr:not(.mes-separador) > td:nth-child(n+3) {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: 7rem minmax(0, 1fr);
        gap: .75rem;
    }
    .tournament-table tbody tr:not(.mes-separador) > td:nth-child(n+3)::before {
        content: attr(data-label);
        color: var(--chess-muted);
        font-size: .7rem;
        font-weight: 800;
        letter-spacing: .04em;
        text-transform: uppercase;
    }
    .tournament-table tbody tr:not(.mes-separador) > td:last-child {
        padding-bottom: .8rem;
        border-bottom: 1px solid var(--chess-border);
        border-radius: 0 0 .5rem .5rem;
    }
    .tournament-main-cell { min-width: 0; }
    .tournament-date { width: 100%; min-width: 0; }
    .jogadores-top-rating { align-items: flex-start; }
    .rating-player { max-width: 100%; white-space: normal; }
}

@media (max-width: 575.98px) {
    .app-page { padding: 0 !important; }
    .app-surface { border-radius: 0 !important; }
    .app-surface > .card-body { padding: 1rem !important; }
    .tournament-tabs { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .tournament-tabs .btn { width: 100%; }
    .tournament-table tbody tr:not(.mes-separador) {
        display: flex;
        flex-direction: column;
        margin-bottom: 1.25rem;
        filter: drop-shadow(0 .2rem .25rem rgba(49, 46, 43, .1));
    }
    .tournament-table tbody tr:not(.mes-separador):last-child { margin-bottom: .35rem; }
    .tournament-table tbody tr:not(.mes-separador) > td:first-child {
        order: 99;
        padding: .75rem;
        border-top: 0;
        border-bottom: 1px solid var(--chess-border);
        border-radius: 0 0 .5rem .5rem;
    }
    .tournament-table tbody tr:not(.mes-separador) > td:nth-child(2) {
        border-radius: .5rem .5rem 0 0;
    }
    .tournament-table tbody tr:not(.mes-separador) > td:last-child:not(:first-child) {
        border-radius: 0;
    }
    .tournament-table tbody tr:not(.mes-separador) > td.tournament-uf-cell {
        display: none !important;
    }
    .tournament-table tbody tr:not(.mes-separador) > td.tournament-date,
    .tournament-table tbody tr:not(.mes-separador) > td.tournament-location-cell {
        display: grid;
        grid-template-columns: 1.5rem minmax(0, 1fr);
        gap: .65rem;
        align-items: start;
    }
    .tournament-table tbody tr:not(.mes-separador) > td.tournament-date::before,
    .tournament-table tbody tr:not(.mes-separador) > td.tournament-location-cell::before {
        content: none;
    }
    .mobile-field-icon {
        display: inline-flex;
        justify-content: center;
        padding-top: .05rem;
        color: var(--chess-blue-dark);
        font-size: 1rem;
    }
    .mobile-location-uf { display: inline; }
    .mobile-player-remainder {
        display: inline-flex;
        align-items: center;
        padding: .22rem .15rem;
        color: var(--chess-green);
        font-size: 1rem;
        font-weight: 800;
        white-space: nowrap;
    }
    .tournament-table tbody tr:not(.mes-separador) > td.mobile-hide-with-player-summary {
        display: none;
    }
    .tournament-actions {
        display: flex;
        width: 100%;
    }
    .tournament-actions .btn {
        display: inline-flex;
        flex: 1 1 0;
        justify-content: center;
        align-items: center;
        gap: .45rem;
        min-height: 44px;
        padding: .55rem .75rem;
        font-weight: 700;
    }
    .tournament-action-label { display: inline; }
    .tournament-title { font-size: .88rem; }
}
