/* ACE Common Design System
   Use these shared classes for every new ACE module and screen. */

.ace-module-setup { max-width: 1250px; }

.module-group-card {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 20px;
    padding: 22px;
    margin-bottom: 18px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .05);
}

.module-group-card.core-group {
    border-color: #bfdbfe;
    background: linear-gradient(135deg, #eff6ff, #ffffff);
}

.module-group-header {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: flex-start;
    margin-bottom: 18px;
}

.module-group-title {
    display: flex;
    gap: 12px;
    align-items: center;
    font-size: 19px;
    font-weight: 750;
    color: #0f172a;
    cursor: pointer;
}

.module-group-title input,
.module-child-card input {
    accent-color: #2563eb;
}

.module-group-title input { width: 19px; height: 19px; }

.module-group-title small {
    display: inline-block;
    margin-left: 8px;
    padding: 3px 8px;
    border-radius: 20px;
    background: #dbeafe;
    color: #1d4ed8;
    font-size: 11px;
    font-weight: 700;
}

.module-group-header p {
    max-width: 470px;
    margin: 3px 0 0;
    color: #64748b;
    font-size: 14px;
}

.module-child-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}

.module-child-card {
    display: flex;
    align-items: flex-start;
    gap: 11px;
    padding: 14px;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    background: #ffffff;
    cursor: pointer;
    transition: .2s;
}

.module-child-card:hover {
    border-color: #93c5fd;
    box-shadow: 0 6px 16px rgba(37, 99, 235, .08);
}

.module-child-card.coming-soon {
    background: #f8fafc;
    opacity: .72;
    cursor: not-allowed;
}

.module-child-card input { width: 18px; height: 18px; margin: 2px 0 0; }

.module-child-text { display: flex; flex-direction: column; gap: 4px; color: #334155; }
.module-child-text strong { font-size: 14px; }
.module-child-text small { color: #64748b; font-size: 12px; }
.module-child-card.coming-soon small { color: #b45309; font-weight: 700; }

@media (max-width: 700px) {
    .module-group-header { display: block; }
    .module-group-header p { margin: 10px 0 0; }
    .module-child-grid { grid-template-columns: 1fr; }
}

/* User Management: module-aware feature permissions */
.ace-user-permissions { max-width: 1250px; }

.ace-permission-form-card {
    border-radius: 20px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .05);
}

.ace-permission-section {
    margin-top: 24px;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 20px;
    background: #ffffff;
}

.ace-permission-section-heading,
.feature-group-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.ace-permission-section-heading { margin-bottom: 16px; }
.ace-permission-section h3,
.feature-group-heading h4 { margin: 0; color: #0f172a; }
.ace-permission-section h3 { font-size: 18px; }
.ace-permission-section p { margin: 6px 0 0; color: #64748b; }

.permission-count {
    white-space: nowrap;
    padding: 5px 10px;
    border-radius: 999px;
    background: #eff6ff;
    color: #1d4ed8;
    font-size: 12px;
    font-weight: 700;
}

.ace-module-permission-card,
.feature-card {
    display: flex;
    align-items: center;
    min-height: 52px;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    background: #ffffff;
    transition: border-color .2s, box-shadow .2s;
}

.ace-module-permission-card:hover,
.feature-card:hover {
    border-color: #93c5fd;
    box-shadow: 0 5px 14px rgba(37, 99, 235, .07);
}

.ace-module-permission-card input,
.feature-card input { accent-color: #2563eb; }

.feature-permission-wrap { display: grid; gap: 16px; }

.feature-group {
    padding-top: 16px;
    border-top: 1px solid #e2e8f0;
}

.feature-group:first-child {
    padding-top: 0;
    border-top: 0;
}

.feature-group-heading { margin-bottom: 12px; }
.feature-group-heading h4 { font-size: 15px; }
.feature-group-heading span { color: #64748b; font-size: 12px; }

.feature-empty-state,
.admin-permission-note {
    margin-top: 14px;
    padding: 12px 14px;
    border-radius: 12px;
    font-size: 14px;
}

.feature-empty-state {
    border: 1px dashed #cbd5e1;
    color: #64748b;
    background: #f8fafc;
}

.admin-permission-note {
    margin: 0 0 16px;
    border: 1px solid #bfdbfe;
    color: #1e40af;
    background: #eff6ff;
}

@media (max-width: 700px) {
    .ace-permission-section-heading,
    .feature-group-heading { display: block; }
    .permission-count,
    .feature-group-heading span { display: inline-block; margin-top: 8px; }
}

/* Education: Batches */
.ace-batches-page { max-width: 1250px; }

.ace-batch-guide {
    margin: 0 0 18px;
    padding: 13px 16px;
    border: 1px solid #bfdbfe;
    border-radius: 14px;
    background: #eff6ff;
    color: #1e40af;
    font-size: 14px;
}

.ace-batch-guide.warning {
    border-color: #fde68a;
    background: #fffbeb;
    color: #92400e;
}

.ace-batch-form-card,
.ace-table-card {
    border-radius: 20px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .05);
}

.table-responsive { overflow-x: auto; }

.ace-data-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 920px;
}

.ace-data-table th,
.ace-data-table td {
    padding: 14px;
    border-bottom: 1px solid #e2e8f0;
    text-align: left;
    vertical-align: top;
}

.ace-data-table th {
    background: #f8fafc;
    color: #475569;
    font-size: 12px;
    letter-spacing: .02em;
    text-transform: uppercase;
}

.ace-data-table td { color: #334155; font-size: 14px; }
.ace-data-table td strong { display: block; color: #0f172a; }
.ace-data-table td small { display: block; margin-top: 4px; color: #64748b; }
.ace-data-table tr:last-child td { border-bottom: 0; }

.ace-table-actions { display: flex; gap: 8px; align-items: center; }
.ace-table-actions form { margin: 0; }
.btn-small { padding: 7px 10px; font-size: 12px; }
.btn-danger {
    border: 0;
    border-radius: 8px;
    padding: 8px 12px;
    cursor: pointer;
    background: #fee2e2;
    color: #b91c1c;
    font-weight: 700;
}
.btn-danger:hover { background: #fecaca; }

.ace-status {
    display: inline-block;
    padding: 4px 9px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
}

.status-active { background: #dcfce7; color: #166534; }
.status-planned { background: #dbeafe; color: #1d4ed8; }
.status-completed { background: #ede9fe; color: #6d28d9; }
.status-inactive { background: #f1f5f9; color: #64748b; }

.ace-empty-state { padding: 42px 24px; text-align: center; }
.ace-empty-state h3 { margin: 0; color: #0f172a; }
.ace-empty-state p { margin: 9px 0 20px; color: #64748b; }

/* Education: Student-to-Batch Allocation */
.ace-batch-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 0 0 18px;
}

.ace-batch-summary > div {
    padding: 15px;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    background: #ffffff;
}

.ace-batch-summary span,
.ace-batch-summary strong { display: block; }
.ace-batch-summary span { color: #64748b; font-size: 12px; }
.ace-batch-summary strong { margin-top: 5px; color: #0f172a; font-size: 14px; }

.ace-form-help { margin: 6px 0 18px; color: #64748b; font-size: 14px; }
.form-group-wide { grid-column: span 2; }

.ace-table-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 18px 0;
}
.ace-table-title h3 { margin: 0; color: #0f172a; }
.ace-table-title span { color: #64748b; font-size: 13px; }
.ace-status-form { margin: 0; }
.ace-status-form select { min-width: 110px; }

@media (max-width: 700px) {
    .ace-batch-summary { grid-template-columns: 1fr 1fr; }
    .form-group-wide { grid-column: span 1; }
}

/* Education: Batch-wise Student Attendance */
.ace-attendance-page { max-width: 1250px; }
.ace-attendance-filter-card { border-radius: 20px; box-shadow: 0 8px 24px rgba(15, 23, 42, .05); }
.attendance-filter-grid { align-items: end; }
.attendance-filter-action { margin: 0; padding-bottom: 0; }

.ace-attendance-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0;
}

.ace-attendance-summary > div {
    padding: 16px;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    background: #ffffff;
}

.ace-attendance-summary span,
.ace-attendance-summary strong { display: block; }
.ace-attendance-summary span { color: #64748b; font-size: 12px; }
.ace-attendance-summary strong { margin-top: 5px; color: #0f172a; font-size: 22px; }
.summary-present { border-color: #bbf7d0 !important; background: #f0fdf4 !important; }
.summary-present strong { color: #166534 !important; }
.summary-absent { border-color: #fecaca !important; background: #fef2f2 !important; }
.summary-absent strong { color: #b91c1c !important; }
.summary-late { border-color: #fde68a !important; background: #fffbeb !important; }
.summary-late strong { color: #a16207 !important; }

.ace-attendance-toolbar {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 18px 18px 0;
}
.ace-attendance-toolbar h3 { margin: 0; color: #0f172a; }
.ace-attendance-toolbar p { margin: 6px 0 0; color: #64748b; font-size: 14px; }
.attendance-table input { min-width: 150px; }

@media (max-width: 700px) {
    .ace-attendance-summary { grid-template-columns: 1fr 1fr; }
    .ace-attendance-toolbar { display: block; }
    .ace-attendance-toolbar .btn-secondary { margin-top: 12px; }
}

/* Education: Attendance Reports */
.ace-education-reports-page { max-width: 1350px; }
.ace-report-filter-card { border-radius: 20px; box-shadow: 0 8px 24px rgba(15, 23, 42, .05); }
.report-filter-grid { align-items: end; }
.report-filter-action { margin: 0; padding-bottom: 0; }

.ace-report-summary {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0;
}
.ace-report-summary > div {
    padding: 16px;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    background: #ffffff;
}
.ace-report-summary span,
.ace-report-summary strong { display: block; }
.ace-report-summary span { color: #64748b; font-size: 12px; }
.ace-report-summary strong { margin-top: 5px; color: #0f172a; font-size: 21px; }
.report-present { border-color: #bbf7d0 !important; background: #f0fdf4 !important; }
.report-present strong { color: #166534 !important; }
.report-absent { border-color: #fecaca !important; background: #fef2f2 !important; }
.report-absent strong { color: #b91c1c !important; }
.report-percentage { border-color: #bfdbfe !important; background: #eff6ff !important; }
.report-percentage strong { color: #1d4ed8 !important; }

.report-table-card { margin-top: 18px; }
.ace-percentage {
    display: inline-block;
    min-width: 54px;
    padding: 4px 8px;
    border-radius: 999px;
    text-align: center;
    font-weight: 700;
    font-size: 12px;
}
.percentage-good { background: #dcfce7; color: #166534; }
.percentage-medium { background: #fef3c7; color: #92400e; }
.percentage-low { background: #fee2e2; color: #b91c1c; }

@media (max-width: 900px) {
    .ace-report-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
    .ace-report-summary { grid-template-columns: 1fr 1fr; }
}

/* Admissions: course-to-batch connection */
.batch-selection-help {
    display: block;
    margin-top: 7px;
    color: #64748b;
    font-size: 12px;
}

/* Education: Website Enquiries and admission conversion */
.ace-enquiries-page { max-width: 1280px; }
.ace-enquiry-form-card { border-radius: 20px; box-shadow: 0 8px 24px rgba(15, 23, 42, .05); }
.ace-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}
.ace-form-full { grid-column: 1 / -1; }
.required-mark { color: #dc2626; }
.ace-enquiry-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    padding: 18px 18px 0;
}
.ace-enquiry-toolbar h3 { margin: 0; color: #0f172a; }
.ace-enquiry-toolbar p { margin: 6px 0 0; color: #64748b; font-size: 14px; }
.ace-search-box { position: relative; width: min(100%, 360px); }
.ace-search-box i { position: absolute; top: 50%; left: 13px; transform: translateY(-50%); color: #64748b; }
.ace-search-box input { width: 100%; padding-left: 38px; }
.ace-converted-note {
    display: inline-block;
    padding: 6px 9px;
    border-radius: 8px;
    background: #dcfce7;
    color: #166534;
    font-size: 12px;
    font-weight: 700;
}
.status-new { background: #dbeafe; color: #1d4ed8; }
.status-contacted { background: #e0e7ff; color: #4338ca; }
.status-follow-up { background: #fef3c7; color: #92400e; }
.status-converted { background: #dcfce7; color: #166534; }
.status-closed { background: #f1f5f9; color: #64748b; }

/* Student / Parent Portal */
.ace-portal-body { margin: 0; min-height: 100vh; background: #f4f7fb; color: #0f172a; font-family: Arial, sans-serif; }
.ace-portal-header { min-height: 68px; padding: 0 5%; display: flex; align-items: center; justify-content: space-between; gap: 20px; background: #0f172a; color: #fff; }
.ace-portal-brand { color: #fff; text-decoration: none; font-size: 18px; font-weight: 800; letter-spacing: .02em; }
.ace-portal-brand span { color: #60a5fa; }
.ace-portal-nav { display: flex; flex-wrap: wrap; gap: 8px; }
.ace-portal-nav a { padding: 8px 10px; border-radius: 8px; color: #dbeafe; text-decoration: none; font-size: 14px; }
.ace-portal-nav a:hover { background: #1e293b; color: #fff; }
.ace-portal-nav .portal-logout { color: #fecaca; }
.ace-portal-notice-nav { position: relative; }
.ace-portal-notice-badge { display: inline-flex; margin-left: 5px; padding: 2px 5px; align-items: center; border-radius: 999px; background: #f97316; color: #fff; font-size: 9px; font-weight: 800; letter-spacing: .03em; line-height: 1.1; vertical-align: middle; }
.ace-portal-main { max-width: 1250px; margin: 0 auto; padding: 28px 22px 46px; }
.ace-portal-main-login { display: grid; min-height: 100vh; place-items: center; padding: 24px; background: linear-gradient(135deg, #eff6ff, #eef2ff); }
.ace-portal-login-card { width: min(100%, 420px); padding: 36px; border-radius: 22px; background: #fff; box-shadow: 0 20px 55px rgba(15, 23, 42, .14); }
.ace-portal-login-icon { display: grid; width: 54px; height: 54px; place-items: center; border-radius: 16px; background: #2563eb; color: #fff; font-size: 25px; }
.ace-portal-login-card h1 { margin: 18px 0 8px; font-size: 25px; }
.ace-portal-login-card p, .ace-portal-login-card small { color: #64748b; line-height: 1.5; }
.ace-portal-login-card .form-group { margin: 18px 0; }
.ace-portal-login-card label { display: block; margin-bottom: 7px; font-weight: 700; font-size: 14px; }
.ace-portal-login-card input { width: 100%; box-sizing: border-box; }
.ace-portal-login-button { width: 100%; margin-bottom: 18px; }
.ace-portal-flash { width: min(100%, 700px); margin: 0 auto 18px; padding: 12px 14px; border-radius: 10px; }
.flash-danger { background: #fee2e2; color: #991b1b; }.flash-warning { background: #fef3c7; color: #92400e; }.flash-info { background: #dbeafe; color: #1d4ed8; }.flash-success { background: #dcfce7; color: #166534; }
.ace-portal-page-heading { margin-bottom: 20px; }.ace-portal-page-heading h1 { margin: 0; }.ace-portal-page-heading p { margin: 7px 0 0; color: #64748b; }
.ace-portal-welcome { display: flex; justify-content: space-between; gap: 20px; padding: 28px; border-radius: 20px; background: linear-gradient(135deg, #1d4ed8, #2563eb); color: #fff; }.ace-portal-welcome span { color: #bfdbfe; font-size: 13px; font-weight: 700; text-transform: uppercase; }.ace-portal-welcome h1 { margin: 9px 0 8px; }.ace-portal-welcome p { margin: 0; color: #dbeafe; }.ace-portal-student-code { align-self: flex-start; padding: 8px 12px; border-radius: 10px; background: rgba(255,255,255,.15); font-size: 13px; }
.ace-portal-stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 18px 0; }.ace-portal-stat-grid article { padding: 18px; border: 1px solid #e2e8f0; border-radius: 16px; background: #fff; }.ace-portal-stat-grid span, .ace-portal-stat-grid strong, .ace-portal-stat-grid small { display: block; }.ace-portal-stat-grid span, .ace-portal-stat-grid small { color: #64748b; font-size: 12px; }.ace-portal-stat-grid strong { margin: 8px 0 5px; color: #1d4ed8; font-size: 25px; }.ace-portal-stat-grid .portal-text-stat { font-size: 16px; color: #0f172a; }
.ace-portal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }.ace-portal-card { padding: 22px; border: 1px solid #e2e8f0; border-radius: 18px; background: #fff; box-shadow: 0 8px 24px rgba(15, 23, 42, .04); }.ace-portal-card h2 { margin: 0 0 18px; font-size: 18px; }.ace-portal-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; margin: 0; }.ace-portal-details dt { color: #64748b; font-size: 12px; }.ace-portal-details dd { margin: 5px 0 0; font-weight: 700; }.ace-portal-card-heading { display: flex; justify-content: space-between; gap: 12px; }.ace-portal-card-heading a { color: #2563eb; font-size: 13px; text-decoration: none; }.ace-portal-mini-list > div { display: flex; justify-content: space-between; align-items: center; padding: 12px 0; border-top: 1px solid #e2e8f0; }.portal-status { display: inline-block; padding: 4px 9px; border-radius: 999px; font-size: 12px; font-weight: 700; }.portal-status-present, .portal-status-paid { color: #166534; background: #dcfce7; }.portal-status-late, .portal-status-partial { color: #92400e; background: #fef3c7; }.portal-status-absent, .portal-status-pending { color: #b91c1c; background: #fee2e2; }.portal-status-leave { color: #4338ca; background: #e0e7ff; }.ace-portal-empty { color: #64748b; }.ace-portal-table-card { margin-top: 18px; }.ace-portal-fee-title { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 16px; }.ace-portal-fee-title h2 { margin-bottom: 6px; }.ace-portal-fee-title p { margin: 0; color: #64748b; }
.ace-portal-accounts-page { max-width: 1280px; }.ace-portal-account-form { margin-bottom: 18px; padding: 22px; border-radius: 18px; }.ace-portal-account-form h3 { margin-top: 0; }.ace-portal-account-table { margin-top: 18px; }.ace-inline-form { display: flex; gap: 7px; min-width: 225px; }.ace-inline-form input { min-width: 0; }

@media (max-width: 850px) { .ace-portal-header { align-items: flex-start; flex-direction: column; padding: 16px 5%; }.ace-portal-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.ace-portal-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .ace-portal-main { padding: 20px 14px 35px; }.ace-portal-login-card { padding: 26px; }.ace-portal-welcome, .ace-portal-fee-title { display: block; }.ace-portal-student-code { display: inline-block; margin-top: 18px; }.ace-portal-stat-grid, .ace-portal-details { grid-template-columns: 1fr; }.ace-portal-nav { width: 100%; }.ace-portal-nav a { padding: 7px; } }

/* Portal login redesign: clean, client-facing, responsive */
.ace-portal-main-login {
    max-width: none;
    margin: 0;
    padding: 30px;
    background: #eef3fb;
}
.ace-portal-login-shell {
    width: min(1120px, 100%);
    min-height: 640px;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(390px, .95fr);
    overflow: hidden;
    border: 1px solid rgba(148, 163, 184, .28);
    border-radius: 26px;
    background: #fff;
    box-shadow: 0 28px 70px rgba(15, 23, 42, .15);
}
.ace-portal-login-intro {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 44px 52px 34px;
    overflow: hidden;
    color: #fff;
    background: linear-gradient(145deg, #0f2f67 0%, #1855bb 52%, #3479df 100%);
}
.ace-portal-login-intro::before,
.ace-portal-login-intro::after {
    position: absolute;
    border-radius: 50%;
    content: "";
    pointer-events: none;
}
.ace-portal-login-intro::before { width: 380px; height: 380px; right: -140px; top: -120px; background: rgba(255,255,255,.08); }
.ace-portal-login-intro::after { width: 260px; height: 260px; left: -120px; bottom: -125px; border: 42px solid rgba(255,255,255,.08); }
.ace-portal-login-brand { position: relative; z-index: 1; display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 800; letter-spacing: .03em; }
.ace-portal-brand-mark { display: grid; width: 32px; height: 32px; place-items: center; border-radius: 9px; background: #fff; color: #1855bb; }
.ace-portal-login-intro-copy { position: relative; z-index: 1; max-width: 440px; margin-top: auto; }
.ace-portal-eyebrow { color: #bfdbfe; font-size: 11px; font-weight: 800; letter-spacing: .12em; }
.ace-portal-login-intro h1 { max-width: 400px; margin: 13px 0 14px; font-size: clamp(31px, 4vw, 45px); line-height: 1.12; letter-spacing: -.035em; }
.ace-portal-login-intro p { margin: 0; color: #dbeafe; font-size: 16px; line-height: 1.6; }
.ace-portal-login-benefits { position: relative; z-index: 1; display: grid; gap: 13px; margin-top: 38px; }
.ace-portal-login-benefits > div { display: flex; align-items: center; gap: 13px; padding: 11px 0; border-top: 1px solid rgba(219,234,254,.25); }
.ace-portal-login-benefits i { display: grid; width: 31px; height: 31px; place-items: center; border-radius: 9px; background: rgba(255,255,255,.14); color: #fff; }
.ace-portal-login-benefits span { display: grid; gap: 2px; color: #dbeafe; font-size: 13px; }.ace-portal-login-benefits strong { color: #fff; font-size: 14px; }
.ace-portal-login-footer { position: relative; z-index: 1; margin-top: auto !important; padding-top: 30px; color: #bfdbfe !important; font-size: 12px !important; }
.ace-portal-login-panel { display: flex; flex-direction: column; justify-content: center; padding: 52px; background: #fff; }
.ace-portal-login-panel-header { display: flex; align-items: center; gap: 15px; }.ace-portal-login-icon { width: 45px; height: 45px; flex: 0 0 45px; border-radius: 13px; background: #e8f0ff; color: #2563eb; font-size: 20px; }.ace-portal-login-panel h2 { margin: 0; color: #0f172a; font-size: 23px; letter-spacing: -.02em; }.ace-portal-login-panel-header p { margin: 5px 0 0; color: #64748b; font-size: 13px; line-height: 1.45; }
.ace-portal-login-form { margin-top: 36px; }.ace-login-field { margin-bottom: 21px; }.ace-login-field label { display: block; margin-bottom: 8px; color: #334155; font-size: 13px; font-weight: 700; }.ace-login-input-wrap { position: relative; display: flex; align-items: center; }.ace-login-input-wrap > i { position: absolute; left: 14px; color: #94a3b8; font-size: 16px; pointer-events: none; }.ace-login-input-wrap input { width: 100%; height: 47px; box-sizing: border-box; padding: 0 45px 0 42px; border: 1px solid #cbd5e1; border-radius: 11px; outline: 0; color: #0f172a; font-size: 14px; transition: border-color .2s, box-shadow .2s; }.ace-login-input-wrap input::placeholder { color: #94a3b8; }.ace-login-input-wrap input:focus { border-color: #2563eb; box-shadow: 0 0 0 4px rgba(37,99,235,.12); }.ace-password-toggle { position: absolute; right: 8px; display: grid; width: 34px; height: 34px; place-items: center; border: 0; border-radius: 8px; background: transparent; color: #64748b; cursor: pointer; }.ace-password-toggle:hover { background: #f1f5f9; color: #2563eb; }
.ace-portal-login-button { display: flex; width: 100%; height: 48px; align-items: center; justify-content: center; gap: 9px; border: 0; border-radius: 11px; background: #2563eb; color: #fff; cursor: pointer; font-size: 14px; font-weight: 700; box-shadow: 0 9px 17px rgba(37,99,235,.24); transition: transform .2s, background .2s; }.ace-portal-login-button:hover { background: #1d4ed8; transform: translateY(-1px); }.ace-portal-help { display: flex; gap: 8px; margin-top: 28px; padding-top: 19px; border-top: 1px solid #e2e8f0; color: #64748b; font-size: 12px; line-height: 1.45; }.ace-portal-help i { color: #2563eb; }

@media (max-width: 850px) { .ace-portal-main-login { padding: 20px; }.ace-portal-login-shell { grid-template-columns: 1fr; max-width: 560px; min-height: 0; }.ace-portal-login-intro { min-height: 335px; padding: 32px; }.ace-portal-login-intro-copy { margin-top: 44px; }.ace-portal-login-benefits { display: none; }.ace-portal-login-footer { display: none; }.ace-portal-login-panel { padding: 36px 32px; } }
@media (max-width: 470px) { .ace-portal-main-login { padding: 0; }.ace-portal-login-shell { min-height: 100vh; border: 0; border-radius: 0; }.ace-portal-login-intro { min-height: 285px; padding: 28px 25px; }.ace-portal-login-intro h1 { font-size: 31px; }.ace-portal-login-panel { padding: 30px 25px; }.ace-portal-login-form { margin-top: 29px; } }

/* Premium student / parent dashboard */
.ace-premium-dashboard { padding-bottom: 8px; }
.ace-portal-dashboard-hero { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 30px 34px; overflow: hidden; border-radius: 22px; color: #fff; background: linear-gradient(120deg, #12336c, #2563eb); box-shadow: 0 17px 32px rgba(30, 64, 175, .2); }
.ace-portal-dashboard-greeting { max-width: 700px; }.ace-portal-dashboard-greeting .ace-portal-eyebrow { color: #bfdbfe; }.ace-portal-dashboard-greeting h1 { margin: 9px 0; font-size: clamp(24px, 3vw, 34px); letter-spacing: -.03em; }.ace-portal-dashboard-greeting p { margin: 0; color: #dbeafe; line-height: 1.5; }.ace-portal-dashboard-greeting p strong { color: #fff; }
.ace-portal-dashboard-student { display: flex; min-width: 206px; align-items: center; gap: 12px; padding: 11px 14px; border: 1px solid rgba(255,255,255,.2); border-radius: 15px; background: rgba(15, 23, 42, .18); }.ace-portal-dashboard-student img, .ace-portal-student-avatar { width: 46px; height: 46px; border-radius: 50%; object-fit: cover; }.ace-portal-student-avatar { display: grid; place-items: center; background: #fff; color: #1d4ed8; font-weight: 800; font-size: 19px; }.ace-portal-dashboard-student strong, .ace-portal-dashboard-student span { display: block; }.ace-portal-dashboard-student strong { max-width: 130px; overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }.ace-portal-dashboard-student span { margin-top: 4px; color: #bfdbfe; font-size: 11px; }
.ace-portal-dashboard-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; margin: 18px 0; }.ace-dashboard-stat { position: relative; display: flex; gap: 13px; min-height: 106px; padding: 18px; border: 1px solid #e2e8f0; border-radius: 17px; background: #fff; box-shadow: 0 7px 20px rgba(15,23,42,.045); }.ace-dashboard-stat-icon { display: grid; width: 42px; height: 42px; flex: 0 0 42px; place-items: center; border-radius: 13px; font-size: 19px; }.stat-attendance .ace-dashboard-stat-icon { background: #dcfce7; color: #15803d; }.stat-fees .ace-dashboard-stat-icon { background: #fef3c7; color: #b45309; }.stat-course .ace-dashboard-stat-icon { background: #e0e7ff; color: #4f46e5; }.ace-dashboard-stat span, .ace-dashboard-stat small, .ace-dashboard-stat strong { display: block; }.ace-dashboard-stat span { color: #64748b; font-size: 12px; }.ace-dashboard-stat strong { margin: 4px 0; color: #0f172a; font-size: 22px; letter-spacing: -.02em; }.ace-dashboard-stat small { color: #94a3b8; font-size: 11px; line-height: 1.35; }.ace-dashboard-stat .ace-dashboard-course-name { max-width: 190px; overflow: hidden; font-size: 16px; text-overflow: ellipsis; white-space: nowrap; }.ace-dashboard-stat > a { position: absolute; top: 15px; right: 15px; color: #94a3b8; text-decoration: none; }.ace-dashboard-stat > a:hover { color: #2563eb; }
.ace-dashboard-main-grid, .ace-dashboard-bottom-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(330px, .85fr); gap: 18px; }.ace-dashboard-bottom-grid { margin-top: 18px; grid-template-columns: minmax(0, 1.2fr) minmax(310px, .8fr); }.ace-dashboard-panel { padding: 23px; border: 1px solid #e2e8f0; border-radius: 18px; background: #fff; box-shadow: 0 7px 20px rgba(15,23,42,.045); }.ace-dashboard-panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }.ace-dashboard-panel-heading h2, .ace-dashboard-actions-panel h2 { margin: 5px 0 0; color: #0f172a; font-size: 18px; letter-spacing: -.015em; }.ace-panel-kicker { color: #64748b; font-size: 10px; font-weight: 800; letter-spacing: .11em; }.ace-dashboard-panel-heading > i { display: grid; width: 35px; height: 35px; place-items: center; border-radius: 10px; background: #eff6ff; color: #2563eb; }.ace-dashboard-panel-heading > a { color: #2563eb; font-size: 12px; font-weight: 700; text-decoration: none; }
.ace-dashboard-course-body h3 { margin: 26px 0 13px; color: #1e3a8a; font-size: 20px; }.ace-dashboard-course-tags { display: flex; flex-wrap: wrap; gap: 8px; }.ace-dashboard-course-tags span { padding: 7px 9px; border-radius: 8px; background: #f1f5f9; color: #475569; font-size: 12px; }.ace-dashboard-course-tags i { margin-right: 4px; color: #2563eb; }.ace-dashboard-schedule { display: flex; align-items: flex-start; gap: 10px; margin-top: 20px; padding: 13px; border-radius: 12px; background: #f8fafc; }.ace-dashboard-schedule > i { margin-top: 2px; color: #2563eb; }.ace-dashboard-schedule strong, .ace-dashboard-schedule span { display: block; }.ace-dashboard-schedule strong { font-size: 12px; }.ace-dashboard-schedule span { margin-top: 3px; color: #64748b; font-size: 12px; line-height: 1.4; }.ace-dashboard-text-link { display: inline-flex; align-items: center; gap: 7px; margin-top: 19px; color: #2563eb; font-size: 13px; font-weight: 700; text-decoration: none; }.ace-dashboard-text-link:hover { color: #1d4ed8; }
.ace-dashboard-fee-panel { background: linear-gradient(180deg, #fff, #f8fbff); }.ace-fee-progress-values { display: flex; justify-content: space-between; gap: 18px; margin: 30px 0 15px; }.ace-fee-progress-values span, .ace-fee-progress-values strong { display: block; }.ace-fee-progress-values span { color: #64748b; font-size: 12px; }.ace-fee-progress-values strong { margin-top: 5px; color: #0f172a; font-size: 17px; }.ace-fee-progress-values div:last-child { text-align: right; }.ace-fee-progress-bar { height: 9px; overflow: hidden; border-radius: 999px; background: #dbeafe; }.ace-fee-progress-fill { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #2563eb, #60a5fa); transition: width .5s ease; }.ace-fee-progress-copy { margin: 10px 0 0; color: #64748b; font-size: 12px; }.ace-fee-progress-copy strong { color: #2563eb; }
.ace-dashboard-attendance-list { margin-top: 18px; }.ace-dashboard-attendance-row { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-top: 1px solid #edf2f7; }.ace-attendance-date { display: grid; width: 40px; height: 42px; flex: 0 0 40px; place-content: center; border-radius: 9px; background: #f1f5f9; text-align: center; }.ace-attendance-date span { color: #0f172a; font-size: 15px; font-weight: 800; }.ace-attendance-date small { color: #64748b; font-size: 10px; text-transform: uppercase; }.ace-attendance-row-info { min-width: 0; flex: 1; }.ace-attendance-row-info strong, .ace-attendance-row-info small { display: block; }.ace-attendance-row-info strong { color: #334155; font-size: 13px; }.ace-attendance-row-info small { overflow: hidden; margin-top: 3px; color: #94a3b8; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }.ace-dashboard-empty { display: grid; min-height: 160px; place-content: center; color: #94a3b8; text-align: center; }.ace-dashboard-empty i { font-size: 28px; }.ace-dashboard-empty p { font-size: 13px; }
.ace-dashboard-actions { display: grid; margin-top: 17px; }.ace-dashboard-actions a { display: flex; align-items: center; gap: 11px; padding: 12px 0; border-top: 1px solid #edf2f7; color: #334155; text-decoration: none; }.ace-dashboard-actions a > i:first-child { display: grid; width: 31px; height: 31px; flex: 0 0 31px; place-items: center; border-radius: 9px; background: #eff6ff; color: #2563eb; }.ace-dashboard-actions a > span { min-width: 0; flex: 1; }.ace-dashboard-actions strong, .ace-dashboard-actions small { display: block; }.ace-dashboard-actions strong { font-size: 13px; }.ace-dashboard-actions small { margin-top: 2px; color: #94a3b8; font-size: 11px; }.ace-dashboard-actions a > i:last-child { color: #94a3b8; font-size: 13px; }.ace-dashboard-actions a:hover strong { color: #2563eb; }
@media (max-width: 900px) { .ace-portal-dashboard-stats { grid-template-columns: 1fr; }.ace-dashboard-main-grid, .ace-dashboard-bottom-grid { grid-template-columns: 1fr; } }
@media (max-width: 620px) { .ace-portal-dashboard-hero { display: block; padding: 24px; }.ace-portal-dashboard-student { width: fit-content; margin-top: 22px; }.ace-dashboard-panel { padding: 18px; }.ace-dashboard-course-body h3 { margin-top: 22px; font-size: 18px; }.ace-dashboard-stat { padding: 15px; } }

/* Student / Parent Portal Notices */
.ace-portal-notices-page { max-width: 900px; }.ace-portal-notice-list { display: grid; gap: 14px; }.ace-portal-notice-card { display: flex; gap: 16px; padding: 21px; border: 1px solid #dbeafe; border-radius: 17px; background: #fff; box-shadow: 0 8px 22px rgba(15, 23, 42, .045); }.ace-notice-icon { display: grid; width: 40px; height: 40px; flex: 0 0 40px; place-items: center; border-radius: 12px; background: #eff6ff; color: #2563eb; font-size: 18px; }.ace-notice-content { min-width: 0; flex: 1; }.ace-notice-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }.ace-notice-title-row h2 { margin: 0; color: #0f172a; font-size: 17px; }.ace-notice-title-row span { flex: 0 0 auto; color: #64748b; font-size: 12px; }.ace-notice-content p { margin: 10px 0 14px; color: #475569; font-size: 14px; line-height: 1.6; white-space: pre-line; }.ace-notice-meta { display: flex; flex-wrap: wrap; gap: 12px; color: #64748b; font-size: 12px; }.ace-notice-meta i { color: #2563eb; }.ace-portal-notice-empty { min-height: 280px; border: 1px dashed #cbd5e1; border-radius: 18px; background: #fff; }.ace-portal-notice-empty h2 { margin: 12px 0 0; color: #334155; font-size: 18px; }.ace-portal-notice-empty p { margin-top: 6px; }
.ace-notice-management-page { max-width: 1280px; }.ace-portal-page-actions { display: flex; flex-wrap: wrap; gap: 9px; }.ace-notice-form-card { padding: 23px; border-radius: 18px; }.ace-notice-scope-field { grid-column: span 2; }.ace-notice-toolbar { padding: 18px 18px 0; }.ace-notice-toolbar h3 { margin: 0; color: #0f172a; }.ace-notice-toolbar p { margin: 6px 0 0; color: #64748b; font-size: 13px; }.ace-notice-table td { max-width: 300px; }.ace-notice-table td small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.ace-notice-all { display: inline-block; padding: 5px 8px; border-radius: 7px; background: #eff6ff; color: #1d4ed8; font-size: 12px; font-weight: 700; }
@media (max-width: 620px) { .ace-portal-notice-card { padding: 17px; }.ace-notice-title-row { display: block; }.ace-notice-title-row span { display: block; margin-top: 7px; }.ace-notice-scope-field { grid-column: span 1; } }

@media (max-width: 700px) {
    .ace-form-grid { grid-template-columns: 1fr; }
    .ace-form-full { grid-column: span 1; }
    .ace-enquiry-toolbar { display: block; }
    .ace-search-box { width: 100%; margin-top: 14px; }
}

/* Education: Examination & Results */
.ace-exam-page { max-width: 1250px; }
.ace-exam-form-page { max-width: 900px; }
.ace-exam-form-card { border-radius: 20px; padding: 24px; box-shadow: 0 8px 24px rgba(15, 23, 42, .05); }
.ace-exam-form-card h3 { margin: 0; color: #0f172a; }
.ace-exam-form-card > p { margin: 6px 0 20px; color: #64748b; }
.ace-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.ace-form-span-2 { grid-column: span 2; }
.ace-form-grid .form-group { margin: 0; }
.ace-form-grid label { display: block; margin-bottom: 7px; font-size: 13px; font-weight: 700; color: #334155; }
.ace-form-grid input, .ace-form-grid select { box-sizing: border-box; width: 100%; min-height: 42px; border: 1px solid #cbd5e1; border-radius: 10px; padding: 9px 11px; background: #fff; color: #0f172a; }
.ace-form-grid input:focus, .ace-form-grid select:focus { outline: 0; border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37, 99, 235, .12); }
.ace-form-actions { display: flex; gap: 10px; align-items: center; margin-top: 6px; }
.ace-exam-toolbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 20px 20px 0; }
.ace-exam-toolbar h3 { margin: 0; color: #0f172a; font-size: 18px; }
.ace-exam-toolbar p { margin: 5px 0 0; color: #64748b; font-size: 13px; }
.ace-exam-table td small, .ace-result-table td small { display: block; margin-top: 4px; color: #64748b; font-size: 12px; }
.ace-exam-table td, .ace-subject-table td, .ace-marks-table td, .ace-result-table td { vertical-align: middle; }
.ace-action-links { display: flex; gap: 9px; flex-wrap: wrap; }
.ace-action-links a { color: #2563eb; font-size: 13px; font-weight: 700; text-decoration: none; }
.ace-action-links a:hover { text-decoration: underline; }
.ace-result-status { display: inline-flex; align-items: center; border-radius: 999px; padding: 5px 10px; font-size: 12px; font-weight: 750; }
.status-draft { background: #fff7ed; color: #c2410c; }
.status-published { background: #dcfce7; color: #15803d; }
.ace-exam-steps { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 18px; }
.ace-exam-steps span { border-radius: 999px; padding: 7px 11px; background: #f1f5f9; color: #64748b; font-size: 12px; font-weight: 700; }
.ace-exam-steps .is-active { background: #dbeafe; color: #1d4ed8; }
.ace-exam-split { display: grid; grid-template-columns: minmax(280px, .8fr) minmax(0, 1.2fr); gap: 18px; align-items: start; }
.ace-subject-table, .ace-marks-table, .ace-result-table { min-width: 640px; }
.btn-link-danger { border: 0; background: none; padding: 0; color: #dc2626; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.ace-subject-tabs { display: flex; gap: 8px; overflow-x: auto; margin-bottom: 16px; padding-bottom: 3px; }
.ace-subject-tabs a { flex: 0 0 auto; border: 1px solid #e2e8f0; border-radius: 10px; background: #fff; color: #475569; padding: 9px 12px; font-size: 13px; font-weight: 700; text-decoration: none; }
.ace-subject-tabs a.active { border-color: #2563eb; background: #eff6ff; color: #1d4ed8; }
.ace-marks-input { box-sizing: border-box; width: 118px; border: 1px solid #cbd5e1; border-radius: 8px; padding: 8px; }
.ace-marks-input:disabled { background: #f1f5f9; color: #94a3b8; }
.ace-absent-check { display: inline-flex; align-items: center; gap: 7px; color: #475569; font-size: 13px; }
.ace-result-summary { display: flex; align-items: center; justify-content: space-between; gap: 18px; border-radius: 20px; padding: 20px 22px; margin-bottom: 18px; box-shadow: 0 8px 24px rgba(15, 23, 42, .05); }
.ace-result-summary h3 { margin: 10px 0 5px; color: #0f172a; font-size: 17px; }
.ace-result-summary p { margin: 0; color: #64748b; font-size: 13px; }
.ace-student-result { display: inline-flex; min-width: 52px; justify-content: center; border-radius: 999px; padding: 5px 9px; font-size: 12px; font-weight: 750; }
.result-pass { color: #15803d; background: #dcfce7; }
.result-fail { color: #b91c1c; background: #fee2e2; }
.result-pending { color: #a16207; background: #fef3c7; }

/* Student / Parent Portal: Results */
.ace-portal-results-list { display: grid; gap: 18px; }
.ace-portal-result-card { overflow: hidden; border: 1px solid #e2e8f0; border-radius: 20px; background: #fff; box-shadow: 0 10px 26px rgba(15, 23, 42, .06); }
.ace-portal-result-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 22px; border-bottom: 1px solid #eef2f7; }
.ace-portal-result-card h2 { margin: 6px 0 5px; color: #0f172a; font-size: 21px; }
.ace-portal-result-card p { margin: 0; color: #64748b; font-size: 14px; }
.ace-portal-result-score { display: grid; justify-items: end; gap: 7px; }
.ace-portal-result-score > strong { color: #1d4ed8; font-size: 25px; }
.ace-portal-result { display: inline-flex; justify-content: center; border-radius: 999px; padding: 4px 9px; font-size: 11px; font-weight: 800; }
.ace-portal-result.is-pass { color: #15803d; background: #dcfce7; }
.ace-portal-result.is-fail { color: #b91c1c; background: #fee2e2; }
.ace-portal-result-total { display: flex; justify-content: space-between; padding: 14px 22px; color: #475569; background: #f8fafc; font-size: 14px; }
.ace-portal-result-total strong { color: #0f172a; }
.ace-portal-subject-list { padding: 5px 22px; }
.ace-portal-subject-row { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 14px 0; border-bottom: 1px solid #eef2f7; }
.ace-portal-subject-row:last-child { border-bottom: 0; }
.ace-portal-subject-row strong { display: block; color: #1e293b; font-size: 14px; }
.ace-portal-subject-row small { color: #94a3b8; font-size: 12px; }
.ace-portal-subject-score { display: grid; justify-items: end; gap: 5px; text-align: right; }
.ace-portal-empty { border: 1px dashed #cbd5e1; border-radius: 20px; padding: 40px 24px; text-align: center; background: #fff; }
.ace-portal-empty i { color: #94a3b8; font-size: 32px; }
.ace-portal-empty h2 { margin: 12px 0 7px; color: #0f172a; font-size: 19px; }
.ace-portal-empty p { margin: 0; color: #64748b; }

@media (max-width: 780px) {
    .ace-form-grid, .ace-exam-split { grid-template-columns: 1fr; }
    .ace-form-span-2 { grid-column: span 1; }
    .ace-exam-toolbar, .ace-result-summary, .ace-portal-result-card-head { align-items: stretch; flex-direction: column; }
    .ace-portal-result-score { justify-items: start; }
    .ace-portal-subject-list { padding: 5px 16px; }
    .ace-portal-result-card-head, .ace-portal-result-total { padding-left: 16px; padding-right: 16px; }
}

/* Education: Online MCQ Exams */
.ace-page-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.ace-form-grid textarea { box-sizing: border-box; width: 100%; min-height: 92px; border: 1px solid #cbd5e1; border-radius: 10px; padding: 10px 11px; font: inherit; color: #0f172a; resize: vertical; }
.ace-form-grid textarea:focus { outline: 0; border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37, 99, 235, .12); }
.ace-online-question-list { display: grid; gap: 12px; padding: 18px; }
.ace-online-question { padding: 16px; border: 1px solid #e2e8f0; border-radius: 13px; background: #fff; }
.ace-online-question-head { display: flex; gap: 12px; justify-content: space-between; align-items: flex-start; color: #1e293b; font-size: 14px; line-height: 1.45; }
.ace-question-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 10px; }
.ace-question-actions a { color: #2563eb; font-size: 13px; font-weight: 700; text-decoration: none; }
.ace-question-actions a:hover { text-decoration: underline; }
.ace-online-question-options { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 13px 0 10px; }
.ace-online-question-options span { padding: 8px 10px; border-radius: 8px; background: #f8fafc; color: #475569; font-size: 12px; }
.ace-online-question-options .is-correct { background: #dcfce7; color: #15803d; }
.ace-online-question > small { color: #64748b; font-size: 12px; }

/* Student / Parent Portal: Online Exams */
.ace-portal-online-exam-list { display: grid; gap: 16px; }
.ace-portal-online-exam-card { display: flex; justify-content: space-between; gap: 20px; padding: 22px; border: 1px solid #e2e8f0; border-radius: 19px; background: #fff; box-shadow: 0 8px 22px rgba(15, 23, 42, .05); }
.ace-portal-online-exam-main { min-width: 0; }
.ace-portal-online-exam-main h2 { margin: 6px 0 5px; color: #0f172a; font-size: 20px; }
.ace-portal-online-exam-main > p { margin: 0; color: #64748b; font-size: 14px; }
.ace-portal-exam-meta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 15px; color: #64748b; font-size: 12px; }
.ace-portal-exam-meta i { color: #2563eb; margin-right: 4px; }
.ace-portal-online-exam-action { display: grid; min-width: 160px; align-content: center; justify-items: end; gap: 9px; text-align: right; }
.ace-portal-online-exam-action > strong { color: #0f172a; font-size: 16px; }
.ace-portal-online-exam-action form { width: 100%; }
.ace-portal-online-exam-action .ace-portal-login-button { height: 40px; padding: 0 14px; text-decoration: none; }
.ace-portal-exam-state { display: inline-flex; width: fit-content; border-radius: 999px; padding: 5px 9px; background: #f1f5f9; color: #64748b; font-size: 11px; font-weight: 800; }
.ace-portal-exam-state.is-live { background: #dcfce7; color: #15803d; }
.ace-portal-exam-state.is-complete { background: #dbeafe; color: #1d4ed8; }
.ace-portal-text-link { color: #2563eb; font-size: 12px; font-weight: 750; text-decoration: none; }
.ace-portal-test-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 24px; border-radius: 20px; background: linear-gradient(120deg, #12336c, #2563eb); color: #fff; box-shadow: 0 16px 30px rgba(30,64,175,.18); }
.ace-portal-test-header .ace-portal-eyebrow { color: #bfdbfe; }
.ace-portal-test-header h1 { margin: 8px 0 5px; font-size: 25px; letter-spacing: -.025em; }
.ace-portal-test-header p { margin: 0; color: #dbeafe; font-size: 13px; }
.ace-portal-test-timer { display: grid; min-width: 150px; justify-items: center; gap: 5px; padding: 12px 15px; border: 1px solid rgba(255,255,255,.2); border-radius: 14px; background: rgba(15, 23, 42, .18); }
.ace-portal-test-timer span, .ace-portal-test-timer small { color: #dbeafe; font-size: 11px; }
.ace-portal-test-timer strong { font-size: 26px; letter-spacing: .07em; }
.ace-portal-test-timer strong.is-ending { color: #fecaca; }
.ace-portal-test-instructions { display: flex; gap: 12px; margin: 16px 0; padding: 16px; border: 1px solid #bfdbfe; border-radius: 15px; background: #eff6ff; color: #1e40af; }
.ace-portal-test-instructions > i { margin-top: 2px; font-size: 18px; }
.ace-portal-test-instructions strong { font-size: 13px; }
.ace-portal-test-instructions p { margin: 4px 0 0; color: #1e3a8a; font-size: 13px; line-height: 1.5; white-space: pre-line; }
.ace-portal-test-form { display: grid; gap: 15px; }
.ace-portal-question-card { padding: 21px; border: 1px solid #e2e8f0; border-radius: 18px; background: #fff; box-shadow: 0 7px 20px rgba(15,23,42,.04); }
.ace-portal-question-number { display: flex; justify-content: space-between; gap: 12px; color: #2563eb; font-size: 12px; font-weight: 800; }
.ace-portal-question-number span { color: #64748b; }
.ace-portal-question-card h2 { margin: 12px 0 17px; color: #1e293b; font-size: 17px; line-height: 1.5; }
.ace-portal-option-grid { display: grid; gap: 9px; }
.ace-portal-option { cursor: pointer; }
.ace-portal-option input { position: absolute; opacity: 0; pointer-events: none; }
.ace-portal-option span { display: flex; gap: 11px; align-items: center; padding: 12px; border: 1px solid #dbe3ee; border-radius: 11px; color: #475569; font-size: 14px; transition: .18s; }
.ace-portal-option span b { display: grid; width: 25px; height: 25px; flex: 0 0 25px; place-items: center; border-radius: 50%; background: #f1f5f9; color: #64748b; font-size: 11px; }
.ace-portal-option:hover span { border-color: #93c5fd; background: #f8fbff; }
.ace-portal-option input:checked + span { border-color: #2563eb; background: #eff6ff; color: #1e3a8a; }
.ace-portal-option input:checked + span b { background: #2563eb; color: #fff; }
.ace-portal-submit-bar { position: sticky; bottom: 12px; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 16px 18px; border: 1px solid #bfdbfe; border-radius: 16px; background: rgba(255,255,255,.96); box-shadow: 0 10px 28px rgba(15,23,42,.12); backdrop-filter: blur(8px); }
.ace-portal-submit-bar strong { display: block; color: #0f172a; font-size: 14px; }
.ace-portal-submit-bar p { margin: 4px 0 0; color: #64748b; font-size: 12px; }
.ace-portal-submit-bar .ace-portal-login-button { width: auto; min-width: 145px; padding: 0 16px; }
.ace-portal-complete-card { max-width: 620px; margin: 30px auto; padding: 36px 30px; border: 1px solid #e2e8f0; border-radius: 23px; background: #fff; box-shadow: 0 16px 38px rgba(15,23,42,.08); text-align: center; }
.ace-portal-complete-icon { display: grid; width: 60px; height: 60px; place-items: center; margin: 0 auto 17px; border-radius: 18px; font-size: 28px; }
.ace-portal-complete-icon.is-pass { background: #dcfce7; color: #15803d; }
.ace-portal-complete-icon.is-fail { background: #eff6ff; color: #2563eb; }
.ace-portal-complete-card > .ace-portal-eyebrow { color: #2563eb; }
.ace-portal-complete-card h1 { margin: 8px 0; color: #0f172a; font-size: 24px; }
.ace-portal-complete-card > p { margin: 0; color: #64748b; font-size: 14px; }
.ace-portal-score-display { display: grid; gap: 7px; margin: 25px 0 17px; padding: 20px; border-radius: 16px; background: #f8fafc; }
.ace-portal-score-display span { color: #64748b; font-size: 12px; }
.ace-portal-score-display strong { color: #0f172a; font-size: 30px; }
.ace-portal-score-display em { justify-self: center; font-style: normal; }
.ace-portal-complete-meta { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px 18px; color: #64748b; font-size: 12px; }
.ace-portal-back-button { width: auto; margin: 25px auto 0; padding: 0 18px; text-decoration: none; }

@media (max-width: 720px) {
    .ace-portal-online-exam-card, .ace-portal-test-header, .ace-portal-submit-bar { align-items: stretch; flex-direction: column; }
    .ace-portal-online-exam-action { justify-items: start; text-align: left; }
    .ace-portal-test-timer { width: fit-content; justify-items: start; }
    .ace-portal-submit-bar .ace-portal-login-button { width: 100%; }
    .ace-online-question-options { grid-template-columns: 1fr; }
}

/* Student / Parent Portal: Unified Results & Fee Alerts */
.ace-portal-result-badge, .ace-portal-alert-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 14px; margin-left: 5px; padding: 2px 5px; border-radius: 999px; color: #fff; font-size: 9px; font-weight: 800; letter-spacing: .03em; line-height: 1.1; vertical-align: middle; }
.ace-portal-result-badge { background: #7c3aed; }
.ace-portal-alert-badge { background: #dc2626; }
.ace-fee-popup-backdrop { position: fixed; z-index: 1100; inset: 0; display: grid; place-items: center; padding: 20px; background: rgba(15, 23, 42, .58); animation: aceFeePopupFade .2s ease; }
.ace-fee-popup-backdrop.is-closing { animation: aceFeePopupFadeOut .18s ease forwards; }
.ace-fee-popup-card { position: relative; width: min(100%, 530px); max-height: min(680px, calc(100vh - 40px)); overflow: auto; padding: 29px; border: 1px solid #fde68a; border-radius: 22px; background: #fff; box-shadow: 0 24px 65px rgba(15,23,42,.34); animation: aceFeePopupRise .24s ease; }
.ace-fee-popup-card.is-overdue { border-color: #fecaca; }.ace-fee-popup-close { position: absolute; top: 14px; right: 14px; display: grid; width: 33px; height: 33px; place-items: center; border: 0; border-radius: 10px; background: #f1f5f9; color: #475569; cursor: pointer; }.ace-fee-popup-close:hover { background: #e2e8f0; }
.ace-fee-popup-icon { display: grid; width: 47px; height: 47px; place-items: center; border-radius: 15px; background: #fef3c7; color: #b45309; font-size: 22px; }.ace-fee-popup-card.is-overdue .ace-fee-popup-icon { background: #fee2e2; color: #dc2626; }
.ace-fee-popup-kicker { display: block; margin-top: 18px; color: #b45309; font-size: 10px; font-weight: 850; letter-spacing: .12em; }.ace-fee-popup-card.is-overdue .ace-fee-popup-kicker { color: #dc2626; }.ace-fee-popup-card h2 { margin: 6px 0 7px; color: #78350f; font-size: 23px; letter-spacing: -.025em; }.ace-fee-popup-card.is-overdue h2 { color: #991b1b; }.ace-fee-popup-card > p { margin: 0; color: #64748b; font-size: 13px; line-height: 1.55; }
.ace-fee-popup-items { display: grid; gap: 9px; margin-top: 20px; }.ace-fee-popup-item { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px; border: 1px solid #fde68a; border-radius: 13px; background: #fffbeb; }.ace-fee-popup-item.is-overdue { border-color: #fecaca; background: #fff7f7; }.ace-fee-popup-item strong, .ace-fee-popup-item span { display: block; }.ace-fee-popup-item strong { color: #78350f; font-size: 13px; }.ace-fee-popup-item.is-overdue strong { color: #991b1b; }.ace-fee-popup-item span { margin-top: 4px; color: #a16207; font-size: 11px; }.ace-fee-popup-item.is-overdue span { color: #b91c1c; }.ace-fee-popup-item em { flex: 0 0 auto; color: #b45309; font-size: 11px; font-style: normal; font-weight: 800; text-align: right; }.ace-fee-popup-item.is-overdue em { color: #dc2626; }
.ace-fee-popup-actions { display: flex; align-items: center; justify-content: flex-end; gap: 17px; margin-top: 23px; }.ace-fee-popup-actions a { padding: 10px 14px; border-radius: 10px; background: #2563eb; color: #fff; font-size: 12px; font-weight: 800; text-decoration: none; }.ace-fee-popup-actions a:hover { background: #1d4ed8; }.ace-fee-popup-later { border: 0; background: transparent; color: #64748b; font-size: 12px; font-weight: 750; cursor: pointer; }.ace-fee-popup-later:hover { color: #0f172a; }
@keyframes aceFeePopupFade { from { opacity: 0; } to { opacity: 1; } } @keyframes aceFeePopupFadeOut { from { opacity: 1; } to { opacity: 0; } } @keyframes aceFeePopupRise { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }
.ace-portal-result-section-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin: 10px 0 0; padding: 19px 20px; border: 1px solid #e2e8f0; border-left: 5px solid #2563eb; border-radius: 17px; background: #fff; }
.ace-portal-result-section-head.online { border-left-color: #7c3aed; }
.ace-portal-result-section-head .ace-portal-eyebrow { color: #2563eb; }
.ace-portal-result-section-head.online .ace-portal-eyebrow { color: #7c3aed; }
.ace-portal-result-section-head h2 { margin: 6px 0 4px; color: #0f172a; font-size: 18px; }
.ace-portal-result-section-head p { margin: 0; color: #64748b; font-size: 13px; }
.ace-portal-result-section-head > a { color: #2563eb; font-size: 12px; font-weight: 750; text-decoration: none; }
.ace-portal-online-result-card { border-color: #e9d5ff; }
.ace-portal-online-result-card .ace-portal-result-score > strong { color: #7c3aed; }
.ace-portal-academic-alert { display: flex; align-items: center; gap: 13px; margin: 16px 0; padding: 16px; border: 1px solid #ddd6fe; border-radius: 15px; background: #f5f3ff; }
.ace-portal-academic-alert > i { display: grid; width: 36px; height: 36px; flex: 0 0 36px; place-items: center; border-radius: 11px; background: #ede9fe; color: #7c3aed; font-size: 17px; }
.ace-portal-academic-alert div { min-width: 0; flex: 1; }
.ace-portal-academic-alert strong { display: block; color: #4c1d95; font-size: 14px; }
.ace-portal-academic-alert p { margin: 4px 0 0; color: #6d28d9; font-size: 12px; }
.ace-portal-academic-alert a { color: #6d28d9; font-size: 12px; font-weight: 800; text-decoration: none; }
.ace-portal-fee-alert-list { display: grid; gap: 14px; }
.ace-portal-fee-alert { display: flex; align-items: center; gap: 15px; padding: 19px; border: 1px solid #fde68a; border-radius: 17px; background: #fffbeb; }
.ace-portal-fee-alert.alert-overdue { border-color: #fecaca; background: #fff7f7; }
.ace-portal-fee-alert-icon { display: grid; width: 41px; height: 41px; flex: 0 0 41px; place-items: center; border-radius: 12px; background: #fef3c7; color: #b45309; font-size: 19px; }
.alert-overdue .ace-portal-fee-alert-icon { background: #fee2e2; color: #dc2626; }
.ace-portal-fee-alert-content { min-width: 0; flex: 1; }
.ace-portal-fee-alert-content > span { color: #b45309; font-size: 11px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.alert-overdue .ace-portal-fee-alert-content > span { color: #dc2626; }
.ace-portal-fee-alert h2 { margin: 5px 0 4px; color: #78350f; font-size: 16px; }
.alert-overdue h2 { color: #991b1b; }
.ace-portal-fee-alert p { margin: 0; color: #92400e; font-size: 13px; }
.alert-overdue p { color: #b91c1c; }
.ace-portal-fee-alert small { display: block; margin-top: 7px; color: #a16207; font-size: 12px; line-height: 1.4; }
.alert-overdue small { color: #b91c1c; }
.ace-portal-fee-alert-action { color: #92400e; font-size: 12px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.alert-overdue .ace-portal-fee-alert-action { color: #b91c1c; }
.ace-dashboard-fee-alerts { margin: 18px 0; padding: 19px; border: 1px solid #fde68a; border-radius: 18px; background: #fffbeb; }
.ace-dashboard-alert-heading { display: flex; align-items: end; justify-content: space-between; gap: 14px; margin-bottom: 10px; }
.ace-dashboard-alert-heading h2 { margin: 5px 0 0; color: #78350f; font-size: 17px; }
.ace-dashboard-alert-heading > a { color: #b45309; font-size: 12px; font-weight: 800; text-decoration: none; }
.ace-dashboard-fee-alert { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid #fde68a; }
.ace-dashboard-fee-alert > i { display: grid; width: 33px; height: 33px; flex: 0 0 33px; place-items: center; border-radius: 10px; background: #fef3c7; color: #b45309; }
.ace-dashboard-fee-alert > div { min-width: 0; flex: 1; }
.ace-dashboard-fee-alert strong, .ace-dashboard-fee-alert span { display: block; }
.ace-dashboard-fee-alert strong { color: #78350f; font-size: 13px; }
.ace-dashboard-fee-alert span { margin-top: 3px; color: #a16207; font-size: 12px; line-height: 1.4; }
.ace-dashboard-fee-alert > a { color: #b45309; font-size: 12px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.ace-dashboard-fee-alert.is-overdue { border-color: #fecaca; }
.ace-dashboard-fee-alert.is-overdue > i { background: #fee2e2; color: #dc2626; }
.ace-dashboard-fee-alert.is-overdue strong { color: #991b1b; }
.ace-dashboard-fee-alert.is-overdue span, .ace-dashboard-fee-alert.is-overdue > a { color: #b91c1c; }

@media (max-width: 720px) {
    .ace-portal-result-section-head, .ace-portal-fee-alert, .ace-portal-academic-alert { align-items: flex-start; flex-direction: column; }
    .ace-portal-fee-alert-action { margin-left: 56px; }
    .ace-dashboard-fee-alert { align-items: flex-start; flex-wrap: wrap; }
    .ace-dashboard-fee-alert > a { margin-left: 45px; }
    .ace-fee-popup-card { padding: 25px 19px 19px; border-radius: 19px; }.ace-fee-popup-item { align-items: flex-start; flex-direction: column; }.ace-fee-popup-item em { text-align: left; }.ace-fee-popup-actions { justify-content: space-between; gap: 9px; }.ace-fee-popup-actions a { white-space: nowrap; }
}

.fp-count{padding:10px 14px;border-radius:12px;background:#eaf1ff;color:#2458cb;font-weight:750}.fp-list{display:grid;gap:16px}.fp-card{background:#fff;border:1px solid #e4eaf3;border-radius:18px;overflow:hidden;box-shadow:0 9px 25px rgba(15,23,42,.055)}.fp-top{padding:16px 20px;border-bottom:1px solid #edf1f7;display:flex;align-items:center;justify-content:space-between}.fp-top span,.fp-grid small{display:block;font-size:10px;letter-spacing:1px;color:#7b899d;font-weight:800}.fp-top strong{display:block;margin-top:4px;color:#1d2a40}.fp-status{padding:6px 11px;border-radius:999px;font-size:12px}.fp-status.submitted{background:#fff2d8;color:#a86000}.fp-status.verified{background:#dcfce7;color:#16803d}.fp-grid{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:20px;padding:20px;align-items:center}.fp-grid strong,.fp-grid span,.fp-grid a{display:block;margin-top:6px}.fp-grid strong{color:#1d2a40}.fp-grid span{color:#65758c}.fp-grid a{color:#2563eb;font-weight:700}.fp-verify{border:0;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;padding:12px 15px;border-radius:10px;font-weight:750;white-space:nowrap}.fp-done{color:#15803d;font-weight:750}@media(max-width:850px){.fp-grid{grid-template-columns:1fr 1fr}.fp-action{justify-self:start}}@media(max-width:550px){.fp-grid{grid-template-columns:1fr}.fp-top{align-items:flex-start;gap:8px;flex-direction:column}}
