/**
 * Shared ExamExplore UI — loaded on admin, student, auth, and public pages.
 * Tokens live in app-ui-shell.css. This file makes forms, buttons, and cards
 * look the same everywhere without forcing chrome buttons to a fixed size.
 */

:root {
    --ee-accent: #7367f0;
    --ee-accent-hover: #5e52d8;
    --ee-accent-soft: #8f85f4;
    --ee-control-height: 42px;
    --ee-control-radius: var(--ee-radius, 5px);
}

html,
body {
    font-family: var(--ee-font-sans);
}

body {
    color: var(--ee-ink);
}

/* ----- Form labels ----- */
label.form-label,
.ee-auth-field label,
.form-group > label,
form label[for] {
    display: block;
    margin-bottom: 0.4rem;
    color: var(--ee-ink);
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.3;
}

/* ----- Text fields (not checkboxes, radios, files, or icon buttons) ----- */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="tel"],
input[type="url"],
input[type="search"],
input[type="date"],
input[type="time"],
input[type="datetime-local"],
select,
textarea,
.form-input,
.form-control {
    min-height: var(--ee-control-height);
    border: 1px solid var(--ee-border);
    border-radius: var(--ee-control-radius) !important;
    background: var(--ee-surface);
    color: var(--ee-ink);
    font-family: inherit;
    font-size: 0.9rem !important;
    line-height: 1.4 !important;
    box-sizing: border-box !important;
}

.form-input,
.form-control,
.ee-auth-field input,
.ee-auth-field select,
.ee-auth-field textarea,
.w-full.form-input,
input.w-full,
select.w-full,
textarea.w-full {
    width: 100%;
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="tel"],
input[type="url"],
input[type="search"],
input[type="date"],
input[type="time"],
input[type="datetime-local"],
select,
.form-input,
.form-control:not(textarea) {
    height: var(--ee-control-height) !important;
    padding: 0.5rem 0.9rem !important;
}

textarea,
textarea.form-input,
textarea.form-control {
    height: auto !important;
    min-height: 6rem;
    padding: 0.65rem 0.9rem !important;
    resize: vertical;
}

input:focus,
input:focus-visible,
select:focus,
select:focus-visible,
textarea:focus,
textarea:focus-visible,
.form-input:focus,
.form-input:focus-visible,
.form-control:focus {
    outline: none !important;
    border-color: var(--ee-accent) !important;
    box-shadow: 0 0 0 3px rgba(115, 103, 240, 0.18) !important;
}

input[type="checkbox"],
input[type="radio"] {
    width: 1rem;
    height: 1rem !important;
    min-height: 1rem !important;
    padding: 0 !important;
    accent-color: var(--ee-accent);
    box-shadow: none !important;
}

/* ----- Primary / secondary actions ----- */
.btn-primary,
.ee-auth-submit,
.ee-btn,
.ee-btn-primary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: var(--ee-control-height) !important;
    height: auto !important;
    padding: 0.65rem 1rem !important;
    border: 0 !important;
    border-radius: var(--ee-control-radius) !important;
    background: var(--ee-accent) !important;
    color: #fff !important;
    font-size: 0.9rem !important;
    font-weight: 650;
    line-height: 1.3 !important;
    text-decoration: none;
    box-shadow: none !important;
    cursor: pointer;
}

.btn-primary:hover,
.ee-auth-submit:hover,
.ee-btn:hover,
.ee-btn-primary:hover {
    background: var(--ee-accent-hover) !important;
    color: #fff !important;
    transform: none;
    text-decoration: none;
}

.btn-secondary,
.ee-btn-secondary,
.ee-auth-google {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    min-height: var(--ee-control-height) !important;
    height: auto !important;
    padding: 0.6rem 1rem !important;
    border: 1px solid var(--ee-border) !important;
    border-radius: var(--ee-control-radius) !important;
    background: var(--ee-surface) !important;
    color: var(--ee-ink) !important;
    font-size: 0.9rem !important;
    font-weight: 600;
    line-height: 1.3 !important;
    text-decoration: none;
    box-shadow: none !important;
}

.btn-secondary:hover,
.ee-btn-secondary:hover,
.ee-auth-google:hover {
    background: var(--ee-surface-muted) !important;
    color: var(--ee-ink) !important;
    transform: none;
    text-decoration: none;
}

.btn-primary::before,
.btn-secondary::before {
    display: none;
}

/* Chrome / icon buttons must not inherit the 42px form-button rules from app.css */
button.ee-field-icon-btn,
button.ee-auth-toggle,
button.ee-topnav-btn,
button.sidebar-link,
.ee-field-icon-btn,
.ee-auth-toggle,
.ee-topnav-btn {
    min-height: 0 !important;
    height: auto !important;
    border-radius: inherit;
    box-shadow: none !important;
}

/* ----- Cards ----- */
.card,
.ee-auth-card,
.student-panel-card {
    background: var(--ee-surface);
    border: 1px solid var(--ee-border);
    border-radius: var(--ee-control-radius);
    box-shadow: var(--ee-shadow-sm, 0 1px 2px rgba(15, 23, 42, 0.06));
}

.card:hover,
.ee-auth-card:hover,
form .card:hover {
    transform: none;
    box-shadow: var(--ee-shadow-sm, 0 1px 2px rgba(15, 23, 42, 0.06));
}

/* ----- Links ----- */
a.ee-auth-link,
.ee-link {
    color: var(--ee-accent);
    font-weight: 600;
    text-decoration: none;
}

a.ee-auth-link:hover,
.ee-link:hover {
    color: var(--ee-accent-hover);
}

/* ----- Alerts ----- */
.ee-auth-alert-error,
.alert-danger,
.invalid-feedback {
    color: #b91c1c;
}

.ee-auth-alert-ok,
.alert-success {
    color: #166534;
}

.hidden {
    display: none !important;
}

/*
 * Tailwind responsive display utilities must beat .hidden !important
 * (e.g. hidden md:flex on nav links was keeping desktop menu invisible).
 */
@media (min-width: 640px) {
    .sm\:flex { display: flex !important; }
    .sm\:inline-flex { display: inline-flex !important; }
    .sm\:block { display: block !important; }
    .sm\:inline { display: inline !important; }
    .sm\:hidden { display: none !important; }
}

@media (min-width: 768px) {
    .md\:flex { display: flex !important; }
    .md\:inline-flex { display: inline-flex !important; }
    .md\:block { display: block !important; }
    .md\:hidden { display: none !important; }
}

@media (min-width: 1024px) {
    .lg\:flex { display: flex !important; }
    .lg\:inline-flex { display: inline-flex !important; }
    .lg\:block { display: block !important; }
    .lg\:hidden { display: none !important; }
}
