/* ============================================================
   Sport API Manager - Design System
   Dark-first, minimalista, com tema claro opcional via
   [data-theme="light"] no <html> (ver assets/js/theme.js).
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

:root {
    /* --- Superfícies (dark = padrão) - translúcidas, feitas pra ficar
       sobre os blobs de gradiente do <body> com backdrop-filter --- */
    --bg: #08080a;
    --bg-elevated: rgba(20, 20, 26, .72);
    --bg-card: rgba(255, 255, 255, .045);
    --bg-card-strong: rgba(255, 255, 255, .07);
    --bg-hover: rgba(255, 255, 255, .06);
    --bg-input: rgba(255, 255, 255, .05);
    --border: rgba(255, 255, 255, .09);
    --border-strong: rgba(255, 255, 255, .16);
    --blur: blur(20px) saturate(150%);

    /* --- Texto --- */
    --text: #f7f7f8;
    --text-secondary: #aeaeb8;
    --text-tertiary: #75757f;

    /* --- Acento (gradiente principal) --- */
    --accent: #6d6af6;
    --accent-2: #a855f7;
    --accent-hover: #5b57f5;
    --accent-soft: #6d6af62a;
    --accent-text: #b4b2ff;
    --accent-gradient: linear-gradient(135deg, #7c79ff 0%, #a855f7 100%);

    /* --- Semânticas --- */
    --success: #2ee686;
    --success-soft: #22c55e26;
    --success-gradient: linear-gradient(135deg, #34d399 0%, #10b981 100%);
    --warning: #ffb648;
    --warning-soft: #f5a62326;
    --warning-gradient: linear-gradient(135deg, #fbbf24 0%, #f97316 100%);
    --danger: #ff5b73;
    --danger-soft: #f0455c26;
    --danger-gradient: linear-gradient(135deg, #fb7185 0%, #e11d48 100%);
    --info: #4fc9ff;
    --info-soft: #38bdf826;
    --info-gradient: linear-gradient(135deg, #38bdf8 0%, #6d6af6 100%);

    /* --- Forma --- */
    --radius-sm: 6px;
    --radius: 10px;
    --radius-lg: 16px;
    --shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 30px -8px rgba(0, 0, 0, .55);
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);

    --sidebar-width: 250px;
    --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

    color-scheme: dark;
}

:root[data-theme="light"] {
    --bg: #eef0f6;
    --bg-elevated: rgba(255, 255, 255, .75);
    --bg-card: rgba(255, 255, 255, .55);
    --bg-card-strong: rgba(255, 255, 255, .8);
    --bg-hover: rgba(20, 20, 40, .045);
    --bg-input: rgba(255, 255, 255, .7);
    --border: rgba(20, 20, 40, .09);
    --border-strong: rgba(20, 20, 40, .18);

    --text: #17171d;
    --text-secondary: #55555f;
    --text-tertiary: #86868f;

    --accent-soft: #6d6af61c;
    --accent-text: #6a5cf0;

    --success-soft: #22c55e1c;
    --warning-soft: #f5a6231c;
    --danger-soft: #f0455c1c;
    --info-soft: #38bdf81c;

    --shadow: 0 1px 2px rgba(20, 20, 30, .05), 0 8px 30px -8px rgba(20, 20, 30, .14);
    --shadow-sm: 0 1px 2px rgba(20, 20, 30, .06);

    color-scheme: light;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    font-family: var(--font);
    background: var(--bg);
    color: var(--text);
    font-size: 14px;
    line-height: 1.55;
    transition: background-color .15s ease, color .15s ease;
    position: relative;
    min-height: 100vh;
}

/* Blobs de gradiente fixos atrás de tudo - é o que dá profundidade pros
   cards translúcidos com blur na frente (glassmorphism) */
body::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        radial-gradient(circle at 12% 10%, rgba(109, 106, 246, .22), transparent 38%),
        radial-gradient(circle at 88% 18%, rgba(168, 85, 247, .16), transparent 40%),
        radial-gradient(circle at 78% 88%, rgba(56, 189, 248, .13), transparent 42%),
        radial-gradient(circle at 15% 85%, rgba(46, 230, 134, .08), transparent 38%);
}

:root[data-theme="light"] body::before {
    background:
        radial-gradient(circle at 12% 10%, rgba(109, 106, 246, .16), transparent 38%),
        radial-gradient(circle at 88% 18%, rgba(168, 85, 247, .13), transparent 40%),
        radial-gradient(circle at 78% 88%, rgba(56, 189, 248, .12), transparent 42%),
        radial-gradient(circle at 15% 85%, rgba(46, 230, 134, .09), transparent 38%);
}

.sidebar, .main-content { position: relative; z-index: 1; }

a {
    color: inherit;
    text-decoration: none;
}

h1, h2, h3, h4, h5 {
    font-weight: 700;
    letter-spacing: -.02em;
}

/* Chip/pill pequeno, tipo "eyebrow" acima de títulos - rótulo curto que
   contextualiza a seção (ex: "GESTÃO DE PLANOS" acima de "Planos") */
.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 11px;
    border-radius: 20px;
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    background: var(--accent-soft);
    color: var(--accent-text);
    border: 1px solid rgba(124, 121, 255, .22);
    margin-bottom: 10px;
}

.eyebrow::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: currentColor; box-shadow: 0 0 6px currentColor; }

small {
    color: var(--text-tertiary);
    font-size: 12.5px;
}

code {
    font-family: 'SF Mono', Menlo, Consolas, monospace;
    font-size: .9em;
    background: var(--bg-input);
    border: 1px solid var(--border);
    padding: 2px 6px;
    border-radius: 5px;
    color: var(--accent-text);
}

::selection {
    background: var(--accent-soft);
    color: var(--text);
}

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: var(--text-tertiary); }

/* ============================================================
   LAYOUT: SIDEBAR + TOPBAR
   ============================================================ */

.sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--sidebar-width);
    height: 100vh;
    background: var(--bg-elevated);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    z-index: 100;
    transition: transform .2s ease;
}

.sidebar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 18px;
    border-bottom: 1px solid var(--border);
}

.sidebar-header .logo {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 700;
    font-size: 15px;
}

.sidebar-header .logo i {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--accent-gradient);
    box-shadow: 0 4px 14px -2px rgba(109, 106, 246, .55);
    color: #fff;
    border-radius: var(--radius-sm);
    font-size: 13px;
}

.sidebar-toggle {
    display: none;
    background: transparent;
    border: none;
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 16px;
}

.sidebar-profile {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 16px 18px;
    border-bottom: 1px solid var(--border);
}

.profile-avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--bg-hover);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    overflow: hidden;
    flex-shrink: 0;
}

.profile-avatar img { width: 100%; height: 100%; object-fit: cover; }

.profile-info h4 { font-size: 13px; font-weight: 600; }
.profile-info p { font-size: 12px; color: var(--text-tertiary); }

.sidebar-menu { flex: 1; overflow-y: auto; padding: 10px; }
.sidebar-menu ul { list-style: none; display: flex; flex-direction: column; gap: 2px; }

.sidebar-menu a {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 9px 12px;
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 13.5px;
    font-weight: 500;
    transition: background-color .12s ease, color .12s ease;
}

.sidebar-menu a i { width: 16px; text-align: center; font-size: 14px; }

.sidebar-menu li:hover a { background: var(--bg-hover); color: var(--text); }

.sidebar-menu li.active a {
    background: linear-gradient(135deg, rgba(124, 121, 255, .22) 0%, rgba(168, 85, 247, .16) 100%);
    color: var(--accent-text);
    box-shadow: inset 0 0 0 1px rgba(124, 121, 255, .25);
}

.sidebar-menu li.sidebar-section-label {
    padding: 14px 12px 6px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--text-tertiary);
}
.sidebar-menu li.sidebar-section-label:hover { background: none; }

.sidebar-footer { padding: 12px; border-top: 1px solid var(--border); }

.account-chip {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 9px 10px;
}

.account-chip-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--success);
    box-shadow: 0 0 8px var(--success);
    flex-shrink: 0;
}

.account-chip strong {
    display: block;
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-tertiary);
    font-weight: 700;
}

.account-chip p {
    font-size: 12.5px;
    font-weight: 600;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.account-chip > div { flex: 1; min-width: 0; }

.btn-logout {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    flex-shrink: 0;
}

.btn-logout:hover { background: var(--danger-soft); color: var(--danger); }

/* Botão de menu flutuante (mobile) - fica fora da .sidebar de propósito,
   senão fica escondido junto quando o menu está fechado (translateX) */
.mobile-menu-btn {
    display: none;
    position: fixed;
    top: 14px;
    left: 14px;
    z-index: 150;
    background: var(--bg-elevated);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border-strong);
    box-shadow: var(--shadow-sm);
    width: 40px;
    height: 40px;
    border-radius: var(--radius-sm);
    color: var(--text);
    cursor: pointer;
    align-items: center;
    justify-content: center;
    font-size: 16px;
}

.sidebar-header .sidebar-toggle { display: none; }

.sidebar-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .5);
    backdrop-filter: blur(2px);
    z-index: 99;
}

.sidebar-backdrop.active { display: block; }

.main-content {
    margin-left: var(--sidebar-width);
    min-height: 100vh;
}

.topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 11px 28px;
    border-bottom: 1px solid var(--border);
    background: var(--bg-elevated);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    position: sticky;
    top: 0;
    z-index: 50;
}

.topbar-left { display: flex; align-items: center; gap: 10px; }
.topbar-left .eyebrow { margin-bottom: 0; }
.topbar-left .breadcrumb { display: none; }

.topbar-left h1 { font-size: 20px; font-weight: 800; letter-spacing: -.03em; }

.breadcrumb { font-size: 12.5px; color: var(--text-tertiary); }
.breadcrumb a:hover { color: var(--text-secondary); }

.topbar-right { display: flex; align-items: center; gap: 8px; }

.content { padding: 26px 28px 60px; max-width: 1400px; }

/* ============================================================
   THEME TOGGLE + NOTIFICATIONS + USER DROPDOWN
   ============================================================ */

.icon-btn {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg-card);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 14px;
    position: relative;
    transition: border-color .12s ease, color .12s ease;
}

.icon-btn:hover { border-color: var(--border-strong); color: var(--text); }

.theme-toggle .fa-sun { display: none; }
:root[data-theme="light"] .theme-toggle .fa-sun { display: inline; }
:root[data-theme="light"] .theme-toggle .fa-moon { display: none; }

.btn-notification { position: relative; }

.notification-badge {
    position: absolute;
    top: -4px;
    right: -4px;
    background: var(--danger);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    min-width: 16px;
    height: 16px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 3px;
}

.user-dropdown { position: relative; }

.btn-user {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 7px 12px;
    color: var(--text);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
}

.btn-user:hover { border-color: var(--border-strong); }
.btn-user i { font-size: 10px; color: var(--text-tertiary); }

.dropdown-menu {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    background: var(--bg-elevated);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    min-width: 190px;
    padding: 6px;
    display: none;
    z-index: 200;
}

.user-dropdown.open .dropdown-menu { display: block; }

.dropdown-menu a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: var(--radius-sm);
    font-size: 13px;
    color: var(--text-secondary);
}

.dropdown-menu a:hover { background: var(--bg-hover); color: var(--text); }
.dropdown-menu a i { width: 14px; text-align: center; }
.dropdown-menu .divider { height: 1px; background: var(--border); margin: 6px 2px; }

/* ============================================================
   GRID / ROWS
   ============================================================ */

.row { display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 0; }
.col-3 { flex: 0 0 calc(25% - 15px); }
.col-4 { flex: 0 0 calc(33.333% - 14px); }
.col-6 { flex: 0 0 calc(50% - 10px); }
.col-8 { flex: 0 0 calc(66.666% - 7px); }
.stats-row { margin-bottom: 20px; }

/* ============================================================
   CARDS
   ============================================================ */

.card {
    background: var(--bg-card);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    margin-bottom: 20px;
    overflow: hidden;
    transition: border-color .15s ease, background-color .15s ease;
}

.card:hover { border-color: var(--border-strong); }

.card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid var(--border);
}

.card-header h3 { font-size: 15px; font-weight: 700; letter-spacing: -.01em; }
.card-body { padding: 20px; }

/* ============================================================
   STAT CARDS
   ============================================================ */

.stat-card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 18px 20px;
    display: flex;
    align-items: flex-start;
    gap: 14px;
    height: 100%;
}

.stat-icon {
    width: 40px;
    height: 40px;
    border-radius: var(--radius);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 16px;
    flex-shrink: 0;
    background: var(--accent-gradient);
    box-shadow: 0 6px 16px -4px rgba(109, 106, 246, .5);
}

.quick-stat-icon { box-shadow: 0 4px 12px -3px rgba(0, 0, 0, .4); }

.stat-info h3 { font-size: 27px; font-weight: 800; letter-spacing: -.03em; }
.stat-info p { font-size: 12.5px; color: var(--text-tertiary); margin-top: 2px; }

.stat-details { display: flex; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.stat-detail { font-size: 11.5px; font-weight: 600; padding: 2px 7px; border-radius: 20px; background: var(--bg-hover); color: var(--text-secondary); }
.stat-detail.success { background: var(--success-soft); color: var(--success); }
.stat-detail.warning { background: var(--warning-soft); color: var(--warning); }
.stat-detail.error { background: var(--danger-soft); color: var(--danger); }

.stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.stat-item { text-align: center; padding: 12px 8px; background: var(--bg-hover); border-radius: var(--radius-sm); }
.stat-label { font-size: 11px; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: .04em; }
.stat-value { font-size: 19px; font-weight: 700; margin-top: 4px; }

.quick-stats { display: flex; flex-direction: column; gap: 12px; }
.quick-stat { display: flex; align-items: center; gap: 12px; }
.quick-stat-icon { width: 34px; height: 34px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 13px; }
.quick-stat-info h4 { font-size: 16px; font-weight: 700; }
.quick-stat-info p { font-size: 11.5px; color: var(--text-tertiary); }

/* ============================================================
   BUTTONS
   ============================================================ */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 9px 16px;
    border-radius: var(--radius-sm);
    border: 1px solid transparent;
    font-family: var(--font);
    font-size: 13.5px;
    font-weight: 600;
    cursor: pointer;
    transition: background-color .12s ease, border-color .12s ease, opacity .12s ease;
    white-space: nowrap;
}

.btn-primary {
    background: var(--accent-gradient);
    color: #fff;
    box-shadow: 0 4px 14px -3px rgba(109, 106, 246, .5);
}
.btn-primary:hover { filter: brightness(1.08); box-shadow: 0 6px 18px -3px rgba(109, 106, 246, .65); }

.btn-secondary { background: var(--bg-card); backdrop-filter: var(--blur); -webkit-backdrop-filter: var(--blur); color: var(--text); border-color: var(--border); }
.btn-secondary:hover { border-color: var(--border-strong); background: var(--bg-hover); }

.btn-warning { background: var(--warning-soft); color: var(--warning); }
.btn-warning:hover { opacity: .8; }

.btn-info { background: var(--info-soft); color: var(--info); }
.btn-info:hover { opacity: .8; }

.btn-block { width: 100%; }
.btn-sm { padding: 6px 12px; font-size: 12.5px; }

.actions { display: flex; gap: 6px; }

.btn-action {
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    background: var(--bg-card);
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 12.5px;
}

.btn-action:hover { border-color: var(--border-strong); color: var(--text); }
.btn-action.btn-delete:hover { border-color: var(--danger); color: var(--danger); background: var(--danger-soft); }
.btn-action.btn-status:hover { border-color: var(--warning); color: var(--warning); background: var(--warning-soft); }
.btn-action.btn-edit:hover { border-color: var(--accent); color: var(--accent-text); background: var(--accent-soft); }

.btn-copy {
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
    background: var(--bg-card);
    color: var(--text-tertiary);
    cursor: pointer;
}

.btn-copy:hover { color: var(--text); border-color: var(--border-strong); }

/* ============================================================
   FORMS
   ============================================================ */

.form-section { margin-bottom: 26px; padding-bottom: 22px; border-bottom: 1px solid var(--border); }
.form-section:last-of-type { border-bottom: none; margin-bottom: 8px; padding-bottom: 0; }

.form-section h4 {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-tertiary);
    margin-bottom: 16px;
}

.form-row { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; }
.form-row .form-group { flex: 1; min-width: 200px; margin-bottom: 0; }
.form-group { margin-bottom: 14px; }

.form-group label {
    display: block;
    font-size: 12.5px;
    font-weight: 600;
    margin-bottom: 6px;
    color: var(--text-secondary);
}

.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="password"],
.form-group input[type="number"],
.form-group input[type="url"],
.form-group input[type="date"],
.form-group input[type="file"],
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 9px 12px;
    background: var(--bg-input);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text);
    font-family: var(--font);
    font-size: 13.5px;
    transition: border-color .12s ease, box-shadow .12s ease;
}

/* <select> por si só (não input/textarea): alguns navegadores (Chrome/Edge
   no Windows) pintam o popup nativo de opções a partir da MESMA cor de
   fundo do elemento <select> fechado - com uma cor translúcida (--bg-input,
   pensada pra ficar sobre o blur do resto da UI) isso "revela" branco atrás
   no popup, que não tem esse fundo desfocado. Sobrescreve só aqui com uma
   cor sólida da paleta (--bg), depois do bloco de cima de propósito pra
   ganhar na cascata. */
.form-group select,
select {
    background-color: var(--bg);
}

.form-group input[type="color"] {
    width: 52px;
    height: 36px;
    padding: 3px;
    background: var(--bg-input);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}

/* O popup nativo de opções do <select> é renderizado pelo SO/navegador,
   fora do contexto de blur/transparência do resto da UI - um fundo
   translúcido (--bg-input) nele fica quase branco por não ter nada atrás
   pra colorir. color-scheme no :root nem sempre é suficiente sozinho
   (Chrome no Windows, por exemplo, pode ignorar o valor herdado e manter
   o popup no claro padrão do SO) - por isso repete explícito no próprio
   <select>, além da cor sólida forçada em cada <option> com !important
   (só aqui, de propósito - popup nativo tem estilos de UA com prioridade
   alta o suficiente pra precisar disso). */
select,
.form-group select {
    color-scheme: dark;
}
:root[data-theme="light"] select,
:root[data-theme="light"] .form-group select {
    color-scheme: light;
}
select option,
select optgroup {
    background-color: var(--bg) !important;
    color: var(--text) !important;
}

.form-group input:disabled { opacity: .5; cursor: not-allowed; }
.form-group textarea { resize: vertical; min-height: 60px; }
.help-text { display: block; margin-top: 6px; }

.radio-group-horizontal { display: flex; gap: 16px; flex-wrap: wrap; padding: 8px 0; }
.radio-label { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--text-secondary); cursor: pointer; font-weight: 500; }
.radio-label input { accent-color: var(--accent); width: 15px; height: 15px; }

.form-actions { display: flex; gap: 10px; margin-top: 20px; }

.filtros-form .form-row { align-items: flex-end; margin-bottom: 0; }
.filtros-form .form-group { min-width: 160px; }
.filtros-form .form-group:last-child { display: flex; gap: 8px; flex: 0 0 auto; }

.periodo-filtro { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.periodo-filtro h3 { font-size: 13px; color: var(--text-secondary); }
.periodo-buttons { display: flex; gap: 8px; }

/* ============================================================
   TABLES
   ============================================================ */

.table-responsive { overflow-x: auto; }

.table { width: 100%; border-collapse: collapse; }

.table th {
    text-align: left;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-tertiary);
    font-weight: 600;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border);
    white-space: nowrap;
}

.table td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--border);
    font-size: 13.5px;
    vertical-align: top;
}

.table tbody tr:last-child td { border-bottom: none; }
.table tbody tr:hover { background: var(--bg-hover); }
.table td small { display: block; margin-top: 2px; }

code.token { font-size: 12px; }

/* ============================================================
   BADGES / STATUS
   ============================================================ */

.badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 9px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    background: var(--bg-hover);
    color: var(--text-secondary);
    border: 1px solid rgba(255, 255, 255, .07);
}

:root[data-theme="light"] .badge { border-color: rgba(20, 20, 40, .06); }

.badge-free { background: var(--info-soft); color: var(--info); }
.badge-basic { background: var(--success-soft); color: var(--success); }
.badge-premium { background: var(--warning-soft); color: var(--warning); }
.badge-enterprise { background: var(--accent-soft); color: var(--accent-text); }

.status {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 9px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.status::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 8px currentColor; }

.status-ativo, .status-success { background: var(--success-soft); color: var(--success); }
.status-pendente, .status-warning { background: var(--warning-soft); color: var(--warning); }
.status-bloqueado, .status-expirado, .status-error { background: var(--danger-soft); color: var(--danger); }

/* ============================================================
   ALERTS
   ============================================================ */

.alert, .message {
    position: relative;
    padding: 12px 40px 12px 16px;
    border-radius: var(--radius);
    font-size: 13.5px;
    margin-bottom: 18px;
    border: 1px solid transparent;
    line-height: 1.5;
}

.alert-success, .message-success { background: var(--success-soft); color: var(--success); border-color: color-mix(in srgb, var(--success) 30%, transparent); }
.alert-error, .message-error { background: var(--danger-soft); color: var(--danger); border-color: color-mix(in srgb, var(--danger) 30%, transparent); }
.alert-warning, .message-warning { background: var(--warning-soft); color: var(--warning); border-color: color-mix(in srgb, var(--warning) 30%, transparent); }

.alert code { background: rgba(0,0,0,.15); border-color: transparent; }

.alert-close {
    position: absolute;
    top: 10px;
    right: 12px;
    background: none;
    border: none;
    color: currentColor;
    opacity: .6;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
}

.alert-close:hover { opacity: 1; }

/* ============================================================
   PAGINATION
   ============================================================ */

.paginacao { display: flex; gap: 5px; margin-top: 18px; flex-wrap: wrap; }

.pagina {
    min-width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 8px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    font-size: 13px;
    color: var(--text-secondary);
}

.pagina:hover { border-color: var(--border-strong); color: var(--text); }
.pagina.ativa { background: var(--accent-gradient); border-color: transparent; color: #fff; }

/* ============================================================
   MODAL
   ============================================================ */

.modal {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .55);
    backdrop-filter: blur(3px);
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: 20px;
}

.modal-content {
    background: var(--bg-elevated);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
    width: 100%;
    max-width: 560px;
    max-height: 90vh;
    overflow-y: auto;
}

.modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 22px;
    border-bottom: 1px solid var(--border);
}

.modal-header h2 { font-size: 15.5px; }

.modal-close { background: none; border: none; color: var(--text-tertiary); font-size: 20px; cursor: pointer; line-height: 1; }
.modal-close:hover { color: var(--text); }

.modal-form, .modal-body { padding: 22px; }
.modal-footer { display: flex; justify-content: flex-end; gap: 10px; padding: 16px 22px; border-top: 1px solid var(--border); }

/* ============================================================
   PROGRESS BAR
   ============================================================ */

.progress-bar { height: 8px; background: var(--bg-hover); border-radius: 20px; overflow: hidden; margin: 14px 0; }
.progress-fill { height: 100%; background: var(--accent-gradient); border-radius: 20px; transition: width .3s ease; }

/* ============================================================
   TOKEN / INFO DISPLAY (editar-usuario, editar-plano)
   ============================================================ */

.token-info label { display: block; font-size: 12px; font-weight: 600; color: var(--text-tertiary); margin: 14px 0 6px; text-transform: uppercase; letter-spacing: .04em; }
.token-info label:first-child { margin-top: 0; }

.token-display {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--bg-input);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 8px 10px;
}

.token-display code { flex: 1; overflow-x: auto; white-space: nowrap; border: none; background: none; padding: 0; }

.action-buttons { display: flex; flex-direction: column; gap: 8px; margin-top: 18px; }
.action-form { width: 100%; }

.info-grid { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; }
.info-item { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: var(--text-secondary); }
.info-item i { color: var(--text-tertiary); width: 14px; }

.info-row { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 13px; }
.info-row:last-child { border-bottom: none; }
.info-row .label { color: var(--text-secondary); font-weight: 500; }
.info-row .value { font-weight: 600; }

.reset-info {
    background: var(--info-soft);
    color: var(--info);
    padding: 14px 16px;
    border-radius: var(--radius);
    margin-bottom: 20px;
    font-size: 13px;
    line-height: 1.7;
}

/* ============================================================
   PERFIL
   ============================================================ */

.profile-avatar-large { display: flex; flex-direction: column; align-items: center; gap: 12px; margin-bottom: 24px; }
.profile-avatar-large img, .profile-avatar-large .avatar-placeholder {
    width: 84px; height: 84px; border-radius: 50%; object-fit: cover;
    background: var(--bg-hover); display: flex; align-items: center; justify-content: center;
    font-size: 36px; color: var(--text-tertiary);
}

.account-info { display: flex; flex-direction: column; gap: 16px; }
.account-info .info-item { align-items: flex-start; gap: 12px; font-size: 13px; }
.account-info .info-item i { font-size: 15px; margin-top: 2px; }
.account-info .info-item strong { display: block; font-size: 11.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--text-tertiary); font-weight: 600; margin-bottom: 2px; }
.account-info .info-item p { color: var(--text); font-weight: 500; }

/* ============================================================
   SETTINGS TABS (configuracoes.php)
   ============================================================ */

.tabs-header { display: flex; gap: 4px; margin-bottom: 18px; border-bottom: 1px solid var(--border); }

.tab-btn {
    background: none;
    border: none;
    padding: 10px 16px;
    font-family: var(--font);
    font-size: 13px;
    font-weight: 600;
    color: var(--text-tertiary);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
}

.tab-btn:hover { color: var(--text-secondary); }
.tab-btn.active { color: var(--accent-text); border-bottom-color: var(--accent); }

.tab-content { display: none; }
.tab-content.active { display: block; animation: fadeIn .15s ease; }

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

.test-email { display: flex; gap: 10px; }
.test-email input { flex: 1; }

/* ============================================================
   LOGIN
   ============================================================ */

body.login-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    position: relative;
    overflow: hidden;
    background: var(--bg);
}

.login-glow {
    position: absolute;
    width: 720px;
    height: 720px;
    border-radius: 50%;
    background:
        radial-gradient(circle at 35% 35%, var(--accent) 0%, transparent 55%),
        radial-gradient(circle at 65% 65%, var(--accent-2) 0%, transparent 55%);
    opacity: .28;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
    filter: blur(40px);
}

.login-grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(var(--border) 1px, transparent 1px),
        linear-gradient(90deg, var(--border) 1px, transparent 1px);
    background-size: 42px 42px;
    opacity: .35;
    mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, #000 10%, transparent 70%);
    pointer-events: none;
}

.login-wrap { position: relative; width: 100%; max-width: 380px; }

.login-topbar { display: flex; justify-content: flex-end; margin-bottom: 18px; }

.login-card {
    background: var(--bg-card-strong);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow), inset 0 1px 0 rgba(255, 255, 255, .06);
    padding: 32px 30px;
}

.login-header { text-align: center; margin-bottom: 26px; }

.login-header .logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: var(--radius);
    background: var(--accent);
    color: #fff;
    font-size: 19px;
    margin-bottom: 14px;
}

.login-header h1 { font-size: 20px; font-weight: 800; letter-spacing: -.02em; margin-bottom: 4px; }
.login-header .subtitle { font-size: 12.5px; color: var(--text-tertiary); }

.login-form .form-group label { display: flex; align-items: center; gap: 6px; }

.password-input { position: relative; }
.password-input input { padding-right: 40px; }

.toggle-password {
    position: absolute;
    right: 4px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--text-tertiary);
    cursor: pointer;
    padding: 8px;
}

.toggle-password:hover { color: var(--text-secondary); }

.login-form .btn-block { margin-top: 6px; padding: 11px; }

.login-footer { text-align: center; margin-top: 18px; }
.login-footer p { font-size: 12px; color: var(--text-tertiary); display: flex; align-items: center; justify-content: center; gap: 6px; }

.login-footer-info { text-align: center; margin-top: 22px; }
.login-footer-info p { font-size: 12px; color: var(--text-tertiary); }

/* ============================================================
   EMPTY STATES
   ============================================================ */

.empty-state { text-align: center; padding: 50px 20px; color: var(--text-tertiary); }
.empty-state i { font-size: 34px; margin-bottom: 14px; opacity: .5; }
.empty-state p { margin-bottom: 16px; font-size: 13.5px; }
.empty-state.small { padding: 24px 10px; }
.empty-state.small i { font-size: 22px; margin-bottom: 8px; }

/* ============================================================
   LOGS (dashboard sidebar list)
   ============================================================ */

.logs { display: flex; flex-direction: column; gap: 2px; }

.log-item {
    display: flex;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--border);
}

.log-item:last-child { border-bottom: none; }
.log-time { font-size: 11.5px; color: var(--text-tertiary); flex-shrink: 0; padding-top: 1px; }
.log-content { flex: 1; min-width: 0; }
.log-header { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 3px; }
.log-user { font-size: 12.5px; font-weight: 600; }
.log-status { font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 10px; }
.log-status.status-success { background: var(--success-soft); color: var(--success); }
.log-status.status-error { background: var(--danger-soft); color: var(--danger); }
.log-details { display: flex; justify-content: space-between; gap: 8px; font-size: 11.5px; color: var(--text-tertiary); }
.log-ip { flex-shrink: 0; }

/* ============================================================
   SITE PÚBLICO (index.php, cadastro.php)
   ============================================================ */

.site-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 40px;
    position: sticky;
    top: 0;
    z-index: 60;
    background: var(--bg-elevated);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border-bottom: 1px solid var(--border);
}

.site-header .logo {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 800;
    font-size: 16px;
}

.site-header .logo i {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--accent-gradient);
    color: #fff;
    border-radius: var(--radius-sm);
    font-size: 14px;
    box-shadow: 0 4px 14px -2px rgba(109, 106, 246, .5);
}

.site-nav { display: flex; align-items: center; gap: 26px; }
.site-nav a:not(.btn) { font-size: 13.5px; font-weight: 600; color: var(--text-secondary); }
.site-nav a:not(.btn):hover { color: var(--text); }
.site-nav a.nav-active { color: var(--accent-text); }
.site-header-actions { display: flex; align-items: center; gap: 10px; }

.site-main { max-width: 1180px; margin: 0 auto; padding: 0 32px; }

.hero {
    text-align: center;
    padding: 90px 20px 70px;
    position: relative;
}

.hero-title {
    font-size: clamp(32px, 5.5vw, 56px);
    font-weight: 800;
    letter-spacing: -.035em;
    line-height: 1.08;
    max-width: 820px;
    margin: 18px auto 20px;
}

.hero-title .accent-text-grad {
    background: var(--accent-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.hero-subtitle {
    font-size: 16.5px;
    color: var(--text-secondary);
    max-width: 620px;
    margin: 0 auto 32px;
    line-height: 1.6;
}

.hero-actions { display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; }
.hero-actions .btn { padding: 12px 24px; font-size: 14.5px; }

.section { padding: 70px 0; }
.section-header { text-align: center; max-width: 640px; margin: 0 auto 44px; }
.section-header .eyebrow { display: inline-flex; }
.section-title { font-size: clamp(24px, 3.5vw, 34px); font-weight: 800; letter-spacing: -.03em; margin: 14px 0 12px; }
.section-subtitle { color: var(--text-secondary); font-size: 15px; line-height: 1.6; }

.features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }

.feature-card {
    background: var(--bg-card);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 26px 24px;
}

.feature-card .feature-icon {
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius);
    background: var(--accent-gradient);
    color: #fff;
    font-size: 18px;
    margin-bottom: 16px;
    box-shadow: 0 6px 16px -4px rgba(109, 106, 246, .5);
}

.feature-card h3 { font-size: 15.5px; font-weight: 700; margin-bottom: 8px; }
.feature-card p { font-size: 13.5px; color: var(--text-secondary); line-height: 1.6; }

.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 18px; align-items: stretch; }

.pricing-card {
    background: var(--bg-card);
    backdrop-filter: var(--blur);
    -webkit-backdrop-filter: var(--blur);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 28px 24px;
    display: flex;
    flex-direction: column;
    position: relative;
}

.pricing-card.destaque {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px var(--accent), 0 20px 50px -20px rgba(109, 106, 246, .5);
}

.pricing-card.destaque::before {
    content: 'Mais popular';
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--accent-gradient);
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 4px 14px;
    border-radius: 20px;
    white-space: nowrap;
}

.pricing-plan-nome { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.pricing-plan-desc { font-size: 12.5px; color: var(--text-tertiary); min-height: 32px; margin-bottom: 18px; }

.pricing-price { display: flex; align-items: baseline; gap: 4px; margin-bottom: 4px; }
.pricing-price .valor { font-size: 34px; font-weight: 800; letter-spacing: -.03em; }
.pricing-price .periodo { font-size: 12.5px; color: var(--text-tertiary); }

.pricing-features { list-style: none; display: flex; flex-direction: column; gap: 10px; margin: 22px 0 24px; flex: 1; }
.pricing-features li { display: flex; align-items: center; gap: 9px; font-size: 13px; color: var(--text-secondary); }
.pricing-features li i { color: var(--success); font-size: 12px; width: 14px; }
.pricing-features li.indisponivel { color: var(--text-tertiary); text-decoration: line-through; opacity: .6; }
.pricing-features li.indisponivel i { color: var(--text-tertiary); }

.site-footer {
    border-top: 1px solid var(--border);
    padding: 30px 0;
    text-align: center;
    color: var(--text-tertiary);
    font-size: 12.5px;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 1100px) {
    .col-3 { flex: 0 0 calc(50% - 10px); }
    .col-4 { flex: 0 0 calc(50% - 10px); }
    .col-6, .col-8 { flex: 0 0 100%; }
}

@media (max-width: 860px) {
    .sidebar { transform: translateX(-100%); width: min(280px, 82vw); }
    .sidebar.active { transform: translateX(0); box-shadow: var(--shadow); }
    .main-content { margin-left: 0; }
    .mobile-menu-btn { display: flex; }
    .content { padding: 16px; }
    .topbar { padding: 14px 16px 14px 64px; flex-wrap: wrap; row-gap: 10px; }
    .row { gap: 14px; }
    .features-grid { grid-template-columns: repeat(2, 1fr); }
    .site-header { padding: 14px 20px; }
    .site-nav a:not(.btn) { display: none; }
    .hero { padding: 60px 16px 44px; }
    .site-main { padding: 0 18px; }
}

@media (max-width: 640px) {
    .col-3, .col-4 { flex: 0 0 100%; }
    .btn-user span { display: none; }
    .btn-user { padding: 7px 9px; }
    .form-actions { flex-direction: column; }
    .form-actions .btn { width: 100%; }
    .filtros-form .form-group:last-child { width: 100%; }
    .filtros-form .form-group:last-child .btn { flex: 1; }
    .stat-card { padding: 16px; }
    .table th, .table td { padding: 10px 12px; font-size: 12.5px; }
    .login-card { padding: 26px 20px; }
    .modal-content { max-width: 100%; }
    .topbar-left h1 { font-size: 19px; }
    .actions { flex-wrap: wrap; }
    .features-grid { grid-template-columns: 1fr; }
    .pricing-grid { grid-template-columns: 1fr; }
    .hero-actions .btn { width: 100%; }
    .site-header-actions .btn span { display: none; }
}
