:root{
  --blue:#0071bc;
  --gold:#ffcf00;
  --ice:#e4e5f0;
  --ink:#3f4347;

  --bg:#ffffff;
  --card:#ffffff;
  --border:#d7d9e6;
  --shadow: 0 10px 30px rgba(0,0,0,.08);
}

.public-offerings-admin{
  display:grid;
  gap:14px;
}

.public-offerings-admin .form-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  margin-top:10px;
}

.public-offerings-admin .field--full{
  grid-column:1 / -1;
}

.public-offerings-admin .meta{
  color:#687385;
  font-size:.92rem;
  margin-top:8px;
}

.public-offerings-admin .courses{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  margin-top:12px;
}

.public-offerings-admin .course{
  background:#fff;
  border:1px solid var(--border);
  border-radius:8px;
  overflow:hidden;
  box-shadow:0 8px 18px rgba(15,23,42,.06);
}

.public-offerings-admin .course__hero{
  width:100%;
  height:150px;
  object-fit:cover;
  display:block;
  background:#d7e3f7;
}

.public-offerings-admin .course__body{
  padding:12px;
}

.public-offerings-admin .course__title{
  margin:0 0 6px;
  font-size:1.05rem;
}

.public-offerings-admin .course__meta{
  color:#687385;
  font-size:.92rem;
  margin-bottom:8px;
}

.public-offerings-admin .course__footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  flex-wrap:wrap;
}

.public-offerings-admin .tag{
  padding:4px 8px;
  border-radius:999px;
  font-size:.82rem;
  font-weight:700;
  background:#f0f5ff;
  border:1px solid #c4d8ff;
  color:#1f4f9c;
}

.public-offerings-admin .offering-subsection{
  margin-top:14px;
  padding-top:14px;
  border-top:1px solid var(--border);
}

.public-offerings-admin .status{
  font-weight:700;
}

.public-offerings-admin .status.ok{ color:#0f7b38; }
.public-offerings-admin .status.warn{ color:#965800; }
.public-offerings-admin .status.bad{ color:#8a1414; }

@media (min-width:900px){
  .public-offerings-admin .form-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }

  .public-offerings-admin .courses{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color:var(--ink);
  background: linear-gradient(180deg, var(--ice), #fff 28%);
}

.topbar{
  background: var(--blue);
  color:#fff;
  padding:14px 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
}

.topbar__left{display:flex; align-items:center; gap:12px}
.logo{width:44px; height:44px; object-fit:contain; background:#fff; border-radius:10px; padding:6px}
.brand__title{font-weight:800; letter-spacing:.3px; font-size:18px}
.brand__subtitle{opacity:.9; font-size:12px}

.nav{display:flex; gap:10px; flex-wrap:wrap}
.nav__btn{
  border:1px solid rgba(255,255,255,.25);
  background: rgba(255,255,255,.1);
  color:#fff;
  border-radius:12px;
  padding:12px 14px;
  font-weight:700;
  cursor:pointer;
}
.nav__btn.is-active{
  background: var(--gold);
  border-color: var(--gold);
  color:#1f2328;
}

.wrap{max-width:1200px; margin:18px auto; padding:0 16px 20px}
.view{display:none}
.view.is-visible{display:block}

.grid{
  display:grid;
  grid-template-columns: 1.2fr .8fr;
  gap:16px;
}
@media (max-width: 900px){
  .grid{grid-template-columns:1fr}
}

.card{
  background: var(--card);
  border:1px solid var(--border);
  border-radius:18px;
  box-shadow: var(--shadow);
  padding:16px;
}

.card__title{
  font-size:18px;
  font-weight:900;
  margin-bottom:10px;
}

.muted{opacity:.75}
.small{font-size:12px}

.kpis{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:12px;
  margin:14px 0 10px;
}
@media (max-width:900px){
  .kpis{grid-template-columns:1fr}
}
.kpi{
  border:1px solid var(--border);
  border-radius:16px;
  padding:14px;
  background: linear-gradient(180deg, #fff, #fbfbfe);
}
.kpi__label{font-size:12px; opacity:.8; font-weight:700}
.kpi__value{font-size:24px; font-weight:900; margin-top:6px}

.actions{display:flex; gap:10px; flex-wrap:wrap; margin-top:10px}

.btn{
  border-radius:14px;
  border:1px solid var(--border);
  background:#fff;
  padding:12px 14px;
  min-height:48px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1.2;
  white-space:nowrap;
  font-weight:800;
  cursor:pointer;
}
.btn--primary{
  background: var(--gold);
  border-color: var(--gold);
  color:#1f2328;
}
.btn--danger{
  background:#fff5f5;
  border-color:#f0b4b4;
  color:#9b1c1c;
}
.btn--small{
  min-height:28px;
  padding:5px 9px;
  font-size:12px;
}
.btn:active{transform: translateY(1px)}

#toast-host{
  position:fixed;
  right:18px;
  bottom:18px;
  display:grid;
  gap:10px;
  z-index:9999;
  max-width:min(420px, calc(100vw - 28px));
}
.toast{
  border:1px solid var(--border);
  border-left:6px solid var(--blue);
  border-radius:14px;
  background:#fff;
  box-shadow:var(--shadow);
  color:var(--ink);
  font-weight:800;
  line-height:1.35;
  padding:14px 16px;
  transition:opacity .25s ease, transform .25s ease;
}
.toast--success,
.toast--info{
  border-left-color:var(--blue);
}
.toast--warn{
  border-left-color:#c98a00;
  background:#fff8e1;
}
.toast--error{
  border-left-color:#b42318;
  background:#fff5f5;
}
.toast.is-hide{
  opacity:0;
  transform:translateY(8px);
}

.filters{
  display:grid;
  grid-template-columns: repeat(6, minmax(0,1fr));
  gap:12px;
  align-items:end;
  margin:12px 0 10px;
}
@media (max-width: 1100px){
  .filters{grid-template-columns: repeat(2, minmax(0,1fr));}
}
.field{display:flex; flex-direction:column; gap:6px}
.field__label{font-size:12px; font-weight:900; opacity:.85}
.field--checkbox{
  min-height:48px;
  flex-direction:row;
  align-items:center;
  gap:8px;
  font-size:14px;
  font-weight:800;
}
.field--checkbox input{
  width:18px;
  height:18px;
  accent-color:var(--blue);
}

.input,.select{
  min-height:48px;
  width:100%;
  height:48px;
  border-radius:14px;
  border:1px solid var(--border);
  padding:10px 12px;
  font-size:15px;
}

.filter-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:stretch;
  gap:12px;
  justify-content:flex-end;
  grid-column:1 / -1;
}

.filter-actions > .btn,
.filter-actions > .select,
.filter-actions > .input{
  flex:0 0 auto;
  min-width:160px;
}

.filter-actions > .select{
  max-width:220px;
}

.textarea{
  min-height:120px;
  height:auto;
  padding-top:12px;
  padding-bottom:12px;
}

@media (max-width: 900px){
  .filter-actions{
    justify-content:stretch;
  }

  .filter-actions > .btn,
  .filter-actions > .select,
  .filter-actions > .input{
    flex:1 1 100%;
    max-width:none;
  }
}

.table-wrap{overflow:auto; border-radius:16px; border:1px solid var(--border)}
.table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  min-width: 980px;
}
.table th{
  background: #f6f7fb;
  text-align:left;
  padding:12px 12px;
  font-size:12px;
  letter-spacing:.2px;
  position:sticky;
  top:0;
  z-index:1;
  border-bottom:1px solid var(--border);
}
.table-sort{
  appearance:none;
  border:0;
  background:transparent;
  color:inherit;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:6px;
  font:inherit;
  font-weight:800;
  letter-spacing:inherit;
  padding:0;
  text-align:left;
  text-transform:inherit;
}
.table-sort::after{
  content:"";
  color:var(--muted);
  font-size:11px;
  min-width:10px;
}
.table-sort.is-active{
  color:var(--blue);
}
.table-sort.is-active[data-sort-dir="asc"]::after{
  content:"▲";
}
.table-sort.is-active[data-sort-dir="desc"]::after{
  content:"▼";
}
.table-sort:focus-visible{
  outline:2px solid var(--blue);
  outline-offset:3px;
  border-radius:4px;
}
.table td{
  padding:12px 12px;
  border-bottom:1px solid var(--border);
  vertical-align:top;
}
.queue-actions{
  min-width:96px;
}
.queue-detail-row td{
  background:#f8fbfd;
}
.queue-resolver{
  display:flex;
  flex-direction:column;
  gap:14px;
  max-width:1120px;
}
.queue-resolver__summary{
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap:8px 16px;
  color:var(--muted);
  font-size:13px;
}
.queue-resolver__grid{
  display:grid;
  grid-template-columns: repeat(2, minmax(280px, 1fr));
  gap:14px;
}
.queue-resolver__panel{
  border:1px solid var(--border);
  border-radius:8px;
  background:#fff;
  padding:12px;
}
.queue-resolver__title{
  font-weight:900;
  margin-bottom:10px;
}
.queue-inline{
  display:grid;
  grid-template-columns: minmax(180px, 1fr) auto;
  gap:8px;
}
.queue-create-grid{
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap:10px;
}
.badge{
  display:inline-flex;
  padding:6px 10px;
  border-radius:999px;
  font-weight:900;
  font-size:12px;
  border:1px solid var(--border);
  background:#fff;
}
.badge--ok{background: rgba(0,113,188,.10); border-color: rgba(0,113,188,.25); color:#074e83}
.badge--warn{background: rgba(255,207,0,.25); border-color: rgba(255,207,0,.7); color:#5f4500}
.badge--bad{background: rgba(255,80,80,.18); border-color: rgba(255,80,80,.35); color:#8f1d1d}
.badge--info{background: rgba(18,148,136,.12); border-color: rgba(18,148,136,.32); color:#075d55}
.badge--muted{background: rgba(107,114,128,.18); border-color: rgba(107,114,128,.35)}
.badge--needs-approval{
  background:#fff4c2;
  border-color:#d39a00;
  color:#3d2a00;
  box-shadow:0 0 0 2px rgba(211,154,0,.16);
}
.progress-stack{display:flex; gap:6px; flex-wrap:wrap}

@media (max-width: 760px){
  .queue-resolver__summary,
  .queue-resolver__grid,
  .queue-create-grid,
  .queue-inline{
    grid-template-columns:1fr;
  }
}

.table tr.is-clickable{
  cursor:pointer;
}

.table tr.is-clickable:hover td{
  background:#f8fbff;
}

.table td.table-action{
  white-space:nowrap;
}

.admin-backdrop{
  position:fixed;
  inset:0;
  z-index:60;
  background:rgba(15,23,42,.48);
  backdrop-filter:blur(3px);
}

.admin-backdrop[hidden]{
  display:none !important;
}

.admin-drawer{
  position:fixed;
  top:0;
  right:0;
  bottom:0;
  z-index:61;
  width:min(780px, 100vw);
  background:
    radial-gradient(circle at top right, rgba(255,207,0,.16), transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #f7fbff 100%);
  border-left:1px solid rgba(0,113,188,.14);
  box-shadow:-20px 0 48px rgba(15,23,42,.24);
  padding:22px 22px 28px;
  overflow:auto;
}

.admin-drawer[hidden]{
  display:none !important;
}

.admin-drawer__header{
  display:flex;
  justify-content:space-between;
  gap:18px;
  align-items:flex-start;
  margin-bottom:18px;
}

.admin-drawer__eyebrow{
  font-size:11px;
  font-weight:900;
  letter-spacing:.28px;
  text-transform:uppercase;
  color:var(--blue);
}

.admin-drawer__title{
  margin:6px 0 6px;
  font-size:28px;
  line-height:1.1;
  color:#132238;
}

.admin-drawer__close{
  width:44px;
  height:44px;
  border-radius:999px;
  border:1px solid rgba(0,113,188,.14);
  background:#fff;
  color:var(--blue);
  font-size:28px;
  line-height:1;
  cursor:pointer;
}

.admin-student-hero{
  display:grid;
  gap:14px;
}

.admin-chip-row{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.admin-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:10px 14px;
  border-radius:999px;
  border:1px solid rgba(0,113,188,.14);
  background:#fff;
  box-shadow:0 8px 18px rgba(0,113,188,.05);
}

.admin-chip__label{
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.24px;
  color:var(--blue);
}

.admin-chip__value{
  font-size:14px;
  font-weight:800;
  color:#132238;
}

.admin-detail-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:14px;
  margin-top:18px;
}

.admin-section{
  border:1px solid rgba(0,113,188,.12);
  border-radius:18px;
  background:#fff;
  box-shadow:0 12px 24px rgba(15,23,42,.05);
  padding:16px;
}

.admin-section--full{
  grid-column:1 / -1;
}

.admin-section__title{
  margin:0 0 12px;
  font-size:16px;
  font-weight:900;
  color:#132238;
}

.admin-kv{
  display:grid;
  gap:10px;
}

.admin-kv__row{
  display:grid;
  grid-template-columns:150px minmax(0, 1fr);
  gap:12px;
  align-items:start;
  font-size:14px;
}

.admin-kv__label{
  font-weight:900;
  color:#35516d;
}

.admin-kv__value{
  color:#1f2328;
  overflow-wrap:anywhere;
}

.admin-doc-list,
.admin-task-list{
  display:grid;
  gap:12px;
}

.admin-doc-card,
.admin-task-card{
  border:1px solid rgba(0,113,188,.12);
  border-radius:16px;
  background:linear-gradient(180deg, #fff 0%, #fbfdff 100%);
  padding:14px;
}

.admin-doc-card__head,
.admin-task-card__head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
}

.admin-doc-card__title,
.admin-task-card__title{
  font-size:15px;
  font-weight:900;
  color:#132238;
}

.admin-doc-card__meta,
.admin-task-card__meta{
  margin-top:8px;
  display:grid;
  gap:6px;
  font-size:13px;
  color:#49586a;
}

.admin-doc-card__actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:12px;
}

.admin-doc-card__raw{
  margin-top:10px;
}

.admin-doc-card__raw > summary{
  cursor:pointer;
  font-size:12px;
  font-weight:900;
  color:var(--blue);
}

.admin-task-card__uploads{
  margin-top:12px;
  padding:12px;
  border-radius:14px;
  background:#f6faff;
  border:1px solid rgba(0,113,188,.1);
}

.admin-task-card__uploads.is-empty{
  color:#6b7b8d;
  font-size:13px;
}

.admin-task-card__uploads-title{
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  color:#526b83;
  margin-bottom:8px;
}

.admin-task-card__upload-list{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

.admin-task-status-chip{
  cursor:pointer;
  font:inherit;
  font-size:12px;
}

.admin-task-history{
  margin-top:12px;
  padding:12px;
  border-radius:14px;
  background:#fffdf4;
  border:1px solid rgba(201,138,0,.24);
  display:grid;
  gap:10px;
}

.admin-task-history__title{
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  color:#755200;
}

.admin-task-history__item{
  padding:10px;
  border-radius:12px;
  background:#fff;
  border:1px solid rgba(0,91,150,.12);
  font-size:13px;
  line-height:1.45;
  color:#34465a;
}

.admin-task-history__meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:space-between;
  margin-bottom:6px;
}

.schedule-subscribe-card{
  margin:0 0 14px;
  padding:14px;
  border-radius:16px;
  border:1px solid rgba(0,91,150,.14);
  background:#f6faff;
}

.schedule-subscribe-card__body{
  display:grid;
  grid-template-columns:minmax(0, 1fr) auto;
  gap:14px;
  align-items:center;
}

.schedule-subscribe-card__title{
  font-size:13px;
  font-weight:900;
  text-transform:uppercase;
  color:#244258;
}

.schedule-subscribe-card__url{
  margin:6px 0;
  padding:10px 12px;
  border-radius:12px;
  background:#fff;
  border:1px solid rgba(0,91,150,.14);
  color:#132238;
  font-size:12px;
  font-weight:800;
  overflow-wrap:anywhere;
}

.schedule-subscribe-card img{
  width:120px;
  height:120px;
  border-radius:10px;
  background:#fff;
  border:1px solid rgba(0,91,150,.14);
}

.admin-review-panel{
  margin-top:14px;
  border:1px solid rgba(0,113,188,.12);
  border-radius:18px;
  background:linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  padding:16px;
  display:grid;
  gap:16px;
}

.admin-review-panel__header{
  display:grid;
  gap:12px;
}

.admin-review-panel__eyebrow{
  font-size:11px;
  font-weight:900;
  letter-spacing:.24px;
  text-transform:uppercase;
  color:var(--blue);
}

.admin-review-panel__title{
  font-size:20px;
  font-weight:900;
  color:#132238;
}

.admin-review-panel__subtitle{
  font-size:14px;
  color:#5b6f85;
}

.admin-review-panel__grid{
  display:grid;
  gap:16px;
}

.admin-review-panel__section{
  border:1px solid rgba(0,113,188,.10);
  border-radius:16px;
  background:#fff;
  padding:14px;
}

.admin-review-panel__section-title{
  margin:0 0 12px;
  font-size:14px;
  font-weight:900;
  color:#132238;
}

.admin-review-answer-list{
  display:grid;
  gap:12px;
}

.admin-review-answer-card{
  display:grid;
  grid-template-columns:40px minmax(0,1fr);
  gap:12px;
  align-items:flex-start;
  border:1px solid rgba(0,113,188,.10);
  border-radius:14px;
  background:#fbfdff;
  padding:12px;
}

.admin-review-answer-card__index{
  width:40px;
  height:40px;
  border-radius:14px;
  display:grid;
  place-items:center;
  background:linear-gradient(180deg, #0b67b3 0%, #0a5798 100%);
  color:#ffd147;
  font-weight:900;
}

.admin-review-answer-card__body{
  display:grid;
  gap:8px;
}

.admin-review-answer-card__question{
  font-size:14px;
  font-weight:900;
  color:#132238;
}

.admin-review-answer-card__answer{
  display:grid;
  gap:6px;
  font-size:14px;
  color:#31465d;
  overflow-wrap:anywhere;
}

.admin-review-panel__raw{
  border:1px solid rgba(0,113,188,.10);
  border-radius:14px;
  background:#fff;
  padding:12px 14px;
}

.admin-review-panel__raw summary{
  cursor:pointer;
  font-weight:900;
  color:#143250;
}

.admin-review-panel__empty{
  display:grid;
  gap:6px;
}

.thumb-figure{
  margin:12px 0 0;
  max-width:220px;
  border-radius:16px;
  overflow:hidden;
  border:1px solid rgba(0,113,188,.12);
  background:#fff;
}

.thumb-figure--portal{
  max-width:180px;
}

.thumb-figure__img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:4/3;
  object-fit:cover;
}

.admin-task-review{
  margin-top:12px;
  display:grid;
  gap:10px;
}

.admin-task-review textarea{
  width:100%;
  min-height:90px;
  border-radius:14px;
  border:1px solid var(--border);
  padding:12px;
  font:inherit;
  resize:vertical;
}

.admin-task-review__actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.subtool-nav{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:16px 0;
}

.ec-panel{
  display:none;
}

.ec-panel.is-visible{
  display:block;
}

.ec-card-nested{
  margin-top:10px;
  background:linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);
}

.ec-collapsible{
  padding:0;
  overflow:hidden;
}

.ec-collapsible__summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:18px 20px;
}

.ec-collapsible__summary::-webkit-details-marker{
  display:none;
}

.ec-collapsible[open] .filters,
.ec-collapsible[open] .actions,
.ec-collapsible[open] .muted.small{
  padding-left:20px;
  padding-right:20px;
}

.ec-collapsible[open] .actions,
.ec-collapsible[open] .muted.small{
  padding-bottom:18px;
}

.builder-grid,
.scanner-grid{
  display:grid;
  grid-template-columns:minmax(0, 1.2fr) minmax(0, .8fr);
  gap:16px;
  margin-top:16px;
}

.records-grid{
  grid-template-columns:minmax(280px, .8fr) minmax(0, 1.35fr);
}

.skill-builder-shell{
  display:grid;
  grid-template-columns:minmax(260px, .9fr) minmax(0, 1.4fr);
  gap:16px;
  min-height:520px;
}

.skill-editor-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:14px;
}

.skill-editor-grid .field--full{
  grid-column:1 / -1;
}

.skill-builder-list,
.skill-builder-editor{
  border:1px solid rgba(0,113,188,.12);
  border-radius:18px;
  background:#fff;
  padding:16px;
  min-width:0;
}

.skill-builder-list{
  display:grid;
  grid-template-rows:auto 1fr;
}

.skill-builder-list__head{
  display:grid;
  gap:4px;
  padding-bottom:12px;
  border-bottom:1px solid rgba(0,113,188,.08);
}

.skill-builder-list__title{
  font-size:16px;
  font-weight:900;
  color:#132238;
}

.skill-builder-list__body{
  display:grid;
  gap:10px;
  padding-top:12px;
  align-content:start;
  max-height:420px;
  overflow:auto;
}

.skill-step-tile{
  width:100%;
  border:1px solid rgba(0,113,188,.12);
  border-radius:16px;
  background:linear-gradient(180deg,#fff,#f8fbff);
  padding:12px;
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  gap:12px;
  align-items:start;
  text-align:left;
  cursor:pointer;
}

.skill-step-tile.is-active{
  border-color:rgba(0,113,188,.45);
  box-shadow:0 12px 24px rgba(0,113,188,.12);
}

.skill-step-tile__index{
  width:44px;
  height:44px;
  border-radius:14px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:rgba(255,207,0,.3);
  color:#132238;
  font-weight:900;
}

.skill-step-tile__body{
  min-width:0;
  display:grid;
  gap:4px;
}

.skill-step-tile__title{
  font-size:14px;
  font-weight:900;
  color:#132238;
}

.skill-step-tile__meta{
  font-size:12px;
  color:#59708a;
  overflow-wrap:anywhere;
}

.skill-item{
  border:1px solid rgba(0,113,188,.12);
  border-radius:18px;
  background:#fff;
  padding:14px;
  margin-bottom:12px;
}

.skill-item__head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:10px;
}

.skill-item__title{
  font-size:15px;
  font-weight:900;
  color:#132238;
}

.scanner-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:16px 0 12px;
}

.scanner-stage,
.scanner-summary-card{
  border:1px solid rgba(0,113,188,.12);
  border-radius:18px;
  background:#fff;
  padding:16px;
}

.qr-card-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:14px;
  margin-top:12px;
}

.qr-card{
  border:1px solid rgba(0,113,188,.12);
  border-radius:18px;
  background:#fff;
  padding:14px;
  display:grid;
  gap:10px;
  transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.qr-card.is-highlighted{
  border-color:rgba(0,113,188,.48);
  box-shadow:0 18px 32px rgba(0,113,188,.16);
  transform:translateY(-2px);
}

.qr-card img{
  width:180px;
  height:180px;
  justify-self:center;
  border-radius:12px;
  background:#fff;
  border:1px solid var(--border);
}

.qr-card__title{
  font-size:15px;
  font-weight:900;
  color:#132238;
}

.qr-card__meta{
  font-size:13px;
  color:#4b5c6f;
  overflow-wrap:anywhere;
}

.records-results{
  display:grid;
  gap:10px;
  margin-top:12px;
}

.records-repair-panel{
  margin-top:16px;
}

.records-repair-panel .filter-actions{
  grid-column:1 / -1;
}

.record-result{
  width:100%;
  border:1px solid rgba(0,113,188,.12);
  border-radius:16px;
  background:#fff;
  padding:12px 14px;
  display:grid;
  gap:4px;
  text-align:left;
  cursor:pointer;
}

.record-result.is-active{
  border-color:rgba(0,113,188,.42);
  box-shadow:0 12px 24px rgba(0,113,188,.1);
}

.record-result__name{
  font-size:14px;
  font-weight:900;
  color:#132238;
}

.record-result__meta{
  font-size:12px;
  color:#5a6d83;
}

.qr-admin-grid{
  grid-template-columns:minmax(0, .9fr) minmax(0, 1.1fr);
}

.qr-video{
  width:100%;
  min-height:280px;
  border-radius:16px;
  background:#0b1d31;
  object-fit:cover;
}

.scanner-manual{
  margin-top:12px;
}

.app-loading{
  position:fixed;
  inset:0;
  z-index:80;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:16px;
  background:rgba(10,21,38,.44);
  backdrop-filter:blur(5px);
}

.app-loading[hidden]{
  display:none !important;
}

.app-loading__spinner{
  width:82px;
  height:82px;
  border-radius:999px;
  border:7px solid rgba(255,255,255,.22);
  border-top-color:var(--gold);
  border-right-color:var(--blue);
  animation:portal-spin 1s linear infinite;
}

.app-loading__text{
  color:#fff;
  font-size:18px;
  font-weight:900;
}

.admin-doc-json{
  margin-top:10px;
  padding:12px;
  border-radius:14px;
  background:#f4f8fc;
  border:1px solid rgba(0,113,188,.08);
  font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size:12px;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  color:#18314d;
}

@media (max-width: 900px){
  .builder-grid,
  .scanner-grid{
    grid-template-columns:1fr;
  }

  .records-grid{
    grid-template-columns:1fr;
  }

  .skill-builder-shell{
    grid-template-columns:1fr;
    min-height:unset;
  }

  .skill-editor-grid,
  .qr-admin-grid{
    grid-template-columns:1fr;
  }

  .admin-drawer{
    width:100vw;
    padding:18px 14px 22px;
  }

  .admin-detail-grid{
    grid-template-columns:1fr;
  }

  .admin-kv__row{
    grid-template-columns:1fr;
    gap:4px;
  }
}

.bullets{margin:10px 0 0 18px}
.callout{
  margin-top:12px;
  padding:12px;
  border-radius:16px;
  border:1px solid rgba(0,113,188,.25);
  background: rgba(0,113,188,.06);
}

.log{
  margin-top:12px;
  background:#0f172a;
  color:#e5e7eb;
  padding:12px;
  border-radius:14px;
  overflow:auto;
  min-height:110px;
  font-size:12px;
  line-height:1.4;
}

.footer{
  background: var(--blue);
  color:#fff;
  padding:14px 18px;
  display:flex;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
}

.tool-launcher{
  margin-top:12px;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:12px;
}

.tool-tile{
  border:1px solid var(--border);
  background:linear-gradient(180deg,#fff,#f7f8ff);
  border-radius:20px;
  min-height:130px;
  padding:14px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:flex-start;
  gap:8px;
  box-shadow: 0 6px 14px rgba(15,23,42,.06);
  cursor:pointer;
}

.tool-tile__icon{
  width:44px;
  height:44px;
  border-radius:14px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:#eef2ff;
  font-size:22px;
}

.tool-tile__label{font-weight:900; font-size:15px}
.tool-tile__hint{font-size:12px; opacity:.8}
.tool-tile.is-active{
  border-color:var(--blue);
  box-shadow:0 8px 18px rgba(0,113,188,.18);
}

.tool-panel{display:none; margin-top:12px}
.tool-panel.is-visible{display:block}

.webhook-detail-card{
  margin-top:12px;
}

.webhook-detail-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:12px;
  margin-top:12px;
}

.webhook-log{
  min-height:220px;
  max-height:480px;
  margin-top:8px;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}

@media (max-width: 900px){
  .webhook-detail-grid{
    grid-template-columns:1fr;
  }
}

/* Transcript Portal */
.transcript-wrap{
  max-width:980px;
}

.transcript-card{
  margin-bottom:16px;
}

.transcript-form{
  display:grid;
  grid-template-columns:1fr auto;
  gap:12px;
  align-items:end;
}

.transcript-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}

.transcript-table{
  min-width:980px;
}

.transcript-link{
  color:var(--blue);
  font-weight:900;
  text-decoration:none;
}

.transcript-link:hover{
  text-decoration:underline;
}

.credential-chip{
  display:inline-flex;
  align-items:center;
  border:1px solid #b7d4ff;
  background:#eef6ff;
  color:#0b4f93;
  border-radius:999px;
  padding:4px 8px;
  font-size:12px;
  font-weight:800;
  margin:2px 4px 2px 0;
  white-space:nowrap;
}

.credential-chip--muted{
  border-color:#d7d9e6;
  background:#f6f7fb;
  color:#687385;
}

.credential-overlay{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(14,34,54,.62);
  z-index:1000;
}

.credential-overlay.is-visible{
  display:flex;
}

.credential-panel{
  width:min(920px, 100%);
  max-height:calc(100vh - 40px);
  overflow:auto;
  background:#fff;
  border:1px solid #cbd5e1;
  border-radius:18px;
  box-shadow:0 24px 70px rgba(0,0,0,.28);
  padding:24px;
  text-align:center;
}

.credential-panel__logo{
  width:74px;
  height:74px;
  object-fit:contain;
  background:#fff;
  border:4px solid var(--gold);
  border-radius:18px;
  padding:8px;
  margin-bottom:10px;
}

.credential-panel__eyebrow{
  color:var(--blue);
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:12px;
}

.credential-panel h1{
  margin:8px 0 8px;
  color:#17324d;
  font-size:28px;
}

.credential-panel p{
  max-width:680px;
  margin:0 auto 18px;
  color:#526173;
}

.credential-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:12px;
  text-align:left;
}

.credential-entry{
  border:1px solid var(--border);
  border-radius:12px;
  padding:12px;
  margin:0;
  background:#fbfcff;
}

.credential-entry legend{
  font-weight:900;
  color:#17324d;
  padding:0 6px;
}

.credential-actions{
  display:flex;
  justify-content:center;
  gap:10px;
  flex-wrap:wrap;
  margin-top:16px;
}

@media (max-width: 800px){
  .transcript-form{
    grid-template-columns:1fr;
  }
  .credential-grid{
    grid-template-columns:1fr;
  }
  .credential-panel{
    padding:18px;
  }
}

.invite-entry-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:12px;
  align-items:end;
  margin-top:12px;
}

@media (max-width: 900px){
  .invite-entry-grid{
    grid-template-columns:1fr;
  }
}

.portal-shell{
  max-width:960px;
}

.portal-hero{
  background:linear-gradient(135deg, rgba(0,113,188,.12), rgba(255,207,0,.18));
}

.portal-kicker{
  display:inline-flex;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(0,113,188,.12);
  border:1px solid rgba(0,113,188,.18);
  font-size:12px;
  font-weight:800;
  margin-bottom:10px;
}

.portal-panel{
  margin-top:16px;
}

.portal-detail-list{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:12px;
  margin-top:14px;
}

.portal-detail{
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:14px;
  border-radius:14px;
  border:1px solid var(--border);
  background:#fff;
}

.portal-detail__label{
  font-size:12px;
  font-weight:900;
  opacity:.7;
}

@media (max-width: 900px){
  .portal-detail-list{
    grid-template-columns:1fr;
  }
}

.portal-topbar{
  position:sticky;
  top:0;
  z-index:20;
}

.portal-topbar__actions{
  display:flex;
  align-items:center;
  gap:10px;
}

.btn--ghost{
  background:rgba(255,255,255,.12);
  border-color:rgba(255,255,255,.28);
  color:#fff;
}

.portal-shell--student{
  max-width:1100px;
  padding-bottom:120px;
}

.portal-hero--student{
  background:linear-gradient(135deg, #ffffff 0%, #fffaf0 100%);
}

.portal-summary{
  margin-top:18px;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:12px;
}

.portal-summary__item{
  border:1px solid var(--border);
  border-radius:16px;
  padding:14px;
  background:#fff;
}

.portal-summary__label{
  display:block;
  font-size:12px;
  font-weight:800;
  opacity:.75;
  margin-bottom:6px;
}

.portal-summary__value{
  display:block;
  font-size:15px;
  font-weight:800;
}

.portal-inline-actions{
  margin-top:14px;
}

.portal-login-grid{
  grid-template-columns:minmax(0,1fr);
}

.portal-panel__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}

.portal-task-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:14px;
  margin-top:16px;
}

.portal-task-card{
  border:1px solid var(--border);
  border-radius:18px;
  background:#fff;
  padding:16px;
  text-align:left;
  cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,.06);
}

.portal-task-card.is-complete{
  border-color:rgba(31, 161, 98, .35);
  background:linear-gradient(180deg, #ffffff 0%, #f5fff8 100%);
}

.portal-task-card__head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
}

.portal-task-card__title{
  font-size:16px;
  font-weight:900;
}

.portal-task-card__helper{
  margin-top:6px;
  font-size:13px;
  opacity:.75;
}

.portal-task-card__status{
  width:32px;
  height:32px;
  border-radius:999px;
  border:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  font-weight:900;
  color:#9ca3af;
  flex:0 0 auto;
}

.portal-task-card__status.is-complete{
  border-color:#1fa162;
  color:#1fa162;
  background:rgba(31,161,98,.12);
}

.portal-task-card__foot{
  margin-top:16px;
  display:flex;
  justify-content:space-between;
  gap:12px;
  font-size:12px;
  font-weight:800;
  opacity:.78;
}

.portal-menu{
  position:fixed;
  top:72px;
  right:16px;
  z-index:25;
  min-width:240px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:16px;
  box-shadow:var(--shadow);
  padding:8px;
}

.portal-menu__item{
  width:100%;
  border:0;
  background:#fff8f8;
  color:#8a1f1f;
  border-radius:12px;
  min-height:46px;
  padding:12px 14px;
  text-align:left;
  font-weight:800;
  cursor:pointer;
}

.portal-backdrop{
  position:fixed;
  inset:0;
  background:rgba(15, 23, 42, .35);
  z-index:30;
}

.portal-drawer{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:31;
  background:#fff;
  border-top-left-radius:24px;
  border-top-right-radius:24px;
  box-shadow:0 -20px 50px rgba(15, 23, 42, .18);
  max-height:min(88vh, 860px);
  overflow:auto;
  padding:20px 20px 28px;
}

.portal-drawer__header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
}

.portal-drawer__body{
  margin-top:16px;
}

.portal-drawer__instructions p{
  margin:0 0 12px;
  line-height:1.7;
}

.portal-drawer__footer{
  margin-top:18px;
  display:flex;
  justify-content:flex-start;
  gap:12px;
  flex-wrap:wrap;
}

.portal-form-grid{
  margin-top:20px;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}

.field--full{
  grid-column:1 / -1;
}

.portal-toast-stack{
  position:fixed;
  right:16px;
  bottom:16px;
  z-index:72;
  display:grid;
  gap:10px;
  max-width:420px;
}

.portal-toast{
  border-radius:16px;
  border:2px solid var(--blue);
  background:linear-gradient(180deg, #fff4b8 0%, #ffea73 100%);
  box-shadow:0 18px 36px rgba(0,113,188,.18);
  padding:16px;
  color:var(--blue);
}

.portal-toast--success{
  border-color:var(--blue);
}

.portal-toast--error{
  border-color:var(--blue);
}

.portal-toast--warning{
  border-color:var(--blue);
}

.portal-toast__body{
  font-weight:900;
  line-height:1.5;
}

.portal-toast__actions{
  margin-top:12px;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:flex-end;
}

.portal-toast .btn--secondary{
  background:#ffffff;
  border-color:var(--blue);
  color:var(--blue);
}

.portal-toast .btn--primary{
  background:var(--blue);
  border-color:var(--blue);
  color:#fff;
}

@media (max-width: 760px){
  .portal-form-grid{
    grid-template-columns:1fr;
  }

  .portal-topbar__actions .btn{
    min-width:auto;
    padding:10px 12px;
  }

  .portal-drawer{
    padding:18px 16px 24px;
  }

  .portal-toast-stack{
    left:16px;
    right:16px;
    max-width:none;
  }
}

/* Student Portal Refresh */
.portal-topbar__actions .btn--primary{
  min-width:auto;
  background:var(--gold);
  border-color:var(--gold);
  color:#1f2328;
}

.portal-icon-btn{
  width:48px;
  height:48px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.28);
  background:rgba(255,255,255,.14);
  color:#fff;
  font-size:24px;
  line-height:1;
  cursor:pointer;
}

.portal-hero--student{
  background:linear-gradient(135deg, rgba(0,113,188,.10) 0%, rgba(255,207,0,.22) 100%);
}

.portal-summary{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
}

.portal-chip{
  display:inline-flex;
  align-items:center;
  gap:10px;
  border-radius:999px;
  border:1px solid rgba(0,113,188,.18);
  background:#fff;
  padding:12px 16px;
  min-height:52px;
}

.portal-chip__label{
  font-size:12px;
  font-weight:900;
  letter-spacing:.2px;
  color:var(--blue);
  text-transform:uppercase;
}

.portal-chip__value{
  font-size:14px;
  font-weight:800;
  color:#1f2328;
}

.portal-task-list{
  margin-top:16px;
  display:grid;
  gap:12px;
}

.portal-task-row{
  width:100%;
  border:1px solid var(--border);
  border-radius:18px;
  background:#fff;
  padding:16px 18px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto auto;
  gap:16px;
  align-items:center;
  text-align:left;
  cursor:pointer;
}

.portal-task-row:hover{
  border-color:rgba(0,113,188,.32);
  box-shadow:0 12px 28px rgba(0,113,188,.08);
}

.portal-task-row.is-complete{
  border-color:rgba(31,161,98,.35);
  background:linear-gradient(180deg, #ffffff 0%, #f5fff8 100%);
}

.portal-task-row__check{
  width:34px;
  height:34px;
  border-radius:999px;
  border:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:900;
  color:#9ca3af;
}

.portal-task-row__check.is-complete{
  border-color:#1fa162;
  background:rgba(31,161,98,.12);
  color:#1fa162;
}

.portal-task-row__title{
  font-size:16px;
  font-weight:900;
  color:#1f2328;
}

.portal-task-row__helper{
  margin-top:4px;
  font-size:13px;
  opacity:.72;
}

.portal-task-row__meta{
  text-align:right;
}

.portal-task-row__meta-label{
  font-size:11px;
  font-weight:900;
  color:var(--blue);
  text-transform:uppercase;
}

.portal-task-row__meta-value{
  margin-top:4px;
  font-size:14px;
  font-weight:800;
}

.portal-task-row__action{
  min-width:92px;
  text-align:center;
  padding:12px 14px;
  border-radius:14px;
  background:var(--gold);
  color:#1f2328;
  font-weight:900;
}

.portal-menu{
  top:78px;
  right:16px;
  min-width:260px;
  padding:10px;
  border-radius:18px;
  border:1px solid var(--border);
  background:#fff;
  box-shadow:0 18px 40px rgba(15,23,42,.18);
}

.portal-menu__label{
  padding:8px 10px 10px;
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  color:var(--blue);
}

.portal-menu__item{
  background:#fff8f8;
}

.portal-backdrop{
  background:rgba(15,23,42,.42);
}

.portal-drawer{
  top:0;
  right:0;
  bottom:0;
  left:auto;
  width:min(620px, 100vw);
  max-height:none;
  border-top-left-radius:26px;
  border-top-right-radius:0;
  border-bottom-left-radius:26px;
  transform:translateX(0);
  padding:24px 24px 28px;
}

.portal-drawer__header .btn--ghost{
  background:#eef3fb;
  border-color:#d7d9e6;
  color:#1f2328;
}

.portal-drawer__body{
  padding-right:4px;
}

.portal-drawer__instructions{
  font-size:15px;
}

.portal-form-grid{
  margin-top:22px;
}

@media (max-width: 900px){
  .portal-task-row{
    grid-template-columns:auto minmax(0,1fr);
  }

  .portal-task-row__meta,
  .portal-task-row__action{
    grid-column:2;
    text-align:left;
  }

  .portal-drawer{
    width:100vw;
    border-radius:24px 24px 0 0;
    top:auto;
    left:0;
    right:0;
    bottom:0;
  }
}

/* Portal Professional Refresh */
.btn--secondary{
  background:#ffffff;
  border-color:var(--blue);
  color:var(--blue);
}

.portal-shell--student{
  max-width:1180px;
}

.manual-page{
  background:
    radial-gradient(circle at top right, rgba(248,221,0,.16), transparent 28%),
    linear-gradient(180deg, #f4f9ff 0%, #ffffff 56%, #f7fbff 100%);
  min-height:100vh;
}

.manual-page__wrap{
  max-width:1440px;
}

.manual-page__hero{
  margin-bottom:18px;
}

.manual-page__content{
  display:grid;
  gap:18px;
}

body.portal-is-loading .portal-topbar,
body.portal-is-loading .portal-shell--student,
body.portal-is-loading .portal-menu,
body.portal-is-loading .portal-modal{
  filter:blur(8px);
  transition:filter .18s ease;
}

.portal-hero--student{
  border:1px solid rgba(0,113,188,.14);
  background:
    radial-gradient(circle at top right, rgba(255,207,0,.22), transparent 28%),
    linear-gradient(140deg, #ffffff 0%, #f4f9ff 54%, #fffaf0 100%);
}

.portal-panel--home{
  background:
    radial-gradient(circle at top left, rgba(255,255,255,.86), rgba(255,255,255,.55) 28%, rgba(255,255,255,.28) 52%, transparent 68%),
    linear-gradient(180deg, rgba(39,96,180,.22), rgba(85,184,201,.18) 38%, rgba(255,219,95,.2) 100%);
}

.portal-summary{
  margin-top:20px;
  display:flex;
  flex-wrap:wrap;
  gap:14px;
}

.portal-chip{
  display:inline-flex;
  align-items:center;
  gap:12px;
  border-radius:999px;
  border:1px solid rgba(0,113,188,.18);
  background:linear-gradient(180deg, #ffffff 0%, #f7fbff 100%);
  padding:12px 18px;
  box-shadow:0 8px 20px rgba(0,113,188,.06);
}

.portal-chip__label{
  font-size:11px;
  font-weight:900;
  letter-spacing:.4px;
  text-transform:uppercase;
  color:var(--blue);
}

.portal-chip__value{
  font-size:15px;
  font-weight:900;
  color:#14213a;
}

.portal-task-list{
  margin-top:18px;
  border:1px solid rgba(0,113,188,.12);
  border-radius:22px;
  overflow:hidden;
  background:#fff;
}

.portal-task-list__head,
.portal-task-row{
  display:grid;
  grid-template-columns:minmax(0, 1.8fr) 160px 170px 140px;
  gap:16px;
  align-items:center;
}

.portal-task-list__head{
  padding:14px 20px;
  background:linear-gradient(90deg, rgba(0,113,188,.08), rgba(255,207,0,.12));
  font-size:12px;
  font-weight:900;
  letter-spacing:.35px;
  text-transform:uppercase;
  color:#17436a;
}

#sp-task-grid{
  display:grid;
}

.portal-task-row{
  padding:18px 20px;
  border-top:1px solid rgba(0,113,188,.08);
  background:#fff;
}

.portal-task-row__content,
.portal-task-row__status,
.portal-task-row__meta,
.portal-task-row__action{
  min-width:0;
}

.portal-task-row:nth-child(even){
  background:#fbfdff;
}

.portal-task-row.is-complete{
  background:linear-gradient(90deg, rgba(31,161,98,.06), rgba(255,255,255,.92));
}

.portal-task-row__title{
  font-size:16px;
  font-weight:900;
  color:#132238;
  line-height:1.3;
  overflow-wrap:anywhere;
}

.portal-task-row__helper{
  margin-top:4px;
  font-size:13px;
  color:#5d6b7b;
  line-height:1.55;
  overflow-wrap:anywhere;
}

.portal-task-row__status,
.portal-task-row__meta{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  font-size:14px;
  font-weight:800;
  color:#173f67;
}

.portal-task-row__check{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:106px;
  min-height:40px;
  padding:0 14px;
  border-radius:999px;
  border:1px solid rgba(0,113,188,.18);
  background:#eef6ff;
  color:#1a4d7e;
}

.portal-task-row__check.is-complete{
  border-color:rgba(31,161,98,.3);
  background:#eaf9f0;
  color:#15824f;
}

.portal-task-row__check.is-flagged{
  border-color:rgba(183,34,34,.22);
  background:#fff0f0;
  color:#9d2727;
}

.portal-task-row__meta-label{
  display:block;
  font-size:11px;
  font-weight:900;
  letter-spacing:.32px;
  text-transform:uppercase;
  color:#66809c;
}

.portal-task-row__meta-value{
  display:block;
  color:#173f67;
}

.portal-task-row__action{
  text-align:right;
}

.portal-open-btn{
  min-width:118px;
  width:100%;
  max-width:136px;
  box-shadow:0 8px 18px rgba(255,207,0,.24);
}

.portal-menu{
  min-width:280px;
  padding:12px;
  border-radius:20px;
  border:1px solid rgba(0,113,188,.12);
  box-shadow:0 22px 48px rgba(16,34,58,.18);
}

.portal-menu__label{
  padding:6px 10px 12px;
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.35px;
  color:var(--blue);
}

.portal-menu__item{
  width:100%;
  border:1px solid rgba(183,34,34,.16);
  background:linear-gradient(180deg, #fff7f7 0%, #fff 100%);
  color:#952525;
  border-radius:14px;
  min-height:50px;
  padding:12px 14px;
  text-align:left;
  font-weight:900;
  cursor:pointer;
}

.portal-backdrop{
  position:fixed;
  inset:0;
  background:rgba(10, 21, 38, .48);
  backdrop-filter:blur(3px);
  z-index:40;
}

.portal-modal{
  position:fixed;
  left:50%;
  top:50%;
  transform:translate(-50%, -50%);
  z-index:41;
  width:min(1440px, 90vw);
  max-height:calc(100vh - 48px);
  overflow:auto;
  background:#ffffff;
  border-radius:28px;
  border:1px solid rgba(0,113,188,.12);
  box-shadow:0 28px 60px rgba(10,21,38,.26);
  padding:24px 24px 28px;
}

.portal-modal__header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:18px;
}

.portal-close-btn{
  width:44px;
  height:44px;
  border-radius:999px;
  border:1px solid rgba(0,113,188,.14);
  background:#f4f9ff;
  color:#17436a;
  font-size:28px;
  line-height:1;
  cursor:pointer;
}

.portal-modal__body{
  margin-top:18px;
}

.portal-modal__instructions{
  font-size:15px;
  line-height:1.75;
  color:#34465a;
}

.portal-modal__instructions p{
  margin:0 0 12px;
}

.portal-textbook-examples{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:14px;
  margin:0 0 16px;
}

.portal-textbook-example{
  margin:0;
  border:1px solid rgba(0,91,150,.16);
  border-radius:14px;
  background:#fff;
  padding:12px;
}

.portal-textbook-example img{
  display:block;
  width:100%;
  height:220px;
  object-fit:contain;
  background:#f7f9fb;
  border-radius:10px;
}

.portal-textbook-example figcaption{
  margin-top:9px;
  font-size:13px;
  line-height:1.35;
  font-weight:800;
  color:#34465a;
}

.portal-requirement-chip{
  display:inline-flex;
  align-items:center;
  max-width:100%;
  border-radius:999px;
  padding:8px 12px;
  font-size:13px;
  line-height:1.25;
  font-weight:900;
}

.portal-requirement-chip--purple{
  background:#5b2a86;
  border:1px solid #7b4caf;
  color:#fff;
}

@media (max-width: 720px){
  .schedule-subscribe-card__body{
    grid-template-columns:1fr;
  }

  .schedule-subscribe-card img{
    width:150px;
    height:150px;
  }

  .portal-textbook-examples{
    grid-template-columns:1fr;
  }

  .portal-textbook-example img{
    height:190px;
  }
}

.portal-task-flag{
  margin:0 0 14px;
  padding:12px 14px;
  border-radius:14px;
  background:#fff7f7;
  border:1px solid rgba(183,34,34,.18);
  color:#8e2323;
  font-size:14px;
  line-height:1.5;
}

.portal-modal__form{
  margin-top:22px;
}

.portal-modal__footer{
  margin-top:18px;
  display:flex;
  gap:12px;
}

.portal-form-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:14px;
}

.portal-review-ok{
  margin:0 0 14px;
  padding:12px 14px;
  border-radius:14px;
  border:1px solid rgba(31,161,98,.2);
  background:#eefbf3;
  color:#14643f;
  font-size:14px;
  font-weight:800;
}

.portal-compare-table{
  margin-top:16px;
  display:grid;
  grid-template-columns:minmax(140px, 1fr) minmax(0, 1.2fr) minmax(0, 1.2fr);
  border:1px solid rgba(0,113,188,.12);
  border-radius:18px;
  overflow:hidden;
  background:#fff;
}

.portal-compare-table__head,
.portal-compare-table__cell{
  padding:12px 14px;
  min-width:0;
  font-size:14px;
  line-height:1.5;
  overflow-wrap:anywhere;
}

.portal-compare-table__head{
  background:linear-gradient(90deg, rgba(0,113,188,.08), rgba(255,207,0,.12));
  font-size:12px;
  font-weight:900;
  letter-spacing:.3px;
  text-transform:uppercase;
  color:#17436a;
}

.portal-compare-table__label{
  font-weight:800;
  color:#173f67;
}

.portal-compare-table__cell{
  border-top:1px solid rgba(0,113,188,.08);
}

.portal-compare-table__cell.is-mismatch{
  background:#fff7eb;
}

.portal-home-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(132px, 1fr));
  gap:18px 16px;
  margin-top:22px;
  align-items:stretch;
}

.portal-home-grid--slide{
  animation:portal-home-slide .22s ease;
}

.portal-app-tile{
  min-height:158px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  padding:14px 12px 16px;
  border-radius:28px;
  border:1px solid rgba(255,255,255,.42);
  color:#0f2740;
  text-align:center;
  backdrop-filter:blur(20px);
  box-shadow:0 24px 44px rgba(10,21,38,.14), inset 0 1px 0 rgba(255,255,255,.44);
  cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease;
  overflow:hidden;
}

.portal-app-tile:hover{
  transform:translateY(-4px) scale(1.01);
  box-shadow:0 30px 52px rgba(10,21,38,.18), inset 0 1px 0 rgba(255,255,255,.5);
}

.portal-app-tile__icon{
  width:64px;
  height:64px;
  flex:0 0 auto;
  display:grid;
  place-items:center;
  border-radius:20px;
  background:linear-gradient(180deg, rgba(255,255,255,.92), rgba(244,249,255,.8));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75), 0 14px 26px rgba(10,21,38,.12);
}

.portal-app-tile__image{
  width:52px;
  height:52px;
  background-position:center;
  background-repeat:no-repeat;
  background-size:contain;
  display:block;
  user-select:none;
  pointer-events:none;
}

.portal-app-tile__title{
  font-size:15px;
  font-weight:900;
  line-height:1.25;
  max-width:100%;
}

.portal-app-tile__subtitle{
  font-size:12px;
  line-height:1.35;
  color:#31506c;
  max-width:100%;
}

.portal-panel--home{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 18% 14%, rgba(255,255,255,.78), transparent 24%),
    radial-gradient(circle at 82% 22%, rgba(255,216,77,.18), transparent 22%),
    linear-gradient(180deg, rgba(233,244,255,.94) 0%, rgba(247,251,255,.96) 52%, rgba(255,248,222,.96) 100%);
  border:1px solid rgba(0,113,188,.10);
}

.portal-panel--home::before{
  content:"";
  position:absolute;
  inset:auto -10% -120px -10%;
  height:220px;
  background:linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,.72));
  pointer-events:none;
}

.portal-app-tile--blue{background:linear-gradient(180deg, rgba(206,230,255,.72), rgba(240,247,255,.58));}
.portal-app-tile--gold{background:linear-gradient(180deg, rgba(255,235,173,.78), rgba(255,247,224,.58));}
.portal-app-tile--teal{background:linear-gradient(180deg, rgba(193,241,238,.76), rgba(235,250,248,.58));}
.portal-app-tile--slate{background:linear-gradient(180deg, rgba(215,225,241,.76), rgba(242,246,252,.58));}
.portal-app-tile--green{background:linear-gradient(180deg, rgba(206,241,220,.76), rgba(241,252,245,.58));}
.portal-app-tile--sunset{background:linear-gradient(180deg, rgba(255,216,194,.78), rgba(255,243,235,.58));}

@keyframes portal-home-slide{
  from{
    opacity:0;
    transform:translateX(16px);
  }
  to{
    opacity:1;
    transform:translateX(0);
  }
}

.portal-toast{
  border:1px solid rgba(0,113,188,.12);
  box-shadow:0 14px 30px rgba(10,21,38,.14);
}

@media (max-width: 900px){
  .portal-task-list__head{
    display:none;
  }

  .portal-task-row{
    grid-template-columns:1fr;
    gap:12px;
  }

  .portal-task-row__action{
    text-align:left;
  }

  .portal-modal{
    width:90vw;
    max-height:calc(100vh - 20px);
    padding:18px 18px 22px;
  }

  .portal-compare-table{
    grid-template-columns:1fr;
  }

  .portal-compare-table__head{
    display:none;
  }

  .portal-compare-table__cell{
    border-top:0;
    border-bottom:1px solid rgba(0,113,188,.08);
  }

  .portal-compare-table__label{
    background:#f6faff;
  }

  .portal-home-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:14px;
  }

  .portal-app-tile{
    min-height:150px;
    border-radius:24px;
  }

  .portal-app-tile__icon{
    width:58px;
    height:58px;
    border-radius:18px;
  }

  .portal-app-tile__image{
    width:46px;
    height:46px;
  }

}

.portal-loading{
  position:fixed;
  inset:0;
  z-index:45;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:16px;
  background:rgba(10, 21, 38, .54);
  backdrop-filter:blur(4px);
}

.portal-loading[hidden]{
  display:none !important;
}

.portal-loading__spinner{
  width:74px;
  height:74px;
  border-radius:999px;
  border:6px solid rgba(255,255,255,.24);
  border-top-color:var(--gold);
  border-right-color:var(--blue);
  animation:portal-spin 1s linear infinite;
}

.portal-loading__text{
  color:#fff;
  font-size:16px;
  font-weight:900;
  letter-spacing:.2px;
}

@keyframes portal-spin {
  to { transform:rotate(360deg); }
}

@media (max-width: 640px){
  .wrap.portal-shell--student{
    padding:0 12px 24px;
    margin:12px auto;
  }

  .portal-topbar{
    padding:12px 14px;
  }

  .logo{
    width:38px;
    height:38px;
    border-radius:8px;
  }

  .brand__title{
    font-size:16px;
  }

  .brand__subtitle{
    font-size:11px;
  }

  .portal-topbar__actions{
    gap:8px;
  }

  .portal-icon-btn{
    width:42px;
    height:42px;
    font-size:22px;
  }

  #btn-sp-logout{
    min-height:42px;
    padding:10px 12px;
    font-size:14px;
  }

  .portal-hero--student,
  .portal-panel{
    border-radius:20px;
    padding:16px;
  }

  .card__title{
    font-size:20px;
    line-height:1.2;
  }

  .portal-summary{
    gap:10px;
  }

  .portal-chip{
    width:100%;
    justify-content:space-between;
    padding:12px 14px;
  }

  .portal-chip__label{
    font-size:10px;
  }

  .portal-chip__value{
    font-size:13px;
    text-align:right;
  }

  .portal-task-list{
    border-radius:18px;
  }

  .portal-task-row{
    padding:14px;
    gap:8px;
  }

  .portal-task-row__title{
    font-size:15px;
  }

  .portal-task-row__helper{
    font-size:12px;
  }

  .portal-task-row__status,
  .portal-task-row__meta{
    font-size:13px;
  }

  .portal-task-row__check{
    min-width:94px;
    min-height:36px;
    font-size:12px;
  }

  .portal-open-btn{
    width:100%;
    min-width:0;
  }

  .portal-menu{
    top:66px;
    right:12px;
    left:12px;
    min-width:0;
  }

  .portal-modal{
    width:90vw;
    max-height:calc(100vh - 12px);
    padding:16px 16px 20px;
    border-radius:22px;
  }

  .portal-modal__header{
    gap:12px;
  }

  .portal-modal__instructions{
    font-size:14px;
    line-height:1.6;
  }

  .portal-form-grid{
    grid-template-columns:1fr;
    gap:12px;
  }

  .field--full{
    grid-column:auto;
  }

  .portal-toast-stack{
    left:12px;
    right:12px;
    bottom:12px;
  }

  .portal-loading__spinner{
    width:64px;
    height:64px;
  }
}

/* App-wide UI normalization */
:root{
  --surface:#ffffff;
  --surface-soft:#f8fbff;
  --surface-gold:#fffaf0;
  --radius-card:22px;
  --radius-field:16px;
  --shadow-soft:0 18px 40px rgba(15,23,42,.08);
}

body{
  line-height:1.5;
}

.wrap{
  max-width:1360px;
  margin:22px auto;
  padding:0 18px 28px;
}

.card{
  border-radius:var(--radius-card);
  padding:22px;
  box-shadow:var(--shadow-soft);
}

.card__title{
  font-size:22px;
  line-height:1.15;
  margin-bottom:12px;
  color:#132238;
}

.muted{
  color:#5c6b7d;
  opacity:1;
}

.small{
  font-size:13px;
}

.actions{
  gap:12px;
  margin-top:14px;
}

.btn{
  min-height:52px;
  padding:13px 16px;
  border-radius:16px;
  font-size:15px;
  font-weight:900;
}

.filters{
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:16px;
  align-items:start;
  margin:18px 0 14px;
}

.field{
  gap:8px;
  min-width:0;
}

.field__label{
  font-size:12px;
  letter-spacing:.22px;
  text-transform:uppercase;
  color:#36506c;
}

.input,
.select,
.admin-task-review textarea{
  min-height:52px;
  height:auto;
  border-radius:var(--radius-field);
  border:1px solid rgba(0,113,188,.16);
  background:var(--surface);
  padding:14px 16px;
  font-size:16px;
  color:#132238;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7);
}

.input:focus,
.select:focus,
.admin-task-review textarea:focus{
  outline:none;
  border-color:rgba(0,113,188,.4);
  box-shadow:0 0 0 4px rgba(0,113,188,.08);
}

.textarea{
  min-height:150px;
}

.filter-actions{
  justify-content:flex-start;
  align-items:flex-end;
  gap:12px;
  padding-top:2px;
}

.filter-actions > .btn,
.filter-actions > .select,
.filter-actions > .input{
  min-width:170px;
}

.table-wrap{
  border-radius:20px;
  border:1px solid rgba(0,113,188,.12);
  background:#fff;
}

.table{
  min-width:960px;
}

.table th{
  padding:14px 14px;
  font-size:12px;
  letter-spacing:.28px;
  text-transform:uppercase;
  color:#35516d;
}

.table td{
  padding:14px 14px;
  font-size:14px;
  color:#223246;
}

.tool-launcher{
  grid-template-columns:repeat(auto-fit, minmax(210px, 1fr));
  gap:14px;
}

.tool-tile{
  min-height:142px;
  border-radius:22px;
  padding:18px;
}

.tool-panel{
  margin-top:18px;
}

.ec-card-nested,
.admin-section,
.skill-builder-list,
.skill-builder-editor,
.scanner-stage,
.scanner-summary-card,
.summaryCard{
  border-radius:20px;
  box-shadow:0 14px 30px rgba(15,23,42,.06);
}

.builder-grid,
.scanner-grid,
.records-grid,
.qr-admin-grid{
  align-items:start;
  gap:18px;
}

.records-grid{
  grid-template-columns:minmax(290px, .82fr) minmax(0, 1.45fr);
}

.skill-builder-shell{
  grid-template-columns:minmax(300px, .88fr) minmax(0, 1.3fr);
  gap:18px;
}

.skill-builder-list__head,
.skill-item__head{
  padding-bottom:12px;
  border-bottom:1px solid rgba(0,113,188,.08);
}

.skill-builder-list__body{
  max-height:520px;
}

.skill-step-tile{
  padding:14px;
  border-radius:18px;
}

.skill-step-tile__index{
  width:48px;
  height:48px;
  border-radius:16px;
}

.skill-step-tile__title{
  font-size:15px;
  line-height:1.3;
}

.skill-step-tile__meta{
  font-size:13px;
  line-height:1.45;
}

.skill-editor-grid{
  grid-template-columns:1fr;
  gap:16px;
}

.skill-editor-grid .field{
  max-width:100%;
}

.skill-item{
  padding:18px;
}

.skill-item__head{
  align-items:flex-start;
  margin-bottom:16px;
}

.qr-card-grid{
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:16px;
}

.qr-card{
  padding:16px;
  border-radius:20px;
}

.qr-card img{
  width:190px;
  height:190px;
}

.records-results,
.admin-doc-list,
.admin-task-list{
  gap:14px;
}

.record-result{
  padding:14px 16px;
  border-radius:18px;
}

.record-result__name{
  font-size:15px;
}

.record-result__meta{
  font-size:13px;
  line-height:1.45;
}

.admin-chip{
  min-height:48px;
  padding:12px 16px;
}

.admin-chip__value{
  font-size:15px;
}

.admin-kv{
  gap:12px;
}

.admin-kv__row{
  grid-template-columns:170px minmax(0, 1fr);
  gap:14px;
  font-size:15px;
}

.admin-doc-card,
.admin-task-card{
  padding:16px;
  border-radius:18px;
}

.admin-doc-card__title,
.admin-task-card__title,
.admin-section__title{
  font-size:17px;
}

.admin-doc-card__meta,
.admin-task-card__meta{
  font-size:14px;
  line-height:1.55;
}

.thumb-figure{
  max-width:260px;
}

.portal-panel,
.portal-hero--student{
  border-radius:24px;
  padding:22px;
}

.portal-summary{
  gap:12px;
}

.portal-chip{
  min-height:54px;
  padding:12px 18px;
}

.portal-chip__value{
  font-size:15px;
}

.portal-task-list__head,
.portal-task-row{
  grid-template-columns:minmax(0, 1.9fr) 150px 160px 130px;
  gap:18px;
}

.portal-task-list__head{
  padding:16px 20px;
}

.portal-task-row{
  padding:18px 20px;
}

.portal-task-row__title{
  font-size:17px;
  line-height:1.25;
}

.portal-task-row__helper,
.portal-task-row__status,
.portal-task-row__meta{
  font-size:14px;
  line-height:1.5;
}

.portal-open-btn{
  min-width:126px;
}

.portal-modal{
  width:min(1440px, 90vw);
  padding:26px 26px 30px;
}

.portal-modal__instructions{
  font-size:15px;
  line-height:1.8;
}

.portal-form-grid{
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:16px;
}

.portal-topbar{
  box-shadow:0 10px 28px rgba(0,0,0,.08);
}

@media (max-width: 1100px){
  .records-grid,
  .skill-builder-shell,
  .qr-admin-grid{
    grid-template-columns:1fr;
  }
}

@media (max-width: 900px){
  .wrap{
    padding:0 14px 24px;
  }

  .card{
    padding:18px;
    border-radius:20px;
  }

  .card__title{
    font-size:20px;
  }

  .filters{
    grid-template-columns:1fr;
    gap:14px;
  }

  .filter-actions{
    justify-content:stretch;
  }

  .filter-actions > .btn,
  .filter-actions > .select,
  .filter-actions > .input{
    width:100%;
    min-width:0;
  }

  .grid,
  .builder-grid,
  .scanner-grid{
    grid-template-columns:1fr;
  }

  .table{
    min-width:760px;
  }

  .admin-kv__row{
    grid-template-columns:1fr;
    gap:4px;
  }
}

@media (max-width: 640px){
  .wrap{
    margin:12px auto;
    padding:0 12px 20px;
  }

  .topbar{
    padding:12px;
    align-items:flex-start;
  }

  .nav{
    width:100%;
  }

  .nav__btn{
    flex:1 1 calc(50% - 8px);
    min-height:46px;
  }

  .card{
    padding:16px;
  }

  .btn{
    width:100%;
  }

  .actions{
    flex-direction:column;
  }

  .portal-chip{
    width:100%;
    justify-content:space-between;
  }
}

/* Final portal toast overrides to ensure they stay above the modal and keep academy branding */
.portal-toast-stack{
  left:50%;
  right:auto;
  top:20px;
  bottom:auto;
  transform:translateX(-50%);
  z-index:90;
  width:min(560px, calc(100vw - 24px));
  max-width:none;
}

.portal-toast{
  border:2px solid var(--blue);
  background:linear-gradient(180deg, #fff4b8 0%, #ffea73 100%);
  box-shadow:0 22px 44px rgba(0,113,188,.22);
  color:var(--blue);
  padding:16px 18px;
}

.portal-toast--success,
.portal-toast--error,
.portal-toast--warning{
  border-color:var(--blue);
}

.portal-toast__body{
  font-weight:900;
  line-height:1.5;
  color:var(--blue);
}

.portal-toast__actions{
  justify-content:center;
}

.portal-toast .btn--secondary{
  background:#ffffff;
  border-color:var(--blue);
  color:var(--blue);
}

.portal-toast .btn--primary{
  background:var(--blue);
  border-color:var(--blue);
  color:#fff;
}

@media (max-width: 640px){
  .portal-toast-stack{
    top:12px;
    width:calc(100vw - 24px);
  }
}

/* Final task button override */
.portal-task-row__action{
  display:block;
}

.portal-task-list{
  container-type:inline-size;
}

.portal-task-row__content,
.portal-task-row__status,
.portal-task-row__meta,
.portal-task-row__action{
  min-width:0;
}

.portal-task-row__title,
.portal-task-row__helper,
.portal-task-row__meta-value,
.portal-task-row__check,
.portal-open-btn{
  overflow-wrap:break-word;
  word-break:normal;
}

.portal-task-row__title,
.portal-task-row__helper{
  white-space:normal;
}

.portal-open-btn{
  display:flex;
  width:100%;
  min-width:0;
  max-width:100%;
  padding:12px 18px;
  border-radius:16px;
  line-height:1.2;
  box-shadow:none;
  justify-content:center;
  margin:0;
  appearance:none;
}

@media (max-width: 900px){
  .portal-task-list__head{
    display:none;
  }

  .portal-task-row{
    grid-template-columns:minmax(0, 1fr);
    align-items:stretch;
  }

  .portal-task-row__content,
  .portal-task-row__status,
  .portal-task-row__meta,
  .portal-task-row__action{
    grid-column:1 / -1;
    width:100%;
  }

  .portal-task-row__action{
    display:block;
  }

  .portal-open-btn{
    width:100%;
    min-width:0;
  }
}

@container (max-width: 640px){
  .portal-task-list__head{
    display:none;
  }

  .portal-task-row{
    grid-template-columns:minmax(0, 1fr);
    align-items:stretch;
  }

  .portal-task-row__content,
  .portal-task-row__status,
  .portal-task-row__meta,
  .portal-task-row__action{
    grid-column:1 / -1;
    width:100%;
  }

  .portal-task-row__action{
    display:block;
    text-align:left;
  }

  .portal-open-btn{
    width:100%;
    min-width:0;
  }
}

@media (max-width: 520px){
  .portal-task-row{
    gap:10px;
  }

  .portal-task-row__status,
  .portal-task-row__meta{
    align-items:flex-start;
    gap:6px;
  }

  .portal-task-row__check{
    max-width:100%;
  }
}

/* Student home modules */
.portal-module-shell{
  display:grid;
  gap:16px;
}

.portal-module-toolbar{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.portal-module-list{
  display:grid;
  gap:12px;
}

.portal-module-list--exams{
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
}

.portal-module-card{
  border:1px solid rgba(0,113,188,.12);
  border-radius:22px;
  padding:18px;
  background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(245,250,255,.94));
  box-shadow:0 18px 36px rgba(19,61,97,.08);
}

.portal-module-card--exam.is-available{
  border-color:rgba(255,199,0,.8);
  box-shadow:0 18px 36px rgba(255,199,0,.18);
}

.portal-module-card__eyebrow,
.portal-exam-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(0,113,188,.09);
  color:var(--blue);
  font-size:11px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:10px;
}

.portal-module-card__title{
  font-size:19px;
  font-weight:800;
  color:#163b5c;
}

.portal-module-card__meta,
.portal-module-card__copy,
.portal-module-card__status{
  margin-top:8px;
  color:#53708c;
  line-height:1.5;
}

.portal-module-card__action{
  margin-top:14px;
  width:auto;
  align-self:flex-start;
}

.portal-module-card__complete{
  margin-top:14px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:40px;
  padding:0 14px;
  border-radius:999px;
  border:1px solid rgba(31,161,98,.26);
  background:#eefbf3;
  color:#14643f;
  font-weight:800;
  align-self:flex-start;
}

.portal-module-card__complete-icon{
  width:22px;
  height:22px;
  border-radius:999px;
  display:inline-grid;
  place-items:center;
  background:#1fa162;
  color:#fff;
  font-size:13px;
  line-height:1;
}

.portal-external-shell{
  display:grid;
  gap:14px;
}

.portal-external-shell__frame-wrap{
  position:relative;
  min-height:72vh;
  border-radius:24px;
  overflow:hidden;
  border:1px solid rgba(0,113,188,.12);
  background:
    radial-gradient(circle at top left, rgba(255,216,77,.32), transparent 35%),
    linear-gradient(180deg, rgba(245,249,255,.98), rgba(255,255,255,.98));
  box-shadow:0 20px 44px rgba(19,61,97,.12);
}

.portal-external-shell__frame{
  display:block;
  width:100%;
  min-height:72vh;
  border:0;
  background:#fff;
}

.portal-empty-state{
  padding:20px;
  border-radius:18px;
  background:rgba(0,113,188,.06);
  color:#4f6e8b;
}

.portal-calendar{
  border:1px solid rgba(0,113,188,.12);
  border-radius:24px;
  padding:16px;
  background:#fff;
}

.portal-calendar__toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}

.portal-calendar__month{
  font-size:18px;
  font-weight:800;
  color:#163b5c;
  margin-bottom:0;
  text-align:center;
}

.portal-calendar__grid{
  display:grid;
  grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:8px;
}

.portal-calendar__weekday{
  font-size:12px;
  font-weight:800;
  color:#5f7b95;
  text-transform:uppercase;
  letter-spacing:.06em;
  padding:4px 6px;
}

.portal-calendar__cell{
  min-height:92px;
  border-radius:18px;
  background:rgba(245,249,255,.92);
  padding:10px;
  border:1px solid rgba(0,113,188,.08);
}

.portal-calendar__cell.is-muted{
  opacity:.45;
}

.portal-calendar__cell.is-today{
  border-color:rgba(255,199,0,.95);
  box-shadow:0 0 0 2px rgba(255,199,0,.2) inset;
}

.portal-calendar__day{
  font-size:13px;
  font-weight:800;
  color:#173d60;
  margin-bottom:8px;
}

.portal-calendar__pill,
.portal-calendar__more{
  font-size:11px;
  line-height:1.35;
  padding:5px 7px;
  border-radius:999px;
  background:var(--blue);
  color:#ffd84d;
  margin-top:5px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-weight:800;
}

.portal-calendar__pill{
  display:block;
  width:100%;
  border:0;
  cursor:pointer;
  text-align:left;
}

.portal-calendar__pill.is-selected{
  box-shadow:0 0 0 2px rgba(255,216,77,.35) inset;
}

.portal-module-card--selected{
  border-color:rgba(0,113,188,.22);
  box-shadow:0 20px 44px rgba(14,49,76,.08);
}

.portal-stat-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));
  gap:12px;
}

.portal-stat-card{
  border-radius:20px;
  padding:16px;
  background:linear-gradient(180deg, rgba(255,255,255,.97), rgba(255,248,221,.94));
  border:1px solid rgba(0,113,188,.1);
}

.portal-stat-card__label{
  display:block;
  font-size:12px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:#5f7b95;
}

.portal-stat-card__value{
  display:block;
  margin-top:8px;
  font-size:30px;
  font-weight:900;
  color:#153d61;
}

.portal-gradebook-table{
  display:grid;
  grid-template-columns:minmax(0, 2fr) 1fr 1fr 1fr;
  gap:1px;
  border-radius:24px;
  overflow:hidden;
  background:rgba(0,113,188,.1);
}

.portal-gradebook-table__head,
.portal-gradebook-table__cell{
  background:#fff;
  padding:14px 16px;
}

.portal-gradebook-table__head{
  font-size:12px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:#55728d;
}

.portal-gradebook-table__title{
  font-weight:800;
  color:#163b5c;
}

.portal-manual-shell{
  display:grid;
  grid-template-columns:minmax(250px, 300px) minmax(0, 1fr);
  gap:20px;
  align-items:stretch;
}

.portal-manual-controls{
  display:flex;
  flex-wrap:wrap;
  align-items:end;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
}

.portal-manual-controls__search{
  flex:1 1 320px;
}

.portal-manual-controls__status{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.portal-manual-controls__actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.portal-manual-search-panel{
  display:grid;
  gap:16px;
  margin:0 0 18px;
  padding:18px 20px;
  border-radius:26px;
  background:
    radial-gradient(circle at top right, rgba(248,221,0,.14), transparent 34%),
    linear-gradient(180deg, rgba(245,250,255,.98), rgba(255,255,255,.98));
  border:1px solid rgba(0,113,188,.12);
  box-shadow:0 18px 34px rgba(19,61,97,.08);
}

.portal-manual-search-panel__header{
  display:flex;
  align-items:start;
  justify-content:space-between;
  gap:12px;
}

.portal-manual-search-panel__eyebrow{
  font-size:11px;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#6a8298;
}

.portal-manual-search-panel__title{
  margin-top:4px;
  font-size:24px;
  line-height:1.1;
  font-weight:900;
  color:#143857;
}

.portal-manual-search-panel__meta{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:0 14px;
  border-radius:999px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(0,113,188,.12);
  color:#1b517d;
  font-size:12px;
  font-weight:800;
  text-align:center;
}

.portal-manual-search-panel__answer{
  padding:16px 18px;
  border-radius:20px;
  background:linear-gradient(135deg, rgba(255,255,255,.96), rgba(245,250,255,.96));
  border:1px solid rgba(0,113,188,.1);
  color:#143857;
  font-size:15px;
  line-height:1.65;
  font-weight:700;
}

.portal-manual-search-panel__results{
  display:grid;
  gap:12px;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
}

.portal-manual-search-panel__loading{
  padding:18px;
  border-radius:18px;
  background:rgba(255,255,255,.82);
  border:1px dashed rgba(0,113,188,.16);
  color:#486983;
  font-weight:700;
  text-align:center;
}

.portal-manual-search-card{
  display:grid;
  gap:10px;
  align-content:start;
  padding:16px 16px 18px;
  border-radius:22px;
  background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(247,251,255,.98));
  border:1px solid rgba(0,113,188,.1);
  box-shadow:0 14px 26px rgba(19,61,97,.06);
}

.portal-manual-search-card__topline{
  font-size:11px;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#6b859d;
}

.portal-manual-search-card__title{
  color:#143857;
  font-size:17px;
  line-height:1.3;
  font-weight:900;
}

.portal-manual-search-card__reason{
  margin:0;
  color:#1b517d;
  font-size:13px;
  line-height:1.5;
  font-weight:700;
}

.portal-manual-search-card__excerpt{
  margin:0;
  color:#52718a;
  font-size:14px;
  line-height:1.6;
}

.portal-manual-pill{
  display:inline-flex;
  align-items:center;
  min-height:42px;
  padding:0 14px;
  border-radius:999px;
  background:rgba(247,251,255,.96);
  border:1px solid rgba(0,113,188,.12);
  color:#18476f;
  font-size:13px;
  font-weight:800;
  letter-spacing:.02em;
}

.portal-manual-pill--accent{
  background:linear-gradient(135deg, rgba(0,113,188,.12), rgba(248,221,0,.18));
}

.portal-manual-toc{
  position:sticky;
  top:0;
  align-self:stretch;
  display:grid;
  grid-template-rows:auto minmax(0, 1fr) auto;
  gap:10px;
  padding:18px;
  border-radius:28px;
  background:
    radial-gradient(circle at top right, rgba(248,221,0,.18), transparent 38%),
    linear-gradient(180deg, rgba(247,251,255,.98), rgba(239,247,255,.96));
  border:1px solid rgba(0,113,188,.1);
  box-shadow:0 18px 36px rgba(19,61,97,.08);
  height:calc(100vh - 240px);
  min-height:100%;
  max-height:calc(100vh - 240px);
  overflow:hidden;
}

.portal-manual-toc__header{
  display:grid;
  gap:6px;
  padding-bottom:10px;
  border-bottom:1px solid rgba(0,113,188,.1);
  margin-bottom:2px;
}

.portal-manual-toc__eyebrow{
  font-size:11px;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#6a8298;
}

.portal-manual-toc__title{
  font-size:24px;
  line-height:1.1;
  font-weight:900;
  color:#143857;
}

.portal-manual-toc__note{
  color:#56718a;
  font-size:13px;
  line-height:1.45;
}

.portal-manual-toc__link{
  display:grid;
  gap:4px;
  padding:10px 12px;
  border-radius:16px;
  color:#18476f;
  text-decoration:none;
  font-weight:700;
  transition:background .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease;
}

.portal-manual-toc__name{
  display:block;
  color:#123b5d;
  font-size:16px;
  line-height:1.3;
  font-weight:900;
  text-wrap:balance;
}

.portal-manual-toc__link:hover,
.portal-manual-toc__link:focus-visible{
  background:rgba(255,255,255,.78);
  box-shadow:inset 0 0 0 1px rgba(0,113,188,.08);
  transform:translateX(1px);
  outline:none;
}

.portal-manual-toc__chapter{
  font-size:11px;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#6b859d;
}

.portal-manual-toc__link.is-active{
  color:#0f3350;
  background:linear-gradient(135deg, rgba(255,255,255,.94), rgba(240,247,255,.94));
  box-shadow:inset 0 0 0 1px rgba(0,113,188,.14), 0 10px 20px rgba(19,61,97,.08);
}

.portal-manual-toc__list{
  display:grid;
  grid-auto-rows:max-content;
  align-content:start;
  align-items:start;
  gap:10px;
  overflow:auto;
  padding-right:4px;
}

.portal-manual-toc__group{
  display:grid;
  gap:7px;
  align-content:start;
}

.portal-manual-toc__card{
  display:grid;
  gap:10px;
  align-content:start;
  padding:10px;
  border-radius:20px;
  background:rgba(255,255,255,.62);
  border:1px solid rgba(0,113,188,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}

.portal-manual-toc__group.is-active .portal-manual-toc__card{
  background:linear-gradient(180deg, rgba(255,255,255,.96), rgba(241,248,255,.94));
  border-color:rgba(0,113,188,.16);
  box-shadow:0 12px 22px rgba(19,61,97,.08), inset 0 1px 0 rgba(255,255,255,.7);
}

.portal-manual-toc__sublist{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  padding:0 2px 2px;
}

.portal-manual-toc__sublink{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(232,241,250,.9);
  border:1px solid rgba(0,113,188,.12);
  color:#3f6381;
  text-decoration:none;
  font-size:12px;
  line-height:1.25;
  font-weight:700;
  transition:color .18s ease, transform .18s ease, background .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.portal-manual-toc__sublink:hover,
.portal-manual-toc__sublink:focus-visible,
.portal-manual-toc__sublink.is-active{
  color:#0f4f80;
  background:rgba(255,255,255,.98);
  border-color:rgba(0,113,188,.22);
  box-shadow:0 8px 14px rgba(19,61,97,.08);
  transform:translateY(-1px);
  outline:none;
}

.portal-manual-toc__footer{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:10px;
  padding-top:12px;
  border-top:1px solid rgba(0,113,188,.1);
  background:linear-gradient(180deg, rgba(247,251,255,.15), rgba(247,251,255,.85));
  position:sticky;
  bottom:0;
  z-index:2;
}

.portal-manual-toc__footer .btn{
  min-width:0;
  white-space:normal;
  padding:12px 10px;
  line-height:1.25;
  text-align:center;
}

.portal-manual-book{
  display:grid;
  gap:18px;
}

.portal-manual-section{
  position:relative;
  border-radius:28px;
  padding:26px 28px 28px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.98), rgba(252,253,255,.98)),
    #fff;
  border:1px solid rgba(0,113,188,.1);
  box-shadow:0 20px 40px rgba(19,61,97,.08);
}

.portal-manual-section.is-active{
  box-shadow:0 24px 44px rgba(0,113,188,.12);
  border-color:rgba(0,113,188,.2);
}

.portal-manual-section::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:6px;
  border-radius:28px 0 0 28px;
  background:linear-gradient(180deg, #0071bc, #f8dd00);
}

.portal-manual-section__chapter{
  margin-bottom:10px;
  padding-left:2px;
  font-size:11px;
  font-weight:900;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#688199;
}

.portal-manual-section__title{
  font-size:29px;
  line-height:1.1;
  font-weight:900;
  color:#153d61;
  margin-bottom:10px;
}

.portal-manual-section__summary{
  margin:0 0 18px;
  max-width:68ch;
  color:#506b84;
  font-size:16px;
  line-height:1.65;
}

.portal-manual-section__body{
  color:#425e77;
  font-family:Charter, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, serif;
  font-size:17px;
  line-height:1.8;
}

.portal-manual-section__body p{
  margin:0 0 1em;
}

.portal-manual-section__body h3,
.portal-manual-section__body h4{
  color:#173d60;
  font-family:"Avenir Next", "Segoe UI", sans-serif;
  line-height:1.25;
}

.portal-manual-section__body h3{
  margin:28px 0 12px;
  font-size:22px;
}

.portal-manual-section__body h4{
  margin:22px 0 10px;
  font-size:17px;
}

.portal-manual-section__body ul{
  margin:10px 0 14px 20px;
  padding:0;
}

.portal-manual-list{
  margin:10px 0 14px 0;
  padding-left:1.2rem;
}

.portal-manual-list__item{
  margin:8px 0;
  padding-left:.2rem;
}

.portal-manual-list--level-1{
  padding-left:1.4rem;
}

.portal-manual-list--level-2{
  padding-left:1.6rem;
}

.portal-manual-list--level-3,
.portal-manual-list--level-4{
  padding-left:1.8rem;
}

.portal-manual-list__item--level-1{
  margin-left:0;
}

.portal-manual-list__item--level-2{
  margin-left:0;
}

.portal-manual-list__item--level-3,
.portal-manual-list__item--level-4{
  margin-left:0;
}

.portal-manual-section__body li{
  margin:6px 0;
}

.portal-manual-list--format-decimal{
  list-style-type:decimal;
}

.portal-manual-list--format-lowerletter{
  list-style-type:lower-alpha;
}

.portal-manual-list--format-upperletter{
  list-style-type:upper-alpha;
}

.portal-manual-list--format-lowerroman{
  list-style-type:lower-roman;
}

.portal-manual-list--format-upperroman{
  list-style-type:upper-roman;
}

.portal-manual-list--format-bullet{
  list-style-type:disc;
}

.portal-manual-list--format-none{
  list-style-type:disc;
}

.portal-manual-list .portal-manual-list{
  margin-top:8px;
  margin-bottom:8px;
}

.portal-manual-list__item::marker{
  color:#4c6b87;
  font-weight:800;
}

.portal-manual-content-card{
  margin:14px 0 18px;
  padding:16px 18px;
  border-radius:20px;
  border:1px solid rgba(0,113,188,.12);
  box-shadow:0 14px 28px rgba(19,61,97,.06);
  background:linear-gradient(180deg, rgba(255,255,255,.98), rgba(247,251,255,.95));
}

.portal-manual-content-card__title{
  margin:0 0 10px;
  font-family:"Avenir Next", "Segoe UI", sans-serif;
  font-size:12px;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
}

.portal-manual-content-card--statement{
  background:linear-gradient(180deg, rgba(255,246,204,.92), rgba(255,252,239,.96));
  border-color:rgba(228,184,32,.3);
}

.portal-manual-content-card--statement .portal-manual-content-card__title{
  color:#8d6400;
}

.portal-manual-content-card--policy{
  background:linear-gradient(180deg, rgba(236,246,255,.96), rgba(247,251,255,.98));
  border-color:rgba(0,113,188,.18);
}

.portal-manual-content-card--policy .portal-manual-content-card__title{
  color:#0f4f80;
}

.portal-manual-content-card--procedure{
  background:linear-gradient(180deg, rgba(238,251,247,.96), rgba(248,253,251,.98));
  border-color:rgba(23,140,112,.18);
}

.portal-manual-content-card--procedure .portal-manual-content-card__title{
  color:#15735b;
}

.portal-manual-content-card--purpose,
.portal-manual-content-card--notes,
.portal-manual-content-card--objectives{
  background:linear-gradient(180deg, rgba(244,246,255,.96), rgba(250,251,255,.98));
  border-color:rgba(78,98,168,.16);
}

.portal-manual-content-card--purpose .portal-manual-content-card__title,
.portal-manual-content-card--notes .portal-manual-content-card__title,
.portal-manual-content-card--objectives .portal-manual-content-card__title{
  color:#4b5fa6;
}

.portal-manual-content-card p:last-child,
.portal-manual-content-card ul:last-child,
.portal-manual-content-card ol:last-child{
  margin-bottom:0;
}

.portal-manual-callout{
  margin:16px 0;
  padding:14px 16px;
  border-radius:18px;
  background:linear-gradient(135deg, rgba(255,216,77,.2), rgba(255,255,255,.9));
  border:1px solid rgba(0,113,188,.14);
  color:#173d60;
  font-weight:700;
}

.portal-manual-caption{
  display:inline-flex;
  align-items:center;
  margin:8px 0 12px;
  padding:7px 12px;
  border-radius:999px;
  background:rgba(15,79,128,.08);
  border:1px solid rgba(0,113,188,.12);
  color:#5f7b95;
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.portal-manual-signature-line{
  width:min(100%, 340px);
  height:1px;
  margin:16px 0 10px;
  background:linear-gradient(90deg, rgba(20,56,87,.55), rgba(20,56,87,.18));
}

.portal-manual-table-wrap{
  overflow:auto;
  border-radius:22px;
  border:1px solid rgba(0,113,188,.12);
  background:#fff;
  box-shadow:0 16px 28px rgba(19,61,97,.06);
}

.portal-manual-table{
  width:100%;
  border-collapse:collapse;
}

.portal-manual-table th,
.portal-manual-table td{
  padding:12px 14px;
  border-bottom:1px solid rgba(0,113,188,.08);
  text-align:left;
  vertical-align:top;
}

.portal-manual-table th{
  background:#f1f7ff;
  color:#173d60;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.portal-manual-table__link{
  color:#0f4f80;
  font-weight:700;
  text-decoration:none;
}

.portal-manual-table__link:hover,
.portal-manual-table__link:focus-visible{
  text-decoration:underline;
  outline:none;
}

.portal-manual-inline-link{
  color:#0f4f80;
  font-weight:700;
  text-decoration:none;
}

.portal-manual-inline-link:hover,
.portal-manual-inline-link:focus-visible{
  text-decoration:underline;
  outline:none;
}

.portal-manual-figure{
  margin:18px 0;
  border-radius:24px;
  overflow:hidden;
  background:#fff;
  border:1px solid rgba(0,113,188,.1);
  box-shadow:0 16px 32px rgba(19,61,97,.08);
}

.portal-manual-figure__img{
  display:block;
  width:100%;
  height:auto;
}

@media (max-width: 900px){
  .portal-calendar__grid,
  .portal-gradebook-table{
    grid-template-columns:1fr;
  }

  .portal-manual-search-panel__header{
    grid-template-columns:1fr;
    display:grid;
  }

  .portal-manual-search-panel__meta{
    justify-self:start;
  }

  .portal-manual-controls{
    align-items:stretch;
  }

  .portal-manual-controls__status{
    width:100%;
  }

  .portal-manual-controls__actions{
    width:100%;
  }

  .portal-manual-shell{
    grid-template-columns:1fr;
  }

  .portal-manual-toc{
    position:static;
    max-height:none;
  }

  .portal-manual-toc__footer{
    grid-template-columns:1fr;
  }

  .portal-manual-table thead{
    display:none;
  }

  .portal-manual-table,
  .portal-manual-table tbody,
  .portal-manual-table tr,
  .portal-manual-table td{
    display:block;
    width:100%;
  }

  .portal-manual-table tr{
    padding:10px 12px;
    border-bottom:1px solid rgba(0,113,188,.08);
  }

  .portal-manual-table td{
    border:none;
    padding:8px 0;
  }

  .portal-manual-table td::before{
    content:attr(data-label);
    display:block;
    margin-bottom:4px;
    color:#688199;
    font-size:11px;
    font-weight:900;
    letter-spacing:.12em;
    text-transform:uppercase;
  }
}
