:root{
  --portal-blue:var(--blue,#170C79);
  --portal-green:var(--green,#0A7C6E);
  --portal-green-light:var(--green-light,#0d9e8d);
  --portal-blue-light:var(--blue-light,#2318a8);
  --portal-white:#ffffff;
  --portal-bg:#F8F9FA;
  --portal-card:#ffffff;
  --portal-soft:#F0F4FF;
  --portal-soft-green:#E8FAF8;
  --portal-line:rgba(23,12,121,.10);
  --portal-muted:#6C757D;
  --portal-text:#343A40;
  --portal-success:#0A7C6E;
  --portal-warning:#B7791F;
  --portal-danger:#B91C1C;
  --portal-info:#170C79;
  --portal-gradient:var(--gradient,linear-gradient(135deg,#170C79 0%,#0A7C6E 100%));
  --portal-gradient-rev:var(--gradient-rev,linear-gradient(135deg,#0A7C6E 0%,#170C79 100%));
  --portal-shadow-sm:var(--shadow-sm,0 2px 12px rgba(23,12,121,.08));
  --portal-shadow-md:var(--shadow-md,0 8px 32px rgba(23,12,121,.13));
  --portal-shadow-lg:var(--shadow-lg,0 20px 60px rgba(23,12,121,.18));
  --portal-radius:var(--radius,16px);
  --portal-radius-lg:var(--radius-lg,24px);
}
.portal-page{background:linear-gradient(160deg,#f0f4ff 0%,#e8faf8 52%,#f8f9fa 100%);font-family:'Montserrat',sans-serif;color:var(--portal-text);min-height:100vh;overflow-x:hidden}.portal-page h1,.portal-page h2,.portal-page h3,.portal-page h4,.portal-page button,.portal-page .auth-logo,.portal-page .side-logo{font-family:'Poppins',sans-serif}.hidden{display:none!important}.muted{color:var(--portal-muted);line-height:1.75}.portal-page a{text-decoration:none}.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,46%) 1fr;background:radial-gradient(circle at 8% 12%,rgba(23,12,121,.10),transparent 28%),radial-gradient(circle at 86% 80%,rgba(10,124,110,.12),transparent 32%),linear-gradient(160deg,#f0f4ff 0%,#e8faf8 52%,#f8f9fa 100%);position:relative;overflow:hidden}.auth-shell:before,.auth-shell:after{content:"";position:absolute;border-radius:50%;background:var(--portal-gradient);opacity:.055;animation:portalFloat 8s ease-in-out infinite;pointer-events:none}.auth-shell:before{width:520px;height:520px;top:-150px;right:-110px}.auth-shell:after{width:310px;height:310px;bottom:-90px;left:-80px;animation-delay:-4s}.auth-brand-panel{padding:70px 5vw;display:flex;flex-direction:column;justify-content:center;background:transparent;color:var(--portal-text);position:relative;z-index:1}.auth-logo,.side-logo{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:1px;color:var(--portal-blue)}.auth-logo span,.side-logo span{width:44px;height:44px;border-radius:10px;background:var(--portal-gradient);display:grid;place-items:center;color:#fff;box-shadow:0 10px 24px rgba(10,124,110,.22)}.auth-brand-panel h1{font-size:clamp(2.35rem,5vw,5.2rem);line-height:1.02;margin:46px 0 20px;max-width:650px;color:var(--portal-blue);font-weight:900}.auth-brand-panel h1::after{content:"";display:block;width:92px;height:5px;border-radius:999px;background:var(--portal-gradient);margin-top:22px}.auth-brand-panel p{max-width:560px;color:var(--portal-muted);font-size:1.02rem;line-height:1.85}.auth-category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:34px 0;max-width:540px}.auth-category-grid div{background:rgba(255,255,255,.75);border:1.5px solid var(--portal-line);padding:18px;border-radius:var(--portal-radius);display:flex;gap:12px;align-items:center;box-shadow:var(--portal-shadow-sm);backdrop-filter:blur(14px);font-weight:700;color:var(--portal-blue);transition:.25s}.auth-category-grid div:hover{transform:translateY(-4px);box-shadow:var(--portal-shadow-md);border-color:rgba(10,124,110,.24)}.auth-category-grid i{color:var(--portal-green)}.back-site{color:var(--portal-blue);display:inline-flex;gap:8px;align-items:center;margin-top:12px;font-weight:800}.back-site:hover{color:var(--portal-green)}.auth-card{align-self:center;justify-self:center;width:min(92%,610px);background:rgba(255,255,255,.92);border:1.5px solid rgba(23,12,121,.08);border-radius:var(--portal-radius-lg);box-shadow:var(--portal-shadow-lg);padding:38px;animation:portalUp .42s ease both;z-index:1;backdrop-filter:blur(18px)}.auth-card h2{font-size:2rem;margin:0 0 10px;color:var(--portal-blue);font-weight:800}.auth-kicker{display:inline-flex;background:linear-gradient(135deg,rgba(23,12,121,.08),rgba(10,124,110,.10));color:var(--portal-green);font-weight:800;border-radius:999px;padding:8px 16px;margin-bottom:18px;letter-spacing:.4px}.auth-back{width:42px;height:42px;border:0;border-radius:14px;background:var(--portal-soft);color:var(--portal-blue);margin-bottom:16px;cursor:pointer}.portal-form{display:grid;gap:16px;margin-top:22px}.portal-form label{font-weight:700;font-size:.86rem;color:var(--portal-blue)}.portal-form input,.portal-form select,.portal-form textarea{width:100%;margin-top:8px;border:1.5px solid var(--portal-line);border-radius:14px;padding:14px 15px;font:inherit;outline:none;background:#fff;color:var(--portal-text);transition:.2s}.portal-form input:focus,.portal-form select:focus,.portal-form textarea:focus{border-color:var(--portal-green);box-shadow:0 0 0 4px rgba(10,124,110,.12)}.portal-form small{display:block;color:var(--portal-muted);font-weight:500;margin-top:6px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.check-row{display:flex!important;align-items:center;gap:10px}.check-row input{width:auto;margin:0}.password-wrap{position:relative}.toggle-pass{position:absolute;right:10px;top:50%;transform:translateY(-38%);border:0;background:transparent;color:var(--portal-muted);cursor:pointer}.portal-btn{border:0;border-radius:50px;padding:14px 24px;font-weight:800;font-family:'Poppins',sans-serif;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:.25s}.portal-btn.primary{background:var(--portal-gradient);color:#fff;box-shadow:0 10px 28px rgba(10,124,110,.30)}.portal-btn.ghost{background:transparent;color:var(--portal-blue);border:2px solid var(--portal-blue)}.portal-btn.danger{background:#FEE2E2;color:#B91C1C;border-radius:16px}.portal-btn.google{background:#fff;border:1.5px solid var(--portal-line);color:var(--portal-blue);border-radius:16px}.portal-btn:hover{transform:translateY(-3px);box-shadow:var(--portal-shadow-md)}.auth-switch{text-align:center;color:var(--portal-muted)}.auth-switch a,.auth-card a{color:var(--portal-green);font-weight:800;cursor:pointer}.form-error{color:#DC2626;font-size:.86rem;font-weight:700}.center-card{text-align:center}.big-icon{width:86px;height:86px;border-radius:24px;background:linear-gradient(135deg,rgba(23,12,121,.08),rgba(10,124,110,.12));display:grid;place-items:center;color:var(--portal-green);font-size:2rem;margin:0 auto 20px}.strength{height:8px;background:#E9ECEF;border-radius:999px;overflow:hidden}.strength span{display:block;height:100%;width:30%;background:var(--portal-danger);transition:.25s}
.portal-app{min-height:100vh;display:grid;grid-template-columns:292px 1fr;background:linear-gradient(160deg,#f0f4ff 0%,#e8faf8 52%,#f8f9fa 100%)}.portal-sidebar{background:rgba(255,255,255,.92);color:var(--portal-text);padding:24px;position:sticky;top:0;height:100vh;overflow:auto;border-right:1px solid rgba(23,12,121,.08);box-shadow:12px 0 36px rgba(23,12,121,.06);backdrop-filter:blur(16px)}.side-nav{display:grid;gap:8px;margin-top:34px}.side-nav button{border:0;background:transparent;color:var(--portal-text);display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:14px;font-weight:700;text-align:left;cursor:pointer;transition:.22s}.side-nav button:hover{background:linear-gradient(135deg,rgba(23,12,121,.07),rgba(10,124,110,.08));color:var(--portal-blue);transform:translateX(3px)}.side-nav button.active{background:var(--portal-gradient);color:#fff;box-shadow:0 10px 24px rgba(10,124,110,.22)}.side-nav i{width:20px;color:var(--portal-green)}.side-nav button.active i{color:#fff}.portal-main{min-width:0}.portal-topbar{height:82px;background:rgba(255,255,255,.88);backdrop-filter:blur(16px);border-bottom:1px solid rgba(23,12,121,.07);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:20}.portal-topbar h1{font-size:1.42rem;margin:0;color:var(--portal-blue);font-weight:800}.portal-topbar p{margin:3px 0 0;color:var(--portal-muted);font-size:.82rem}.top-actions{display:flex;align-items:center;gap:12px}.notif-btn{position:relative;width:46px;height:46px;border:0;border-radius:14px;background:#fff;color:var(--portal-blue);box-shadow:var(--portal-shadow-sm);cursor:pointer}.notif-btn span{position:absolute;right:-4px;top:-4px;background:var(--portal-green);color:#fff;border-radius:999px;font-size:.7rem;padding:2px 6px}.student-mini{display:flex;align-items:center;gap:10px;background:#fff;border-radius:50px;padding:8px 14px;box-shadow:var(--portal-shadow-sm);font-weight:800;color:var(--portal-blue)}.student-mini img,.avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;background:#F1F3F5}.mobile-side-toggle{display:none;border:0;background:#fff;color:var(--portal-blue);box-shadow:var(--portal-shadow-sm);border-radius:14px;width:44px;height:44px}.portal-content{padding:30px;max-width:1400px;width:100%;margin:0 auto}.portal-view{display:none;animation:portalUp .35s ease both}.portal-view.active{display:block}.dash-hero,.glass-panel{background:var(--portal-gradient);border-radius:var(--portal-radius-lg);color:#fff;padding:32px;box-shadow:var(--portal-shadow-lg);position:relative;overflow:hidden}.dash-hero:before,.glass-panel:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 16%,rgba(255,255,255,.20),transparent 30%),radial-gradient(circle at 15% 95%,rgba(255,255,255,.12),transparent 28%)}.dash-hero:after,.glass-panel:after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.10)}.dash-hero>* ,.glass-panel>*{position:relative;z-index:1}.dash-hero h2{font-size:2.15rem;margin:0 0 8px;font-weight:900}.course-tag{display:inline-flex;background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:8px 14px;font-weight:800;margin-top:18px}.grid{display:grid;gap:18px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin:22px 0}.stat-card,.portal-card{background:var(--portal-card);border:1.5px solid rgba(23,12,121,.08);border-radius:var(--portal-radius-lg);padding:22px;box-shadow:var(--portal-shadow-sm);transition:.25s}.stat-card:hover,.portal-card:hover{box-shadow:var(--portal-shadow-md);transform:translateY(-3px)}.stat-card{display:flex;gap:14px;align-items:center}.stat-icon{width:54px;height:54px;border-radius:16px;background:linear-gradient(135deg,rgba(23,12,121,.08),rgba(10,124,110,.12));color:var(--portal-green);display:grid;place-items:center;font-size:1.25rem}.stat-card strong{font-size:1.55rem;color:var(--portal-blue);font-family:'Poppins',sans-serif}.stat-card span,.mini-label{color:var(--portal-muted);font-size:.84rem}.portal-section-title{display:flex;align-items:center;justify-content:space-between;margin:26px 0 14px}.portal-section-title h3{margin:0;font-size:1.25rem;color:var(--portal-blue);font-weight:800}.two-panel{display:grid;grid-template-columns:1.6fr 1fr;gap:18px}.progress-row{margin:15px 0}.progress-meta{display:flex;justify-content:space-between;font-weight:800;font-size:.88rem;color:var(--portal-blue)}.bar{height:9px;background:#E9ECEF;border-radius:999px;overflow:hidden;margin-top:8px}.bar span{display:block;height:100%;background:var(--portal-gradient);border-radius:999px}.deadline-item,.announcement-item,.resource-item,.notification-item{display:flex;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--portal-line)}.deadline-item:last-child,.announcement-item:last-child,.resource-item:last-child{border-bottom:0}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 10px;font-size:.76rem;font-weight:800}.badge.pending{background:#FEF3C7;color:#B45309}.badge.submitted,.badge.completed,.badge.available,.badge.pass{background:#DFF7F2;color:var(--portal-green)}.badge.overdue,.badge.missed,.badge.fail{background:#FEE2E2;color:#B91C1C}.badge.upcoming{background:#E0E7FF;color:var(--portal-blue)}.badge.active{background:#E8FAF8;color:var(--portal-green)}.quick-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.quick-actions button{background:#fff;border:1.5px solid rgba(23,12,121,.08);border-radius:var(--portal-radius);padding:18px;display:grid;gap:8px;place-items:center;font-weight:800;color:var(--portal-blue);cursor:pointer;box-shadow:var(--portal-shadow-sm);transition:.25s}.quick-actions button:hover{background:var(--portal-gradient);color:#fff;transform:translateY(-4px);box-shadow:var(--portal-shadow-md)}.course-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.course-card{overflow:hidden}.course-thumb{height:145px;border-radius:20px;background:var(--portal-gradient);display:flex;align-items:flex-end;padding:18px;color:#fff;font-weight:900;position:relative}.course-thumb:after{content:"";position:absolute;right:-28px;top:-28px;width:120px;height:120px;border-radius:50%;background:rgba(255,255,255,.13)}.course-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.tab-btn,.filter-btn{border:1.5px solid var(--portal-line);background:#fff;color:var(--portal-blue);border-radius:999px;padding:10px 14px;font-weight:800;cursor:pointer;transition:.2s}.tab-btn.active,.filter-btn.active{background:var(--portal-gradient);color:#fff;border-color:transparent;box-shadow:0 8px 22px rgba(10,124,110,.18)}.accordion-item{border:1.5px solid var(--portal-line);border-radius:18px;margin-bottom:10px;overflow:hidden;background:#fff}.accordion-head{padding:15px;background:#fff;display:flex;justify-content:space-between;cursor:pointer;font-weight:800;color:var(--portal-blue)}.accordion-body{display:none;padding:15px;background:#F8F9FA;color:var(--portal-muted)}.accordion-item.open .accordion-body{display:block}.assignment-grid,.assess-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dropzone{border:2px dashed rgba(10,124,110,.32);border-radius:22px;background:#F8F9FA;padding:28px;text-align:center;cursor:pointer}.dropzone.drag{border-color:var(--portal-green);background:var(--portal-soft-green)}.timer-bar{position:sticky;top:86px;z-index:10;background:#fff;border:1.5px solid var(--portal-line);border-radius:22px;padding:16px;display:flex;justify-content:space-between;margin-bottom:18px;box-shadow:var(--portal-shadow-sm);color:var(--portal-blue);font-weight:800}.question-layout{display:grid;grid-template-columns:1fr 220px;gap:18px}.options{display:grid;gap:10px}.option{border:1.5px solid var(--portal-line);border-radius:16px;padding:14px;display:flex;gap:10px;cursor:pointer;transition:.2s}.option:hover{border-color:var(--portal-green);background:var(--portal-soft-green)}.q-nav{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.q-nav button{height:38px;border:1.5px solid var(--portal-line);border-radius:12px;background:#fff;font-weight:800;color:var(--portal-blue)}.q-nav button.answered{background:#DFF7F2}.q-nav button.marked{background:#FEF3C7}.q-nav button.current{outline:3px solid rgba(10,124,110,.18)}.chart-grid{grid-template-columns:1fr 1fr}.chart-card canvas{max-height:260px}.table-wrap{overflow:auto}.portal-table{width:100%;border-collapse:separate;border-spacing:0 10px}.portal-table th{text-align:left;color:var(--portal-muted);font-size:.78rem}.portal-table td{background:#fff;padding:14px;border-top:1px solid var(--portal-line);border-bottom:1px solid var(--portal-line)}.portal-table td:first-child{border-left:1px solid var(--portal-line);border-radius:14px 0 0 14px}.portal-table td:last-child{border-right:1px solid var(--portal-line);border-radius:0 14px 14px 0}.profile-head{display:flex;gap:22px;align-items:center}.profile-photo-wrap{position:relative}.profile-photo-wrap img{width:110px;height:110px;border-radius:50%;object-fit:cover;border:5px solid #fff;box-shadow:var(--portal-shadow-md)}.photo-btn{position:absolute;right:0;bottom:0;width:38px;height:38px;border:0;border-radius:50%;background:var(--portal-gradient);color:#fff;cursor:pointer}.settings-grid{grid-template-columns:1fr 1fr}.toggle-line{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--portal-line)}.switch{width:48px;height:26px;border-radius:999px;background:#CBD5E1;position:relative;cursor:pointer}.switch:before{content:"";position:absolute;width:20px;height:20px;border-radius:50%;background:#fff;top:3px;left:3px;transition:.2s}.switch.on{background:var(--portal-green)}.switch.on:before{left:25px}.notif-panel{position:absolute;right:30px;top:76px;width:min(380px,calc(100vw - 28px));background:#fff;border:1.5px solid var(--portal-line);border-radius:24px;box-shadow:var(--portal-shadow-lg);padding:16px;display:none}.notif-panel.open{display:block}.notif-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.notif-head button{border:0;background:transparent;color:var(--portal-green);font-weight:800;cursor:pointer}.notification-item{justify-content:flex-start;align-items:flex-start}.notification-item.unread:before{content:"";width:8px;height:8px;background:var(--portal-green);border-radius:50%;margin-top:8px;flex-shrink:0}.toast-wrap{position:fixed;right:18px;bottom:18px;z-index:10000;display:grid;gap:10px}.toast{background:var(--portal-gradient);color:#fff;border-radius:16px;padding:13px 16px;box-shadow:var(--portal-shadow-lg);animation:portalUp .25s ease both}.modal-overlay{position:fixed;inset:0;background:rgba(23,12,121,.45);backdrop-filter:blur(8px);display:grid;place-items:center;z-index:9999;padding:20px}.portal-modal{width:min(440px,100%);background:#fff;border-radius:28px;padding:28px;box-shadow:var(--portal-shadow-lg)}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:22px}.dark-mode{--portal-bg:#0B1220;--portal-card:#111827;--portal-line:#273449;--portal-text:#E5E7EB;--portal-muted:#94A3B8;background:#0B1220;color:#E5E7EB}.dark-mode.portal-page,.dark-mode .portal-app{background:linear-gradient(160deg,#0B1220 0%,#111827 55%,#0B1220 100%)}.dark-mode .portal-sidebar,.dark-mode .portal-topbar,.dark-mode .portal-card,.dark-mode .stat-card,.dark-mode .auth-card,.dark-mode .quick-actions button,.dark-mode .portal-form input,.dark-mode .portal-form select,.dark-mode .portal-form textarea,.dark-mode .tab-btn,.dark-mode .filter-btn,.dark-mode .portal-table td,.dark-mode .notif-panel,.dark-mode .portal-modal,.dark-mode .accordion-item,.dark-mode .accordion-head,.dark-mode .q-nav button,.dark-mode .option{background:#111827;color:#E5E7EB;border-color:#273449}.dark-mode .auth-brand-panel h1,.dark-mode .portal-topbar h1,.dark-mode .portal-section-title h3,.dark-mode .stat-card strong,.dark-mode .side-logo,.dark-mode .auth-logo,.dark-mode .progress-meta,.dark-mode .portal-form label{color:#fff}.dark-mode .muted,.dark-mode .stat-card span,.dark-mode .mini-label{color:#94A3B8}@keyframes portalUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes portalFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-24px)}}
@media(max-width:1180px){.stats-grid{grid-template-columns:repeat(2,1fr)}.course-grid{grid-template-columns:repeat(2,1fr)}.quick-actions{grid-template-columns:repeat(2,1fr)}.two-panel,.question-layout,.chart-grid,.settings-grid{grid-template-columns:1fr}}@media(max-width:900px){.auth-shell{grid-template-columns:1fr}.auth-brand-panel{padding:34px;min-height:auto}.auth-brand-panel h1{margin:26px 0 16px}.portal-app{grid-template-columns:1fr}.portal-sidebar{position:fixed;left:-310px;z-index:99;transition:.25s}.portal-sidebar.open{left:0}.mobile-side-toggle{display:block}.portal-topbar{padding:0 16px}.portal-content{padding:18px}.assignment-grid,.assess-grid,.course-grid{grid-template-columns:1fr}}@media(max-width:640px){.auth-card{padding:24px;border-radius:24px}.two-col,.stats-grid{grid-template-columns:1fr}.student-mini span{display:none}.portal-topbar h1{font-size:1.1rem}.portal-topbar p{display:none}.dash-hero h2{font-size:1.55rem}.profile-head{align-items:flex-start;flex-direction:column}.modal-actions{flex-direction:column}.timer-bar{top:70px;display:grid;gap:8px}.auth-category-grid{grid-template-columns:1fr}.portal-btn{width:100%}}

/* Student portal update: multi-course enrollment + responsive spacing fixes */
.course-select-block{display:grid;gap:10px}.field-title{font-weight:800;font-size:.9rem;color:var(--portal-blue)}.field-title small{display:block;margin-top:4px;color:var(--portal-muted);font-weight:600}.course-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.course-check{margin:0!important}.course-check input{position:absolute;opacity:0;pointer-events:none}.course-check span{min-height:58px;border:1.5px solid var(--portal-line);border-radius:16px;background:#fff;color:var(--portal-blue);display:flex;align-items:center;gap:10px;padding:14px;font-weight:800;cursor:pointer;transition:.22s;box-shadow:var(--portal-shadow-sm)}.course-check span i{color:var(--portal-green)}.course-check input:checked+span{background:linear-gradient(135deg,rgba(23,12,121,.08),rgba(10,124,110,.14));border-color:rgba(10,124,110,.46);box-shadow:0 10px 24px rgba(10,124,110,.16);transform:translateY(-2px)}.course-check input:checked+span:after{content:'✓';margin-left:auto;width:24px;height:24px;border-radius:50%;background:var(--portal-gradient);color:#fff;display:grid;place-items:center;font-size:.8rem}.dash-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.dash-hero .course-tag{max-width:50%;line-height:1.45;text-align:right}.portal-content>.portal-view.active{display:grid;gap:22px}.portal-section-title{margin:0 0 2px}.quick-actions{margin-top:16px}.portal-notes{margin-top:14px}.announcement-card{margin-bottom:0}.danger-title{color:#B91C1C;margin-top:24px}.empty-state{border:1.5px dashed var(--portal-line);border-radius:18px;padding:18px;color:var(--portal-muted);font-weight:700;background:rgba(255,255,255,.55)}.portal-card .portal-card{box-shadow:none;background:#F8F9FA}.portal-card .portal-card:hover{transform:none;box-shadow:none}.portal-card h3:first-child{margin-top:0}.portal-main{overflow:hidden}.grid{min-width:0}.stat-card,.portal-card{min-width:0}.deadline-item,.announcement-item,.resource-item{align-items:center}.deadline-item>div,.announcement-item>div,.resource-item>div{min-width:0}.deadline-item strong,.announcement-item strong,.resource-item strong{overflow-wrap:anywhere}.assessment-actions{display:flex;gap:12px;justify-content:space-between;margin-top:18px}.mark-review{margin-top:16px}.auth-card .portal-btn{margin-top:8px}
@media(max-width:1180px){.portal-content{max-width:100%;padding:24px}.dash-hero .course-tag{max-width:60%}.stats-grid{gap:14px}.two-panel{gap:16px}.portal-card,.stat-card{padding:20px}.quick-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.portal-content{padding:18px;display:block}.portal-content>.portal-view.active{gap:18px}.portal-topbar{height:auto;min-height:76px;gap:12px}.portal-topbar>div:nth-child(2){min-width:0;flex:1}.top-actions{flex-shrink:0}.dash-hero{display:grid}.dash-hero .course-tag{max-width:100%;text-align:left;width:fit-content}.portal-section-title{align-items:flex-start;gap:10px;flex-direction:column}.stats-grid,.two-panel,.assignment-grid,.assess-grid,.course-grid,.chart-grid,.settings-grid{grid-template-columns:1fr!important}.question-layout{grid-template-columns:1fr}.timer-bar{top:78px}.notif-panel{right:14px;top:72px}.student-mini{padding:7px}.course-check-grid{grid-template-columns:1fr 1fr}.deadline-item,.announcement-item,.resource-item{align-items:flex-start}}
@media(max-width:640px){.auth-shell{display:block}.auth-brand-panel{padding:28px 20px}.auth-card{width:calc(100% - 28px);margin:0 auto 24px}.course-check-grid{grid-template-columns:1fr}.portal-topbar{padding:12px}.portal-content{padding:14px}.portal-content>.portal-view.active{gap:14px}.dash-hero,.glass-panel{padding:22px;border-radius:20px}.dash-hero h2{font-size:1.42rem}.stat-card,.portal-card{padding:16px;border-radius:18px}.stat-card{align-items:flex-start}.stat-icon{width:46px;height:46px;flex:0 0 46px}.quick-actions{grid-template-columns:1fr!important}.quick-actions button{min-height:72px}.portal-btn{width:auto}.portal-form .portal-btn,.auth-card>.portal-btn,.auth-card .portal-btn{width:100%}.course-tabs{gap:8px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.course-tabs button{white-space:nowrap}.top-actions{gap:8px}.notif-btn{width:42px;height:42px}.mobile-side-toggle{width:42px;height:42px}.portal-sidebar{width:min(86vw,292px);left:calc(-1 * min(86vw,292px) - 20px)}.profile-head{gap:16px}.profile-photo-wrap img{width:92px;height:92px}.modal-actions .portal-btn{width:100%}.auth-brand-panel h1{font-size:2.05rem}.auth-category-grid{gap:10px}}
@media(max-width:420px){.portal-topbar{display:grid;grid-template-columns:auto 1fr auto}.student-mini{display:none}.stats-grid{gap:12px}.deadline-item,.announcement-item,.resource-item{display:grid}.resource-item .portal-btn{justify-self:start}.q-nav{grid-template-columns:repeat(4,1fr)}}
.dark-mode .course-check span,.dark-mode .empty-state{background:#111827;color:#E5E7EB;border-color:#273449}.dark-mode .course-check input:checked+span{background:linear-gradient(135deg,rgba(23,12,121,.35),rgba(10,124,110,.28));border-color:rgba(10,124,110,.55)}.dark-mode .portal-card .portal-card{background:#0B1220}


/* Header-safe student portal layout fixes */
.portal-page #navbar{z-index:3000;}
.portal-page .auth-shell{padding-top:92px;min-height:calc(100vh - 0px);}
.portal-page .portal-app{padding-top:92px;min-height:100vh;}
.portal-page .portal-sidebar{top:92px;height:calc(100vh - 92px);}
.portal-page .portal-topbar{position:sticky;top:92px;z-index:80;}
.portal-page .portal-content{padding-top:32px;}
@media(max-width:900px){
  .portal-page .auth-shell{padding-top:86px;}
  .portal-page .portal-app{padding-top:86px;}
  .portal-page .portal-sidebar{top:86px;height:calc(100vh - 86px);}
  .portal-page .portal-topbar{top:86px;}
}
@media(max-width:640px){
  .portal-page .auth-shell{padding-top:78px;}
  .portal-page .portal-app{padding-top:78px;}
  .portal-page .portal-sidebar{top:78px;height:calc(100vh - 78px);}
  .portal-page .portal-topbar{top:78px;}
  .portal-page .portal-content{padding-top:18px;}
}

/* Signup multi-course dropdown selection */
.multi-course-field{position:relative;z-index:20;}
.course-dropdown-trigger{width:100%;border:1.5px solid var(--portal-line);border-radius:14px;padding:14px 15px;background:#fff;color:var(--portal-blue);font:inherit;font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:pointer;transition:.22s;box-shadow:var(--portal-shadow-sm);text-align:left;}
.course-dropdown-trigger:hover,.course-dropdown-trigger.open{border-color:var(--portal-green);box-shadow:0 0 0 4px rgba(10,124,110,.10);}
.course-dropdown-trigger i{color:var(--portal-green);transition:.22s;}
.course-dropdown-trigger.open i{transform:rotate(180deg);}
.course-dropdown-menu{display:none;position:absolute;top:calc(100% + 8px);left:0;right:0;background:rgba(255,255,255,.98);border:1.5px solid var(--portal-line);border-radius:16px;box-shadow:0 18px 45px rgba(23,12,121,.16);padding:10px;z-index:999;backdrop-filter:blur(14px);}
.course-dropdown-menu.show{display:grid;gap:8px;animation:portalUp .22s ease both;}
.course-dropdown-menu .course-check span{min-height:auto;border:0;box-shadow:none;border-radius:12px;background:transparent;padding:12px 10px;}
.course-dropdown-menu .course-check span:hover{background:linear-gradient(135deg,rgba(23,12,121,.06),rgba(10,124,110,.08));}
.course-dropdown-menu .course-check input:checked+span{background:linear-gradient(135deg,rgba(23,12,121,.08),rgba(10,124,110,.14));border-color:transparent;box-shadow:none;transform:none;}
.course-dropdown-menu .course-check input:checked+span:after{margin-left:auto;}
.dark-mode .course-dropdown-trigger,.dark-mode .course-dropdown-menu{background:#111827;color:#E5E7EB;border-color:#273449;}
.dark-mode .course-dropdown-menu .course-check span:hover{background:rgba(255,255,255,.05);}
@media(max-width:640px){.course-dropdown-menu{position:relative;top:auto;margin-top:8px;}}

/* Professional student modules layout */
.dashboard-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin:22px 0}.portal-kpi{align-items:flex-start}.portal-kpi strong{display:block;font-size:1.22rem;line-height:1.2;margin-top:4px;overflow-wrap:anywhere}.module-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.course-mini-links{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.course-mini-links span{font-size:.76rem;font-weight:800;padding:7px 10px;border-radius:999px;background:#E8FAF8;color:var(--portal-green)}.course-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.module-detail-grid{grid-template-columns:1.1fr .9fr}.outline-row{display:grid;grid-template-columns:90px 1fr;gap:12px;border-bottom:1px solid var(--portal-line);padding:13px 0}.outline-row:last-child{border-bottom:0}.outline-row b{color:var(--portal-green)}.mini-btn{padding:8px 12px!important;font-size:.78rem}.unread-dot{width:10px;height:10px;border-radius:50%;background:var(--portal-green);align-self:center;flex:0 0 10px}.portal-form textarea{resize:vertical}.portal-table .portal-btn{white-space:nowrap}.side-nav{padding-bottom:30px}.side-nav button{font-size:.92rem}.portal-sidebar{scrollbar-width:thin}.resource-item p{margin:4px 0 0}.announcement-item.unread{background:linear-gradient(135deg,rgba(23,12,121,.04),rgba(10,124,110,.05));margin:0 -10px;padding-left:10px;padding-right:10px;border-radius:14px}.dark-mode .course-mini-links span{background:rgba(10,124,110,.18)}
@media(max-width:1180px){.dashboard-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.module-detail-grid{grid-template-columns:1fr}}
@media(max-width:760px){.dashboard-card-grid{grid-template-columns:1fr}.course-detail-head{display:grid}.outline-row{grid-template-columns:1fr}.module-actions{grid-template-columns:1fr}.portal-table th,.portal-table td{font-size:.82rem}.portal-kpi strong{font-size:1.05rem}}


/* Dashboard cleanup + spacing fixes */
.clean-dashboard-hero{display:block;}
.clean-dashboard-hero .course-tag{max-width:100%;text-align:left;margin-top:14px;}
.quick-actions-card{overflow:hidden;}
.quick-actions-card .portal-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px;}
.quick-actions-card .module-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:0;}
.quick-actions-card .module-actions button{min-height:58px;width:100%;padding:14px 16px;border:1.5px solid var(--portal-line);border-radius:16px;background:#fff;color:var(--portal-blue);font-weight:800;display:flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap;line-height:1;box-shadow:var(--portal-shadow-sm);}
.quick-actions-card .module-actions button span{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;}
.quick-actions-card .module-actions button i{color:var(--portal-green);flex:0 0 auto;}
.quick-actions-card .module-actions button:hover{transform:translateY(-3px);box-shadow:var(--portal-shadow-md);border-color:rgba(10,124,110,.28);}
.portal-page .portal-sidebar{z-index:120;padding-top:30px;}
.portal-page .side-logo{position:relative;z-index:2;margin-bottom:18px;}
.portal-page .side-nav{margin-top:18px;}
.portal-page .portal-main{position:relative;z-index:1;}
.portal-page .portal-topbar{z-index:90;}
.portal-page .portal-content{padding-top:28px;}
.portal-kpi strong{font-size:1.05rem;line-height:1.28;}
.portal-kpi .mini-label{line-height:1.35;}
@media(max-width:1180px){.quick-actions-card .module-actions{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:900px){.quick-actions-card .portal-section-title{display:grid;}.portal-page .portal-sidebar{padding-top:24px;}.portal-page .portal-content{padding-top:20px;}}
@media(max-width:640px){.quick-actions-card .module-actions{grid-template-columns:1fr;}.quick-actions-card .module-actions button{justify-content:flex-start;min-height:54px;}.portal-page .portal-content{padding-top:16px;}}
.dark-mode .quick-actions-card .module-actions button{background:#111827;color:#E5E7EB;border-color:#273449;}


/* Final dashboard polish: no flow blocks, header-safe panel, clean quick actions */
.portal-page #navbar{height:72px;z-index:5000;}
.portal-page .auth-shell{padding-top:88px;}
.portal-page .portal-app{padding-top:0;margin-top:72px;min-height:calc(100vh - 72px);}
.portal-page .portal-sidebar{top:72px;height:calc(100vh - 72px);padding-top:26px;z-index:1500;}
.portal-page .side-logo{display:flex;align-items:center;gap:12px;margin:0 0 24px;min-height:46px;position:relative;z-index:5;background:transparent;}
.portal-page .side-nav{margin-top:0;}
.portal-page .portal-topbar{top:72px;z-index:1300;}
.portal-page .portal-main{min-width:0;}
.portal-page .portal-content{padding:28px;max-width:1360px;}
#dashboardView{width:100%;min-width:0;}
.clean-dashboard-hero{display:block;width:100%;}
.dashboard-card-grid{grid-template-columns:repeat(3,minmax(220px,1fr));gap:16px;margin:0;}
.quick-actions-card{width:100%;}
.quick-actions-card .module-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:14px;}
.quick-actions-card .module-actions button{min-height:54px;padding:13px 16px;font-size:.9rem;white-space:nowrap;line-height:1;}
.quick-actions-card .module-actions button span{white-space:nowrap;overflow:visible;text-overflow:clip;}
.quick-actions-card .module-actions button i{font-size:1rem;}
@media(max-width:1180px){
  .dashboard-card-grid{grid-template-columns:repeat(2,minmax(220px,1fr));}
  .quick-actions-card .module-actions{grid-template-columns:repeat(2,minmax(185px,1fr));}
}
@media(max-width:900px){
  .portal-page .portal-app{margin-top:72px;min-height:calc(100vh - 72px);}
  .portal-page .portal-sidebar{top:72px;height:calc(100vh - 72px);padding-top:24px;}
  .portal-page .portal-topbar{top:72px;}
  .portal-page .portal-content{padding:20px;}
}
@media(max-width:640px){
  .portal-page .portal-content{padding:16px;}
  .dashboard-card-grid{grid-template-columns:1fr;gap:12px;}
  .quick-actions-card .module-actions{grid-template-columns:1fr;}
  .quick-actions-card .module-actions button{justify-content:center;width:100%;font-size:.88rem;}
}


/* Responsive button text fixes */
.portal-page button,
.portal-btn,
.side-nav button,
.quick-actions button,
.module-actions button,
.tab-btn,
.filter-btn,
.q-nav button {
  max-width: 100%;
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  text-align: center;
  line-height: 1.25;
}
@media(max-width:640px){
  .portal-page .portal-btn,
  .portal-page .modal-actions .portal-btn,
  .portal-page .portal-form .portal-btn,
  .portal-page .auth-card .portal-btn {
    width:100%;
    justify-content:center;
  }
  .quick-actions-card .module-actions button,
  .quick-actions button {
    white-space:normal;
    line-height:1.25;
  }
  .quick-actions-card .module-actions button span{
    white-space:normal;
    overflow:visible;
    text-overflow:clip;
  }
}


/* Follow-up: compact mobile/tablet action buttons */
@media(max-width:1024px){
  .portal-page button,
  .portal-btn,
  .side-nav button,
  .quick-actions button,
  .module-actions button,
  .tab-btn,
  .filter-btn,
  .q-nav button{
    padding-left:12px !important;
    padding-right:12px !important;
    line-height:1.15 !important;
  }
  .portal-page .modal-actions:has(> :nth-child(2)){
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:10px !important;
  }
  .portal-page .modal-actions:has(> :nth-child(2)) > *{
    width:100% !important;
    min-width:0 !important;
    padding:10px 8px !important;
    font-size:clamp(.72rem,2.3vw,.9rem) !important;
  }
}
@media(max-width:640px){
  .portal-page .modal-actions:has(> :nth-child(2)){
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
}
