/* Shared IELTS components. Color defaults follow the installed Precivian theme. */
.ielts-ui {
  --ielts-navy:var(--precivian-navy,#102e5c); --ielts-blue:var(--precivian-blue,#2f63dd);
  --ielts-teal:#259cb7; --ielts-green:#16865c; --ielts-bg:#f5f8fc; --ielts-border:#dbe4ef;
  --ielts-ink:#172033; --ielts-muted:#5e6d80; --ielts-radius:12px;
  --ielts-space-1:4px; --ielts-space-2:8px; --ielts-space-3:12px; --ielts-space-4:16px; --ielts-space-6:24px;
  font-family:Inter,"Helvetica Neue",Arial,sans-serif; font-size:15px; line-height:1.5; color:var(--ielts-ink);
}
.ielts-ui *, .ielts-ui *::before, .ielts-ui *::after { box-sizing:border-box; }
.ielts-ui :is(h1,h2,h3,h4) { color:var(--ielts-navy); line-height:1.25; overflow-wrap:anywhere; letter-spacing:normal; }
.ielts-ui h1 { font-size:28px; font-weight:700; }
.ielts-ui h2 { font-size:21px; font-weight:650; }
.ielts-ui h3 { font-size:18px; font-weight:650; }
.ielts-ui :is(input,select,textarea,button) { font-family:inherit; }
.ielts-ui:not(.page-container) :is(.form-control,.portal-list-search,.portal-list-page-size) { font-size:14px; line-height:1.4; min-height:40px; border-radius:8px; }
.ielts-ui:not(.page-container) :is(input,textarea)::placeholder { color:#78869a; font-size:14px; font-weight:400; letter-spacing:normal; }
.ielts-ui :is(label,.control-label,.ai-field label) { font-size:13px; font-weight:600; letter-spacing:normal; }
.ielts-ui:not(.page-container) :is(.btn,.ielts-button,.text-link) { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:40px; padding:8px 14px; font-size:14px; font-weight:600; line-height:1.35; border-radius:8px; white-space:normal; text-align:center; text-decoration:none!important; }
.ielts-ui :is(.btn-default,.ielts-button.secondary,.ielts-button.outline) { background:#fff; color:var(--ielts-navy); border:1px solid var(--ielts-border); }
.ielts-ui .ielts-button.outline { background:#fff!important; color:var(--ielts-navy)!important; border:1px solid var(--ielts-border)!important; }
.ielts-ui :is(.btn-primary,.ielts-button:not(.secondary):not(.outline)) { background:var(--ielts-blue); color:#fff; border:1px solid var(--ielts-blue); }
.ielts-ui :is(.btn,.ielts-button):disabled { opacity:.55; cursor:not-allowed; transform:none; }
.ielts-ui :is(a,button,input,select,textarea,summary):focus-visible { outline:3px solid #2563eb80; outline-offset:3px; }
.ielts-ui :is(.eyebrow,.portal-eyebrow,.wbv-eyebrow,.ai-settings-eyebrow,.ielts-form-eyebrow) { font-size:11px!important; letter-spacing:.05em; font-weight:600; }
.ielts-ui :is(.status-pill,.wbv-badge,.dashboard-status) { font-size:12px; font-weight:600; letter-spacing:normal; }
.ielts-ui :is(.portal-card,.portal-panel,.portal-table-card,.ielts-card,.ai-settings-card) { border-radius:var(--ielts-radius); box-shadow:0 2px 8px #0b1f3a06; padding:20px; min-width:0; }
.ielts-ui :is(.portal-data-table,.wbv-table,.dashboard-table) { font-size:14px; }
.ielts-ui :is(.portal-data-table th,.wbv-table th,.dashboard-table th) { font-size:12px; font-weight:600; letter-spacing:normal; text-transform:none; }
.ielts-ui :is(.portal-data-table td,.wbv-table td) { overflow-wrap:anywhere; }
.ielts-ui :is(.portal-data-table td small,.wbv-table td small) { font-size:12px; }
.ielts-ui :is(.portal-list-controls,.wbv-toolbar,.ai-settings-grid) { gap:12px; }
.ielts-ui :is(.portal-portal-header,.portal-list-page-header,.ielts-portal-header) { gap:16px; margin-bottom:20px; }
.ielts-ui :is(.portal-header-actions,.portal-form-actions) { gap:8px; flex-wrap:wrap; }
.ielts-ui :is(.portal-header-actions,.portal-form-actions)>* { max-width:100%; }
.ielts-ui :is(.portal-list-controls input,.portal-list-controls select) { min-width:0; }
.ielts-ui :is(.empty-state,.portal-empty-row) { min-height:0; padding:20px; }
.ielts-ui :is(.portal-section-heading,.portal-detail-row,.portal-stack-row,.portal-feature-row)>div { min-width:0; }
.ielts-ui :is(.portal-disclaimer,.portal-meta,.portal-definition-grid,.muted) { overflow-wrap:anywhere; }
.ielts-ui .portal-approved-feedback p { white-space:pre-wrap; overflow-wrap:anywhere; }
.ielts-ui :is(.portal-page-title,.portal-dashboard-title,.portal-detail-title) { font-size:28px!important; font-weight:700; letter-spacing:normal; }
.ielts-ui :is(.portal-widget-title,.portal-card-title,.portal-section-title) { font-size:20px!important; font-weight:650; }
.student-portal-root .ielts-shell.ielts-ui :is(h1:not(.portal-dashboard-title),.portal-dashboard-title) { font-size:28px!important; }
.student-portal-root .ielts-shell.ielts-ui h2 { font-size:20px!important; }
.student-portal-root .ielts-ui :is(.portal-body-copy,.portal-meta) { font-size:15px!important; }
.student-portal-root .ielts-ui .portal-welcome-panel { min-height:0; max-height:none; }
.student-portal-root .ielts-ui .portal-dashboard-layout,.student-portal-root .ielts-ui .portal-dashboard-stack { gap:20px; }
.student-portal-root .ielts-ui .portal-kpi { min-height:108px; padding:16px; }
.student-portal-root .ielts-ui .portal-dashboard-secondary-grid>.portal-compact-widget { min-height:0; }
.student-portal-root .ielts-ui .portal-list-controls { align-items:end; padding:12px; }
.student-portal-root .ielts-ui .portal-list-controls .portal-list-search { font-size:14px; }
.ielts-ui :is(.portal-kpi,.portal-kpi strong,.portal-result-row h2,.portal-inline-summary) { overflow-wrap:anywhere; }
.ielts-ui .portal-skill-grid { grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); }
.ielts-ui .result-score small { display:none; }
.ielts-ui .result-score strong { font-size:28px; font-variant-numeric:tabular-nums; }
.ielts-ui .portal-table-wrap { max-width:100%; }
.ielts-ui .mock-section-nav { grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
.ielts-ui .mock-question-link { width:40px; height:40px; }
.ielts-ui .mock-player-status strong { font-variant-numeric:tabular-nums; }
.ielts-ui .mock-answer { min-height:104px; font-size:16px; }
.ielts-ui .mock-player-toolbar { flex-wrap:wrap; }
.ielts-ui :is(.mock-player-actions,.mock-question-actions,.speaking-recorder-controls) { display:flex; flex-wrap:wrap; gap:8px; }
.ielts-ui :is(.mock-prompt,.mock-passage,.mock-section-instructions,.mock-question-instructions) { overflow-wrap:anywhere; max-width:100%; }
.ielts-ui :is(audio,video,img) { max-width:100%; }
.ielts-ui .mock-section-header>div { min-width:0; }
/* Native forms/lists retain Frappe validation and controls. */
.ielts-ui .ielts-form-hero { background:#fff; color:var(--ielts-ink); align-items:center; padding:20px; box-shadow:none; }
.ielts-ui .ielts-form-hero :is(h1,p,.ielts-form-eyebrow) { color:var(--ielts-navy); }
.ielts-ui .ielts-form-context { gap:8px; }
.ielts-ui .ielts-context-item { background:var(--ielts-bg); border-color:var(--ielts-border); min-width:90px; }
.ielts-ui .ielts-context-item :is(strong,span) { color:var(--ielts-navy); font-weight:500; white-space:normal; }
.ielts-ui .ielts-context-item strong { color:var(--ielts-muted); text-transform:none; font-size:12px; letter-spacing:normal; }
.ielts-ui .list-row-head { color:var(--ielts-navy); font-size:13px; }
.ielts-ui :is(.list-row,.form-section) { font-size:14px; }
/* Keep native multiline fields compact until a teacher or administrator needs more room. */
.ielts-ui.page-container .frappe-control textarea.form-control { height:88px!important; min-height:88px!important; resize:vertical; }
.ielts-ui :is(.shortcut-widget a,.link-widget-box a,.ielts-ops-card a,.ielts-workflow-column a,.widget.links-widget-box a) { text-decoration:none!important; }
.ielts-ui .ielts-staff-home { padding:0; border:0; background:transparent; }
.ielts-ui .ielts-staff-home__cards { gap:14px; }
.ielts-ui .ielts-staff-card { min-height:112px; background:#fff; color:var(--ielts-navy); border:1px solid var(--ielts-border); border-top:3px solid var(--ielts-blue); box-shadow:0 2px 8px #0b1f3a06; }
.ielts-ui .ielts-staff-card:nth-child(2n) { border-top-color:var(--ielts-teal); }
.ielts-ui .ielts-staff-card__icon { color:var(--ielts-blue); background:#edf3ff; }
.ielts-ui .ielts-staff-card__title { font-size:15px; font-weight:600; }
.ielts-ui .ielts-staff-card__label { font-size:13px; color:var(--ielts-muted); }
.ielts-ui .ai-settings-shell { margin:20px auto; }
.ielts-ui .ai-settings-intro h2 { font-size:28px; }
.ielts-ui .ai-settings-footer { flex-wrap:wrap; }
.ielts-ui.ielts-marketing { font-size:16px; max-width:1240px; }
.ielts-ui .ielts-hero h1 { font-size:clamp(28px,4vw,44px); max-width:880px; }
.ielts-ui .ielts-hero p { max-width:760px; }
.ielts-ui .ielts-site-nav { gap:16px; flex-wrap:wrap; }
.ielts-ui .ielts-site-nav nav { display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.ielts-ui .ielts-site-nav a { font-size:14px; font-weight:600; text-decoration:none!important; }
.ielts-ui .ielts-content :is(h2,h3) { margin-top:24px; }
@media(max-width:1024px) {
  .ielts-ui .ielts-form-context { max-width:55%; }
  .ielts-ui .ielts-staff-home__cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:768px) {
  .ielts-ui :is(.ielts-portal-header,.portal-section-heading) { flex-wrap:wrap; }
  .ielts-ui .portal-feature-row { align-items:stretch; }
  .ielts-ui .portal-feature-row .ielts-button { align-self:start; }
  .ielts-ui .ielts-form-hero { flex-direction:column; align-items:stretch; gap:12px; }
  .ielts-ui .ielts-form-context { max-width:none; justify-content:start; }
  .ielts-ui .mock-section-nav { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:600px) {
  .ielts-ui :is(.portal-page-title,.portal-dashboard-title,.portal-detail-title),.student-portal-root .ielts-shell.ielts-ui h1:not(.portal-dashboard-title),.student-portal-root .ielts-shell.ielts-ui .portal-dashboard-title { font-size:25px!important; }
  .ielts-ui .portal-kpi-grid { grid-template-columns:repeat(2,minmax(0,1fr))!important; }
  .ielts-ui .portal-kpi { padding:12px; }
  .ielts-ui :is(.portal-card,.portal-panel,.portal-table-card,.ielts-card,.ai-settings-card) { padding:16px; }
  .ielts-ui .ielts-staff-home__cards { grid-template-columns:1fr; }
  .ielts-ui .ielts-site-nav nav { gap:8px 12px; }
  .ielts-ui .ielts-site-nav .ielts-button { width:100%; }
  .ielts-ui .portal-skill-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(prefers-reduced-motion:reduce) {
  .ielts-ui * { transition:none!important; scroll-behavior:auto!important; }
}
/* Public pages use the same web asset pipeline as the authenticated portal. */
.ielts-ui.ielts-marketing { margin:0 auto; padding:20px 28px 40px; background:#f5f8fc; }
.ielts-ui .ielts-site-nav { display:flex; align-items:center; justify-content:space-between; padding:12px 0 24px; border-bottom:1px solid var(--ielts-border); }
.ielts-ui .ielts-brand { color:var(--ielts-navy); font-size:20px; }
.ielts-ui .ielts-hero { padding:44px 0 24px; }
.ielts-ui .ielts-hero h1 { margin:12px 0 16px; }
.ielts-ui .ielts-hero>p:last-child { color:var(--ielts-muted); font-size:18px; line-height:1.65; }
.ielts-ui .ielts-content { padding:24px; border:1px solid var(--ielts-border); border-radius:12px; background:#fff; }
.ielts-ui .ielts-content>h2:first-child { margin-top:0; }
.ielts-ui .ielts-home-actions { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:24px; }
.ielts-ui .ielts-site-footer { padding:28px 0 0; font-size:13px; color:var(--ielts-muted); }
.ielts-ui .ielts-site-footer nav { display:flex; gap:16px; flex-wrap:wrap; }
.ielts-ui .ielts-site-footer a { color:var(--ielts-blue); text-decoration:none; }
.ielts-ui .ielts-skip-link { position:absolute; left:16px; top:-100px; padding:12px; background:#fff; color:var(--ielts-blue); z-index:50; }
.ielts-ui .ielts-skip-link:focus { top:8px; }
.ielts-ui { letter-spacing:normal; }
.ielts-ui :is(.btn,.ielts-button,.form-control,.portal-sidebar-links a) { letter-spacing:normal; }
@media(max-width:600px) {
  .ielts-ui.ielts-marketing { padding:12px 16px 28px; }
  .ielts-ui .ielts-site-nav { align-items:start; flex-direction:column; }
  .ielts-ui .ielts-hero { padding-top:28px; }
  .ielts-ui .ielts-hero>p:last-child { font-size:16px; }
  .ielts-ui .ielts-content { padding:16px; }
}

.ielts-ui .ielts-ops-link,.ielts-ui .ielts-ops-link:hover,.ielts-ui .ielts-ops-link span { text-decoration:none!important; }
.ielts-ui.portal-sidebar .portal-sidebar-profile { min-width:0; }
.ielts-ui.portal-sidebar .portal-sidebar-profile>div { min-width:0; }
.ielts-ui.portal-sidebar .portal-sidebar-profile strong { display:block; white-space:normal; overflow-wrap:anywhere; }
.ielts-ui.ielts-portal-nav .portal-brand { min-width:0; }
.ielts-ui.ielts-portal-nav .portal-brand span { white-space:normal; overflow-wrap:anywhere; }
.ielts-ui .portal-kpi strong { font-size:24px; line-height:1.25; }
.wbv-shell.ielts-ui :is(.wbv-count-card span,.wbv-card-meta,.wbv-card-date,.wbv-card-head small,.wbv-tab) { font-size:13px; }
.wbv-shell.ielts-ui .wbv-attempt-card h3 { font-size:15px; }
.wbv-shell.ielts-ui :is(label,.wbv-field,.wbv-review-heading p:not(.wbv-eyebrow),.wbv-save-status) { font-size:13px; }
.wbv-shell.ielts-ui .wbv-objective-prompt { max-width:340px; white-space:pre-wrap; margin-top:6px; }
.wbv-shell.ielts-ui .wbv-approved-decision p { margin-bottom:0; }
.ielts-ui { font-weight:400; }
.ielts-ui p { font-weight:400; }
.ielts-ui .portal-table-card h2 { font-weight:650; }

/* EDUCARE_DESK_UI_FIX_V1 */
.ielts-ui.page-container {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

/* Readable labels on the theme's dark custom-action buttons. */
.page-container .custom-actions .btn.btn-default,
.page-container .custom-actions .btn.btn-default:hover,
.page-container .custom-actions .btn.btn-default:focus {
  background: var(--secondary, #0B1F3A) !important;
  border-color: var(--secondary, #0B1F3A) !important;
  color: #ffffff !important;
}
.page-container .custom-actions .btn.btn-default span {
  color: inherit !important;
}
.page-container .custom-actions .btn.btn-default :is(.icon, .es-icon) {
  color: #ffffff !important;
  fill: #ffffff !important;
  stroke: #ffffff !important;
  --icon-stroke: #ffffff;
  --icon-fill: #ffffff;
}
