.portal-page{width:100%;max-width:920px;margin:0 auto}.portal-page--feed,.portal-page--narrow{max-width:640px}.portal-page--report{max-width:820px}.portal-page-header{margin-bottom:1.75rem}.portal-page-header h1{margin:0;font-size:1.65rem;font-weight:700;letter-spacing:-.025em;color:#111827;line-height:1.2}.portal-page-header p{margin:.4rem 0 0;color:var(--text-muted, #6b7280);font-size:.95rem;line-height:1.45;max-width:42rem}.portal-section{margin-bottom:2rem}.portal-section h2{margin:0 0 .85rem;font-size:.8rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#6b7280}.portal-card.mat-mdc-card{border-radius:14px;border:1px solid rgba(109,90,230,.1);box-shadow:0 1px 2px #1118270a,0 4px 16px #6d5ae60f;background:#fff}.portal-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;margin-bottom:1.75rem}@media(max-width:640px){.portal-stat-grid{grid-template-columns:1fr}}.portal-stat.mat-mdc-card{padding:1.1rem 1.25rem;text-align:left}.portal-stat.mat-mdc-card .portal-stat__value{font-size:1.85rem;font-weight:700;letter-spacing:-.03em;color:var(--brand-deep, #5b4cdb);line-height:1.1}.portal-stat.mat-mdc-card .portal-stat__label{margin-top:.25rem;color:var(--text-muted, #6b7280);font-size:.875rem;font-weight:500}.portal-list-card.mat-mdc-card{display:flex;align-items:center;gap:1rem;padding:1rem 1.15rem;margin-bottom:.65rem}.portal-list-card.mat-mdc-card .portal-list-card__body{flex:1;min-width:0}.portal-list-card.mat-mdc-card .portal-list-card__body strong{display:block;font-size:.95rem;color:#111827}.portal-list-card.mat-mdc-card .portal-list-card__body p{margin:.2rem 0 0;color:var(--text-muted, #6b7280);font-size:.875rem;line-height:1.4}.portal-list-card.mat-mdc-card .portal-list-card__actions{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.35rem}.portal-list-card--muted.mat-mdc-card{background:#faf9ff;border-style:dashed}.portal-table-wrap.mat-mdc-card{padding:0;overflow:hidden}.portal-table-wrap.mat-mdc-card table{width:100%}.portal-table-wrap.mat-mdc-card .mat-mdc-header-row{background:#faf8ff}.portal-table-wrap.mat-mdc-card .mat-mdc-header-cell{font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#6b7280}.portal-table-wrap.mat-mdc-card .mat-mdc-row:hover{background:#f3f0ff8c}.portal-empty{padding:2.5rem 1.5rem;text-align:center;color:var(--text-muted, #6b7280);font-size:.95rem;background:#fff;border-radius:14px;border:1px dashed rgba(109,90,230,.22)}.portal-filter{width:100%;max-width:280px;margin-bottom:1.25rem}.portal-load-more{display:flex;justify-content:center;margin-top:.5rem;padding-bottom:1rem}.portal-error{padding:.85rem 1rem;border-radius:10px;background:#fef2f2;color:#991b1b;font-size:.9rem}.portal-action-btn.mat-mdc-button,.portal-action-btn.mat-mdc-unelevated-button,.portal-action-btn.mat-mdc-outlined-button{border-radius:10px!important;font-weight:600!important;font-size:.8125rem!important;letter-spacing:.01em;min-height:36px}.portal-action-btn.mat-mdc-button .mat-icon,.portal-action-btn.mat-mdc-unelevated-button .mat-icon,.portal-action-btn.mat-mdc-outlined-button .mat-icon{font-size:1.125rem;width:1.125rem;height:1.125rem;margin-right:.2rem;margin-left:-.1rem}.portal-action-btn.mat-mdc-unelevated-button{--mdc-filled-button-container-color: #6d5ae6;--mdc-filled-button-label-text-color: #fff;--mat-filled-button-state-layer-color: #fff;--mat-button-filled-container-color: #6d5ae6;--mat-button-filled-label-text-color: #fff;box-shadow:0 1px 2px #5b4cdb2e,0 4px 12px #6d5ae633}.portal-action-btn.mat-mdc-unelevated-button .mat-icon{color:#fff}.portal-action-btn.mat-mdc-unelevated-button:hover:not(:disabled){--mdc-filled-button-container-color: #5b4cdb;--mat-button-filled-container-color: #5b4cdb;box-shadow:0 2px 4px #5b4cdb38,0 6px 16px #6d5ae63d}.portal-action-btn.mat-mdc-unelevated-button:disabled{--mdc-filled-button-container-color: #c4b5fd;--mat-button-filled-container-color: #c4b5fd;box-shadow:none;opacity:1}.portal-action-btn.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(109, 90, 230, .32);--mdc-outlined-button-label-text-color: #5b4cdb;--mat-button-outlined-label-text-color: #5b4cdb;--mat-button-outlined-outline-color: rgba(109, 90, 230, .32);background:#ffffffeb}.portal-action-btn.mat-mdc-outlined-button .mat-icon{color:#6d5ae6}.portal-action-btn.mat-mdc-outlined-button:hover:not(:disabled){background:#f8f6ff;--mdc-outlined-button-outline-color: rgba(109, 90, 230, .5);--mat-button-outlined-outline-color: rgba(109, 90, 230, .5)}.portal-action-btn.mat-mdc-button:not(.mat-mdc-outlined-button):not(.mat-mdc-unelevated-button){--mdc-text-button-label-text-color: #6b7280;--mat-button-text-label-text-color: #6b7280}.portal-action-btn.mat-mdc-button:not(.mat-mdc-outlined-button):not(.mat-mdc-unelevated-button) .mat-icon{color:#9ca3af}.portal-action-btn.mat-mdc-button:not(.mat-mdc-outlined-button):not(.mat-mdc-unelevated-button):hover:not(:disabled){background:#6d5ae612;--mdc-text-button-label-text-color: #5b4cdb;--mat-button-text-label-text-color: #5b4cdb}.portal-action-btn.mat-mdc-button:not(.mat-mdc-outlined-button):not(.mat-mdc-unelevated-button):hover:not(:disabled) .mat-icon{color:#6d5ae6}html{color-scheme:light}html{--mat-sys-background: #fef8fc;--mat-sys-error: #ba1a1a;--mat-sys-error-container: #ffdad6;--mat-sys-inverse-on-surface: #f5eff4;--mat-sys-inverse-primary: #d5baff;--mat-sys-inverse-surface: #323033;--mat-sys-on-background: #1d1b1e;--mat-sys-on-error: #ffffff;--mat-sys-on-error-container: #93000a;--mat-sys-on-primary: #ffffff;--mat-sys-on-primary-container: #5f00c0;--mat-sys-on-primary-fixed: #270057;--mat-sys-on-primary-fixed-variant: #5f00c0;--mat-sys-on-secondary: #ffffff;--mat-sys-on-secondary-container: #4b4357;--mat-sys-on-secondary-fixed: #1f182a;--mat-sys-on-secondary-fixed-variant: #4b4357;--mat-sys-on-surface: #1d1b1e;--mat-sys-on-surface-variant: #49454e;--mat-sys-on-tertiary: #ffffff;--mat-sys-on-tertiary-container: #5f00c0;--mat-sys-on-tertiary-fixed: #270057;--mat-sys-on-tertiary-fixed-variant: #5f00c0;--mat-sys-outline: #7b757f;--mat-sys-outline-variant: #cbc4cf;--mat-sys-primary: #7d00fa;--mat-sys-primary-container: #ecdcff;--mat-sys-primary-fixed: #ecdcff;--mat-sys-primary-fixed-dim: #d5baff;--mat-sys-scrim: #000000;--mat-sys-secondary: #645b70;--mat-sys-secondary-container: #eadef7;--mat-sys-secondary-fixed: #eadef7;--mat-sys-secondary-fixed-dim: #cec2db;--mat-sys-shadow: #000000;--mat-sys-surface: #fef8fc;--mat-sys-surface-bright: #fef8fc;--mat-sys-surface-container: #f2ecf1;--mat-sys-surface-container-high: #ede6eb;--mat-sys-surface-container-highest: #e6e1e6;--mat-sys-surface-container-low: #f8f2f6;--mat-sys-surface-container-lowest: #ffffff;--mat-sys-surface-dim: #ded8dd;--mat-sys-surface-tint: #7d00fa;--mat-sys-surface-variant: #e8e0eb;--mat-sys-tertiary: #7d00fa;--mat-sys-tertiary-container: #ecdcff;--mat-sys-tertiary-fixed: #ecdcff;--mat-sys-tertiary-fixed-dim: #d5baff;--mat-sys-neutral-variant20: #332f37;--mat-sys-neutral10: #1d1b1e}html{--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mat-sys-body-large: 400 1rem / 1.5rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-body-large-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-body-medium-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;--mat-sys-body-small: 400 .75rem / 1rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-body-small-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-display-large-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-display-medium-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-display-small-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-headline-large-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-headline-medium-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-headline-small-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-label-large-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-label-medium-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-label-small-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-title-large-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-title-medium-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem IBM Plex Sans, system-ui, sans-serif;--mat-sys-title-small-font: IBM Plex Sans, system-ui, sans-serif;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500}html{--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large: 16px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-medium: 12px;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px}html{--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12}.mat-mdc-unelevated-button.mat-primary,.mat-mdc-unelevated-button[color=primary]{--mdc-filled-button-container-color: #6d5ae6;--mdc-filled-button-label-text-color: #fff;--mat-filled-button-state-layer-color: #fff;--mat-button-filled-container-color: #6d5ae6;--mat-button-filled-label-text-color: #fff;border-radius:10px;font-weight:600;letter-spacing:.01em;box-shadow:0 1px 2px #5b4cdb2e,0 4px 12px #6d5ae633}.mat-mdc-unelevated-button.mat-primary:hover:not(:disabled),.mat-mdc-unelevated-button[color=primary]:hover:not(:disabled){--mdc-filled-button-container-color: #5b4cdb;--mat-button-filled-container-color: #5b4cdb}.mat-mdc-unelevated-button.mat-primary:disabled,.mat-mdc-unelevated-button[color=primary]:disabled{--mdc-filled-button-container-color: #c4b5fd;--mat-button-filled-container-color: #c4b5fd;box-shadow:none}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(109, 90, 230, .32);--mdc-outlined-button-label-text-color: #5b4cdb;--mat-button-outlined-label-text-color: #5b4cdb;--mat-button-outlined-outline-color: rgba(109, 90, 230, .32);border-radius:10px;font-weight:600}.mat-mdc-outlined-button:hover:not(:disabled){background:#f8f6ff;--mdc-outlined-button-outline-color: rgba(109, 90, 230, .48);--mat-button-outlined-outline-color: rgba(109, 90, 230, .48)}:root{--brand: #6d5ae6;--brand-deep: #5b4cdb;--brand-glow: #9b8cff;--lavender: #f3f0ff;--text-muted: #6b7280}*,*:before,*:after{box-sizing:border-box}html{height:100%}body{margin:0;min-height:100%;font-family:IBM Plex Sans,system-ui,-apple-system,sans-serif;color:#1f2937;background:#f3f0ff;-webkit-font-smoothing:antialiased}app-root{display:block;min-height:100%}img{max-width:100%;display:block}a{color:#5b4cdb}@media print{@page{margin:.6in;size:auto}html,body{height:auto!important;overflow:visible!important;background:#fff!important}mat-sidenav,.sidenav,.topbar,.no-print,.report-toolbar{display:none!important}mat-sidenav-container,mat-sidenav-content,.main,.content,app-teacher-shell,app-practice-report,.portal-page{display:block!important;position:static!important;width:100%!important;max-width:none!important;height:auto!important;min-height:0!important;overflow:visible!important;padding:0!important;margin:0!important;background:#fff!important;box-shadow:none!important}body *{visibility:hidden}.practice-report-print,.practice-report-print *{visibility:visible}.practice-report-print{position:absolute;left:0;top:0;width:100%;max-width:none!important;padding:0!important;margin:0!important;border:none!important;border-radius:0!important;box-shadow:none!important;background:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.practice-report-print .chart-wrap{height:200px;break-inside:avoid;page-break-inside:avoid}.practice-report-print .report-section{break-inside:avoid-page;page-break-inside:avoid}.practice-report-print .glance{break-inside:avoid;page-break-inside:avoid}}
