.btn,
.fh-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 52px;
    max-width: 100%;
    padding: 12px 18px;
    border: 1px solid transparent;
    border-radius: var(--app-radius-sm);
    text-decoration: none;
    font-weight: var(--font-weight-semibold);
    transition:
        transform var(--motion-fast) var(--ease-standard),
        box-shadow var(--motion-fast) var(--ease-standard),
        background var(--motion-fast) var(--ease-standard),
        border-color var(--motion-fast) var(--ease-standard),
        color var(--motion-fast) var(--ease-standard);
    touch-action: manipulation;
    box-shadow: var(--shadow-sm);
}

.btn:hover,
.fh-btn:hover {
    transform: translateY(-1px);
}

.fh-theme-toggle,
.landing-theme-toggle,
.auth-theme-toggle {
    position: relative;
    overflow: hidden;
}

.fh-theme-toggle::before,
.landing-theme-toggle::before,
.auth-theme-toggle::before {
    content: "☾";
    font-size: 18px;
    line-height: 1;
}

.fh-theme-toggle[data-theme-state="dark"]::before,
.landing-theme-toggle[data-theme-state="dark"]::before,
.auth-theme-toggle[data-theme-state="dark"]::before {
    content: "☀";
}

.btn.is-loading,
.btn[aria-busy="true"],
.fh-btn.is-loading,
.fh-btn[aria-busy="true"] {
    pointer-events: none;
    opacity: 0.78;
}

.btn.is-disabled,
.btn:disabled,
.fh-btn.is-disabled,
.fh-btn:disabled {
    pointer-events: none;
    opacity: 0.56;
    transform: none;
}

.btn-block,
.fh-btn-block {
    width: 100%;
}

.btn-primary,
.fh-btn-primary {
    background: linear-gradient(135deg, var(--app-primary), var(--app-primary-accent));
    color: var(--app-primary-contrast);
    box-shadow: var(--shadow-md);
}

.btn-secondary,
.fh-btn-soft {
    background: var(--color-bg-surface-soft);
    color: var(--color-primary-strong);
    border-color: var(--color-border);
}

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

.fh-badges,
.fh-inline-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.fh-badge,
.admin-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 8px 14px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: var(--font-weight-semibold);
}

.fh-badge {
    background: linear-gradient(135deg, var(--app-primary-soft), color-mix(in srgb, var(--app-primary) 18%, transparent));
    border: 1px solid color-mix(in srgb, var(--app-primary) 20%, transparent);
    color: var(--color-primary);
}

.admin-status.is-active,
.admin-status.is-live {
    background: var(--app-success-soft);
    color: var(--color-success);
}

.admin-status.is-countdown {
    background: var(--app-warning-soft);
    color: var(--color-warning);
}

.admin-status.is-ended,
.admin-status.is-inactive {
    background: var(--app-danger-soft);
    color: var(--color-danger);
}

.alert,
.fh-embedded-status,
.fh-checkout-alert {
    padding: 14px 16px;
    border-radius: var(--app-radius-sm);
    line-height: 1.8;
    font-weight: var(--font-weight-semibold);
}

.alert-success,
.fh-embedded-status.is-success {
    background: var(--app-success-soft);
    color: var(--color-success);
}

.alert-error,
.fh-embedded-status.is-error {
    background: var(--app-danger-soft);
    color: var(--color-danger);
}

.card,
.fh-card,
.auth-card,
.admin-table-card,
.landing-home .landing-home-feature-card,
.landing-home .landing-home-process-card,
.landing-home .landing-home-teacher-card,
.landing-home .landing-home-testimonial-card,
.landing-home .landing-home-faq-card {
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-md);
    background: var(--color-bg-surface);
    box-shadow: var(--shadow-md);
}

.table-wrap,
.fh-table-wrap,
.admin-data-table-wrap {
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
}

table,
.fh-table,
.admin-data-table {
    width: 100%;
    border-collapse: collapse;
}

th,
td,
.admin-data-table th,
.admin-data-table td {
    padding: 14px 12px;
    border-bottom: 1px solid var(--color-border);
    text-align: right;
    vertical-align: top;
}

thead th,
.admin-data-table thead th,
.fh-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--color-bg-surface-strong);
}

tbody tr:hover,
.admin-data-table tbody tr:hover,
.fh-table tbody tr:hover {
    background: color-mix(in srgb, var(--app-primary) 5%, transparent);
}

input,
select,
textarea {
    width: 100%;
    max-width: 100%;
    padding: 14px 16px;
    border-radius: var(--app-radius-sm);
    border: 1px solid var(--color-border);
    background: var(--color-bg-surface-soft);
    color: var(--color-text-primary);
    transition:
        border-color var(--motion-fast) var(--ease-standard),
        background var(--motion-fast) var(--ease-standard),
        box-shadow var(--motion-fast) var(--ease-standard);
}

input::placeholder,
textarea::placeholder {
    color: var(--color-text-secondary);
}

input:focus,
select:focus,
textarea:focus {
    border-color: var(--color-border-strong);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--app-primary) 18%, transparent);
    outline: none;
}

body.theme-dark .card,
body.theme-dark .fh-card,
body.theme-dark .auth-card,
body.theme-dark .admin-table-card {
    background: var(--color-bg-surface-strong);
    border-color: var(--color-border);
    box-shadow: var(--shadow-md);
}

body.theme-dark .btn-secondary,
body.theme-dark .fh-btn-soft,
body.theme-dark input,
body.theme-dark select,
body.theme-dark textarea {
    background: var(--color-bg-surface-soft);
    color: var(--color-text-primary);
    border-color: var(--color-border);
}

body.theme-dark .btn-primary,
body.theme-dark .fh-btn-primary {
    color: #031222;
}

@media (max-width: 768px) {
    .btn,
    .fh-btn,
    .fh-inline-actions {
        width: 100%;
    }
}
