/* DBMS PORTALS — HTML/CSS FIRST
   Public website styles are untouched. This stylesheet is portal-only. */
:root{--portal-navy:#17375e;--portal-blue:#2563eb;--portal-gold:#d7a93b;--portal-bg:#f5f7fb;--portal-card:#fff;--portal-border:#e2e8f0;--portal-text:#172033;--portal-muted:#64748b}
.portal-page{min-height:100vh;background:var(--portal-bg);color:var(--portal-text)}
.portal-login{min-height:100vh;display:grid;place-items:center;padding:24px}
.portal-login-card{width:min(100%,460px);background:#fff;border:1px solid var(--portal-border);border-radius:22px;padding:28px;box-shadow:0 18px 50px rgba(15,23,42,.09)}
.portal-login-brand{text-align:center;margin-bottom:22px}
.portal-login-brand img{width:78px;height:78px;object-fit:contain;border-radius:18px;background:#fff;padding:7px}
.portal-login-brand h1{margin:12px 0 5px;font-size:clamp(24px,6vw,32px)}
.portal-login-brand p{margin:0;color:var(--portal-muted)}
.portal-login-card h2{text-align:center;margin:0 0 7px}
.portal-login-card>p{text-align:center;color:var(--portal-muted)}
.portal-field{display:block;margin:17px 0}
.portal-field>span{display:block;font-weight:700;margin-bottom:7px}
.portal-field input,.portal-field select,.portal-field textarea{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:12px;padding:13px 14px;font:inherit;background:#fff}
.portal-field input:focus,.portal-field select:focus,.portal-field textarea:focus{outline:3px solid rgba(37,99,235,.12);border-color:var(--portal-blue)}
.portal-password{position:relative}
.portal-password input{padding-right:76px}
.portal-show{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--portal-navy);font-weight:800;padding:8px;cursor:pointer}
.portal-login-btn{width:100%;margin-top:6px}
.portal-help{margin:15px 0 0;text-align:center;color:var(--portal-muted);font-size:13px}
.portal-back{display:block;text-align:center;margin-top:17px}
.portal-dashboard{min-height:100vh;background:var(--portal-bg)}
.portal-static-header{background:var(--portal-navy);color:#fff;padding:16px 20px}
.portal-static-header .inner{max-width:1400px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px}
.portal-brand{display:flex;align-items:center;gap:12px}
.portal-brand img{width:46px;height:46px;object-fit:contain;background:#fff;border-radius:10px;padding:4px}
.portal-brand h1{font-size:18px;margin:0}
.portal-brand p{margin:3px 0 0;opacity:.82;font-size:13px}
.portal-dashboard-body{max-width:1400px;margin:auto;padding:22px}
.portal-static-grid{display:grid;grid-template-columns:240px minmax(0,1fr);gap:20px}
.portal-static-sidebar{background:#fff;border:1px solid var(--portal-border);border-radius:18px;padding:10px;height:max-content;position:sticky;top:16px}
.portal-static-sidebar button{width:100%;text-align:left;border:0;background:transparent;border-radius:11px;padding:12px 13px;font:inherit;cursor:pointer;color:#334155}
.portal-static-sidebar button:hover,.portal-static-sidebar button.active{background:#eff6ff;color:var(--portal-navy);font-weight:800}
.portal-static-main{min-width:0}
.portal-empty-card{background:#fff;border:1px solid var(--portal-border);border-radius:18px;padding:25px}
.portal-mobile-nav{display:none}
.portal-status{margin-top:12px}
.portal-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:10px}
@media(max-width:850px){
 .portal-static-grid{grid-template-columns:1fr}
 .portal-static-sidebar{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
 .portal-static-sidebar button{font-size:13px}
}
@media(max-width:560px){
 .portal-login{padding:14px}
 .portal-login-card{padding:21px;border-radius:18px}
 .portal-dashboard-body{padding:12px}
 .portal-static-sidebar{display:none}
 .portal-mobile-nav{display:flex;overflow:auto;gap:7px;padding:10px 0}
 .portal-mobile-nav button{white-space:nowrap;border:1px solid var(--portal-border);background:#fff;border-radius:999px;padding:9px 12px}
 .portal-static-header .inner{align-items:flex-start}
}

/* Administrator dashboard layout — portal-only additions */
.portal-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:22px}
.portal-section-heading h2{margin:0 0 8px}
.portal-section-heading p{margin:0}
.portal-stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:22px 0 28px}
.portal-stat-card{background:#fff;border:1px solid var(--portal-border);border-radius:15px;padding:18px;min-width:0;box-shadow:0 4px 14px rgba(15,23,42,.035)}
.portal-stat-card span{display:block;color:var(--portal-muted);font-size:13px;font-weight:700;margin-bottom:10px}
.portal-stat-card strong{display:block;color:var(--portal-navy);font-size:clamp(22px,3vw,30px);overflow-wrap:anywhere}
.portal-muted{color:var(--portal-muted);line-height:1.6}
.portal-table-wrap{width:100%;overflow:auto;margin-top:16px}
.portal-table-wrap .data-table{width:100%;border-collapse:collapse;min-width:650px}
.portal-table-wrap .data-table th,.portal-table-wrap .data-table td{padding:12px 14px;border-bottom:1px solid var(--portal-border);text-align:left;vertical-align:top}
.portal-table-wrap .data-table th{background:#f8fafc;color:#334155;font-size:12px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.portal-table-wrap .data-table td{font-size:14px;max-width:340px;overflow-wrap:anywhere}
.portal-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
.portal-feature-grid article{border:1px solid var(--portal-border);border-radius:14px;padding:18px;background:#fff}
.portal-feature-grid h3{margin-top:0}
.portal-feature-grid p{color:var(--portal-muted);line-height:1.5}
.portal-static-main .portal-empty-card h2{margin-top:4px}
.portal-static-sidebar button,.portal-mobile-nav button{transition:background .15s ease,color .15s ease}
.portal-mobile-nav button.active{background:#eff6ff;color:var(--portal-navy);font-weight:800;border-color:#bfdbfe}
@media(max-width:850px){.portal-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.portal-section-heading{flex-direction:column}.portal-section-heading .btn{width:100%}.portal-stats-grid{gap:9px}.portal-stat-card{padding:13px}.portal-feature-grid{grid-template-columns:1fr}.portal-empty-card{padding:17px}}


/* Branded, accessible confirmation and input dialogs (replaces raw browser prompts). */
.dbms-dialog-backdrop{position:fixed;inset:0;z-index:10050;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(8,20,40,.58);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:dbmsFadeIn .16s ease-out}
.dbms-dialog{width:min(100%,430px);background:#fff;color:#172b4d;border:1px solid #dbe4f0;border-radius:20px;padding:26px;box-shadow:0 24px 80px rgba(9,30,66,.28);animation:dbmsDialogIn .18s ease-out}
.dbms-dialog-icon{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;margin-bottom:16px;background:#eaf1ff;color:#17375e;font-size:23px;font-weight:800}
.dbms-dialog-icon.is-danger{background:#fff0f0;color:#b42318}
.dbms-dialog h2{margin:0 0 9px;font-size:1.2rem;line-height:1.35;color:#132b4d}
.dbms-dialog-message{margin:0 0 22px;color:#53647a;line-height:1.6;white-space:pre-line}
.dbms-dialog-input{display:block;width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:11px;padding:12px 13px;margin:0 0 22px;background:#fff;color:#14233b;font:inherit;outline:none}
.dbms-dialog-input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.14)}
.dbms-dialog-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.dbms-dialog-actions button{min-height:42px;border-radius:10px;padding:10px 16px;font-weight:750}
.dbms-dialog-actions .danger-btn{background:#b42318!important;color:#fff!important;border-color:#b42318!important}
@keyframes dbmsFadeIn{from{opacity:0}to{opacity:1}}
@keyframes dbmsDialogIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:480px){.dbms-dialog{padding:22px 18px;border-radius:17px}.dbms-dialog-actions{display:grid;grid-template-columns:1fr 1fr}.dbms-dialog-actions button{width:100%}}
@media(prefers-reduced-motion:reduce){.dbms-dialog-backdrop,.dbms-dialog{animation:none}}

/* Parent/teacher portal mobile ergonomics */
.dashboard-card,.notice,.card,.stat,.admin-content{min-width:0;overflow-wrap:anywhere}
.dashboard-card .table-wrap,.dashboard-card .table-responsive{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.teacher-chat-list,.parent-chat-row,.teacher-chat-row,.admin-chat-preview{min-width:0}
.parent-chat-row,.teacher-chat-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--portal-border,#e2e8f0)}
.parent-chat-row:last-child,.teacher-chat-row:last-child{border-bottom:0}
.parent-chat-row>div,.teacher-chat-person,.admin-chat-preview-main{min-width:0;flex:1}
.parent-chat-row .muted,.teacher-chat-person .muted,.admin-chat-last{overflow-wrap:anywhere;word-break:break-word}
.admin-chat-list{display:grid;gap:10px}
.admin-chat-preview{display:flex;align-items:center;gap:12px;padding:14px}
.admin-chat-avatar{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:50%;background:#eaf1ff;color:#17375e;font-weight:850}
.admin-chat-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.admin-chat-preview-head small{color:var(--portal-muted,#64748b);font-size:.72rem;text-align:right}
.admin-chat-preview-main p{margin:5px 0}
.admin-chat-last{font-size:.9rem;line-height:1.45}
.admin-chat-thread{display:flex;flex-direction:column;gap:10px;min-width:0}
.admin-chat-context{color:var(--portal-muted,#64748b);font-size:.85rem;padding:0 2px}
.admin-chat-history{display:flex;flex-direction:column;gap:10px;max-height:min(55vh,520px);overflow-y:auto;padding:12px;background:#f4f6f8;border-radius:14px;overscroll-behavior:contain}
.admin-chat-bubble{max-width:88%;padding:10px 12px;border-radius:14px;background:#fff;box-shadow:0 1px 2px rgba(15,23,42,.07);overflow-wrap:anywhere}
.admin-chat-bubble.incoming{align-self:flex-start;border-radius:14px 14px 14px 4px}
.admin-chat-bubble.outgoing{align-self:flex-end;background:#d9fdd3;border-radius:14px 14px 4px 14px}
.admin-chat-bubble small{display:block;color:#64748b;font-size:.7rem;margin-bottom:5px}
.admin-chat-bubble p{margin:0;white-space:pre-wrap;line-height:1.5}
.admin-chat-compose{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px}
.admin-chat-compose textarea{width:100%;min-width:0;box-sizing:border-box;resize:vertical;min-height:46px;max-height:150px;border:1px solid #cbd5e1;border-radius:20px;padding:12px 14px;font:inherit;font-size:16px}
.admin-chat-compose button{min-height:46px}
@media(max-width:680px){
 .dashboard-shell{width:calc(100% - 20px);max-width:100%;margin-left:auto;margin-right:auto}
 .portal-dashboard-header{padding:16px 12px}
 .portal-head-row{display:flex;align-items:flex-start;flex-wrap:wrap;gap:10px}
 .portal-head-row>div{min-width:0;flex:1 1 100%}
 .portal-head-row .btn{min-height:44px;max-width:100%;white-space:normal}
 .portal-head-row #logout{margin-left:auto}
 .dashboard-grid,.dashboard-grid.two-col,.dashboard-grid.three-col,.admin-card-grid,.advanced-grid,.advanced-wrap .advanced-grid{grid-template-columns:minmax(0,1fr)!important}
 .dashboard-card{padding:14px;border-radius:14px;margin-bottom:12px}
 .dashboard-card .section-head{align-items:flex-start;gap:10px;flex-wrap:wrap}
 .dashboard-card .section-head>div{min-width:0;flex:1 1 100%}
 .dashboard-card .section-head .btn{min-height:42px}
 .form-grid{grid-template-columns:minmax(0,1fr)!important;gap:12px}
 .form-grid>*{min-width:0;max-width:100%}
 .form-grid input,.form-grid select,.form-grid textarea,.inline-form input,.inline-form select{box-sizing:border-box;width:100%;min-width:0;max-width:100%;font-size:16px}
 .form-grid textarea{min-height:100px}
 .form-actions{display:flex;flex-wrap:wrap;gap:8px}
 .form-actions .btn,.form-grid>.btn{min-height:44px}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
 .stat{padding:12px;min-width:0}
 .stat strong{font-size:clamp(18px,5vw,25px);overflow-wrap:anywhere}
 .cards.three,.cards.two{grid-template-columns:minmax(0,1fr)!important}
 .table-wrap,.table-responsive{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
 .data-table{min-width:620px}
 .parent-chat-row,.teacher-chat-row{align-items:flex-start;flex-wrap:wrap}
 .parent-chat-row .btn,.teacher-chat-row .btn{width:100%;min-height:44px}
 .teacher-student-chat{padding:13px}
 .admin-chat-preview{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;padding:12px}
 .admin-chat-avatar{width:38px;height:38px;flex-basis:38px}
 .admin-chat-preview-main{grid-column:2;grid-row:1}
 .admin-chat-preview .open-admin-chat{grid-column:1/-1;width:100%;min-height:44px}
 .admin-chat-preview-head{flex-direction:column;gap:3px}
 .admin-chat-preview-head small{text-align:left}
 .admin-chat-history{max-height:52dvh;padding:9px}
 .admin-chat-bubble{max-width:94%}
 .admin-chat-compose{grid-template-columns:minmax(0,1fr) auto}
 .admin-chat-compose button{padding:0 12px}
 .modal-backdrop{align-items:flex-end;padding:0}
 .modal-card{width:100%;max-width:none;max-height:92dvh;overflow-y:auto;border-radius:20px 20px 0 0;padding:18px 14px calc(18px + env(safe-area-inset-bottom))}
}
@media(max-width:380px){
 .stats{grid-template-columns:minmax(0,1fr)}
 .portal-head-row #logout{margin-left:0}
 .admin-chat-compose{grid-template-columns:minmax(0,1fr)}
 .admin-chat-compose button{width:100%}
}

/* Shared custom confirmation, prompt and notification dialogs for every portal. */
.dbms-dialog-icon.is-info{background:#eaf1ff;color:#17375e}.dbms-dialog-actions [data-dialog-confirm]{min-width:100px}.dbms-dialog-input{min-height:46px}.dbms-dialog-backdrop{z-index:20000}


/* School upgrade: sharp, high-contrast controls and print-ready A4 results. */
button,.btn,.icon-btn,.admin-tab,.teacher-tab{filter:none!important;opacity:1!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;text-shadow:none!important;box-shadow:0 2px 5px rgba(15,23,42,.08);font-weight:750!important;visibility:visible!important}
button:disabled,.btn:disabled{opacity:.62!important;cursor:not-allowed}
.btn,.icon-btn,.admin-tab,.teacher-tab{transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.btn:focus-visible,button:focus-visible,a.btn:focus-visible{outline:3px solid #f4c542!important;outline-offset:3px!important}
.result-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end;gap:12px}
.result-filters>.btn{min-height:46px;white-space:normal}
.report-wrap{box-sizing:border-box;width:100%;max-width:210mm;margin:16px auto;background:#fff;color:#111;padding:12mm;border:1px solid #d9e0e8;border-radius:8px;box-shadow:0 8px 28px rgba(15,23,42,.1)}
.report-summary{display:flex;flex-direction:column;gap:8px;margin:18px 0}
.report-summary>div{flex:1 1 130px;min-width:0;background:#f8fafc;border:1px solid #dbe4ef;border-radius:9px;padding:12px}
.report-summary small{display:block;color:#475569;font-size:12px;font-weight:700;margin-bottom:5px}
.report-summary strong{font-size:21px;color:#17375e}
@page{size:A4 portrait;margin:12mm}
@media print{body{background:#fff!important}.report-actions,.portal-static-header,.portal-static-sidebar,.portal-mobile-nav,button,.btn{display:none!important}.report-wrap{width:186mm;max-width:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;break-inside:avoid}.report-wrap table{width:100%;border-collapse:collapse}.report-wrap th,.report-wrap td{border:1px solid #334155;padding:6px;font-size:10pt}.report-header{break-inside:avoid}.report-summary>div{background:#fff!important;color:#111!important}}
@media(max-width:560px){.result-filters{grid-template-columns:minmax(0,1fr)}.report-wrap{padding:12px;overflow-x:auto}.report-summary>div{flex-basis:100%}}

.parent-header-menu{display:flex;gap:8px;flex-wrap:wrap;padding:12px max(16px,calc((100% - 1400px)/2));background:#102947;border-top:1px solid rgba(255,255,255,.18)}.parent-header-menu[hidden]{display:none}.parent-header-menu a{color:#fff;text-decoration:none;padding:9px 12px;border:1px solid rgba(255,255,255,.3);border-radius:9px;font-weight:750}.portal-head-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}.portal-head-actions .btn,.portal-head-actions .portal-message-link{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;padding:9px 12px}.result-row-actions{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:140px}.result-row-actions .btn{width:100%;max-width:170px;justify-content:center}.result-row-actions .btn{min-height:38px;white-space:nowrap}.score-summary{display:flex;flex-direction:column;gap:8px;margin:20px 0;break-inside:avoid}.score-summary>div{flex:1;border:1px solid #cbd5e1;padding:12px;border-radius:8px}.score-summary small{display:block;font-size:12px;color:#475569;font-weight:700}.score-summary strong{display:block;font-size:22px;color:#17375e;margin-top:5px}@media(max-width:680px){.portal-head-actions{width:100%;justify-content:flex-start}.portal-head-actions .btn,.portal-head-actions .portal-message-link{flex:1 1 calc(50% - 8px);min-width:0}.result-row-actions{min-width:0;flex-direction:column}.result-row-actions .btn{width:100%}}

/* Keep total score first and percentage score directly underneath on printed reports. */
.report-summary>div,.score-summary>div{width:100%;box-sizing:border-box;break-inside:avoid}


/* Accessibility pass: crisp, colored and easy-to-find portal controls. */
.portal-page button,.portal-page .btn,.portal-page a.btn,.portal-page input[type=button],.portal-page input[type=submit]{filter:none!important;opacity:1!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;text-shadow:none!important;visibility:visible!important;font-weight:750!important;min-height:42px}
.portal-page .btn:not(.btn-outline-light):not(.btn-outline):not(.danger-btn):not(.btn-danger):not(.btn-gold){background:#1d4ed8!important;color:#fff!important;border:1px solid #1d4ed8!important}
.portal-page .btn-outline,.portal-page a.btn-outline{background:#e8f0ff!important;color:#17375e!important;border:1px solid #8db5ff!important}
.portal-page .btn-outline-light{background:#fff!important;color:#17375e!important;border:1px solid #dbeafe!important}
.portal-page .danger-btn,.portal-page .btn-danger{background:#b91c1c!important;color:#fff!important;border:1px solid #b91c1c!important}
.portal-page .btn-gold{background:#f4c542!important;color:#172033!important;border:1px solid #d6a72c!important}
.portal-page .admin-sidebar button,.portal-page .admin-tab,.portal-page .teacher-tab,.portal-page .student-tab,.portal-page .portal-static-sidebar button,.portal-page .portal-mobile-nav button{background:#eaf1ff!important;color:#17375e!important;border:1px solid #c7d9ff!important;opacity:1!important}
.portal-page .admin-sidebar button.active,.portal-page .admin-tab.active,.portal-page .teacher-tab.active,.portal-page .student-tab.active,.portal-page .portal-static-sidebar button.active,.portal-page .portal-mobile-nav button.active{background:#17375e!important;color:#fff!important;border-color:#17375e!important}
.portal-page .result-filters input[name=session],.portal-page input[name=session],.portal-page select[name=session]{min-height:48px!important;background:#fff!important;color:#172033!important;border:2px solid #2563eb!important;border-radius:10px!important;box-shadow:0 0 0 3px rgba(37,99,235,.10)!important;font-weight:650}
.portal-page .report-actions .btn{background:#1d4ed8!important;color:#fff!important;border-color:#1d4ed8!important}
@media print{@page{size:A4 portrait;margin:12mm}.report-wrap{width:186mm!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}.report-summary,.score-summary{display:flex!important;flex-direction:column!important;gap:7px!important}.report-summary>div,.score-summary>div{width:100%!important;break-inside:avoid!important;background:#fff!important;color:#111!important}}

/* Give utility buttons the same clear contrast as primary controls. */
.portal-page button:not(.btn):not(.admin-tab):not(.teacher-tab):not(.student-tab):not([data-dialog-cancel]):not([data-dialog-confirm]){
  background:#e8f0ff!important;color:#17375e!important;border:1px solid #8db5ff!important;opacity:1!important;
}
.portal-page .icon-btn,.portal-page .portal-show{background:#e8f0ff!important;color:#17375e!important;border:1px solid #8db5ff!important}

/* Final portal-wide visibility, session fields, and A4 result sheet safeguards */
.portal-page .result-filters input[name="session"],.portal-page input[name="session"],.portal-page select[name="session"]{display:block!important;visibility:visible!important;opacity:1!important;filter:none!important;background:#fff!important;color:#172033!important;border:2px solid #64748b!important;min-height:48px!important;width:100%!important;position:relative!important;z-index:1!important;box-shadow:0 0 0 2px rgba(37,99,235,.08)!important}
.portal-page .result-filters label,.portal-page .result-filters .field{display:block!important;visibility:visible!important;opacity:1!important;min-width:0!important}
.portal-page .result-filters{overflow:visible!important}
.portal-page button,.portal-page .btn,.portal-page a.btn,.portal-page input[type=button],.portal-page input[type=submit]{filter:none!important;opacity:1!important;visibility:visible!important;text-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.portal-page .report-actions .btn{display:inline-flex!important;align-items:center;justify-content:center;min-height:44px!important;background:#1d4ed8!important;color:#fff!important;border:1px solid #1d4ed8!important}
.portal-page .report-wrap{width:100%;max-width:210mm;min-height:0;box-sizing:border-box;background:#fff;color:#111}
.portal-page .report-summary{display:flex;flex-direction:column;gap:8px}
.portal-page .report-summary>div{width:100%;box-sizing:border-box}
@media print{@page{size:A4 portrait;margin:12mm}.portal-page .report-wrap{width:186mm!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;overflow:visible!important}.portal-page .report-actions,.portal-page .portal-dashboard-header,.portal-page .portal-static-header,.portal-page .portal-static-sidebar,.portal-page .portal-mobile-nav{display:none!important}.portal-page .report-wrap table{width:100%!important;min-width:0!important;break-inside:auto}.portal-page .report-wrap tr{break-inside:avoid}.portal-page .report-summary>div{break-inside:avoid;background:#fff!important}}

/* Student Learning Materials resource gallery */
.learning-material-section{margin-top:24px}.learning-material-section h3{color:#17375e;margin:0 0 14px}.learning-material-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:16px}.learning-material-image{display:flex;flex-direction:column;gap:8px;min-width:0;padding:10px;border:1px solid #c7d9ff;border-radius:14px;background:#fff;color:#17375e;text-decoration:none;font-weight:700}.learning-material-image img{width:100%;height:155px;object-fit:cover;border-radius:9px;background:#e8f0ff}.learning-material-image span{overflow-wrap:anywhere}.learning-material-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.learning-material-card{display:flex;gap:12px;align-items:flex-start;padding:16px;border:1px solid #c7d9ff;border-radius:14px;background:#fff}.learning-material-icon{font-size:28px}.learning-material-copy{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px}.learning-material-copy h3,.learning-material-copy p{margin:0}.learning-material-copy a{margin-top:5px}@media(max-width:600px){.learning-material-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.learning-material-image img{height:120px}.learning-material-card{padding:12px}}


/* Mobile-first portal header actions and dropdown navigation. */
.portal-head-actions{display:flex;align-items:center;gap:8px;min-width:0;}
.portal-head-actions .btn{white-space:nowrap;flex:0 0 auto;}
.portal-header-menu,.parent-header-menu{box-sizing:border-box;width:min(100% - 24px,1180px);margin:0 auto 12px;padding:10px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;background:#fff;border:1px solid #dbe4ef;border-radius:14px;box-shadow:0 8px 22px rgba(15,23,42,.08);}
.portal-header-menu[hidden],.parent-header-menu[hidden]{display:none!important;}
.portal-header-menu button,.parent-header-menu a{display:flex;align-items:center;gap:8px;min-width:0;min-height:42px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;color:#17375e;text-decoration:none;text-align:left;font:inherit;font-size:14px;font-weight:700;}
.portal-header-menu button:hover,.parent-header-menu a:hover{background:#eff6ff;border-color:#bfdbfe;}
@media(max-width:680px){.portal-dashboard-header{padding:14px 10px!important}.portal-head-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.portal-head-row>div:first-child{flex:1 1 100%;min-width:0}.portal-head-actions{flex:1 1 100%;width:100%;display:flex;flex-wrap:nowrap;gap:7px;overflow-x:auto;overflow-y:hidden;padding:1px 0 5px;-webkit-overflow-scrolling:touch}.portal-head-actions .btn{min-height:42px;padding:8px 11px;font-size:13px;white-space:nowrap}.portal-head-actions #logout{margin-left:auto}.portal-header-menu,.parent-header-menu{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:8px}.portal-header-menu button,.parent-header-menu a{font-size:13px;padding:9px;min-height:42px}.portal-head-row .portal-head-actions>div{flex:0 0 auto;width:auto}.parent-header-menu{margin-bottom:10px}}
@media(max-width:380px){.portal-header-menu,.parent-header-menu{grid-template-columns:minmax(0,1fr)}.portal-head-actions .btn{padding:8px 9px;font-size:12px}}
