.aff-body { background: #f4f6f9; font-family: 'Inter', sans-serif; min-height: 100vh; margin: 0; }
.aff-header { background: #07241b; padding: 0; position: sticky; top: 0; z-index: 50; }
.aff-nav { display: flex; align-items: center; justify-content: space-between; height: 70px; }
.aff-header .brand { color: #fff; font-weight: 900; letter-spacing: .04em; font-size: 1.25rem; }
.aff-nav-links { display: flex; align-items: center; gap: 22px; }
.aff-nav-links a { color: #c5d6cf; font-weight: 500; font-size: .95rem; text-decoration: none; }
.aff-nav-links a:hover { color: #fff; }
.aff-signout {
    background: rgba(109,180,138,.15); border: 1px solid rgba(109,180,138,.4);
    color: #6db48a; padding: 6px 16px; border-radius: 6px; font-weight: 600; cursor: pointer;
}
.aff-signout:hover { background: #6db48a; color: #07241b; }
.cta-btn-sm { background: #1a8b6e; color: #fff !important; padding: 8px 18px; border-radius: 999px; font-weight: 700; }
.cta-btn-sm:hover { background: #146e57; }

.aff-main { padding: 40px 0 80px; }

/* Auth forms */
.aff-card {
    max-width: 460px; margin: 40px auto; background: #fff; border-radius: 14px;
    box-shadow: 0 4px 24px rgba(0,0,0,.08); padding: 36px 32px;
}
.aff-card h1 { font-size: 1.6rem; margin: 0 0 6px; color: #07241b; }
.aff-card .sub { color: #5a6478; margin-bottom: 24px; font-size: .95rem; }
.aff-form { display: grid; gap: 14px; }
.aff-form label { display: grid; gap: 6px; font-weight: 500; font-size: .9rem; color: #07241b; }
.aff-form input, .aff-form select, .aff-form textarea {
    border: 1.5px solid #e0e4e2; border-radius: 8px; padding: 11px 14px; font: inherit; background: #fff;
}
.aff-form input:focus, .aff-form select:focus { outline: 2px solid #1a8b6e; border-color: #1a8b6e; }
.aff-btn {
    background: #1a8b6e; color: #fff; border: 0; padding: 13px 22px; border-radius: 8px;
    font-weight: 700; cursor: pointer; font-size: 1rem;
}
.aff-btn:hover { background: #146e57; }
.aff-error { background: #fee; color: #b22; padding: 10px 14px; border-radius: 8px; font-size: .9rem; }
.aff-link { color: #1a8b6e; font-weight: 600; text-decoration: none; }
.aff-link:hover { text-decoration: underline; }
.aff-foot-link { text-align: center; margin-top: 18px; font-size: .9rem; color: #5a6478; }

/* Dashboard */
.welcome-section { margin-bottom: 28px; }
.welcome-section h1 { font-size: 1.8rem; color: #07241b; margin: 0 0 6px; }
.code-badge {
    display: inline-flex; gap: 8px; align-items: center;
    background: #07241b; color: #fff; padding: 6px 16px; border-radius: 30px;
    font-size: .82rem; font-weight: 600;
}
.code-badge .code-val { color: #6db48a; font-size: .95rem; letter-spacing: .05em; }

.stats-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-bottom: 28px; }
@media (max-width: 860px) { .stats-row { grid-template-columns: repeat(2, 1fr); } }
.stat-card {
    background: #fff; border-radius: 12px; padding: 22px;
    box-shadow: 0 2px 12px rgba(0,0,0,.06); border-left: 5px solid #ccc;
}
.stat-card.blue   { border-left-color: #4a90e2; }
.stat-card.green  { border-left-color: #27ae60; }
.stat-card.purple { border-left-color: #8e44ad; }
.stat-card.orange { border-left-color: #e67e22; }
.stat-num { font-size: 2rem; font-weight: 800; color: #07241b; line-height: 1; margin-bottom: 6px; }
.stat-lbl { font-size: .78rem; font-weight: 600; color: #7f8c8d; text-transform: uppercase; letter-spacing: .05em; }

.section-card { background: #fff; border-radius: 12px; padding: 26px; margin-bottom: 22px; box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.section-card h4 { font-size: 1rem; font-weight: 700; color: #07241b; margin: 0 0 18px; padding-bottom: 12px; border-bottom: 2px solid #f0f0f0; }
.dash-grid { display: grid; grid-template-columns: 7fr 5fr; gap: 22px; }
@media (max-width: 860px) { .dash-grid { grid-template-columns: 1fr; } }

.referral-link-group { display: flex; gap: 8px; }
.referral-link-group input {
    flex: 1; border: 1.5px solid #e0e4e2; border-radius: 8px; padding: 10px 14px;
    font-size: .9rem; background: #f9f9f9;
}
.btn-copy {
    background: #07241b; color: #fff; border: 0; border-radius: 8px;
    padding: 10px 20px; font-weight: 700; cursor: pointer;
}
.btn-copy:hover { background: #1a8b6e; }

.qr-wrapper { text-align: center; }
#qrcode { display: inline-block; padding: 12px; background: #fff; border: 1.5px solid #e0e4e2; border-radius: 10px; margin-bottom: 12px; }

.ref-table { width: 100%; border-collapse: collapse; }
.ref-table th { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: #7f8c8d; font-weight: 700; text-align: left; padding: 10px 8px; border-bottom: 2px solid #f0f0f0; }
.ref-table td { font-size: .9rem; padding: 12px 8px; border-bottom: 1px solid #f4f6f9; }
.badge { padding: 3px 10px; border-radius: 20px; font-size: .75rem; font-weight: 700; }
.badge-signup { background: #eaf4fb; color: #2980b9; }
.badge-paid   { background: #eafaf1; color: #27ae60; }
.badge-status-paid   { background: #27ae60; color: #fff; }
.badge-status-unpaid { background: #f39c12; color: #fff; }
.empty-state { text-align: center; padding: 36px 20px; color: #aaa; }

/* Training */
.training-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
@media (max-width: 860px) { .training-grid { grid-template-columns: 1fr; } }
.training-card { background: #fff; border-radius: 12px; padding: 26px; box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.training-card h3 { color: #07241b; margin: 0 0 8px; font-size: 1.15rem; }
.training-card p { color: #5a6478; margin: 0 0 12px; font-size: .95rem; }

/* Landing /r/{code} */
.r-banner {
    background: linear-gradient(135deg, #07241b, #1a8b6e); color: #fff;
    padding: 14px 0; text-align: center; font-weight: 600; font-size: .95rem;
}
.r-banner .code-pill { background: rgba(255,255,255,.18); padding: 4px 12px; border-radius: 999px; margin-left: 8px; font-weight: 800; letter-spacing: .05em; }
