:root { --ielts-navy:#102E5C; --ielts-blue:#2F63DD; --ielts-bright-blue:#356CE8; --ielts-teal:#259CB7; --ielts-green:#22C878; --ielts-mint:#E8FBF3; --ielts-bg:#F5F8FC; --ielts-border:#D8E4F8; --ielts-ink:#172033; --ielts-muted:#667085; }
.mock-player-status{display:flex;align-items:flex-end;flex-direction:column;gap:4px}.mock-player-status strong{font-size:24px;color:var(--ielts-navy)}.mock-player-status span:last-child{font-size:12px;color:var(--ielts-muted)}.mock-player-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin:0 0 16px;border:1px solid var(--ielts-border);border-radius:12px;background:#fff;color:var(--ielts-muted)}.mock-section{margin-bottom:18px}.mock-section-header,.mock-question-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.mock-section-header h2{margin:0}.mock-section-header h2 small{font-size:13px;color:var(--ielts-muted);font-weight:500}.mock-passage{margin:16px 0;padding:18px;border:1px solid var(--ielts-border);border-radius:10px;background:var(--ielts-bg);line-height:1.7;max-height:420px;overflow:auto}.mock-passage h3{margin-top:0}.mock-question-nav{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.mock-question-link{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border:1px solid var(--ielts-border);border-radius:8px;color:var(--ielts-navy);text-decoration:none}.mock-question-link.is-answered{background:var(--ielts-mint);border-color:var(--ielts-green)}.mock-question{padding:18px 0;border-top:1px solid var(--ielts-border)}.mock-question-heading h3{margin:0;font-size:16px}.mock-answer-state{font-size:12px;color:var(--ielts-muted)}.mock-prompt{margin:10px 0;line-height:1.6}.mock-options{display:grid;gap:8px;margin:12px 0}.mock-options label{display:flex;gap:8px;padding:10px;border:1px solid var(--ielts-border);border-radius:8px}.mock-question-actions{display:flex;gap:8px;margin-top:10px}.mock-submit-card{margin-bottom:30px}.mock-submit-card h2{margin-top:0}@media(max-width:600px){.mock-player-status{align-items:flex-start}.mock-player-toolbar{align-items:flex-start;flex-direction:column}.mock-question-actions{flex-wrap:wrap}}
body:has(.ielts-portal-page){background:var(--ielts-bg)}
body:has(.ielts-portal-shell) .navbar,body:has(.ielts-portal-shell) .web-footer{display:none!important}
body:has(.ielts-shell) .btn-primary,body:has(.ielts-shell) .btn-secondary,body:has(.ielts-shell) .btn-default{border-radius:9px!important;border:1px solid var(--ielts-blue)!important;background:linear-gradient(105deg,var(--ielts-navy),var(--ielts-bright-blue),var(--ielts-green))!important;color:#fff!important;font-weight:700!important;box-shadow:none!important}body:has(.ielts-shell) .btn-primary:hover,body:has(.ielts-shell) .btn-primary:focus-visible,body:has(.ielts-shell) .btn-secondary:hover,body:has(.ielts-shell) .btn-secondary:focus-visible,body:has(.ielts-shell) .btn-default:hover,body:has(.ielts-shell) .btn-default:focus-visible{color:#fff!important;box-shadow:0 5px 14px #2f63dd3d!important;outline:2px solid var(--ielts-bright-blue);outline-offset:2px}
.ielts-portal-nav{position:sticky;top:0;z-index:20;background:linear-gradient(105deg,var(--ielts-navy),var(--ielts-bright-blue) 54%,var(--ielts-green));box-shadow:0 5px 18px #102e5c29}
.portal-nav-inner{max-width:1440px;min-height:68px;margin:0 auto;padding:0 32px;display:flex;align-items:center;gap:18px}
.portal-brand{display:inline-flex;align-items:center;gap:10px;min-width:max-content;color:#fff!important;font-weight:750;text-decoration:none!important}
.portal-brand img,.portal-brand-mark{width:34px;height:34px;object-fit:contain;border-radius:9px;background:#fffffff2}
.portal-brand-mark{display:grid;place-items:center;color:var(--ielts-navy);font-size:.72rem;font-weight:800}
.portal-main-links{display:flex;align-items:center;justify-content:center;gap:2px;flex:1}
.portal-main-links a,.portal-profile-panel a,.portal-mobile-panel a{color:#ffffffe0!important;text-decoration:none!important;font-size:.86rem;font-weight:650}
.portal-main-links a{padding:9px 10px;border-radius:8px}.portal-main-links a:hover,.portal-main-links a:focus-visible,.portal-main-links a[aria-current=page]{color:#fff!important;background:#ffffff29;outline:none}
.portal-profile-menu,.portal-mobile-menu{position:relative;color:#fff}.portal-profile-menu summary,.portal-mobile-menu summary{display:inline-flex;align-items:center;gap:8px;padding:5px 8px;border-radius:9px;cursor:pointer;list-style:none;font-size:.84rem;font-weight:650}.portal-profile-menu summary::-webkit-details-marker,.portal-mobile-menu summary::-webkit-details-marker{display:none}.portal-profile-menu summary:hover,.portal-profile-menu summary:focus-visible,.portal-mobile-menu summary:hover,.portal-mobile-menu summary:focus-visible{background:#ffffff29;outline:2px solid #ffffffe6;outline-offset:2px}
.portal-avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#fff;color:var(--ielts-navy);font-weight:800}
.portal-profile-panel,.portal-mobile-panel{position:absolute;right:0;top:calc(100% + 9px);min-width:190px;padding:8px;border:1px solid var(--ielts-border);border-radius:12px;background:#fff;box-shadow:0 12px 30px #102e5c2e}.portal-profile-panel a,.portal-mobile-panel a{display:block;padding:10px 12px;color:var(--ielts-navy)!important;border-radius:8px}.portal-profile-panel a:hover,.portal-profile-panel a:focus-visible,.portal-mobile-panel a:hover,.portal-mobile-panel a:focus-visible{background:#edf3ff;color:var(--ielts-blue)!important;outline:none}
.portal-mobile-menu{display:none}
.ielts-portal-page{min-height:calc(100vh - 68px);color:var(--ielts-ink)}.ielts-portal-shell{max-width:1280px;margin:0 auto;padding:32px;color:var(--ielts-ink)}.ielts-portal-shell h1{font-size:clamp(1.9rem,3.5vw,2.5rem);line-height:1.12;color:var(--ielts-navy);letter-spacing:-.02em}.ielts-portal-shell h2{font-size:1.3rem;color:var(--ielts-navy)}.ielts-portal-shell .card{border:1px solid var(--ielts-border);border-radius:14px;box-shadow:0 8px 25px #102a430b}.ielts-portal-shell .card-body{padding:20px}
.portal-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:210px;padding:34px 38px;border-radius:18px;background:linear-gradient(112deg,var(--ielts-navy),var(--ielts-bright-blue) 54%,var(--ielts-green));box-shadow:0 14px 28px #102e5c29;color:#fff}.portal-hero .eyebrow{color:#ffffffc7}.portal-hero h1{margin:0 0 8px;color:#fff;font-size:clamp(1.8rem,3.5vw,2.75rem);letter-spacing:-.035em}.portal-hero p:not(.eyebrow){margin:0;color:#ffffffdf}.portal-hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.portal-hero .ielts-button{border-color:#ffffffbf;background:#fff;color:var(--ielts-navy)!important}.portal-hero .ielts-button:hover,.portal-hero .ielts-button:focus-visible{background:#edf3ff;color:var(--ielts-navy)!important}.portal-hero .ielts-button.secondary{background:#ffffff1f;color:#fff!important;border-color:#ffffff8c}.portal-hero .ielts-button.secondary:hover,.portal-hero .ielts-button.secondary:focus-visible{background:#ffffff38;color:#fff!important}
.portal-hero-avatar{width:112px;height:112px;flex:0 0 112px;object-fit:cover;border:4px solid #ffffffbf;border-radius:50%;background:#ffffff29}.portal-hero-initial{display:grid;place-items:center;color:#fff;font-size:2.4rem;font-weight:800}
.portal-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin:22px 0}.portal-kpi{display:grid;min-height:112px;grid-template-columns:32px minmax(0,1fr) auto;grid-template-rows:auto auto;grid-template-areas:"icon label count" "icon description count";align-items:center;column-gap:10px;padding:16px 18px;border:1px solid var(--ielts-border);border-radius:14px;background:#fff;box-shadow:0 6px 18px #102e5c0f;color:var(--ielts-navy)!important;text-decoration:none!important}.portal-kpi-primary{border-color:transparent;background:linear-gradient(118deg,var(--ielts-navy),var(--ielts-bright-blue) 55%,var(--ielts-green));color:#fff!important}.portal-kpi-teal{background:linear-gradient(118deg,var(--ielts-blue),var(--ielts-teal) 65%,var(--ielts-green))}.portal-kpi:hover,.portal-kpi:focus-visible{transform:translateY(-2px);box-shadow:0 10px 22px #102e5c24;outline:2px solid var(--ielts-bright-blue);outline-offset:2px}.portal-kpi strong{grid-area:count;justify-self:end;font-size:1.8rem;line-height:1}.portal-kpi>span:not(.portal-icon){grid-area:label;font-weight:750}.portal-kpi small{grid-area:description;color:var(--ielts-muted);font-size:.76rem;line-height:1.25}.portal-kpi-primary small,.portal-kpi-primary>span:not(.portal-icon){color:#ffffffe6}.portal-icon{grid-area:icon;display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#ffffff2e;color:currentColor;font-size:1.05rem}.portal-icon-blue{color:var(--ielts-blue);background:#edf3ff}.portal-icon-green{color:var(--ielts-green);background:#e8fbf3}
.portal-content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px}.portal-panel{padding:24px;border:1px solid var(--ielts-border);border-radius:14px;background:#fff;box-shadow:0 6px 18px #102e5c0d}.portal-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}.portal-section-heading h2{margin:0;color:var(--ielts-navy);font-size:1.2rem}.portal-feature-row{display:flex;align-items:center;justify-content:space-between;gap:20px}.portal-feature-row h3{margin:0 0 5px;color:var(--ielts-navy)}.portal-feature-row .ielts-button{flex:0 0 auto}.result-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.result-score{padding:14px 10px;border:1px solid var(--ielts-border);border-radius:10px;text-align:center}.result-score span,.result-score small{display:block;color:var(--ielts-muted);font-size:.75rem}.result-score strong{display:block;margin:5px 0;color:var(--ielts-navy);font-size:1.35rem}.portal-disclaimer{margin:18px 0 0;color:var(--ielts-muted);font-size:.78rem;line-height:1.45}.portal-notice{margin:16px 0 0;padding:11px 13px;border-radius:9px;background:#fff8e6;color:#805b00;font-size:.86rem}.portal-large-number{margin:0;color:var(--ielts-blue);font-size:2.4rem;font-weight:800}.portal-footer-note{text-align:center}
.portal-results-list{display:grid;gap:14px;margin-top:22px}.portal-result-row{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0;color:var(--ielts-ink)!important;text-decoration:none!important}.portal-result-row:hover,.portal-result-row:focus-visible{border-color:var(--ielts-blue);box-shadow:0 10px 24px #102e5c1c;outline:2px solid var(--ielts-bright-blue);outline-offset:2px}.portal-result-row h2{margin:0;color:var(--ielts-navy);font-size:1.15rem}
.ielts-shell{max-width:1280px;margin:0 auto;padding:32px;color:var(--ielts-ink)}.ielts-shell h1,.ielts-shell h2{color:var(--ielts-navy);letter-spacing:-.02em}.ielts-shell h1{font-size:clamp(1.9rem,3.5vw,2.75rem);line-height:1.12;margin:.2rem 0 .5rem}.ielts-shell h2{font-size:1.3rem}.eyebrow{color:var(--ielts-teal);font-size:.75rem;font-weight:700;letter-spacing:.12em;margin:0 0 8px}.muted{color:var(--ielts-muted)}.ielts-portal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px}.ielts-card{background:#fff;border:1px solid var(--ielts-border);border-radius:14px;padding:24px;margin:16px 0;box-shadow:0 8px 25px #102a430b}.ielts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.ielts-grid>div{display:flex;flex-direction:column;gap:6px}.label{font-size:.8rem;color:var(--ielts-muted)}.ielts-button{display:inline-block;border-radius:9px;padding:11px 18px;background:linear-gradient(105deg,var(--ielts-navy),var(--ielts-bright-blue),var(--ielts-green));color:#fff!important;text-decoration:none;font-weight:700;border:1px solid transparent;transition:transform .15s ease,box-shadow .15s ease}.ielts-button:hover,.ielts-button:focus-visible{color:#fff!important;transform:translateY(-1px);box-shadow:0 5px 14px #2f63dd3d;outline:2px solid var(--ielts-bright-blue);outline-offset:2px}.ielts-button.secondary{background:#fff;color:var(--ielts-navy)!important;border-color:var(--ielts-blue)}.ielts-button.secondary:hover,.ielts-button.secondary:focus-visible{background:#edf3ff;color:var(--ielts-navy)!important}.text-link{display:inline-block;margin-top:16px;color:var(--ielts-blue)!important;font-weight:700;text-decoration:none}.text-link:hover,.text-link:focus-visible{color:var(--ielts-navy)!important;text-decoration:underline;outline:none}.portal-nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}.portal-nav a{padding:9px 13px;border-radius:8px;color:var(--ielts-navy);text-decoration:none}.portal-nav a:hover,.portal-nav a:focus{background:var(--ielts-mint);color:var(--ielts-blue)}.empty-state{display:flex;flex-direction:column;border:1px dashed var(--ielts-border);border-radius:12px;padding:18px;gap:7px}.empty-state span{color:var(--ielts-muted);font-size:.9rem}.cards{margin-top:0}.progress-track{height:8px;margin:12px 0 8px;overflow:hidden;border-radius:999px;background:#e8eef8}.progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--ielts-blue),var(--ielts-green))}.status-pill{display:inline-block;margin-top:7px;padding:4px 9px;border-radius:999px;background:#e8fbf3;color:#147b50;font-size:.75rem;font-weight:700}
@media(max-width:1100px){.portal-main-links{display:none}.portal-mobile-menu{display:block}.portal-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.portal-nav-inner,.ielts-portal-shell{padding-left:16px;padding-right:16px}.portal-nav-inner{min-height:62px}.portal-profile-name{display:none}.portal-profile-panel{right:-45px}.portal-hero{align-items:flex-start;min-height:0;padding:26px 22px}.portal-hero-avatar{width:72px;height:72px;flex-basis:72px}.portal-hero-initial{font-size:1.6rem}.portal-kpi-grid,.portal-content-grid,.result-summary-grid{grid-template-columns:1fr}.portal-feature-row,.ielts-portal-header{align-items:stretch;flex-direction:column}.portal-feature-row .ielts-button{width:100%;text-align:center}.portal-panel{padding:20px}.portal-hero-actions{flex-direction:column}.portal-hero-actions .ielts-button{width:100%;text-align:center}.ielts-shell{padding:24px 16px}.ielts-shell h1{font-size:clamp(1.65rem,8vw,2rem)}.ielts-card{padding:20px}.portal-mobile-panel{right:-55px}}

/* Compact, consistent treatment for legacy portal list/detail markup. */
body:has(.ielts-portal-shell) { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
body:has(.ielts-portal-shell) .ielts-portal-shell { max-width:1240px; padding:28px 32px 48px; }
body:has(.ielts-portal-shell) .ielts-portal-shell h1 { margin:0 0 8px; font-size:clamp(1.9rem,3vw,2.25rem); font-weight:800; }
body:has(.ielts-portal-shell) .ielts-portal-shell h2 { margin:0 0 10px; font-size:1.2rem; font-weight:750; }
body:has(.ielts-portal-shell) .ielts-portal-shell > p:first-child { margin:0 0 18px; }
body:has(.ielts-portal-shell) .ielts-portal-shell > .row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:20px 0 0; }
body:has(.ielts-portal-shell) .ielts-portal-shell > .row > [class*="col-"] { width:auto; max-width:none; padding:0; }
body:has(.ielts-portal-shell) .ielts-portal-shell .card { height:auto!important; margin:0; border:1px solid var(--ielts-border); border-radius:14px; background:#fff; box-shadow:0 7px 20px #102e5c0c; }
body:has(.ielts-portal-shell) .ielts-portal-shell .card-body { padding:22px; }
body:has(.ielts-portal-shell) .ielts-portal-shell .card h2 { color:var(--ielts-navy); }
body:has(.ielts-portal-shell) .ielts-portal-shell .btn,
body:has(.ielts-portal-shell) .ielts-portal-shell .btn-primary,
body:has(.ielts-portal-shell) .ielts-portal-shell .btn-secondary { display:inline-flex; align-items:center; justify-content:center; min-height:40px; padding:9px 15px; border:1px solid var(--ielts-blue); border-radius:9px; background:linear-gradient(105deg,var(--ielts-navy),var(--ielts-bright-blue),var(--ielts-green)); color:#fff!important; font-weight:700; box-shadow:none; }
body:has(.ielts-portal-shell) .ielts-portal-shell .btn:hover,
body:has(.ielts-portal-shell) .ielts-portal-shell .btn:focus-visible { color:#fff!important; box-shadow:0 5px 14px #2f63dd3d; outline:2px solid var(--ielts-bright-blue); outline-offset:2px; }
body:has(.ielts-portal-shell) .ielts-portal-shell .alert { margin:18px 0; padding:14px 16px; border:1px solid var(--ielts-border); border-radius:10px; background:#fff; color:var(--ielts-ink); }
body:has(.ielts-portal-shell) .ielts-portal-shell .alert-info { background:#edf3ff; color:var(--ielts-navy); }
body:has(.ielts-portal-shell) .ielts-portal-shell .alert-warning { background:#fff8e6; border-color:#f3d48a; color:#805b00; }
body:has(.ielts-portal-shell) .ielts-portal-shell dl { display:grid; grid-template-columns:minmax(130px,.7fr) minmax(0,1.3fr); gap:0; margin:20px 0; padding:20px; border:1px solid var(--ielts-border); border-radius:14px; background:#fff; }
body:has(.ielts-portal-shell) .ielts-portal-shell dl dt,
body:has(.ielts-portal-shell) .ielts-portal-shell dl dd { margin:0; padding:11px 0; border-bottom:1px solid #edf2fa; }
body:has(.ielts-portal-shell) .ielts-portal-shell dl dt { color:var(--ielts-muted); font-weight:650; }
body:has(.ielts-portal-shell) .ielts-portal-shell dl dd { color:var(--ielts-ink); }
body:has(.ielts-portal-shell) .ielts-portal-shell ul { margin:16px 0 20px; padding:18px 24px; border:1px solid var(--ielts-border); border-radius:14px; background:#fff; }
body:has(.ielts-portal-shell) .ielts-portal-shell li { margin:7px 0; color:var(--ielts-ink); }
body:has(.ielts-portal-shell) .ielts-portal-shell .text-muted { color:var(--ielts-muted)!important; }
body:has(.ielts-portal-shell) .ielts-portal-shell .text-link { margin-top:12px; }
body:has(.ielts-portal-shell) .ielts-portal-shell > h2 { margin-top:26px; }
@media(max-width:720px){
  body:has(.ielts-portal-shell) .ielts-portal-shell { padding:22px 16px 36px; }
  body:has(.ielts-portal-shell) .ielts-portal-shell h1 { font-size:clamp(1.65rem,8vw,2rem); }
  body:has(.ielts-portal-shell) .ielts-portal-shell > .row { grid-template-columns:1fr; }
  body:has(.ielts-portal-shell) .ielts-portal-shell dl { grid-template-columns:1fr; padding:16px; }
  body:has(.ielts-portal-shell) .ielts-portal-shell dl dt { padding-bottom:3px; border:0; }
  body:has(.ielts-portal-shell) .ielts-portal-shell dl dd { padding-top:3px; }
}

/* Final scoped portal component system. Keep presentation local to Student Portal. */
.student-portal-root .portal-dashboard-title { margin:0 0 6px; color:var(--ielts-navy); font-size:34px!important; font-weight:700; line-height:1.15; letter-spacing:-.02em; }
.student-portal-root .portal-page-title { margin:0 0 6px; color:var(--ielts-navy); font-size:30px!important; font-weight:700; line-height:1.2; letter-spacing:-.015em; }
.student-portal-root .portal-detail-title { margin:0 0 6px; color:var(--ielts-navy); font-size:28px!important; font-weight:700; line-height:1.25; letter-spacing:-.01em; }
.student-portal-root .portal-widget-title { margin:0; color:var(--ielts-navy); font-size:20px!important; font-weight:700; line-height:1.3; }
.student-portal-root .portal-card-title { margin:0; color:var(--ielts-navy); font-size:20px!important; font-weight:700; line-height:1.3; }
.student-portal-root .portal-section-title { margin:0; color:var(--ielts-navy); font-size:20px!important; font-weight:700; line-height:1.3; }
.student-portal-root .portal-body-copy { color:var(--ielts-ink); font-size:15px; line-height:1.5; }
.student-portal-root .portal-meta { color:var(--ielts-muted); font-size:14px; line-height:1.45; }
.student-portal-root .portal-eyebrow { margin:0 0 6px; color:var(--ielts-teal); font-size:12px; font-weight:700; letter-spacing:.12em; line-height:1.3; text-transform:uppercase; }
.student-portal-root .portal-welcome-panel { display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:150px; max-height:165px; padding:22px 26px; border:1px solid var(--ielts-border); border-radius:14px; background:#fff; box-shadow:0 6px 18px #102e5c0b; }
.student-portal-root .portal-welcome-panel .portal-body-copy { margin:0 0 12px; color:var(--ielts-muted); }
.student-portal-root .portal-welcome-actions { display:flex; flex-wrap:wrap; gap:8px; }
.student-portal-root .portal-welcome-panel .portal-hero-avatar { flex:0 0 62px; width:62px; height:62px; }
.student-portal-root .portal-dashboard-kpis { margin:16px 0 20px; }
.student-portal-root .portal-kpi { display:flex; min-height:124px; flex-direction:column; align-items:flex-start; justify-content:center; padding:16px 18px; border-top:4px solid var(--ielts-blue); }
.student-portal-root .portal-kpi:nth-child(2) { border-top-color:var(--ielts-teal); }
.student-portal-root .portal-kpi:nth-child(3) { border-top-color:var(--ielts-navy); }
.student-portal-root .portal-kpi:nth-child(4) { border-top-color:var(--ielts-teal); }
.student-portal-root .portal-kpi:nth-child(5) { border-top-color:var(--ielts-green); }
.student-portal-root .portal-kpi > span { color:var(--ielts-muted); font-size:12px; font-weight:700; }
.student-portal-root .portal-kpi > strong { margin:4px 0 2px; color:var(--ielts-navy); font-size:24px; line-height:1.1; }
.student-portal-root .portal-kpi > small { color:var(--ielts-muted); font-size:11px; line-height:1.35; }
.student-portal-root .portal-widget-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:4px; }
.student-portal-root .portal-count-badge { padding:4px 8px; border:1px solid var(--ielts-border); border-radius:999px; background:#f3f7fd; color:var(--ielts-blue); font-size:12px; font-weight:700; white-space:nowrap; }
.student-portal-root .portal-compact-widget { min-height:0; padding:20px 22px; }
.student-portal-root .portal-compact-widget .portal-body-copy { margin:8px 0 12px; color:var(--ielts-muted); }
.student-portal-root .portal-empty-row { display:flex; align-items:center; gap:12px; min-height:88px; padding:14px 0 2px; }
.student-portal-root .portal-empty-row > div { display:flex; flex-direction:column; gap:4px; }
.student-portal-root .portal-empty-accent { display:grid; width:32px; height:32px; place-items:center; border-radius:9px; background:#f0f3f7; color:var(--ielts-muted); font-size:14px; }
.student-portal-root .portal-result-widget { padding-bottom:20px; }
.student-portal-root .portal-feature-row h3 { margin:0 0 4px; }
.student-portal-root .portal-feature-row .portal-meta { display:block; margin:0 0 8px; }
.student-portal-root .portal-feature-row .ielts-button { flex:0 0 auto; }
.student-portal-root .portal-content-grid { gap:20px; }
.student-portal-root .portal-panel, .student-portal-root .ielts-card { min-height:0; }

@media(max-width:720px){
  .student-portal-root .portal-dashboard-title { font-size:30px!important; }
  .student-portal-root .portal-page-title { font-size:26px!important; }
  .student-portal-root .portal-detail-title { font-size:24px!important; }
  .student-portal-root .portal-widget-title, .student-portal-root .portal-card-title, .student-portal-root .portal-section-title { font-size:18px!important; }
  .student-portal-root .portal-welcome-panel { min-height:0; max-height:none; padding:18px 16px; }
  .student-portal-root .portal-welcome-panel .portal-hero-avatar { width:48px; height:48px; flex-basis:48px; }
  .student-portal-root .portal-welcome-actions { flex-direction:column; align-items:stretch; }
  .student-portal-root .portal-welcome-actions .ielts-button { text-align:center; }
  .student-portal-root .portal-compact-widget { padding:16px; }
  .student-portal-root .portal-feature-row { align-items:flex-start; }
}

/* Workspace shell: one compact top bar and one responsive navigation rail. */
body:has(.ielts-portal-nav) { background:var(--ielts-bg); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
.portal-nav-inner { max-width:none; height:64px; min-height:64px; padding:0 24px; }
.portal-menu-toggle { display:none; border:0; background:transparent; color:#fff; font-size:20px; line-height:1; cursor:pointer; }
.portal-menu-toggle svg { display:block; width:22px; height:22px; }
.portal-nav-spacer { flex:1; }
.portal-sidebar { position:fixed; z-index:19; top:64px; bottom:0; left:0; width:232px; padding:20px 14px; overflow-y:auto; border-right:1px solid var(--ielts-border); background:#fff; box-shadow:4px 0 18px #102e5c0b; }
.portal-sidebar-profile { display:flex; align-items:center; gap:10px; padding:10px 10px 18px; border-bottom:1px solid #edf2fa; color:var(--ielts-navy); }
.portal-sidebar-profile strong,.portal-sidebar-profile small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-sidebar-profile strong { font-size:13px; }
.portal-sidebar-profile small { margin-top:3px; color:var(--ielts-muted); font-size:11px; }
.portal-sidebar-avatar { display:grid; place-items:center; flex:0 0 34px; width:34px; height:34px; border-radius:50%; background:#eaf1ff; color:var(--ielts-blue); font-weight:800; }
.portal-sidebar-links { display:grid; gap:4px; margin-top:18px; }
.portal-sidebar-links a { display:flex; align-items:center; gap:10px; min-height:40px; padding:9px 11px; border-radius:9px; color:var(--ielts-muted)!important; font-size:13px; font-weight:650; text-decoration:none!important; }
.portal-sidebar-links a:hover,.portal-sidebar-links a:focus-visible,.portal-sidebar-links a[aria-current=page] { background:#edf3ff; color:var(--ielts-navy)!important; outline:none; }
.portal-sidebar-links a[aria-current=page] { box-shadow:inset 3px 0 var(--ielts-blue); }
.portal-nav-icon { display:grid; place-items:center; width:22px; color:var(--ielts-blue); font-size:16px; font-weight:800; }
.portal-nav-icon svg { display:block; width:18px; height:18px; }
.portal-definition-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border:1px solid var(--ielts-border); border-radius:11px; overflow:hidden; }
.portal-definition-grid>div { display:grid; gap:5px; min-width:0; padding:14px 16px; border-bottom:1px solid #edf2fa; }
.portal-definition-grid>div:nth-child(odd) { border-right:1px solid #edf2fa; }
.portal-definition-grid strong { overflow-wrap:anywhere; color:var(--ielts-navy); font-size:14px; }
.portal-definition-grid strong:empty { display:none; }
.portal-detail-header { margin-bottom:16px; }
.portal-detail-header h1 { max-width:760px; }
.portal-detail-card { margin:0 0 14px; padding:22px 24px; }
.portal-detail-card h2 { margin:0 0 14px; }
.portal-key-value-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border:1px solid var(--ielts-border); border-radius:11px; overflow:hidden; }
.portal-key-value-grid>div { display:grid; gap:5px; min-width:0; padding:12px 14px; border-bottom:1px solid #edf2fa; }
.portal-key-value-grid>div:nth-child(odd) { border-right:1px solid #edf2fa; }
.portal-key-value-grid strong { color:var(--ielts-navy); font-size:14px; overflow-wrap:anywhere; }
.portal-rich-copy { color:var(--ielts-ink); font-size:14px; line-height:1.6; white-space:pre-wrap; }
.portal-instructions { margin-top:18px; padding-top:16px; border-top:1px solid #edf2fa; }
.portal-instructions>strong { display:block; margin-bottom:7px; color:var(--ielts-navy); font-size:13px; }
.portal-submissions { display:grid; gap:12px; }
.portal-submission { padding:16px; border:1px solid var(--ielts-border); border-radius:11px; background:#fbfdff; }
.portal-submission-meta { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; padding-bottom:14px; border-bottom:1px solid #edf2fa; }
.portal-submission-meta>div { display:grid; gap:4px; min-width:0; }
.portal-submission-meta strong { color:var(--ielts-navy); font-size:13px; overflow-wrap:anywhere; }
.portal-response-preview,.portal-feedback { margin-top:14px; padding:12px 14px; border:1px solid #edf2fa; border-radius:9px; background:#fff; }
.portal-response-preview>div,.portal-feedback>div { margin-top:6px; color:var(--ielts-ink); font-size:14px; line-height:1.55; white-space:pre-wrap; overflow-wrap:anywhere; }
.portal-feedback { background:#f6fbff; }
.portal-readonly-note { margin:12px 0 0; padding:11px 13px; border-radius:9px; background:#edf3ff; color:var(--ielts-navy); font-size:13px; }
.portal-detail-note { display:inline-block; }
.portal-form-card { max-width:900px; }
.portal-response-form { display:block; }
.portal-form-group label { display:block; margin:0 0 6px; color:var(--ielts-navy); font-size:14px; font-weight:750; }
.portal-field-help { margin:0 0 10px; color:var(--ielts-muted); font-size:13px; }
.portal-response-form textarea { display:block; box-sizing:border-box; width:100%; min-height:168px; padding:13px 14px; resize:vertical; border:1px solid #b9cceb; border-radius:9px; background:#fff; color:var(--ielts-ink); font:inherit; line-height:1.55; outline:none; }
.portal-response-form textarea:focus { border-color:var(--ielts-bright-blue); box-shadow:0 0 0 3px #356ce82b; }
.portal-form-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }
.portal-table-card { margin:0 0 14px; padding:20px 22px; border:1px solid var(--ielts-border); border-radius:14px; background:#fff; box-shadow:0 6px 18px #102e5c0b; }
.portal-table-card h2 { margin:0 0 14px; color:var(--ielts-navy); font-size:18px; }
.portal-table-wrap { width:100%; overflow-x:auto; border:1px solid var(--ielts-border); border-radius:10px; }
.portal-data-table { width:100%; min-width:680px; border-collapse:collapse; color:var(--ielts-ink); font-size:13px; }
.portal-data-table th { padding:10px 12px; background:#f3f7fd; color:var(--ielts-navy); font-size:11px; font-weight:750; letter-spacing:.04em; text-align:left; text-transform:uppercase; white-space:nowrap; }
.portal-data-table td { padding:12px; border-top:1px solid #edf2fa; vertical-align:middle; }
.portal-data-table tbody tr:hover { background:#fbfdff; }
.portal-data-table td strong,.portal-data-table td small { display:block; }
.portal-data-table td small { margin-top:4px; color:var(--ielts-muted); font-size:12px; }
.compact-button { min-height:34px!important; padding:7px 11px!important; font-size:12px; white-space:nowrap; }
.portal-stat-strip { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:0 0 14px; }
.portal-stat-strip>div { display:grid; gap:5px; padding:15px 16px; border:1px solid var(--ielts-border); border-radius:12px; background:#fff; box-shadow:0 5px 15px #102e5c08; }
.portal-stat-strip strong { color:var(--ielts-navy); font-size:20px; }
.portal-inline-progress { width:130px; height:7px; margin-bottom:5px; overflow:hidden; border-radius:99px; background:#e8eef8; }
.portal-inline-progress span { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--ielts-blue),var(--ielts-green)); }
.portal-compact-list { margin:0!important; padding:12px 16px!important; list-style:none; }
.portal-compact-list li { display:flex; justify-content:space-between; gap:16px; margin:0!important; padding:10px 0; border-bottom:1px solid #edf2fa; }
.portal-compact-list li:last-child { border-bottom:0; }
.portal-compact-list li span { color:var(--ielts-muted); }
.portal-subheading { margin-top:24px!important; }
.portal-password-card { max-width:620px; padding:24px; }
.portal-password-form { display:grid; gap:16px; }
.portal-password-field { position:relative; }
.portal-password-field input { box-sizing:border-box; width:100%; min-height:44px; padding:10px 68px 10px 12px; border:1px solid #b9cceb; border-radius:9px; background:#fff; color:var(--ielts-ink); font:inherit; outline:none; }
.portal-password-field input:focus { border-color:var(--ielts-bright-blue); box-shadow:0 0 0 3px #356ce82b; }
.portal-password-toggle { position:absolute; top:50%; right:8px; transform:translateY(-50%); padding:5px 7px; border:0; border-radius:6px; background:transparent; color:var(--ielts-blue); font-size:12px; font-weight:750; cursor:pointer; }
.portal-password-toggle:hover,.portal-password-toggle:focus-visible { background:#edf3ff; outline:2px solid var(--ielts-bright-blue); outline-offset:1px; }
.portal-password-message { min-height:20px; margin:0; color:#b42318; font-size:13px; }
.portal-table-card .text-link { margin:0; display:inline-flex; align-items:center; min-height:32px; padding:6px 10px; border:1px solid var(--ielts-blue); border-radius:8px; color:var(--ielts-navy)!important; font-size:12px; text-decoration:none; }
.portal-table-card .text-link:hover,.portal-table-card .text-link:focus-visible { background:#edf3ff; color:var(--ielts-blue)!important; outline:2px solid var(--ielts-bright-blue); outline-offset:1px; }
.ielts-shell .text-link { display:inline-flex; align-items:center; min-height:34px; padding:7px 11px; border:1px solid var(--ielts-blue); border-radius:8px; color:var(--ielts-navy)!important; font-size:12px; text-decoration:none; }
.ielts-shell .text-link:hover,.ielts-shell .text-link:focus-visible { background:#edf3ff; color:var(--ielts-blue)!important; outline:2px solid var(--ielts-bright-blue); outline-offset:1px; }
.status-pill.status-success { background:#e8fbf3; color:#147b50; }
.status-pill.status-active { background:#edf3ff; color:#2456b6; }
.status-pill.status-neutral { background:#eef1f5; color:#596273; }
.status-pill.status-warning { background:#fff4d6; color:#805b00; }
.status-pill.status-danger { background:#fde8ea; color:#a42632; }
body:has(.ielts-portal-nav) input.form-control,
body:has(.ielts-portal-nav) textarea.form-control,
body:has(.ielts-portal-nav) select.form-control { box-sizing:border-box; width:100%; min-height:44px; border:1px solid #b9cceb; border-radius:9px; background:#fff; color:var(--ielts-ink); font:inherit; }
body:has(.ielts-portal-nav) textarea.form-control { min-height:150px; padding:12px 13px; resize:vertical; }
body:has(.ielts-portal-nav) input.form-control:focus,
body:has(.ielts-portal-nav) textarea.form-control:focus,
body:has(.ielts-portal-nav) select.form-control:focus { border-color:var(--ielts-bright-blue); box-shadow:0 0 0 3px #356ce82b; outline:none; }
.portal-sidebar-scrim { display:none; }
body:has(.ielts-portal-nav) .page-content-wrapper { margin-left:232px; }
body:has(.ielts-portal-nav) .ielts-portal-shell { max-width:1440px; padding:26px 32px 48px; }
body:has(.ielts-portal-nav) .ielts-shell { max-width:1440px; padding:26px 32px 48px; }
body:has(.ielts-portal-nav) .ielts-shell h1 { font-size:clamp(1.625rem,3vw,2rem); line-height:1.15; }
/* Shared portal type scale. The body class is supplied only by require_student_page. */
.student-portal-root .portal-page-title { font-size:30px!important; line-height:1.2; font-weight:700; margin:.15rem 0 .45rem; color:var(--ielts-navy); }
.student-portal-root .portal-detail-title { font-size:28px!important; line-height:1.25; font-weight:700; margin:.15rem 0 .45rem; color:var(--ielts-navy); }
.student-portal-root .portal-card-title { font-size:20px!important; line-height:1.3; font-weight:700; color:var(--ielts-navy); }
.student-portal-root .portal-section-title { font-size:20px!important; line-height:1.3; font-weight:700; color:var(--ielts-navy); }
.student-portal-root .portal-body-copy { font-size:15px; line-height:1.55; }
.student-portal-root .portal-meta { font-size:14px; line-height:1.45; color:var(--ielts-muted); }
.student-portal-root .portal-eyebrow { color:var(--ielts-teal); font-size:12px; line-height:1.3; font-weight:700; letter-spacing:.12em; }
.student-portal-root .ielts-shell h1 { font-size:30px!important; line-height:1.2; }
.student-portal-root .ielts-shell.portal-detail-page h1 { font-size:28px!important; line-height:1.25; }
.student-portal-root .ielts-shell h2 { font-size:20px!important; line-height:1.3; }
.student-portal-root .portal-hero h1 { font-size:36px!important; line-height:1.2; }
.student-portal-root .portal-feature-row h3 { font-size:1.25rem; }
.student-portal-root .course-progress-card { padding:20px 22px; }
.student-portal-root .course-progress-card .portal-section-heading { margin-bottom:12px; }
.student-portal-root .course-progress-value { color:var(--ielts-blue); font-size:18px; }
.student-portal-root .course-content-table small { display:block; margin-top:4px; color:var(--ielts-muted); }
.student-portal-root .portal-empty-cell { padding:18px!important; color:var(--ielts-muted); text-align:center; }
body:has(.ielts-portal-nav) .ielts-shell.portal-detail-page h1 { font-size:clamp(1.5rem,2.6vw,1.875rem); }
body:has(.ielts-portal-nav) .portal-list-controls { display:flex; align-items:end; flex-wrap:wrap; gap:8px 10px; margin:0 0 10px; padding:12px 14px; border:1px solid var(--ielts-border); border-radius:10px; background:#fff; }
body:has(.ielts-portal-nav) .portal-list-controls label { color:var(--ielts-muted); font-size:12px; font-weight:700; }
body:has(.ielts-portal-nav) .portal-list-controls input,body:has(.ielts-portal-nav) .portal-list-controls select { min-height:36px; padding:7px 10px; border:1px solid #b9cceb; border-radius:8px; background:#fff; color:var(--ielts-ink); font:inherit; }
body:has(.ielts-portal-nav) .portal-list-controls input { min-width:220px; flex:1 1 240px; }
body:has(.ielts-portal-nav) .portal-list-summary { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 12px; color:var(--ielts-muted); font-size:12px; }
body:has(.ielts-portal-nav) .portal-pagination { display:flex; align-items:center; gap:8px; }
body:has(.ielts-portal-nav) .portal-pagination .compact-button { min-height:30px; padding:5px 9px; }
body:has(.ielts-portal-nav) .portal-pagination button:disabled { cursor:not-allowed; opacity:.5; }
body:has(.ielts-portal-nav) .portal-hero { min-height:0; padding:24px 28px; background:#fff; border:1px solid var(--ielts-border); box-shadow:0 7px 20px #102e5c0c; color:var(--ielts-ink); }
body:has(.ielts-portal-nav) .portal-hero h1 { color:var(--ielts-navy); font-size:clamp(1.9rem,3vw,2.35rem); }
body:has(.ielts-portal-nav) .portal-hero p:not(.eyebrow) { color:var(--ielts-muted); }
body:has(.ielts-portal-nav) .portal-hero .eyebrow { color:var(--ielts-teal); }
body:has(.ielts-portal-nav) .portal-hero-avatar { width:72px; height:72px; flex-basis:72px; border-color:#d8e4f8; background:#edf3ff; }
body:has(.ielts-portal-nav) .portal-hero-initial { color:var(--ielts-blue); font-size:1.6rem; }
body:has(.ielts-portal-nav) .portal-kpi-grid { grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; margin:16px 0; }
body:has(.ielts-portal-nav) .portal-kpi { min-height:104px; padding:14px; border-radius:12px; }
body:has(.ielts-portal-nav) .portal-kpi-primary,body:has(.ielts-portal-nav) .portal-kpi-teal { background:#fff; border-color:var(--ielts-border); color:var(--ielts-navy)!important; }
body:has(.ielts-portal-nav) .portal-kpi-primary small,body:has(.ielts-portal-nav) .portal-kpi-primary>span:not(.portal-icon) { color:var(--ielts-muted); }
body:has(.ielts-portal-nav) .portal-kpi-primary:first-child { border-top:3px solid var(--ielts-blue); }
body:has(.ielts-portal-nav) .portal-kpi-teal { border-top:3px solid var(--ielts-teal); }
body:has(.ielts-portal-nav) .portal-kpi strong { font-size:1.55rem; }
body:has(.ielts-portal-nav) .portal-kpi { display:grid; grid-template-columns:1fr; grid-template-rows:auto auto auto; grid-template-areas:"label" "value" "description"; align-content:center; min-height:118px; padding:15px 16px; border-top:4px solid var(--ielts-blue); }
body:has(.ielts-portal-nav) .portal-kpi:nth-child(2) { border-top-color:var(--ielts-teal); }
body:has(.ielts-portal-nav) .portal-kpi:nth-child(3) { border-top-color:var(--ielts-green); }
body:has(.ielts-portal-nav) .portal-kpi:nth-child(4) { border-top-color:var(--ielts-navy); }
body:has(.ielts-portal-nav) .portal-kpi:nth-child(5) { border-top-color:var(--ielts-bright-blue); }
body:has(.ielts-portal-nav) .portal-kpi .portal-icon { display:none; }
body:has(.ielts-portal-nav) .portal-kpi>span:not(.portal-icon) { grid-area:label; font-size:12px; }
body:has(.ielts-portal-nav) .portal-kpi strong { grid-area:value; justify-self:start; margin:4px 0 2px; font-size:1.55rem; }
body:has(.ielts-portal-nav) .portal-kpi small { grid-area:description; font-size:11px; }
body:has(.ielts-portal-nav) .portal-content-grid { gap:14px; }
body:has(.ielts-portal-nav) .portal-panel,.ielts-card { box-shadow:0 6px 18px #102e5c0b; }

@media(max-width:1100px){
  .portal-main-links { display:none; }
  .portal-menu-toggle { display:inline-flex; }
  body:has(.ielts-portal-nav) .portal-kpi-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:720px){
  .portal-nav-inner { padding:0 16px; }
  .portal-sidebar { transform:translateX(-105%); transition:transform .18s ease; box-shadow:10px 0 28px #102e5c24; }
  body.portal-sidebar-open .portal-sidebar { transform:translateX(0); }
  .portal-sidebar-scrim { position:fixed; z-index:18; inset:64px 0 0; background:#102e5c59; }
  body.portal-sidebar-open .portal-sidebar-scrim { display:block; }
  body:has(.ielts-portal-nav) .page-content-wrapper { margin-left:0; }
  body:has(.ielts-portal-nav) .ielts-portal-shell,body:has(.ielts-portal-nav) .ielts-shell { padding:20px 16px 36px; }
  body:has(.ielts-portal-nav) .portal-kpi-grid { grid-template-columns:1fr; }
  body:has(.ielts-portal-nav) .portal-hero { padding:20px; }
  body:has(.ielts-portal-nav) .portal-list-controls { align-items:stretch; flex-direction:column; }
  body:has(.ielts-portal-nav) .portal-list-controls input,body:has(.ielts-portal-nav) .portal-list-controls select,body:has(.ielts-portal-nav) .portal-list-controls button { width:100%; }
  body:has(.ielts-portal-nav) .portal-list-summary { align-items:flex-start; flex-direction:column; }
  .student-portal-root .portal-page-title { font-size:26px!important; }
  .student-portal-root .portal-detail-title,.student-portal-root .ielts-shell.portal-detail-page h1 { font-size:24px!important; }
  .student-portal-root .portal-card-title,.student-portal-root .portal-section-title { font-size:18px!important; }
  .student-portal-root .portal-hero h1 { font-size:30px!important; }
  .student-portal-root .course-progress-card { padding:16px; }
  .portal-definition-grid { grid-template-columns:1fr; }
  .portal-definition-grid>div:nth-child(odd) { border-right:0; }
  .portal-key-value-grid { grid-template-columns:1fr; }
  .portal-key-value-grid>div:nth-child(odd) { border-right:0; }
  .portal-submission-meta { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portal-detail-card { padding:18px 16px; }
  .portal-form-actions { align-items:stretch; flex-direction:column; }
  .portal-form-actions .ielts-button { width:100%; text-align:center; }
  .portal-table-card { padding:16px; }
  .portal-stat-strip { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portal-data-table { min-width:620px; }
}

/* Keep the shared component scale authoritative after legacy portal rules. */
.student-portal-root .portal-dashboard-title { font-size:32px!important; line-height:1.18!important; }
.student-portal-root .portal-page-title { font-size:30px!important; line-height:1.2!important; }
.student-portal-root .portal-detail-title { font-size:28px!important; line-height:1.25!important; }
.student-portal-root .portal-widget-title,
.student-portal-root .portal-card-title,
.student-portal-root .portal-section-title { font-size:20px!important; line-height:1.3!important; }
.student-portal-root .portal-body-copy { font-size:15px!important; line-height:1.5!important; }
.student-portal-root .portal-meta { font-size:14px!important; line-height:1.45!important; }
.student-portal-root .portal-eyebrow { font-size:12px!important; line-height:1.3!important; letter-spacing:.12em; }
.student-portal-root .ielts-shell h1:not(.portal-dashboard-title) { font-size:30px!important; line-height:1.2!important; }
.student-portal-root .ielts-shell.portal-detail-page h1:not(.portal-detail-title) { font-size:28px!important; line-height:1.25!important; }
.student-portal-root .ielts-shell h2:not(.portal-widget-title):not(.portal-card-title):not(.portal-section-title) { font-size:20px!important; line-height:1.3!important; }
.student-portal-root .portal-welcome-panel { min-height:160px; max-height:180px; padding:24px; }
.student-portal-root .portal-welcome-panel .portal-hero-avatar { width:72px; height:72px; flex-basis:72px; }
.student-portal-root .portal-welcome-panel .portal-body-copy { font-size:16px!important; }
.student-portal-root .portal-welcome-actions .ielts-button { min-height:40px; padding:9px 13px; }
.student-portal-root .portal-dashboard-layout { display:grid; gap:24px; }
.student-portal-root .portal-dashboard-kpis { margin:0; gap:16px; }
.student-portal-root .portal-kpi { min-height:124px; }
.student-portal-root .portal-panel, .student-portal-root .ielts-card { min-height:0; }
.student-portal-root .portal-dashboard-stack { display:grid; gap:24px; }
.student-portal-root .portal-dashboard-stack > .portal-content-grid { margin:0; gap:24px; }
.student-portal-root .portal-dashboard-stack > .portal-result-widget { margin:0; min-height:155px; padding:20px 22px; }
.student-portal-root .portal-dashboard-stack > .portal-dashboard-secondary-grid { align-items:stretch; }
.student-portal-root .portal-dashboard-secondary-grid > .portal-compact-widget { min-height:165px; }
.student-portal-root .portal-card-divider { margin:16px 0; border-top:1px solid var(--ielts-border); }
.student-portal-root .portal-stack-row { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.student-portal-root .portal-detail-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:16px; }
.student-portal-root .portal-inline-summary { display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:88px; padding:18px 20px; border:1px solid var(--ielts-border); border-radius:14px; background:#fff; box-shadow:0 6px 18px #102e5c0b; }
.student-portal-root .portal-inline-summary > div { display:flex; flex-direction:column; gap:4px; }
.student-portal-root .portal-inline-summary .portal-widget-title { font-size:20px!important; }
.student-portal-root .portal-inline-disclaimer { margin:0; padding:0 2px; }
.student-portal-root .portal-dashboard-stack > .portal-inline-summary { margin:0; }
.student-portal-root .portal-dashboard-layout > .portal-footer-note { margin:0; }
.student-portal-root .portal-result-widget .portal-section-heading { margin-bottom:10px; }
.student-portal-root .portal-result-widget .portal-widget-title,
.student-portal-root .portal-compact-widget .portal-widget-title { font-size:22px!important; }
.student-portal-root .portal-result-widget .portal-empty-row { min-height:88px; }
.student-portal-root .portal-result-widget .portal-empty-row .portal-card-title { font-size:20px!important; }
.student-portal-root .portal-result-widget .portal-empty-row .portal-meta,
.student-portal-root .portal-compact-widget .portal-body-copy { font-size:15px!important; }
.student-portal-root .portal-footer-note { margin-top:20px; }
.student-portal-root .portal-list-page-header { margin-bottom:24px; }
.student-portal-root .portal-header-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.student-portal-root .portal-header-actions .ielts-button { margin:0; }
.student-portal-root .mock-exam-detail-header .portal-header-actions { justify-content:flex-end; }
.student-portal-root .mock-exam-availability { font-size:13px; }
.student-portal-root .portal-submission-success p:not(.eyebrow) { max-width:650px; }
.student-portal-root .portal-list-controls { margin-bottom:12px; }
.student-portal-root .portal-list-controls .portal-list-search { box-sizing:border-box; width:100%; height:42px; min-width:0; min-height:42px; max-height:42px; padding:0 12px; line-height:normal; resize:none; }
.student-portal-root .portal-list-controls .portal-list-page-size { box-sizing:border-box; height:42px; min-height:42px; max-height:42px; }
.student-portal-root .portal-list-controls .portal-list-submit { height:42px; min-height:42px; max-height:42px; }
.student-portal-root .portal-list-summary { margin-bottom:16px; }
@media(max-width:720px){
  .student-portal-root .portal-dashboard-title { font-size:27px!important; line-height:1.18!important; }
  .student-portal-root .portal-page-title { font-size:26px!important; }
  .student-portal-root .portal-detail-title,
  .student-portal-root .ielts-shell.portal-detail-page h1:not(.portal-page-title) { font-size:24px!important; }
  .student-portal-root .portal-widget-title,
  .student-portal-root .portal-card-title,
  .student-portal-root .portal-section-title { font-size:18px!important; }
  .student-portal-root .portal-welcome-panel { min-height:0; max-height:none; padding:16px; }
  .student-portal-root .portal-welcome-panel .portal-hero-avatar { width:56px; height:56px; flex-basis:56px; }
  .student-portal-root .portal-welcome-panel .portal-body-copy { font-size:15px!important; }
  .student-portal-root .portal-dashboard-layout { gap:16px; }
  .student-portal-root .portal-dashboard-kpis { gap:16px; }
  .student-portal-root .portal-dashboard-stack { gap:16px; }
  .student-portal-root .portal-dashboard-stack > .portal-content-grid { gap:16px; }
  .student-portal-root .portal-dashboard-stack > .portal-result-widget { min-height:0; padding:16px; }
  .student-portal-root .portal-dashboard-secondary-grid > .portal-compact-widget { min-height:165px; }
  .student-portal-root .portal-inline-summary { align-items:stretch; flex-direction:column; gap:12px; padding:16px; }
  .student-portal-root .portal-inline-summary .ielts-button { align-self:flex-start; }
  .student-portal-root .portal-card-divider { margin:12px 0; }
  .student-portal-root .portal-stack-row { align-items:flex-start; }
  .student-portal-root .portal-result-widget .portal-widget-title,
  .student-portal-root .portal-compact-widget .portal-widget-title { font-size:20px!important; }
  .student-portal-root .portal-list-page-header { margin-bottom:16px; }
  .student-portal-root .portal-header-actions { gap:8px; }
  .student-portal-root .mock-exam-detail-header { flex-direction:column; }
  .student-portal-root .mock-exam-detail-header .portal-header-actions { width:100%; justify-content:flex-start; }
  .student-portal-root .mock-exam-detail-header .portal-header-actions .ielts-button { flex:0 1 auto; }
  .student-portal-root .portal-list-controls { display:flex; flex-direction:column; align-items:stretch; gap:10px; padding:16px; }
  .student-portal-root .portal-list-controls label { margin:0; }
  .student-portal-root .portal-list-controls .portal-list-search,
  .student-portal-root .portal-list-controls .portal-list-page-size,
  .student-portal-root .portal-list-controls .portal-list-submit { width:100%; min-width:0; flex:0 0 auto; }
}
@media (max-width: 767px) {
  .student-portal-root .portal-kpi-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  .student-portal-root .portal-kpi {
    min-height: 0;
    padding: 14px 16px;
  }
  .student-portal-root .portal-kpi > span:not(.portal-icon) {
    font-size: 13px;
  }
  .student-portal-root .portal-kpi > strong {
    font-size: 24px !important;
  }
  .student-portal-root .portal-kpi > small {
    font-size: 12px;
  }
  .student-portal-root .portal-skill-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  .student-portal-root .portal-skill-card--overall {
    grid-column: 1 / -1;
  }
}
@media (max-width: 359px) {
  .student-portal-root .portal-kpi-grid {
    grid-template-columns: 1fr;
  }
}

/* Student portal controls are navigational/button-like: preserve focus and hover feedback without underlines. */
.student-portal-root a.ielts-button,
.student-portal-root a.text-link,
.student-portal-root .portal-sidebar-links a,
.student-portal-root .portal-brand,
.student-portal-root .portal-profile-panel a,
.student-portal-root .portal-mobile-panel a,
.student-portal-root .portal-kpi,
.student-portal-root .portal-result-row,
.student-portal-root .portal-nav a,
.student-portal-root .portal-data-table a,
.student-portal-root .portal-pagination a,
.student-portal-root .portal-header-actions a { text-decoration:none!important; }
.student-portal-root a.ielts-button:hover,
.student-portal-root a.ielts-button:focus-visible,
.student-portal-root a.text-link:hover,
.student-portal-root a.text-link:focus-visible,
.student-portal-root .portal-sidebar-links a:hover,
.student-portal-root .portal-sidebar-links a:focus-visible,
.student-portal-root .portal-data-table a:hover,
.student-portal-root .portal-data-table a:focus-visible,
.student-portal-root .portal-pagination a:hover,
.student-portal-root .portal-pagination a:focus-visible { text-decoration:none!important; }

.mock-player-status{display:flex;align-items:flex-end;flex-direction:column;gap:4px}.mock-player-status strong{font-size:24px;color:var(--ielts-navy)}.mock-player-status span:last-child{font-size:12px;color:var(--ielts-muted)}.mock-player-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin:0 0 16px;border:1px solid var(--ielts-border);border-radius:12px;background:#fff;color:var(--ielts-muted)}.mock-player-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.mock-section{margin-bottom:18px}.mock-section-header,.mock-question-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.mock-section-header h2{margin:0}.mock-section-header h2 small{font-size:13px;color:var(--ielts-muted);font-weight:500}.mock-passage{margin:16px 0;padding:18px;border:1px solid var(--ielts-border);border-radius:10px;background:var(--ielts-bg);line-height:1.7;max-height:420px;overflow:auto}.mock-passage h3{margin-top:0}.mock-question-nav{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.mock-question-link{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border:1px solid var(--ielts-border);border-radius:8px;color:var(--ielts-navy);text-decoration:none!important;font-weight:700}.mock-question-link.is-answered{background:var(--ielts-mint);border-color:var(--ielts-green)}.mock-question-link.is-flagged{background:#fff4d6;border-color:#d99b00;color:#805b00}.mock-question-link.is-current{outline:3px solid var(--ielts-blue);outline-offset:2px}.mock-question{padding:18px 0;border-top:1px solid var(--ielts-border);scroll-margin-top:90px}.mock-question-heading h3{margin:0;font-size:16px}.mock-answer-state{font-size:12px;color:var(--ielts-muted)}.mock-prompt{margin:10px 0;line-height:1.6}.mock-options{display:grid;gap:8px;margin:12px 0}.mock-options label{display:flex;gap:8px;padding:10px;border:1px solid var(--ielts-border);border-radius:8px}.mock-question-actions{display:flex;gap:8px;margin-top:10px}.mock-flag-button{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--ielts-border);border-radius:8px;background:#fff;color:var(--ielts-navy);font:inherit;font-size:12px;font-weight:700;cursor:pointer}.mock-flag-button:hover,.mock-flag-button:focus-visible,.mock-flag-button.is-flagged{background:#fff4d6;border-color:#d99b00;color:#805b00;outline:2px solid #d99b00;outline-offset:1px}.mock-state-legend{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:0 0 16px;color:var(--ielts-muted);font-size:12px}.legend-item{display:inline-flex;align-items:center;gap:5px}.legend-dot{display:inline-grid;place-items:center;width:13px;height:13px;border:1px solid var(--ielts-border);border-radius:3px;font-style:normal;font-size:11px}.legend-dot.answered{background:var(--ielts-mint);border-color:var(--ielts-green)}.legend-dot.flagged{background:#fff4d6;border-color:#d99b00;color:#805b00}.legend-dot.current{outline:2px solid var(--ielts-blue);outline-offset:1px}.mock-leave-modal,.mock-submit-modal{position:fixed;z-index:80;inset:0;display:grid;place-items:center;padding:20px;background:#102e5c66}.mock-leave-modal[hidden],.mock-submit-modal[hidden]{display:none}.mock-modal-card{width:min(480px,100%);padding:26px;border:1px solid var(--ielts-border);border-radius:14px;background:#fff;box-shadow:0 18px 50px #102e5c3d}.mock-modal-card h2{margin-top:0}.mock-modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:9px;margin-top:22px}.mock-before-grid,.mock-section-labels,.review-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.mock-before-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:0 0 20px}.mock-before-grid>div,.mock-section-labels span{display:grid;gap:5px;padding:13px 14px;border:1px solid var(--ielts-border);border-radius:10px;background:#fbfdff}.mock-section-labels span{display:block;color:var(--ielts-navy);font-weight:700}.review-summary-grid{margin:18px 0 24px}.review-summary-item{display:grid;gap:5px;padding:16px;border:1px solid var(--ielts-border);border-radius:10px;background:#fbfdff;color:var(--ielts-navy)!important;text-decoration:none!important}.review-summary-item:hover,.review-summary-item:focus-visible{border-color:var(--ielts-blue);box-shadow:0 5px 14px #2f63dd3d;outline:2px solid var(--ielts-bright-blue);outline-offset:2px}.review-summary-item strong{font-size:24px}.review-summary-item span,.review-section-row span{color:var(--ielts-muted);font-size:12px}.review-section-list,.review-question-list{display:grid;gap:8px;margin:12px 0 24px}.review-section-row,.review-question-link{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid var(--ielts-border);border-radius:9px;background:#fff;color:var(--ielts-navy)!important;text-decoration:none!important}.review-section-row>div{display:grid;gap:4px}.review-question-link:hover,.review-question-link:focus-visible,.review-section-row:hover{border-color:var(--ielts-blue);background:#fbfdff;outline:2px solid var(--ielts-bright-blue);outline-offset:1px}.review-question-status{font-size:12px;font-weight:700}.review-question-status.is-flagged{color:#805b00}.review-question-status.is-answered{color:#147b50}.review-question-status.is-unanswered{color:var(--ielts-muted)}
@media(max-width:600px){.mock-player-status{align-items:flex-start}.mock-player-toolbar{align-items:flex-start;flex-direction:column}.mock-question-actions{flex-wrap:wrap}.mock-before-grid,.mock-section-labels,.review-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mock-modal-actions{justify-content:stretch}.mock-modal-actions>*{flex:1}.review-section-row{align-items:flex-start;flex-direction:column}}

/* Mock Lab responsive player and recording controls. */
.mock-before-grid-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.mock-player{max-width:1180px}.mock-player-header{align-items:center}.mock-section-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 18px}.mock-section-nav-item{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:2px 9px;align-items:center;padding:11px 13px;border:1px solid var(--ielts-border);border-radius:10px;background:#fff;color:var(--ielts-navy);font:inherit;text-align:left;cursor:pointer}.mock-section-nav-item:hover,.mock-section-nav-item:focus-visible{border-color:var(--ielts-blue);background:#f4f7ff;outline:2px solid var(--ielts-bright-blue);outline-offset:1px;text-decoration:none}.mock-section-nav-item.is-current{border-color:var(--ielts-blue);box-shadow:inset 3px 0 var(--ielts-blue)}.mock-section-nav-item.is-completed{background:var(--ielts-mint);border-color:var(--ielts-green)}.mock-section-nav-number{grid-row:1 / span 2;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#edf3ff;color:var(--ielts-blue);font-weight:800}.mock-section-nav-item small{color:var(--ielts-muted);font-size:11px}.mock-section{scroll-margin-top:20px}.mock-section-header{align-items:center}.mock-section-status{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap}.mock-section-instructions,.mock-question-instructions{margin:12px 0;padding:10px 12px;border-left:3px solid var(--ielts-teal);border-radius:5px;background:#f7fbff;color:var(--ielts-muted);line-height:1.5}.mock-question-instructions p,.mock-section-instructions p{margin:0}.mock-question-nav{margin:14px 0 4px}.mock-question-link{width:34px;height:34px}.mock-question-actions{min-height:36px;align-items:center}.mock-flag-button{min-height:34px;padding:5px 9px}.mock-flag-button .flag-button-text{font-size:11px}.mock-section-nav-item,.mock-flag-button,.speaking-recorder button{ text-decoration:none!important}.speaking-recorder{display:grid;gap:10px;margin:14px 0;padding:14px;border:1px solid var(--ielts-border);border-radius:10px;background:#fbfdff}.speaking-recorder-controls{display:flex;gap:8px;flex-wrap:wrap}.speaking-recorder audio{width:100%;height:38px}.speaking-recording-status{margin:0;font-size:12px}.mock-prompt table,.mock-section-instructions table,.mock-question-instructions table{width:100%;margin:12px 0;border-collapse:collapse;background:#fff}.mock-prompt th,.mock-prompt td,.mock-section-instructions th,.mock-section-instructions td,.mock-question-instructions th,.mock-question-instructions td{padding:8px;border:1px solid var(--ielts-border);text-align:left;vertical-align:top}.mock-prompt th,.mock-section-instructions th,.mock-question-instructions th{background:#edf3ff;color:var(--ielts-navy)}
@media(max-width:760px){.mock-before-grid-three{grid-template-columns:1fr}.mock-section-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.mock-player-header{align-items:flex-start}.mock-section-header{align-items:flex-start;flex-direction:column}.mock-section-status{justify-content:flex-start}.mock-section-status .ielts-button{min-height:34px}.speaking-recorder-controls>*{flex:1}.mock-question-link{width:32px;height:32px}}

/* IELTS LMS workspace action links are buttons/navigation, not article links. */
.ielts-staff-home a,.ielts-workbench a,.ielts-reports a,#editorjs .ielts-ops-card a,#editorjs .ielts-process .ielts-actions a{ text-decoration:none!important; }
.ielts-staff-home a:hover,.ielts-staff-home a:focus-visible,.ielts-workbench a:hover,.ielts-workbench a:focus-visible,.ielts-reports a:hover,.ielts-reports a:focus-visible,#editorjs .ielts-ops-card a:hover,#editorjs .ielts-ops-card a:focus-visible,#editorjs .ielts-process .ielts-actions a:hover,#editorjs .ielts-process .ielts-actions a:focus-visible{ text-decoration:none!important; }

/* Focused mock-test dashboard and explicit document actions. */
.student-portal-root .portal-dashboard-layout { gap:18px; }
.student-portal-root .portal-welcome-compact { min-height:0; max-height:none; padding:20px 22px; }
.student-portal-root .portal-dashboard-kpis { grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.student-portal-root .portal-dashboard-kpis .portal-kpi { min-height:104px; padding:13px 15px; }
.student-portal-root .portal-dashboard-kpis .portal-kpi:nth-child(4) { border-top-color:var(--ielts-green); }
.student-portal-root .portal-dashboard-stack { gap:14px; }
.student-portal-root .portal-dashboard-stack>.portal-panel,
.student-portal-root .portal-dashboard-stack>.portal-result-widget { min-height:0; margin:0; padding:18px 20px; }
.student-portal-root .portal-dashboard-stack>.portal-result-widget .portal-section-heading { margin-bottom:6px; }
.student-portal-root .portal-mock-dashboard .portal-section-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
.student-portal-root .portal-mock-dashboard .portal-section-heading .portal-eyebrow { margin-bottom:3px; }
.student-portal-root .portal-mock-dashboard .portal-widget-title { margin:0; font-size:19px!important; }
.student-portal-root .portal-upcoming-test { display:flex; align-items:center; justify-content:space-between; gap:18px; padding-top:10px; border-top:1px solid var(--ielts-border); }
.student-portal-root .portal-upcoming-test .portal-card-title { margin:0 0 5px; font-size:17px!important; }
.student-portal-root .portal-upcoming-test .portal-meta,
.student-portal-root .portal-pending-widget>.portal-meta,
.student-portal-root .portal-result-widget>.portal-meta { margin:3px 0; font-size:12px!important; }
.student-portal-root .portal-long-exam-title { min-width:0; overflow-wrap:anywhere; word-break:normal; }
.student-portal-root .portal-empty-compact { display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 12px; margin:0; padding:12px 14px; border:1px dashed var(--ielts-border); border-radius:9px; color:var(--ielts-muted); font-size:13px; }
.student-portal-root .portal-empty-compact strong { color:var(--ielts-navy); }
.student-portal-root .portal-widget-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.student-portal-root .portal-widget-actions .ielts-button { min-height:36px; padding:8px 11px; font-size:12px; }
.student-portal-root .portal-approved-feedback { margin-top:12px; padding:10px 12px; border-left:3px solid var(--ielts-teal); border-radius:0 8px 8px 0; background:#f3fafb; }
.student-portal-root .portal-approved-feedback h3 { margin:0 0 4px; color:var(--ielts-navy); font-size:13px; }
.student-portal-root .portal-approved-feedback p { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; font-size:13px; line-height:1.5; }
.student-portal-root .portal-skill-card--overall { border-color:#c5ded8; background:#f3faf8; }
.student-portal-root .portal-skill-card--overall strong { font-size:1.45rem; }
.student-portal-root .portal-footer-note { margin:0; font-size:12px; }
.student-portal-root .status-pill-success { background:#e8fbf3; color:#147b50; border:1px solid #b9e8d3; }
body:has(.ielts-portal-nav) .portal-result-row { align-items:flex-start; padding:16px 18px; }
body:has(.ielts-portal-nav) .portal-result-row:hover { transform:none; }
body:has(.ielts-portal-nav) .portal-result-main { min-width:0; flex:1 1 560px; }
body:has(.ielts-portal-nav) .portal-result-main h2 { max-width:780px; margin:0 0 5px; font-size:18px; line-height:1.3; overflow-wrap:anywhere; word-break:normal; }
body:has(.ielts-portal-nav) .portal-result-meta { display:flex; flex-wrap:wrap; gap:4px 8px; margin:3px 0; color:var(--ielts-muted); font-size:12px; line-height:1.4; }
body:has(.ielts-portal-nav) .portal-result-meta span { min-width:62px; color:#52657d; font-weight:650; }
body:has(.ielts-portal-nav) .portal-result-actions { display:flex; flex:0 1 250px; flex-direction:column; align-items:stretch; gap:6px; }
body:has(.ielts-portal-nav) .portal-result-actions .ielts-button { width:100%; min-height:36px; padding:8px 10px; text-align:center; font-size:12px; }
body:has(.ielts-portal-nav) .portal-result-actions .status-pill { align-self:flex-start; margin:0 0 2px; white-space:nowrap; }
body:has(.ielts-portal-nav) .portal-empty-result { align-items:flex-start; gap:9px; padding:18px; }
.student-portal-root .portal-result-detail { display:grid; gap:12px; }
.student-portal-root .portal-result-detail .portal-detail-header { align-items:flex-start; margin:0; }
.student-portal-root .portal-result-heading { min-width:0; }
.student-portal-root .portal-result-heading h1 { max-width:900px; margin:0 0 7px; font-size:26px!important; line-height:1.25!important; overflow-wrap:anywhere; word-break:normal; }
.student-portal-root .portal-result-detail-actions { display:flex; flex-wrap:wrap; gap:7px; }
.student-portal-root .portal-result-detail-meta { display:flex; flex-wrap:wrap; align-items:center; gap:8px 24px; padding:10px 13px; border:1px solid var(--ielts-border); border-radius:9px; background:#fff; }
.student-portal-root .portal-result-detail-meta>div { display:grid; gap:2px; }
.student-portal-root .portal-result-detail-meta>div span { color:var(--ielts-muted); font-size:11px; }
.student-portal-root .portal-result-detail-meta>div strong { color:var(--ielts-navy); font-size:13px; font-weight:650; }
.student-portal-root .portal-result-detail-meta>small { color:var(--ielts-muted); font-size:11px; }
.student-portal-root .portal-result-detail>.portal-disclaimer { margin:0; font-size:12px; }
.student-portal-root .portal-pending-result,.student-portal-root .portal-approved-result { padding:18px; }
.student-portal-root .portal-pending-result h2,.student-portal-root .portal-approved-result h2 { margin:0; font-size:18px!important; }
.student-portal-root .portal-pending-result p { max-width:800px; line-height:1.5; }
.student-portal-root .portal-approved-result .portal-section-heading { margin-bottom:10px; }
.student-portal-root .portal-approved-result .result-summary-grid { gap:10px; margin:0 0 12px; }
.student-portal-root .ielts-band-summary { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; margin:12px 0 16px; }
.student-portal-root .ielts-band-card { display:grid; justify-items:center; align-content:start; gap:7px; min-width:0; min-height:150px; padding:12px 8px 10px; border:1px solid var(--ielts-border,#dce4ef); border-radius:12px; background:#fff; text-align:center; }
.student-portal-root .ielts-band-card.is-overall { border-color:#c8d8ed; background:#f6f9ff; box-shadow:inset 0 2px 0 #405d93; }
.student-portal-root .ielts-band-label { color:var(--ielts-navy,#17304f); font-size:13px; font-weight:650; line-height:1.2; }
.student-portal-root .ielts-band-ring { display:grid; place-items:center; width:78px; height:78px; border-radius:50%; background:conic-gradient(var(--ielts-band-color,#3478c8) 0 var(--ielts-band-fraction,0%), #e8edf4 var(--ielts-band-fraction,0%) 100%); }
.student-portal-root .ielts-band-ring::before { content:""; grid-area:1/1; width:62px; height:62px; border-radius:50%; background:#fff; }
.student-portal-root .ielts-band-ring strong { z-index:1; grid-area:1/1; color:var(--ielts-navy,#17304f); font-size:20px; font-weight:700; font-variant-numeric:tabular-nums; line-height:1; }
.student-portal-root .ielts-band-ring.state-not-included,.student-portal-root .ielts-band-ring.state-unavailable,.student-portal-root .ielts-band-ring.state-not-calculated { background:#e8edf4; }
.student-portal-root .ielts-band-ring.state-restricted { background:#e8edf4; }
.student-portal-root .ielts-band-card small { color:var(--ielts-muted,#667085); font-size:10px; line-height:1.25; }
@media(max-width:900px) { .student-portal-root .ielts-band-summary { grid-template-columns:repeat(5,minmax(100px,1fr)); overflow-x:auto; padding:2px 1px 8px; } }
@media(max-width:600px) { .student-portal-root .ielts-band-summary { grid-template-columns:repeat(2,minmax(0,1fr)); overflow:visible; } .student-portal-root .ielts-band-card { min-height:140px; } .student-portal-root .ielts-band-card:last-child { grid-column:1/-1; } }
@media(prefers-reduced-motion:no-preference) { .student-portal-root .ielts-band-ring { transition:background .35s ease; } }
@media(prefers-reduced-motion:reduce) { .student-portal-root .ielts-band-ring { transition:none!important; animation:none!important; } }
@media(max-width:900px) {
  .student-portal-root .portal-dashboard-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body:has(.ielts-portal-nav) .portal-result-row { flex-direction:column; }
  body:has(.ielts-portal-nav) .portal-result-actions { width:100%; flex-basis:auto; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
  body:has(.ielts-portal-nav) .portal-result-actions .status-pill { grid-column:1/-1; }
}
@media(max-width:600px) {
  .student-portal-root .portal-welcome-compact { flex-direction:row; align-items:center; }
  .student-portal-root .portal-upcoming-test { align-items:flex-start; flex-direction:column; }
  .student-portal-root .portal-upcoming-test>.ielts-button { width:100%; text-align:center; }
  .student-portal-root .portal-dashboard-stack>.portal-panel,
  .student-portal-root .portal-dashboard-stack>.portal-result-widget { padding:14px; }
  .student-portal-root .portal-result-detail .portal-detail-header { flex-direction:column; }
  .student-portal-root .portal-result-detail-actions { width:100%; }
  .student-portal-root .portal-result-detail-actions .ielts-button { flex:1 1 auto; text-align:center; }
  .student-portal-root .portal-result-detail-meta { display:grid; grid-template-columns:1fr; gap:8px; }
  body:has(.ielts-portal-nav) .portal-result-row { padding:14px; }
  body:has(.ielts-portal-nav) .portal-result-main { width:100%; flex:0 1 auto; }
  body:has(.ielts-portal-nav) .portal-result-actions { grid-template-columns:1fr; }
  body:has(.ielts-portal-nav) .portal-result-actions .status-pill { grid-column:auto; }
}
