:root{--abp-green:#0c5b46;--abp-green-dark:#073f32;--abp-cream:#f7f2e8;--abp-gold:#c7a75a;--abp-text:#18332a;--abp-muted:#67766f;--abp-border:#e3e7e4;--abp-white:#fff}
.abp-shell{max-width:1180px;margin:40px auto;padding:0 20px;color:var(--abp-text);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.abp-login-card,.abp-form-card{max-width:560px;margin:0 auto;background:#fff;border:1px solid var(--abp-border);border-radius:22px;padding:36px;box-shadow:0 18px 55px rgba(9,58,45,.08)}.abp-brand-mark{width:58px;height:58px;border-radius:18px;background:var(--abp-green);color:#fff;display:grid;place-items:center;font-size:28px;font-weight:700;margin-bottom:18px}.abp-login-card h1,.abp-form-card h1{margin:0 0 8px}.abp-muted{color:var(--abp-muted);margin-top:0}.abp-login-card label,.abp-form label{display:block;font-weight:600;margin:16px 0 7px}.abp-login-card input[type=text],.abp-login-card input[type=password],.abp-form input,.abp-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--abp-border);border-radius:10px;padding:12px 13px;background:#fff}.abp-login-card input[type=submit],.abp-button{display:inline-block;border:0;border-radius:10px;padding:12px 18px;background:var(--abp-green);color:#fff!important;text-decoration:none;font-weight:700;cursor:pointer}.abp-login-links{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:18px}.abp-login-links a{color:var(--abp-green)}.abp-grid{display:grid;gap:18px}.abp-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.abp-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.abp-privacy-note{font-size:13px;color:var(--abp-muted)}.abp-success,.abp-error{padding:13px 15px;border-radius:10px;margin:16px 0}.abp-success{background:#e8f6ef;color:#165c42}.abp-error{background:#fff0ef;color:#8c2d26}.abp-dashboard{display:grid;grid-template-columns:240px 1fr;min-height:650px;background:#f8faf9;border:1px solid var(--abp-border);border-radius:22px;overflow:hidden;box-shadow:0 18px 55px rgba(9,58,45,.08)}.abp-sidebar{background:var(--abp-green-dark);color:#fff;padding:28px 18px;display:flex;flex-direction:column}.abp-sidebar-brand{padding:0 10px 26px}.abp-sidebar-brand strong{font-size:22px;display:block}.abp-sidebar-brand span{font-size:13px;opacity:.72}.abp-sidebar nav{display:flex;flex-direction:column;gap:6px}.abp-sidebar nav a,.abp-sidebar nav .abp-nav-disabled,.abp-logout{color:#fff;text-decoration:none;border-radius:9px;padding:11px 12px;display:block}.abp-sidebar nav a.active{background:rgba(255,255,255,.13)}.abp-sidebar nav .abp-nav-disabled{opacity:.6;cursor:not-allowed}.abp-sidebar nav small{display:block;font-size:10px;opacity:.65}.abp-logout{margin-top:auto}.abp-main{padding:34px}.abp-welcome{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.abp-eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.11em;color:var(--abp-green);font-weight:700}.abp-welcome h1{margin:3px 0 0}.abp-user-badge{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--abp-green);color:#fff;font-weight:700}.abp-stat,.abp-panel{background:#fff;border:1px solid var(--abp-border);border-radius:16px;padding:20px}.abp-stat span{display:block;color:var(--abp-muted);font-size:14px}.abp-stat strong{display:block;font-size:34px;margin:6px 0}.abp-stat small{color:var(--abp-muted)}.abp-panel{margin-top:20px}.abp-panel h2{margin-top:0}@media(max-width:820px){.abp-dashboard{grid-template-columns:1fr}.abp-sidebar{padding:18px}.abp-sidebar nav{flex-direction:row;overflow:auto}.abp-logout{margin-top:15px}.abp-grid-3,.abp-grid-2{grid-template-columns:1fr}.abp-main{padding:22px}.abp-form-card,.abp-login-card{padding:24px}}

.abp-hp{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(1px,1px,1px,1px)!important;white-space:nowrap!important}
.abp-shell a:focus-visible,.abp-shell button:focus-visible,.abp-shell input:focus-visible,.abp-shell textarea:focus-visible{outline:3px solid var(--abp-gold);outline-offset:3px}
.abp-button:hover,.abp-login-card input[type=submit]:hover{background:var(--abp-green-dark)}
@media(prefers-reduced-motion:reduce){.abp-shell *{scroll-behavior:auto!important;transition:none!important}}

/* v1.1 functional portal additions */
.abp-sidebar nav a{display:block;color:#d8ebe5;text-decoration:none;padding:12px 14px;border-radius:10px;margin:4px 0;font-weight:600}
.abp-sidebar nav a:hover,.abp-sidebar nav a:focus,.abp-sidebar nav a.active{background:rgba(255,255,255,.12);color:#fff;outline:none}
.abp-stat{display:block;text-decoration:none;color:inherit}
.abp-stat:hover{transform:translateY(-1px)}
.abp-course,.abp-assignment,.abp-message{border:1px solid #dfe6e3;border-radius:14px;padding:20px;margin:16px 0;background:#fff}
.abp-course h3,.abp-assignment h3,.abp-message h3{margin-top:0;color:#0a4c3e}
.abp-progress{height:10px;background:#e8efec;border-radius:999px;overflow:hidden;margin:10px 0 6px}
.abp-progress span{display:block;height:100%;background:#0b6b57;border-radius:999px}
.abp-inline-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px 0;border-top:1px solid #edf1ef}
.abp-inline-form span{min-width:180px;font-weight:600}
.abp-inline-form input[type=number]{width:78px}
.abp-button-small{padding:8px 12px!important;font-size:14px!important}
.abp-assignment-head,.abp-message-meta{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.abp-assignment-head span,.abp-message-meta span{font-size:13px;color:#687a74}
.abp-submission-status,.abp-grade-box{background:#f6f9f8;border-radius:10px;padding:14px;margin-top:14px}
.abp-student-work{white-space:pre-wrap;background:white;border:1px solid #e1e8e5;border-radius:8px;padding:12px;margin:10px 0 14px}
.abp-form select{width:100%;padding:11px 12px;border:1px solid #cbd7d2;border-radius:8px;background:#fff}
.abp-message p{margin-bottom:0}
.abp-message-meta{font-size:13px;color:#60736c}
.abp-message-meta strong{color:#173c33}
@media(max-width:760px){.abp-assignment-head,.abp-message-meta{display:block}.abp-assignment-head span,.abp-message-meta span{display:block;margin-top:6px}.abp-inline-form{align-items:flex-start}.abp-inline-form span{width:100%}}

/* v1.2.2: make logout action prominent and accessible */
.abp-logout{
  margin-top:auto;
  display:flex!important;
  align-items:center;
  justify-content:center;
  gap:8px;
  background:#d8ad4d;
  color:#083b31!important;
  border:1px solid rgba(255,255,255,.22);
  border-radius:10px;
  padding:12px 16px!important;
  font-weight:800;
  text-decoration:none!important;
  box-shadow:0 4px 12px rgba(0,0,0,.12);
  transition:transform .15s ease,background .15s ease,box-shadow .15s ease;
}
.abp-logout::before{content:"\2192";font-size:18px;line-height:1}
.abp-logout:hover,.abp-logout:focus{
  background:#edc866;
  color:#052b24!important;
  transform:translateY(-1px);
  box-shadow:0 6px 16px rgba(0,0,0,.18);
  outline:3px solid rgba(237,200,102,.35);
  outline-offset:2px;
}
@media(max-width:820px){.abp-logout{margin-top:14px;width:100%;box-sizing:border-box}}

/* v1.2.3: mobile layout hardening */
.abp-shell,
.abp-dashboard,
.abp-sidebar,
.abp-main,
.abp-panel,
.abp-stat,
.abp-course,
.abp-assignment,
.abp-message,
.abp-form-card,
.abp-login-card,
.abp-grid > *{box-sizing:border-box;min-width:0;max-width:100%}
.abp-shell{width:100%}
.abp-dashboard{width:100%;max-width:100%}
.abp-main{min-width:0;overflow-wrap:anywhere}
.abp-main img{max-width:100%;height:auto}
.abp-form input,
.abp-form textarea,
.abp-form select,
.abp-login-card input{max-width:100%;min-width:0}
.abp-welcome h1,.abp-panel h2,.abp-course h3,.abp-assignment h3,.abp-message h3{overflow-wrap:anywhere;word-break:normal}

@media(max-width:820px){
  .abp-shell{margin:20px auto;padding:0 12px;overflow:hidden}
  .abp-dashboard{display:block;border-radius:18px;overflow:hidden}
  .abp-sidebar{width:100%;padding:20px 16px}
  .abp-sidebar-brand{padding:0 4px 16px}
  .abp-sidebar nav{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    overflow:visible;
    width:100%;
  }
  .abp-sidebar nav a,
  .abp-sidebar nav .abp-nav-disabled{
    margin:0;
    padding:11px 8px;
    text-align:center;
    white-space:normal;
    overflow-wrap:anywhere;
  }
  .abp-logout{grid-column:1/-1;margin-top:10px;width:100%}
  .abp-main{width:100%;padding:22px 16px;overflow:hidden}
  .abp-welcome{align-items:flex-start;gap:12px}
  .abp-welcome h1{font-size:clamp(28px,8vw,40px);line-height:1.08}
  .abp-user-badge{flex:0 0 44px}
  .abp-grid-3,.abp-grid-2{grid-template-columns:1fr}
  .abp-panel,.abp-stat,.abp-course,.abp-assignment,.abp-message{padding:16px}
  .abp-assignment-head,.abp-message-meta{display:block}
  .abp-inline-form{display:grid;grid-template-columns:1fr;gap:8px}
  .abp-inline-form span{min-width:0;width:100%}
  .abp-inline-form input[type=number]{width:100%;max-width:120px}
}

@media(max-width:480px){
  .abp-shell{padding:0 8px;margin:14px auto}
  .abp-sidebar{padding:18px 12px}
  .abp-sidebar nav{grid-template-columns:1fr 1fr;gap:6px}
  .abp-sidebar nav a{font-size:14px;padding:10px 6px}
  .abp-main{padding:18px 12px}
  .abp-welcome{display:block}
  .abp-user-badge{margin-top:12px}
  .abp-form-card,.abp-login-card{padding:20px 16px;border-radius:16px}
  .abp-button{width:100%;text-align:center;box-sizing:border-box}
}
