/* ==========================================================================
   PVL Portal — stylesheet
   Brand: navy + orange (unchanged). Tuned for crisp rendering on desktop,
   Android and iOS Safari (safe areas, 16px inputs, dvh, no zoom-on-focus).
   ========================================================================== */
:root{
  --navy:#042c53;--navy-2:#0d4377;--orange:#f89a20;--orange-dark:#e08609;
  --bg:#f1f4f8;--col:#e8eef2;--card:#fff;--text:#0f2540;--muted:#64768d;--border:#e0e7ef;
  --green:#1e8a55;--red:#d9534f;--gold:var(--orange);--blue:var(--navy-2);
  --font:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'SF Pro Text','Segoe UI',system-ui,Arial,sans-serif;
  --sb:224px;--sb-collapsed:80px;
  --r-sm:12px;--r-md:16px;--r-lg:24px;--r-pill:999px;
  --shadow-card:0 1px 2px rgba(4,44,83,.04),0 8px 28px rgba(4,44,83,.06);
  --shadow-pop:0 16px 48px rgba(4,44,83,.18),0 2px 6px rgba(4,44,83,.08);
  --sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);
  --sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;background:var(--bg);color:var(--text);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;
  overscroll-behavior-y:none}
body.nav-open,body.modal-open{overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit;margin:0}
button{cursor:pointer;border:0;padding:0;background:none;-webkit-appearance:none;appearance:none;touch-action:manipulation;border-radius:0}
a{color:var(--navy-2)}
h1,h2,h3{letter-spacing:-.01em;line-height:1.25}
img{max-width:100%}
svg{display:block}
:focus{outline:none}
:focus-visible{outline:2px solid var(--navy-2);outline-offset:2px}
.sidebar :focus-visible{outline-color:var(--orange)}
::selection{background:rgba(248,154,32,.28)}

/* ---------- layout ---------- */
.shell{min-height:100vh;min-height:100dvh;display:flex}
.sidebar{width:var(--sb);background:var(--navy);color:#fff;padding:20px 14px 14px;position:fixed;top:0;left:0;bottom:0;display:flex;flex-direction:column;z-index:40;
  transition:width .2s ease,transform .25s ease}
.brand{padding:2px 6px 14px}
.brand img{display:block;width:152px;max-width:100%;height:auto}
.brand-mark{display:none;width:44px;height:44px;margin:0 auto;background:url(/pvl-logo-light.png) no-repeat;background-size:264px auto;background-position:-17px 3px}
.brand small{display:block;margin-top:6px;color:var(--orange);font-size:12px;font-weight:600}
.nav{padding-top:8px;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav button{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:42px;text-align:left;padding:0 12px;background:transparent;color:#cfdcec;border-radius:var(--r-md);margin:2px 0;font-size:14px;font-weight:500;transition:background .15s,color .15s}
.nav button.active{background:var(--navy-2);color:#fff;font-weight:600}
.nav button.active::before{content:"";position:absolute;left:-14px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--orange)}
.nav button.active .nav-icon{color:var(--orange)}
.nav-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center;flex:none}
.nav-icon svg,.notif-btn svg,.icon-btn svg,.collapse-nav svg,.close svg,.cal-nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.nav-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1}
.collapse-nav{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:0 10px;margin:0 0 6px;border:1px solid rgba(255,255,255,.14);border-radius:var(--r-md);background:rgba(255,255,255,.04);color:#cfdcec;font-weight:600;transition:background .15s}
.collapse-nav svg{width:18px;height:18px;transition:transform .2s}
.collapse-nav b{font-size:12.5px;font-weight:600;line-height:1}
.side-foot{border-top:1px solid rgba(255,255,255,.14);padding:14px 6px calc(2px + var(--sab));font-size:13px}
.side-foot b{display:block;color:#fff;font-weight:700;overflow-wrap:anywhere;line-height:1.3}
.side-foot span{display:block;color:var(--orange);margin-top:3px;text-transform:capitalize;font-size:12.5px}
.side-foot button{color:var(--orange);padding:6px 0;margin-top:6px;font-weight:600;min-height:32px}
.nav-backdrop{display:none}

.main{margin-left:var(--sb);width:calc(100% - var(--sb));min-width:0;padding:0 28px 32px;transition:margin-left .2s ease,width .2s ease}
.top{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:12px;
  margin:0 -28px 22px;padding:16px 28px;background:rgba(241,244,248,.88);
  -webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid transparent}
.top>div:first-child{display:flex;align-items:center;gap:12px;min-width:0}
.top h1{margin:0;font-size:24px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions{display:flex;align-items:center;gap:14px;flex:none}
.user{display:flex;align-items:center;gap:10px;color:var(--muted);font-weight:600;min-width:0}
.user span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--orange);color:var(--navy);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex:none;box-shadow:0 0 0 3px rgba(248,154,32,.2)}
.icon-btn,.notif-btn{position:relative;width:40px;height:40px;border-radius:var(--r-md);background:#fff;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--navy);flex:none;box-shadow:0 1px 2px rgba(4,44,83,.04)}
.mobile-menu{display:none}

/* ---------- surfaces ---------- */
.grid{display:grid;gap:16px}
.stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.two{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;box-shadow:var(--shadow-card);min-width:0}
.three>.card{border-left:3px solid var(--orange);display:flex;flex-direction:column;align-items:flex-start}
.three>.card h3{margin:12px 0 6px;font-size:15px;font-weight:700}
.three>.card p{margin:4px 0}
.three>.card .btn{margin-top:auto}
.stat small{display:block;color:var(--muted);font-weight:600;font-size:12.5px}
.stat strong{display:block;font-size:30px;line-height:1.1;font-weight:800;margin-top:8px;color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.section-title{display:flex;justify-content:space-between;align-items:center;margin:26px 0 12px;gap:10px;flex-wrap:wrap}
.section-title h2{font-size:17px;font-weight:700;margin:0}
.section-title p{margin:2px 0 0}
.card>.section-title:first-child{margin-top:0}
.empty{padding:36px 16px;text-align:center;color:var(--muted)}
td.empty{padding:36px 16px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:0 16px;border-radius:var(--r-md);background:var(--orange);color:var(--navy);font-weight:700;font-size:13.5px;line-height:1.1;white-space:nowrap;text-align:center;text-decoration:none;
  box-shadow:0 1px 2px rgba(224,134,9,.35);transition:background .15s,box-shadow .15s,transform .05s}
.btn:active{transform:translateY(1px)}
.btn.secondary{background:#fff;color:var(--text);border:1px solid var(--border);font-weight:600;box-shadow:0 1px 2px rgba(4,44,83,.04)}
.btn.gold{background:var(--orange)}
.btn.danger{background:#fff0ef;color:var(--red);box-shadow:none}
.btn.small{min-height:32px;padding:0 12px;font-size:12.5px;border-radius:var(--r-sm)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
a.btn{display:inline-flex}
.link-btn{background:none;color:var(--navy-2);font-size:12.5px;font-weight:700;padding:6px 0}
.close,.cal-nav{display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--col);color:var(--text);flex:none}
.close{width:34px;height:34px}
.close svg{width:18px;height:18px}
.cal-nav{width:38px;height:38px;border-radius:var(--r-md);background:#fff;border:1px solid var(--border)}
@media (hover:hover){
  .nav button:hover{background:rgba(255,255,255,.08);color:#fff}
  .nav button.active:hover{background:var(--navy-2)}
  .collapse-nav:hover{background:rgba(255,255,255,.09)}
  .btn:hover{background:var(--orange-dark)}
  .btn.secondary:hover,.cal-nav:hover,.icon-btn:hover,.notif-btn:hover{background:#f5f8fb}
  .btn.danger:hover{background:#fde3e1}
  .close:hover{background:#dbe4ea}
  .link-btn:hover{text-decoration:underline}
  .tabs button:hover{color:var(--text)}
  .check:hover{background:#f6f8fb}
  .table tbody tr:hover td{background:#fafcfe}
}

/* ---------- tables & chips ---------- */
.table-wrap{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:0 4px}
.table{width:100%;border-collapse:separate;border-spacing:0}
.table th,.table td{padding:13px 12px;border-bottom:1px solid var(--border);font-size:13px;text-align:left;white-space:nowrap;vertical-align:middle}
.table th{color:var(--muted);font-weight:700;font-size:12.5px;background:#f8fafc;border-top:1px solid var(--border)}
.table th:first-child{border-left:1px solid var(--border);border-top-left-radius:var(--r-sm)}
.table th:last-child{border-right:1px solid var(--border);border-top-right-radius:var(--r-sm)}
.table tbody tr:last-child td{border-bottom:0}
.table small{color:var(--muted)}
.pill{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.5;background:var(--col);color:#44566e;white-space:nowrap}
.pill.red{background:#fdecea;color:var(--red)}
.pill.grey{background:var(--col);color:var(--muted)}
.pill.green,.pill.ok{background:#e3f4ea;color:var(--green)}
.pill.orange{background:#fdf0dc;color:#a8620a}
.bar{height:8px;background:var(--col);border-radius:20px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--orange);border-radius:20px}
.row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}

/* ---------- forms ---------- */
.field{margin:12px 0;min-width:0}
.field label{display:block;font-size:12.5px;color:var(--text);font-weight:600;margin-bottom:6px}
.field input,.field select,.field textarea{display:block;width:100%;max-width:100%;min-width:0;min-height:42px;padding:10px 12px;border:1px solid #d3dce7;border-radius:var(--r-md);background-color:#fff;
  -webkit-appearance:none;appearance:none;transition:border-color .15s,box-shadow .15s}
.field input:focus,.field select:focus,.field textarea:focus,.copy-row input:focus{border-color:var(--navy-2);box-shadow:0 0 0 3px rgba(13,67,119,.14)}
.field select{padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%2364768d' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 8 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:16px;text-overflow:ellipsis}
.field select[multiple]{background-image:none;padding:6px}
.field select[multiple] option{padding:6px 8px;border-radius:6px}
.field textarea{min-height:104px;resize:vertical;line-height:1.5}
.field input[type=date],.field input[type=datetime-local],.field input[type=time]{text-align:left;line-height:1.3}
.field input::-webkit-date-and-time-value{text-align:left;min-height:1.3em}
.field input[type=hidden]{display:none}
.field input[type=file]{padding:8px 10px;min-height:44px;font-size:13px;background:#f8fafc}
.field input[type=file]::file-selector-button,.field input[type=file]::-webkit-file-upload-button{margin-right:12px;padding:6px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:#fff;font:inherit;font-weight:600;font-size:12.5px;color:var(--text)}
.field input::placeholder,.field textarea::placeholder{color:#9aa8ba}
.field label.check{display:flex;margin:0;font-weight:inherit}
.field .check input{width:18px;height:18px;min-height:0;padding:0;border:0;box-shadow:none;-webkit-appearance:checkbox;appearance:auto}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.check-list{display:flex;flex-direction:column;gap:2px}
.check{display:flex;gap:10px;align-items:flex-start;padding:10px;border-radius:var(--r-sm);cursor:pointer}
.check input{margin:2px 0 0;width:18px;height:18px;accent-color:var(--navy-2);flex:none}
.check b{display:block;font-weight:600;font-size:13.5px}
.check small{display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:1px}
.copy-row{display:flex;gap:8px;align-items:center}
.copy-row input{flex:1;min-width:0;min-height:42px;padding:10px 12px;border:1px solid #d3dce7;border-radius:var(--r-md);background:#f6f8fb;font-size:13px;-webkit-appearance:none;appearance:none}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.switch{position:relative;display:inline-flex;width:44px;height:26px;cursor:pointer;flex:none}
.switch input{opacity:0;width:0;height:0;position:absolute}
.switch span{position:absolute;top:0;right:0;bottom:0;left:0;background:#c8d2de;border-radius:30px;transition:background .2s}
.switch span:before{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.switch input:checked+span{background:var(--orange)}
.switch input:checked+span:before{transform:translateX(18px)}
.switch input:focus-visible+span{outline:2px solid var(--navy-2);outline-offset:2px}

/* ---------- login / sign-up ---------- */
.login{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(900px 500px at 15% -10%,#0d4377 0,transparent 60%),radial-gradient(700px 420px at 100% 110%,rgba(248,154,32,.16) 0,transparent 55%),var(--navy);
  padding:calc(16px + var(--sat)) calc(16px + var(--sar)) calc(16px + var(--sab)) calc(16px + var(--sal))}
.login-card{width:min(420px,100%);background:#fff;border-radius:20px;padding:32px;box-shadow:0 24px 64px rgba(0,0,0,.3)}
.login-card.wide{width:min(600px,100%)}
.login-logo{display:block;width:210px;max-width:80%;height:auto;margin:0 0 18px}
.login-card h2{margin:0 0 6px;font-size:21px;font-weight:800}
.login-card .btn{min-height:46px;font-size:14px;width:100%}
.login-note{font-size:12.5px;color:var(--muted);line-height:1.6;margin:8px 0}
.login-alt{margin:14px 0 0;text-align:center}
.signup-course-list{display:grid;gap:8px}
.signup-course{padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:#f8fafc}
.signup-course small{display:block;color:var(--muted);margin-top:3px}

/* ---------- modal / toast / notifications ---------- */
.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(4,25,48,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;
  padding:calc(20px + var(--sat)) calc(20px + var(--sar)) calc(20px + var(--sab)) calc(20px + var(--sal));z-index:60}
.modal.open{display:flex}
.modal-card{background:#fff;border-radius:18px;width:min(640px,100%);max-height:90vh;max-height:calc(100dvh - 40px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:22px;box-shadow:var(--shadow-pop)}
.modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px}
.modal-head h2{margin:0;font-size:18px;font-weight:800;min-width:0;overflow-wrap:anywhere}
.modal-card form>.btn,.modal-card>.btn{margin-top:6px}
.toast{position:fixed;right:max(20px,var(--sar));bottom:calc(20px + var(--sab));background:var(--navy);color:#fff;padding:12px 18px;border-radius:var(--r-md);display:none;z-index:80;font-weight:500;max-width:min(420px,calc(100vw - 40px));box-shadow:0 10px 28px rgba(0,0,0,.25)}
.notif-wrap{position:relative}
.notif-dot{position:absolute;top:-6px;right:-6px;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:var(--orange);color:var(--navy);font-size:10.5px;font-weight:800;line-height:1;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
.notif-panel{display:none;position:absolute;right:0;top:50px;width:min(390px,calc(100vw - 30px));max-height:min(480px,70vh);overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);z-index:25}
.notif-panel.open{display:block}
.notif-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border);position:sticky;top:0;background:#fff;z-index:1}
.notif-item{padding:12px 14px;border-bottom:1px solid var(--border)}
.notif-item:last-child{border-bottom:0}
.notif-item.unread{background:#f5f8fb;border-left:3px solid var(--orange);padding-left:11px}
.notif-item b{font-size:13px}
.notif-item p{margin:4px 0;color:var(--muted);font-size:12.5px;line-height:1.5}
.notif-item small{color:#8997a9;font-size:11px}

/* ---------- tabs, banner, rows ---------- */
.tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--border);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{padding:11px 16px;font-weight:600;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs button.active{color:var(--navy);border-bottom-color:var(--orange)}
.banner{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:#fdf0dc;border:1px solid #f3d29b;border-left:4px solid var(--orange);border-radius:var(--r-md);padding:12px 16px;margin-bottom:16px}
.banner b{display:block}
.banner span{display:block;font-size:12.5px;color:#7a5a24;margin-top:2px}
.student-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.student-row:last-child{border-bottom:0}
.student-row>div{min-width:0}
.student-row small{display:block;color:var(--muted);margin-top:3px;font-size:12px;overflow-wrap:anywhere}

/* ---------- transcript ---------- */
.btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.tx-head{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding-bottom:14px;margin-bottom:6px;border-bottom:1px solid var(--border)}
.tx-head small{display:block;color:var(--muted);font-size:12px;font-weight:600;margin-bottom:3px}
.tx-head b{display:block;overflow-wrap:anywhere}
.transcript .table tfoot td{padding:13px 12px;font-weight:800;background:#fdf0dc;color:var(--navy);border-top:1px solid #f3d29b}
.transcript .table tfoot td:first-child{border-bottom-left-radius:var(--r-sm)}
.transcript .table tfoot td:last-child{border-bottom-right-radius:var(--r-sm)}
@media (max-width:700px){.tx-head{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- calendar ---------- */
.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.cal-head{font-size:11.5px;color:var(--muted);font-weight:800;padding:4px;text-align:left}
.day{min-height:108px;border:1px solid var(--border);border-radius:var(--r-md);padding:8px;background:#fff;min-width:0}
.day>b{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 4px;border-radius:12px;font-size:12px;color:var(--muted)}
.day.today{border-color:var(--orange);background:#fffaf2}
.day.today>b{background:var(--orange);color:var(--navy)}
.event{font-size:11px;line-height:1.4;margin-top:6px;padding:6px 7px;border-radius:6px;background:#fff;border:1px solid var(--border);border-left:3px solid var(--orange);color:var(--text);overflow-wrap:anywhere}
.progress-ring{font-size:30px;font-weight:800;color:var(--navy)}
.agenda{display:none;margin-top:16px;border-top:1px solid var(--border)}
.agenda-item{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--border)}
.agenda-item:last-child{border-bottom:0}
.agenda-date{flex:none;width:46px;padding:6px 0;border-radius:var(--r-md);background:var(--col);text-align:center;line-height:1.1}
.agenda-date b{display:block;font-size:17px;font-weight:800;color:var(--navy)}
.agenda-date small{display:block;margin-top:2px;font-size:11px;color:var(--muted);font-weight:600}
.agenda-item>div:last-child{min-width:0}
.agenda-item b{display:block;overflow-wrap:anywhere}
.agenda-item span{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
.agenda-item a{display:inline-block;margin-top:4px;font-weight:700;font-size:13px}

/* ---------- desktop: collapsible sidebar ---------- */
@media (min-width:701px){
  .sidebar-collapsed .sidebar{width:var(--sb-collapsed);padding-left:12px;padding-right:12px}
  .sidebar-collapsed .main{margin-left:var(--sb-collapsed);width:calc(100% - var(--sb-collapsed))}
  .sidebar-collapsed .brand{padding:2px 0 14px}
  .sidebar-collapsed .brand img{display:none}
  .sidebar-collapsed .brand-mark{display:block}
  .sidebar-collapsed .brand small,.sidebar-collapsed .nav-label,.sidebar-collapsed .collapse-nav b,.sidebar-collapsed .side-foot span,.sidebar-collapsed .side-foot button{display:none}
  .sidebar-collapsed .collapse-nav{justify-content:center;padding:0}
  .sidebar-collapsed .collapse-nav svg{transform:rotate(180deg)}
  .sidebar-collapsed .nav button{justify-content:center;padding:0}
  .sidebar-collapsed .nav button.active::before{left:-12px}
  .sidebar-collapsed .side-foot{text-align:center;padding-left:0;padding-right:0}
  .sidebar-collapsed .side-foot b{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* ---------- tablet ---------- */
@media (max-width:950px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .two,.three{grid-template-columns:minmax(0,1fr)}
}

/* ---------- phone / iOS Safari ---------- */
@media (max-width:700px){
  .sidebar{width:272px;max-width:84vw;transform:translateX(-102%);padding-top:calc(20px + var(--sat));padding-left:calc(14px + var(--sal));box-shadow:none;visibility:hidden;transition:transform .25s ease,visibility 0s linear .25s}
  .collapse-nav{display:none}
  .nav button{min-height:46px}
  .nav button.active::before{left:calc(-14px - var(--sal))}
  .nav-open .sidebar{transform:none;visibility:visible;box-shadow:12px 0 40px rgba(0,0,0,.3);transition:transform .25s ease,visibility 0s}
  .nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:35;background:rgba(4,25,48,.5);opacity:0;pointer-events:none;transition:opacity .25s}
  .nav-open .nav-backdrop{opacity:1;pointer-events:auto}
  .main{margin:0;width:100%;padding:0 calc(16px + var(--sar)) calc(28px + var(--sab)) calc(16px + var(--sal))}
  .top{margin:0 calc(-16px - var(--sar)) 16px calc(-16px - var(--sal));padding:calc(10px + var(--sat)) calc(16px + var(--sar)) 10px calc(16px + var(--sal))}
  .top h1{font-size:20px}
  .top>div:first-child{gap:10px}
  .top-actions{gap:10px}
  .user span:first-child{display:none}
  .mobile-menu{display:flex}
  .avatar{width:36px;height:36px}
  .card{padding:16px;border-radius:var(--r-lg)}
  .stat strong{font-size:26px}
  .grid{gap:12px}
  .section-title{margin-top:20px}
  .section-title .btn{flex:none}
  .form-grid{grid-template-columns:1fr}
  .copy-row{flex-wrap:wrap}
  .copy-row .btn{width:100%}
  /* 16px+ inputs stop iOS Safari zooming the page on focus */
  .field input,.field select,.field textarea,.copy-row input{font-size:16px}
  .field input[type=file]{font-size:14px}
  .btn{min-height:44px}
  .btn.small{min-height:38px}
  .tabs button{padding:12px 14px}
  .calendar{gap:3px}
  .cal-head{font-size:10.5px;text-align:center;padding:2px 0}
  .day{min-height:54px;padding:4px 2px;text-align:center;border-radius:8px}
  .day>b{min-width:26px;height:26px;font-size:12.5px;border-radius:13px}
  .day .event{display:none}
  .day.has-events::after{content:"";display:block;width:6px;height:6px;margin:3px auto 0;border-radius:50%;background:var(--orange)}
  .agenda{display:block}
  .modal{align-items:flex-end;padding:calc(12px + var(--sat)) 0 0}
  .modal-card{width:100%;max-height:calc(100dvh - 12px - var(--sat));border-radius:20px 20px 0 0;padding:20px calc(18px + var(--sar)) calc(24px + var(--sab)) calc(18px + var(--sal))}
  .notif-panel{position:fixed;left:12px;right:12px;width:auto;top:calc(62px + var(--sat))}
  .toast{left:16px;right:16px;bottom:calc(16px + var(--sab));max-width:none;text-align:center}
  .login-card{padding:26px 22px;border-radius:18px}
  .student-row{flex-wrap:wrap}
}
@media (max-width:380px){
  .stats{grid-template-columns:minmax(0,1fr)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
}


/* ==========================================================================
   Modern rounded theme (overrides). Everything is soft-cornered: no square boxes.
   ========================================================================== */
.sidebar{border-radius:0 28px 28px 0;box-shadow:8px 0 32px rgba(4,44,83,.12)}
.nav button{border-radius:var(--r-pill);min-height:44px;padding:0 16px}
.nav button.active{background:linear-gradient(135deg,var(--navy-2),#145a9c);box-shadow:0 6px 16px rgba(0,0,0,.2)}
.nav button.active::before{display:none}
.collapse-nav{border-radius:var(--r-pill)}
.main{padding-top:0}
.top{margin-bottom:18px}
.top h1{font-weight:800;letter-spacing:-.02em}
.icon-btn,.notif-btn,.cal-nav{border-radius:50%;box-shadow:0 2px 8px rgba(4,44,83,.08)}
.avatar{box-shadow:0 0 0 4px rgba(248,154,32,.2)}

/* cards */
.card{border:0;border-radius:var(--r-lg);padding:24px;box-shadow:var(--shadow-card)}
.three>.card{border-left:0;border-top:4px solid var(--orange)}
.stat{position:relative;overflow:hidden}
.stat::after{content:"";position:absolute;right:-26px;top:-26px;width:90px;height:90px;border-radius:50%;background:rgba(248,154,32,.12)}
.stat strong{position:relative}
.banner{border:0;border-radius:var(--r-lg);padding:16px 20px;background:linear-gradient(135deg,#fff4e1,#fde8c4)}

/* buttons: pill shaped */
.btn{border-radius:var(--r-pill);min-height:42px;padding:0 22px;box-shadow:0 6px 14px rgba(248,154,32,.32)}
.btn.secondary{box-shadow:0 2px 8px rgba(4,44,83,.07);border-color:transparent}
.btn.danger{box-shadow:none}
.btn.small{border-radius:var(--r-pill);min-height:34px;padding:0 14px}
.btn.secondary.small{box-shadow:0 1px 4px rgba(4,44,83,.08)}
.close{width:36px;height:36px}
.pill{padding:4px 12px}

/* inputs */
.field input,.field select,.field textarea{border-radius:var(--r-md);border-color:#dbe3ee;background-color:#f8fafc;padding:11px 16px}
.field input:focus,.field select:focus,.field textarea:focus,.copy-row input:focus{background-color:#fff;border-color:var(--navy-2)}
.field input[type=file]{border-radius:var(--r-md)}
.field input[type=file]::file-selector-button,.field input[type=file]::-webkit-file-upload-button{border-radius:var(--r-pill);padding:6px 14px}
.field select[multiple]{border-radius:var(--r-md)}
.copy-row input{border-radius:var(--r-pill);padding:10px 16px}
.field .check input,.check input{border-radius:6px}

/* tables: rounded header band and row hover, no hard borders */
.table th{background:#f3f6fa;border:0!important;border-radius:0!important}
.table th:first-child{border-radius:var(--r-md) 0 0 var(--r-md)!important}
.table th:last-child{border-radius:0 var(--r-md) var(--r-md) 0!important}
.table td{border-bottom:1px solid #eef2f7}
@media (hover:hover){.table tbody tr:hover td{background:#f8fafc}.table tbody tr:hover td:first-child{border-radius:var(--r-sm) 0 0 var(--r-sm)}.table tbody tr:hover td:last-child{border-radius:0 var(--r-sm) var(--r-sm) 0}}
.transcript .table tfoot td{border-top:0;border-radius:0}
.transcript .table tfoot td:first-child{border-radius:var(--r-md) 0 0 var(--r-md)}
.transcript .table tfoot td:last-child{border-radius:0 var(--r-md) var(--r-md) 0}
.bar{height:10px}

/* tabs as a rounded segmented control */
.tabs{display:inline-flex;max-width:100%;gap:4px;padding:5px;margin-bottom:20px;border:0;background:#e6ecf3;border-radius:var(--r-pill)}
.tabs button{border:0;margin:0;padding:9px 18px;border-radius:var(--r-pill);font-size:13.5px}
.tabs button.active{background:#fff;color:var(--navy);box-shadow:0 2px 8px rgba(4,44,83,.12)}

/* modal, toast, notifications, login */
.modal-card{border-radius:28px;padding:26px}
.toast{border-radius:var(--r-pill);padding:13px 22px}
.notif-panel{border:0;border-radius:var(--r-lg);overflow-x:hidden}
.notif-item.unread{border-left:0;padding-left:14px;background:#fff8ec}
.login-card{border-radius:28px;padding:36px}
.signup-course{border-radius:var(--r-md)}
.check{border-radius:var(--r-md)}
.student-row{border-bottom-color:#eef2f7}

/* calendar */
.day{border:0;background:#f6f8fb;border-radius:var(--r-md)}
.day.today{background:#fff4e1;box-shadow:inset 0 0 0 2px var(--orange)}
.event{border:0;border-left:0;border-radius:10px;background:#fff;box-shadow:0 1px 4px rgba(4,44,83,.1);border-top:3px solid var(--orange)}
.agenda-date{border-radius:var(--r-md)}

/* certificate status */
.cert-card{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;border-radius:var(--r-lg);color:#fff}
.cert-card.yes{background:linear-gradient(135deg,#1e8a55,#27a96b)}
.cert-card.no{background:linear-gradient(135deg,#6b7f97,#8497ae)}
.cert-card small{display:block;opacity:.85;font-weight:600;font-size:12.5px}
.cert-card strong{display:block;font-size:34px;font-weight:800;line-height:1.1;letter-spacing:-.02em}
.cert-card p{margin:0;max-width:440px;font-size:13.5px;opacity:.95}
.stat strong.cert-yes{color:var(--green)}
.stat strong.cert-no{color:var(--red)}
.passmark-demo{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.passmark-demo .pill{font-size:13px;padding:6px 14px}

@media (max-width:700px){
  .sidebar{border-radius:0 24px 24px 0}
  .card{padding:18px;border-radius:20px}
  .modal-card{border-radius:26px 26px 0 0}
  .login-card{padding:28px 22px;border-radius:24px}
  .btn{min-height:46px}
  .btn.small{min-height:40px}
  .tabs{display:flex}
}

/* session detail (click a date) */
.day.clickable,.agenda-item.clickable{cursor:pointer}
.day.clickable{transition:transform .12s,box-shadow .12s}
@media (hover:hover){.day.clickable:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(4,44,83,.12)}}
.res-tag{display:inline-block;margin-top:4px;padding:1px 8px;border-radius:999px;background:#e3f4ea;color:var(--green);font-size:10px;font-weight:700}
.sess-block{background:#f6f8fb;border-radius:var(--r-lg);padding:18px;margin-top:14px}
.sess-block .empty{padding:14px}
.sess-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.sess-head h3{margin:0 0 2px;font-size:16px}
.sess-head p{margin:0}
.sess-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}
.sess-sub{margin:16px 0 8px;font-size:13px;color:var(--navy)}
.mat-list{display:grid;gap:8px}
.mat-row{display:flex;align-items:center;gap:12px;background:#fff;border-radius:var(--r-md);padding:10px 12px;box-shadow:0 1px 4px rgba(4,44,83,.06)}
.mat-ico{width:36px;height:36px;border-radius:12px;background:#fdf0dc;color:#a8620a;display:flex;align-items:center;justify-content:center;flex:none}
.mat-ico svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mat-name{flex:1;min-width:0}
.mat-name b{display:block;overflow-wrap:anywhere;font-size:13px}
.mat-name small{color:var(--muted)}
.sess-empty{margin-top:12px;padding:14px 16px;border-radius:var(--r-md);background:#fff;color:var(--muted);font-size:13px}
.res-form{margin-top:14px;border-top:1px dashed #d3dce7;padding-top:4px}
.res-form .btn{margin-top:10px}
.btn svg.fill,.btn .ico-play{fill:currentColor}
@media (max-width:700px){.mat-row{flex-wrap:wrap}.mat-name{flex-basis:calc(100% - 60px)}}

/* Cohort action controls: keep tables clean while preserving all actions. */
.compact-actions{align-items:center;justify-content:flex-end;gap:6px;flex-wrap:nowrap}
.action-more{position:relative;display:inline-flex}
.small-icon{width:34px;min-width:34px;height:34px;padding:0!important;border:1px solid var(--border);background:#fff;color:var(--text)}
.small-icon svg{width:17px;height:17px}
.action-menu{display:none;position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:170px;padding:5px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 30px rgba(20,40,60,.14)}
.action-menu.open{display:flex;flex-direction:column}
.action-menu button{border:0;background:transparent;text-align:left;padding:9px 11px;border-radius:7px;font:inherit;font-size:12.5px;color:var(--text);cursor:pointer;white-space:nowrap}
.action-menu button:hover{background:#f5f8fb}
.action-menu .danger-text{color:#b42318}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}
@media(max-width:700px){.compact-actions .btn.small{padding:0 9px}.compact-actions{gap:4px}}

/* ---------- v10.1 visual cleanup ---------- */
.section-title{align-items:flex-start}
.section-title>div:first-child{min-width:0}
.section-title .btn{flex:0 0 auto}
.table{table-layout:auto}
.table th{vertical-align:middle;letter-spacing:.01em}
.table .th-actions,.table .td-actions{text-align:right}
.cohort-table{min-width:900px}
.cohort-table .cohort-col-name{width:20%}
.cohort-table .cohort-col-courses{width:31%}
.cohort-table .cohort-col-date{width:11%}
.cohort-table .cohort-col-status{width:12%}
.cohort-table .cohort-col-actions{width:16%}
.cohort-table th,.cohort-table td{padding-left:14px;padding-right:14px}
.cohort-courses{white-space:normal!important;min-width:240px}
.course-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.course-chip{display:inline-flex;align-items:center;min-height:25px;padding:3px 9px;border-radius:999px;background:#eef4f9;color:var(--navy);font-size:11.5px;font-weight:600;line-height:1.25;border:1px solid #e0e9f1}
.muted-dash{color:var(--muted)}
.compact-actions{display:inline-flex;justify-content:flex-end;align-items:center;gap:6px;flex-wrap:nowrap;white-space:nowrap}
.compact-actions .btn.small{min-height:34px;padding:0 12px}
.action-primary{font-weight:700!important}
.action-secondary{font-weight:600!important}
.action-more{flex:0 0 auto}
.small-icon{width:34px!important;height:34px!important;min-width:34px!important;padding:0!important;border-radius:10px!important}
.action-menu{position:fixed;right:auto;top:auto;min-width:176px;max-width:220px;z-index:1000}
.action-menu button{width:100%;display:flex;align-items:center;min-height:38px}
@media(max-width:900px){
  .cohort-table{min-width:820px}
  .cohort-table .cohort-col-courses{width:28%}
  .course-chip{font-size:11px}
}
@media(max-width:700px){
  .section-title{gap:12px}
  .section-title>div:first-child{width:100%}
  .section-title .btn{width:auto}
  .compact-actions .btn.small{padding:0 10px}
}

/* ---------- participant portal visual optimization ---------- */
.participant-welcome{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px 24px;margin-bottom:16px;border:1px solid #dfe8f1;border-radius:20px;background:linear-gradient(135deg,#fff 0%,#f7fafc 100%);box-shadow:var(--shadow-card)}
.participant-welcome h2{margin:4px 0 5px;font-size:22px;color:var(--navy);letter-spacing:-.02em}
.participant-welcome p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}
.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:#71839a;font-size:10.5px;font-weight:800}
.welcome-avatar{width:52px;height:52px;flex:none;border-radius:16px;display:flex;align-items:center;justify-content:center;background:var(--navy);color:#fff;font-weight:800;font-size:15px;box-shadow:0 7px 18px rgba(4,44,83,.18)}
.participant-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.participant-stats .stat{position:relative;overflow:hidden;padding:18px 19px}
.participant-stats .stat:after{content:"";position:absolute;right:-24px;bottom:-28px;width:86px;height:86px;border-radius:50%;background:rgba(248,154,32,.09)}
.stat-note{display:block;color:var(--muted);font-size:11.5px;margin-top:6px}
.participant-home-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;margin-top:16px}
.next-session-card{padding:20px}
.card-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;min-width:0}
.card-heading>div{min-width:0}
.card-heading h3{margin:5px 0 0;font-size:15px;line-height:1.35;overflow-wrap:anywhere}
.next-session-card p{color:var(--muted);font-size:12.5px;line-height:1.5;margin:12px 0}
.participant-section-title{margin-top:26px;margin-bottom:12px}
.participant-section-title p{font-size:12.5px;color:var(--muted);margin:3px 0 0}
.participant-course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.course-performance-card{padding:18px}
.course-performance-card .course-score{font-size:18px;font-weight:800;color:var(--navy)}
.course-metrics{display:flex;justify-content:space-between;gap:12px;margin:16px 0 8px;font-size:12px;color:var(--muted)}
.course-metrics b{color:var(--text);margin-left:3px}
.participant-assignment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.assignment-card{display:flex;flex-direction:column;gap:12px;padding:19px}
.assignment-card h3{font-size:15px}
.assignment-card p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.55}
.assignment-status{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:10.5px;font-weight:800;white-space:nowrap}
.assignment-status.pending{background:#fff3df;color:#9a5c09}.assignment-status.submitted{background:#eaf1fb;color:#24547f}.assignment-status.done{background:#e4f5eb;color:#207044}
.assignment-meta{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-size:11.5px;color:var(--muted)}
.assignment-meta b{color:var(--text);font-size:12px;text-align:right}
.assignment-details{border:1px solid var(--border);border-radius:10px;padding:9px 11px;background:#f8fafc}
.assignment-details summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--navy)}
.assignment-details p{padding-top:8px}
.file-link{display:inline-flex;align-items:center;gap:7px;color:var(--navy-2);font-size:12px;font-weight:700}
.file-link svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.assignment-result{display:flex;flex-direction:column;gap:4px;min-height:38px;padding:10px 12px;border-radius:10px;background:#f7f9fb;font-size:12px}
.assignment-result span{color:var(--muted);line-height:1.45}
.assignment-card>.btn{width:max-content;max-width:100%;margin-top:auto}
@media(max-width:950px){.participant-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.participant-home-grid,.participant-course-grid,.participant-assignment-grid{grid-template-columns:1fr}}
@media(max-width:700px){.participant-welcome{padding:18px;align-items:flex-start}.participant-welcome h2{font-size:19px}.welcome-avatar{width:44px;height:44px;border-radius:13px}.participant-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.participant-stats .stat{padding:16px}.participant-section-title{align-items:flex-start}.participant-section-title .btn{width:auto}.course-metrics{flex-direction:column;gap:5px}.assignment-card>.btn{width:100%}}
@media(max-width:420px){.participant-stats{grid-template-columns:1fr}.participant-welcome{gap:10px}.welcome-avatar{display:none}}

/* ---------- v13 admin participants + attendance optimization ---------- */
.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:4px 0 18px}.page-header h2{margin:3px 0 4px;font-size:23px;letter-spacing:-.02em}.page-header p{margin:0;color:var(--muted);font-size:13px}.participant-admin-toolbar,.attendance-controls{display:flex;align-items:center;gap:10px;padding:12px;margin-bottom:14px}.participant-admin-toolbar select,.attendance-controls select{height:40px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:0 11px;color:var(--text);font:inherit;font-size:12px;min-width:145px}.search-field{position:relative;flex:1;min-width:220px}.search-field input{width:100%;height:40px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:0 12px 0 36px;font:inherit;font-size:12px;color:var(--text);outline:none}.search-field input:focus,.participant-admin-toolbar select:focus,.attendance-controls select:focus{border-color:#9cb5ca;box-shadow:0 0 0 3px rgba(34,92,135,.08)}.search-icon{position:absolute;left:13px;top:9px;color:#71839a;font-size:18px;line-height:20px;z-index:1}.participant-directory-card{overflow:hidden}.directory-summary{display:flex;gap:28px;padding:15px 18px;border-bottom:1px solid var(--border);background:#fbfcfd}.directory-summary div{display:flex;align-items:baseline;gap:7px}.directory-summary b{font-size:17px;color:var(--navy)}.directory-summary span{font-size:11px;color:var(--muted)}.participant-table{min-width:1060px}.participant-table th{background:#f8fafc;color:#52677b;font-size:11px;text-transform:uppercase;letter-spacing:.045em;font-weight:800;white-space:nowrap}.participant-table td{vertical-align:middle}.participant-table .person-cell{min-width:185px}.person-cell{display:flex;align-items:center;gap:10px;min-width:0}.person-cell>div{min-width:0}.person-cell b{display:block;font-size:12.5px;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-cell small,.cell-sub{display:block;color:var(--muted);font-size:10.5px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}.person-avatar{width:34px;height:34px;flex:none;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#edf3f8;color:var(--navy);font-size:11px;font-weight:800}.id-code{display:inline-flex;padding:5px 8px;border-radius:7px;background:#f4f7fa;color:#52677b;font-size:10.5px;font-weight:700;white-space:nowrap}.contact-email{font-size:11.5px;color:#52677b;white-space:nowrap}.course-count{font-size:11.5px;color:#52677b;line-height:1.45}.danger-icon{color:#b42318!important}.attendance-controls{align-items:flex-end}.attendance-controls .field{margin:0;flex:1;min-width:260px}.attendance-search{flex:1.1}.attendance-bulk{white-space:nowrap}.attendance-card{overflow:hidden}.attendance-summary{display:flex;gap:28px;padding:15px 18px;border-bottom:1px solid var(--border);background:#fbfcfd}.attendance-summary div{display:flex;align-items:baseline;gap:7px}.attendance-summary b{font-size:17px;color:var(--navy)}.attendance-summary span{font-size:11px;color:var(--muted)}.attendance-summary .att-present b{color:#207044}.attendance-summary .att-late b{color:#9a5c09}.attendance-summary .att-absent b{color:#b42318}.attendance-table{min-width:760px}.attendance-table th{background:#f8fafc;color:#52677b;font-size:11px;text-transform:uppercase;letter-spacing:.045em;font-weight:800}.attendance-table td{vertical-align:middle}.attendance-buttons{display:flex;justify-content:flex-end;gap:5px;flex-wrap:wrap}.attendance-btn{border:1px solid var(--border);background:#fff;color:#52677b;border-radius:8px;padding:7px 9px;font-size:10.5px;font-weight:700;cursor:pointer;transition:.15s}.attendance-btn:hover{border-color:#9cb5ca;background:#f6f9fb}.attendance-btn.selected{color:#fff;border-color:transparent}.attendance-btn.present.selected{background:#26824d}.attendance-btn.late.selected{background:#c2780a}.attendance-btn.excused.selected{background:#536f8a}.attendance-btn.absent.selected{background:#c43c35}@media(max-width:900px){.participant-admin-toolbar,.attendance-controls{flex-wrap:wrap}.participant-admin-toolbar .search-field,.attendance-controls .search-field{flex-basis:100%;order:-1}.participant-admin-toolbar select{flex:1}.attendance-controls .field{flex:1}.attendance-summary,.directory-summary{gap:18px;overflow:auto}}@media(max-width:650px){.page-header{align-items:flex-start;flex-direction:column}.page-header .btn{width:auto}.participant-admin-toolbar,.attendance-controls{padding:10px}.participant-admin-toolbar select{min-width:0;width:calc(50% - 5px)}.participant-admin-toolbar>.btn{width:auto}.attendance-controls .field,.attendance-controls .search-field{flex-basis:100%}.attendance-bulk{width:100%}.directory-summary,.attendance-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.attendance-buttons{justify-content:flex-start}.attendance-btn{flex:1;min-width:74px}}

/* v14 sidebar profile + results polish */
.side-avatar{display:none;width:40px;height:40px;border-radius:50%;align-items:center;justify-content:center;background:var(--orange);color:var(--navy);font-weight:800;font-size:13px;box-shadow:0 0 0 3px rgba(248,154,32,.18);margin:0 auto 7px}
.side-user-copy{min-width:0}
.block{display:block}
.results-head{align-items:flex-end}
.results-controls{display:flex;gap:10px;align-items:center}
.results-controls .search-input{min-width:220px}
.results-table th,.results-table td{vertical-align:middle}
.results-table td small.block{margin-top:3px}
@media (min-width:901px){
  body.sidebar-collapsed .side-avatar{display:flex}
  body.sidebar-collapsed .side-user-copy{display:none}
  body.sidebar-collapsed .side-foot{display:flex;flex-direction:column;align-items:center}
}
@media (max-width:900px){
  .results-head{align-items:stretch;flex-direction:column}
  .results-controls{width:100%;flex-wrap:wrap}
  .results-controls .search-input,.results-controls .select{flex:1;min-width:180px}
}

/* v16 results optimization */
.results-page{display:flex;flex-direction:column;gap:18px}
.results-head{margin-bottom:0;gap:20px}
.results-head h2{margin:3px 0 5px}
.eyebrow{font-size:11px;letter-spacing:.12em;font-weight:800;color:var(--muted)}
.results-controls{flex:0 0 auto}
.results-search{height:42px;display:flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--card);border-radius:10px;padding:0 12px;min-width:260px}
.results-search>span{color:var(--muted)}
.results-search .search-input{border:0!important;outline:0!important;background:transparent!important;padding:0!important;min-width:0;width:100%;height:38px}
.results-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.results-stats .stat{position:relative;min-height:116px}
.results-stats .stat span{display:block;margin-top:5px;color:var(--muted);font-size:12px}
.results-card{overflow:hidden;padding:0}
.results-card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid var(--border)}
.results-card-head h3{margin:0 0 4px}
.results-pass{font-size:12px;font-weight:700;padding:7px 10px;border-radius:999px;background:var(--soft);white-space:nowrap}
.results-table th{height:48px;padding:0 16px;background:var(--soft);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.results-table td{height:68px;padding:10px 16px}
.result-person{display:flex;align-items:center;gap:10px;min-width:190px}
.result-person>div{min-width:0}
.result-person b,.result-person small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.result-person small{margin-top:3px;color:var(--muted);font-size:11px;max-width:210px}
.result-avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:0 0 36px;background:var(--navy);color:#fff;font-size:11px;font-weight:800}
.id-badge{font-size:11px;font-weight:700;padding:5px 8px;border-radius:7px;background:var(--soft);white-space:nowrap}
.overall-score{font-weight:800}
.results-actions-head{text-align:right}
.results-transcript{display:inline-flex!important;align-items:center;gap:6px;white-space:nowrap;padding:8px 11px!important;font-size:12px!important}
.results-table td:last-child{text-align:right}
@media(max-width:1100px){.results-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.results-head{align-items:stretch}.results-controls{flex-wrap:wrap}.results-search{min-width:0;flex:1}}
@media(max-width:700px){.results-stats{grid-template-columns:1fr 1fr}.results-card-head{align-items:flex-start;flex-direction:column}.results-controls{width:100%}.results-controls .select,.results-search{width:100%;min-width:0}.results-table{min-width:930px}}

/* ==========================================================================
   Menu bar fit: wider sidebar, tighter buttons, and labels wrap instead of being cut off with "…"
   ========================================================================== */
:root{--sb:256px}
.sidebar{padding-left:12px;padding-right:12px}
.nav button{gap:10px;padding:0 14px;min-height:44px;height:auto;padding-top:8px;padding-bottom:8px;font-size:13.5px}
.nav-label{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25;min-width:0;flex:1}
.brand img{width:168px}
@media (min-width:701px) and (max-width:950px){:root{--sb:236px}}
@media (min-width:701px){
  .sidebar-collapsed .nav button{padding:8px 0}
  .sidebar-collapsed .sidebar{padding-left:12px;padding-right:12px}
}
@media (max-width:700px){.sidebar{width:288px}.nav button{padding-top:10px;padding-bottom:10px}}

/* ---------- attendance analytics ---------- */
.attendance-analytics{margin:0 0 18px}
.analytics-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:4px 0 12px;padding:0 2px}
.analytics-header h3{margin:3px 0 2px;font-size:18px;font-weight:800}
.analytics-header p{margin:0;color:var(--muted);font-size:13px}
.analytics-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--muted);font-size:11.5px;font-weight:700;white-space:nowrap}
.analytics-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(30,138,85,.10)}
.attendance-chart-grid{align-items:stretch}
.analytics-card{padding:18px 18px 14px;overflow:hidden}
.analytics-card-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:6px}
.analytics-card-head b{display:block;font-size:14px;font-weight:800}
.analytics-card-head small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.chart-scroll{width:100%;overflow-x:auto;overflow-y:hidden;padding:4px 0 0;scrollbar-width:thin}
.attendance-chart{display:block;width:100%;min-width:760px;height:auto;overflow:visible}
.chart-grid{stroke:var(--border);stroke-width:1}
.chart-axis{fill:var(--muted);font-size:10px;font-weight:600}
.chart-label{fill:var(--muted);font-size:10.5px;font-weight:700}
.chart-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin:8px 2px 0;padding-top:10px;border-top:1px solid var(--border)}
.chart-legend-item{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:11px;font-weight:700}
.chart-legend-item i{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.attendance-analytics-empty{display:flex;align-items:center;gap:14px;padding:18px 20px;margin-bottom:18px}
.analytics-icon{width:42px;height:42px;border-radius:14px;background:rgba(248,154,32,.12);color:var(--orange-dark);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800}
.attendance-analytics-empty b{font-size:14px}.attendance-analytics-empty p{margin:2px 0 0;color:var(--muted);font-size:12.5px}
@media(max-width:980px){.attendance-chart-grid{grid-template-columns:1fr}.analytics-header{align-items:flex-start;flex-direction:column}.analytics-badge{display:none}}
@media(max-width:640px){.analytics-card{padding:15px}.analytics-header h3{font-size:16px}.attendance-chart{min-width:680px}}
/* ---------- attendance tab refinement ---------- */
.attendance-page-header{margin-bottom:14px}
.attendance-controls{display:grid;grid-template-columns:minmax(260px,1.15fr) minmax(260px,1fr) auto;align-items:end;gap:12px;padding:14px 16px;margin-bottom:18px;border:1px solid var(--border);box-shadow:0 5px 18px rgba(20,45,70,.04)}
.attendance-controls .field{min-width:0}.attendance-session-field{flex:unset}.attendance-controls select,.attendance-controls .search-field input{height:42px;border-radius:11px}.attendance-bulk{height:42px;padding:0 15px;white-space:nowrap}
.attendance-table-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 18px 13px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#fff,#fbfcfd)}
.attendance-table-head h3{margin:3px 0 0;font-size:14px;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:620px}.attendance-rate-badge,.chart-kpi{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;background:#eef7f1;color:#207044;font-size:10.5px;font-weight:800;white-space:nowrap}
.attendance-summary{gap:0;padding:13px 18px}.attendance-summary div{padding:0 20px;border-right:1px solid var(--border)}.attendance-summary div:first-child{padding-left:0}.attendance-summary div:last-child{border-right:0}
.attendance-analytics{margin-bottom:20px}.analytics-header{margin-bottom:10px}.analytics-header h3{font-size:19px}.analytics-header p{font-size:12.5px}.analytics-badge{background:#f8fafc}
.attendance-insight-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 12px}.attendance-insight-strip>div{padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(20,45,70,.035)}.attendance-insight-strip small{display:block;color:var(--muted);font-size:10.5px;font-weight:700}.attendance-insight-strip b{display:block;margin-top:3px;color:var(--navy);font-size:18px;letter-spacing:-.02em}
.analytics-card{border:1px solid var(--border);box-shadow:0 4px 16px rgba(20,45,70,.035);padding:15px 16px 12px}.analytics-card-head{align-items:center;margin-bottom:3px}.analytics-card-head b{font-size:13px}.analytics-card-head small{font-size:10.5px}.chart-kpi{background:#f4f7fa;color:#52677b;padding:5px 8px;font-size:9.5px}.chart-scroll{padding-top:2px}.chart-legend{margin-top:5px;padding-top:9px;gap:7px 12px}.chart-legend-item{font-size:10px}
.attendance-table .th-actions{min-width:350px}.attendance-table td{padding-top:11px;padding-bottom:11px}.attendance-buttons{gap:4px}.attendance-btn{padding:6px 8px;font-size:10px}
@media(max-width:980px){.attendance-controls{grid-template-columns:1fr 1fr}.attendance-controls .attendance-bulk{grid-column:1/-1;width:max-content}.attendance-insight-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.attendance-controls{grid-template-columns:1fr;padding:12px}.attendance-controls .attendance-bulk{grid-column:auto;width:100%}.attendance-insight-strip{grid-template-columns:repeat(2,1fr)}.attendance-table-head{align-items:flex-start;flex-direction:column}.attendance-table-head h3{max-width:100%}.attendance-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.attendance-summary div{padding:0;border-right:0}.attendance-summary div:first-child{padding-left:0}.attendance-summary b{font-size:15px}.attendance-summary span{font-size:10px}.attendance-chart{min-width:700px}}

/* ---------- v22 admin dashboard optimization ---------- */
.admin-dashboard{display:flex;flex-direction:column;gap:16px}
.dashboard-alert{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 15px;border:1px solid #f1d7a7;border-radius:14px;background:#fff9ed}
.dashboard-alert-copy{display:flex;align-items:center;gap:11px;min-width:0}.dashboard-alert-copy>div{display:flex;flex-direction:column;gap:2px;min-width:0}.dashboard-alert-copy b{font-size:12.5px;color:#714b08}.dashboard-alert-copy span:not(.alert-dot){font-size:11px;color:#8a6b36}.alert-dot{width:9px;height:9px;border-radius:50%;background:#e5a11b;box-shadow:0 0 0 5px rgba(229,161,27,.12);flex:none}
.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:23px 24px;border:1px solid #dfe7ef;border-radius:18px;background:linear-gradient(135deg,#fff 0%,#f7fafc 100%);box-shadow:var(--shadow-card)}
.dashboard-hero h2{margin:5px 0 5px;font-size:24px;letter-spacing:-.025em;color:var(--navy)}.dashboard-hero p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.5}.dashboard-actions{display:flex;gap:8px;flex:none}.dashboard-actions .btn{white-space:nowrap}
.dashboard-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.dashboard-kpi{display:flex;align-items:center;gap:12px;padding:16px 17px;min-width:0}.kpi-icon{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:#eef4f9;color:var(--navy);flex:none}.kpi-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.dashboard-kpi>div:last-child{min-width:0}.dashboard-kpi small{display:block;color:var(--muted);font-size:10.5px;font-weight:700}.dashboard-kpi strong{display:block;margin-top:2px;font-size:23px;line-height:1.1;color:var(--navy);letter-spacing:-.02em}.dashboard-kpi span{display:block;margin-top:5px;color:#7a8a9a;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-main-grid,.dashboard-bottom-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.dashboard-panel{padding:18px;min-width:0}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.panel-heading h3{margin:4px 0 0;font-size:15px;color:var(--navy);letter-spacing:-.01em}.text-btn{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;color:#38688f;font:inherit;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap;padding:3px 0}.text-btn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dashboard-bar-row{margin:0 0 13px}.dashboard-bar-row:last-child{margin-bottom:0}.dashboard-bar-label{display:flex;justify-content:space-between;gap:10px;margin-bottom:6px;font-size:11.5px}.dashboard-bar-label span{color:#53687a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-bar-label b{color:var(--navy);font-size:11.5px}.dashboard-track{height:7px;border-radius:999px;background:#edf2f6;overflow:hidden}.dashboard-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#315f82,#4f86ac);min-width:2px}
.upcoming-item{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--border)}.upcoming-item:last-child{border-bottom:0;padding-bottom:0}.session-date{width:40px;height:42px;border-radius:10px;background:#f1f5f8;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none}.session-date b{font-size:15px;line-height:1;color:var(--navy)}.session-date span{text-transform:uppercase;font-size:8px;font-weight:800;color:#7b8c9b;margin-top:3px}.upcoming-copy{min-width:0;flex:1}.upcoming-copy b{display:block;font-size:11.5px;color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upcoming-copy span{display:block;margin-top:3px;font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.quick-actions button{display:flex;align-items:center;gap:9px;padding:11px;border:1px solid #e2e9ef;border-radius:11px;background:#fbfcfd;color:var(--text);cursor:pointer;text-align:left;transition:.15s}.quick-actions button:hover{border-color:#c4d2df;background:#f7fafc;transform:translateY(-1px)}.quick-actions button>svg:first-child{width:17px;height:17px;fill:none;stroke:#315f82;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.quick-actions button>span{display:flex;flex-direction:column;min-width:0;flex:1}.quick-actions b{font-size:11px;color:var(--navy)}.quick-actions small{font-size:9.5px;color:var(--muted);margin-top:2px}.quick-actions button>svg:last-child{width:13px;height:13px;fill:none;stroke:#9aa9b7;stroke-width:1.8;flex:none}
@media(max-width:1050px){.dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero{align-items:flex-start}.dashboard-main-grid,.dashboard-bottom-grid{grid-template-columns:1fr}}
@media(max-width:650px){.dashboard-hero{padding:18px;flex-direction:column;gap:15px}.dashboard-hero h2{font-size:20px}.dashboard-actions{width:100%}.dashboard-actions .btn{flex:1}.dashboard-kpis{grid-template-columns:1fr 1fr}.dashboard-kpi{padding:14px}.kpi-icon{width:34px;height:34px}.dashboard-kpi strong{font-size:20px}.dashboard-panel{padding:15px}.quick-actions{grid-template-columns:1fr}.dashboard-alert{align-items:flex-start;flex-direction:column}.dashboard-alert .btn{width:auto}}
@media(max-width:420px){.dashboard-kpis{grid-template-columns:1fr}.dashboard-actions{flex-direction:column}.dashboard-actions .btn{width:100%}}

/* ---- v24: loading skeletons, modal focus, small-screen polish ---- */
.skeleton{display:grid;gap:16px;padding:4px 0}
.skel{border-radius:14px;background:linear-gradient(90deg,#e9eef4 25%,#f4f7fa 37%,#e9eef4 63%);background-size:400% 100%;animation:skel-shimmer 1.4s ease infinite}
.skel-title{height:28px;width:min(280px,60%)}
.skel-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.skel-card{height:92px}
.skel-block{height:260px}
@keyframes skel-shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
@media (max-width:700px){.skel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (prefers-reduced-motion:reduce){.skel{animation:none}}
.modal-card:focus{outline:none}
button:disabled,.btn:disabled{opacity:.6;cursor:not-allowed}

/* v25: course colours + chart axes */
.course-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;vertical-align:middle;flex:none}
.chart-baseline{stroke:#9aa7b5;stroke-width:1.5}
.chart-value{font-size:11px;font-weight:800;fill:#32414f}
.dashboard-bar-label span{display:inline-flex;align-items:center}

/* v26: geographic map */
.dashboard-main-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
@media(max-width:1050px){.dashboard-main-grid{grid-template-columns:1fr}}
.geo-skel{height:240px}
.geo-map-wrap{background:linear-gradient(180deg,#f3f7fb,#eaf1f8);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.geo-map{display:block;width:100%;height:auto}
.geo-count{font-size:11px;font-weight:800;fill:#fff;paint-order:stroke;stroke:#b86d06;stroke-width:2px}
.geo-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.geo-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:999px;background:#eef3f8;color:var(--muted);font-size:12px;font-weight:700}
.geo-chip b{color:#fff;background:#0d4377;border-radius:999px;min-width:22px;padding:1px 7px;text-align:center}

/* v27: shaded map pop-up + legend */
.geo-map-wrap{position:relative}
.geo-map path{transition:filter .15s}.geo-map path:hover{stroke:#f89a20;stroke-width:1.6;filter:brightness(.96)}
.geo-tip{position:absolute;left:0;top:0;z-index:5;pointer-events:none;min-width:150px;padding:10px 14px 11px;border-radius:12px;background:rgba(15,31,48,.94);color:#fff;box-shadow:0 12px 30px rgba(10,25,41,.28);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);will-change:transform}
.geo-tip[hidden]{display:none}
.geo-tip-name{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:#cfdcea;letter-spacing:.02em}
.geo-tip-name i{width:10px;height:10px;border-radius:3px;flex:none;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
.geo-tip-num{margin-top:4px;font-size:13px;color:#cfdcea}.geo-tip-num b{font-size:24px;line-height:1;color:#fff;margin-right:4px}
.geo-legend{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:11px;font-weight:700;color:var(--muted)}
.geo-scale{display:flex;width:140px;height:10px;border-radius:6px;overflow:hidden}.geo-scale i{flex:1}
.geo-legend small{margin-left:auto;font-weight:600}
.geo-chip i{width:10px;height:10px;border-radius:3px;display:inline-block}
.geo-chip b{background:#0d4377}

/* v28: pan + zoom */
.geo-map{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;shape-rendering:geometricPrecision}
.geo-map.dragging{cursor:grabbing}
.geo-map path{vector-effect:non-scaling-stroke;stroke-width:.8px}.geo-map path:hover{stroke-width:1.8px}
.geo-ctl{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:1px;background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:0 4px 14px rgba(20,45,70,.12);z-index:4}
.geo-ctl button{width:32px;height:32px;border:0;background:#fff;color:#0d4377;font-size:18px;font-weight:700;line-height:1;cursor:pointer}
.geo-ctl button:hover{background:#eef3f8}.geo-ctl button+button{border-top:1px solid var(--border)}

/* v29: participants tab */
.page-header-actions{display:flex;gap:10px;flex-wrap:wrap}
.th-sort{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font:inherit;color:inherit;white-space:nowrap}
.th-sort:hover,.th-sort:focus-visible{color:#0d4377}.th-sort i{font-style:normal;font-size:9px;color:#f89a20;min-width:9px}
.participant-table thead th{position:sticky;top:0;z-index:2;background:#f6f9fc}
.directory-count{margin-left:auto;display:flex;align-items:center;color:var(--muted);font-size:12px;font-weight:700}
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 4px 2px}
.pager:empty{display:none}.pager-nav,.pager-size{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;color:var(--muted)}
.pager-size select{height:32px;border:1px solid var(--border);border-radius:8px;padding:0 8px;font:inherit}
@media(max-width:700px){.directory-count{margin-left:0;width:100%}}

/* v30: keep participant rows one line tall */
.participant-table td{vertical-align:middle;white-space:nowrap}
.participant-table .cell-clip{display:block;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.participant-table .contact-email{max-width:210px}
.cell-list{display:inline-flex;align-items:center;gap:6px;max-width:100%}
.more-pill{border:0;border-radius:999px;background:#e8f0f8;color:#0d4377;font:inherit;font-size:11px;font-weight:800;padding:2px 8px;cursor:pointer;flex:none}
.more-pill:hover{background:#d5e5f4}
.participant-table .person-cell small{display:block;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.participant-table th,.participant-table td{padding-left:10px;padding-right:10px}
.participant-table td{padding-top:9px;padding-bottom:9px}
.participant-table .cell-clip{max-width:140px}
.participant-table .contact-email{max-width:170px}
.participant-table .person-cell small{max-width:150px}

/* Cohort switcher in the top bar */
.cohort-switch{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #d9e0ea;border-radius:12px;padding:5px 6px 5px 12px;max-width:340px;min-width:0}
.cohort-switch>span{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#64748b);flex:none}
.cohort-switch select{border:0;background:transparent;font:inherit;font-weight:700;color:inherit;min-width:0;max-width:190px;text-overflow:ellipsis;cursor:pointer;outline:none;padding:4px 2px}
.cohort-switch:focus-within{border-color:var(--orange,#f89a20);box-shadow:0 0 0 3px rgba(248,154,32,.2)}
.cohort-pm{flex:none;font-size:12px;background:#eef3f9;border-radius:8px;padding:4px 8px;color:#0d4377}
@media(max-width:760px){.cohort-switch>span,.cohort-pm{display:none}.cohort-switch{padding:4px 8px;max-width:170px}.cohort-switch select{max-width:150px}}

/* ---- Participant My Results ---- */
.rs-hero{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center;padding:26px 30px;border-radius:20px;color:#fff;background:linear-gradient(135deg,var(--navy) 0%,var(--navy-2) 100%);box-shadow:0 10px 30px rgba(4,44,83,.18);position:relative;overflow:hidden}
.rs-hero::after{content:"";position:absolute;right:-70px;top:-70px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(248,154,32,.28),transparent 68%);pointer-events:none}
.rs-ring{position:relative;width:176px;height:176px;flex:none}
.rs-ring svg{width:100%;height:100%;display:block}
.rs-ring-bg{fill:none;stroke:rgba(255,255,255,.16);stroke-width:10}
.rs-ring-fg{fill:none;stroke:var(--orange);stroke-width:10;stroke-linecap:round;animation:rs-ring 1s cubic-bezier(.2,.7,.2,1) both}
.is-pass .rs-ring-fg{stroke:#4fd18b}
.rs-ring-pm{stroke:#fff;stroke-width:2.5;stroke-linecap:round}
.rs-ring-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.rs-ring-text strong{font-size:40px;font-weight:800;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.rs-ring-text strong small{font-size:18px;font-weight:700;margin-left:1px;opacity:.8}
.rs-ring-text span{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.7;margin-top:6px}
.rs-hero-copy{position:relative;z-index:1;min-width:0}
.rs-hero-copy h3{margin:12px 0 6px;font-size:24px;font-weight:800;letter-spacing:-.01em;color:#fff}
.rs-hero-copy p{margin:0;color:rgba(255,255,255,.82);max-width:560px;line-height:1.55}
.rs-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:.02em}
.rs-badge.yes{background:rgba(79,209,139,.2);color:#8ef0bc}
.rs-badge.no{background:rgba(248,154,32,.2);color:#ffc26b}
.rs-progress{position:relative;margin-top:26px;max-width:560px}
.rs-hero .rs-track{background:rgba(255,255,255,.18)}
.rs-hero .rs-track i{background:var(--orange)}
.rs-hero.is-pass .rs-track i{background:#4fd18b}
.rs-pm{position:absolute;top:-5px;width:2px;height:18px;background:#fff;border-radius:2px;transform:translateX(-1px)}
.rs-pm em{position:absolute;top:21px;left:50%;transform:translateX(-50%);font-style:normal;font-size:11px;font-weight:700;white-space:nowrap;color:rgba(255,255,255,.85)}
.rs-track{height:8px;border-radius:999px;background:var(--col);overflow:hidden}
.rs-track.big{height:10px}
.rs-track i{display:block;height:100%;border-radius:inherit;background:var(--accent,var(--navy-2));animation:rs-grow .9s cubic-bezier(.2,.7,.2,1) both}
.rs-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:16px 0 8px}
.rs-kpi{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px 18px;box-shadow:0 1px 2px rgba(4,44,83,.04)}
.rs-kpi-ic{width:40px;height:40px;border-radius:12px;background:#eef3f9;color:var(--navy-2);display:flex;align-items:center;justify-content:center;flex:none}
.rs-kpi-ic svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.rs-kpi small{display:block;color:var(--muted);font-weight:700;font-size:12.5px}
.rs-kpi strong{display:block;font-size:26px;font-weight:800;line-height:1.15;color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.rs-kpi strong em{font-style:normal;font-size:15px;color:var(--muted);font-weight:700}
.rs-kpi>div>span{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.rs-sec{margin-top:22px}
.rs-courses{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.rs-course{background:var(--card);border:1px solid var(--border);border-top:4px solid var(--accent,var(--navy-2));border-radius:16px;padding:18px 20px 20px;box-shadow:0 1px 2px rgba(4,44,83,.04);transition:transform .15s ease,box-shadow .15s ease}
.rs-course:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(4,44,83,.1)}
.rs-course header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.rs-course h3{display:inline;margin:0;font-size:16px;font-weight:800;color:var(--navy)}
.rs-course header small{display:block;color:var(--muted);font-weight:600;margin-top:2px}
.rs-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--accent);margin-right:8px}
.rs-score{font-size:28px;font-weight:800;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.rs-score small{font-size:14px;color:var(--muted);font-weight:700}
.rs-minis{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}
.rs-mini-top{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;font-weight:700;color:var(--muted);margin-bottom:6px}
.rs-mini-top b{color:var(--navy);font-size:14px}
.rs-mini small{display:block;margin-top:6px;color:var(--muted);font-size:11.5px}
@keyframes rs-ring{from{stroke-dashoffset:var(--c)}}
@keyframes rs-grow{from{width:0}}
@media(prefers-reduced-motion:reduce){.rs-ring-fg,.rs-track i{animation:none}.rs-course{transition:none}}
@media(max-width:980px){.rs-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.rs-hero{grid-template-columns:1fr;justify-items:center;text-align:center;padding:22px 18px}.rs-hero-copy p{margin-inline:auto}.rs-progress{margin-inline:auto;width:100%}.rs-ring{width:150px;height:150px}.rs-kpis{gap:10px}.rs-kpi{padding:14px;flex-direction:column;gap:10px}.rs-courses{grid-template-columns:1fr}.rs-minis{grid-template-columns:1fr 1fr}}

.rs-tx{flex-wrap:wrap;align-items:center;justify-content:flex-end}
.rs-tx .btn[disabled]{opacity:.55;cursor:not-allowed;background:var(--col);color:var(--muted);box-shadow:none}
.rs-tx .btn[disabled]:hover{background:var(--col)}
.rs-tx-note{flex-basis:100%;text-align:right;color:var(--muted);font-size:12px;font-weight:600}
@media(max-width:640px){.rs-tx{justify-content:flex-start}.rs-tx-note{text-align:left}}

/* ---------- upgraded calendar + capstone booking ---------- */
.calendar-head{align-items:flex-start!important}
.calendar-title-row{display:flex;align-items:center;gap:9px}
.calendar-title-row h2{margin:0 4px}
.calendar-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.calendar-card{overflow:hidden}
.day{position:relative;min-height:124px;padding:10px;background:#f7f9fc}
.day.empty-day{background:transparent}
.day-top{display:flex;align-items:center;justify-content:space-between;gap:6px}
.day-count{font-size:9px;color:#6b7a8d;background:#e9eef5;border-radius:999px;padding:3px 6px;white-space:nowrap}
.day.today .day-count{background:#fff}
.event.capstone-event{border-top-color:#2a8c69}
.availability-chip{margin-top:6px;padding:5px 7px;border-radius:8px;background:#e8f6ef;color:#18724f;font-size:10px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calendar-cutoff{padding:10px 13px;border-radius:12px;background:#fff7e8;color:#7b5a20;font-size:12px;margin:12px 0}
.day-activity-block{margin-top:14px;padding:15px;border-radius:16px;background:#f6f8fb}
.activity-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.modal-head-actions{display:flex;align-items:center;gap:8px;flex:none}
@media(max-width:640px){.modal-head-actions .btn{font-size:11px;padding:7px 9px}}
.activity-heading h3{margin:2px 0 0;font-size:15px}
.booking-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid #e5ebf2}
.booking-row>div:nth-child(2){flex:1;min-width:0}
.booking-row span{display:block;color:var(--muted);font-size:12px;margin-top:2px;overflow-wrap:anywhere}
.booking-time{width:64px;flex:none;text-align:center}
.booking-time b{display:block;color:var(--navy)}
.booking-time small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.window-row{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid #e5ebf2;font-size:12.5px}
.window-row small{color:var(--muted)}
.slot-mini-grid,.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;margin-top:12px}
.slot-chip,.slot-option{border:1px solid #dce5ef;background:#fff;border-radius:12px;padding:9px 10px;text-align:left;cursor:pointer;transition:.15s}
.slot-chip:hover,.slot-option:hover{border-color:var(--orange);transform:translateY(-1px);box-shadow:0 5px 14px rgba(4,44,83,.09)}
.slot-chip{font-weight:800;color:var(--navy);text-align:center}
.slot-chip.more{background:#eef4fa;color:#245a82}
.booking-info{display:flex;gap:10px;align-items:flex-start;padding:13px 15px;border-radius:14px;background:#eef5fb;margin:10px 0 16px}
.booking-info b{color:var(--navy);white-space:nowrap}
.booking-info span{color:#587087;font-size:12.5px;line-height:1.5}
.slot-day{margin-top:14px;padding:14px;border:1px solid #e4eaf1;border-radius:16px;background:#fafbfd}
.slot-day-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.slot-day-head b{display:block;color:var(--navy)}
.slot-day-head small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.slot-option b{display:block;font-size:14px;color:var(--navy)}
.slot-option small{display:block;margin-top:3px;color:var(--muted);font-size:10px}
.booking-table{display:grid;gap:2px}
@media(max-width:700px){
  .calendar-title-row h2{font-size:18px}
  .calendar-actions{width:100%}
  .calendar-actions .btn{flex:1}
  .day{min-height:66px;padding:5px 4px}
  .day .event{display:none}
  .day-count{display:none}
  .availability-chip{width:7px;height:7px;padding:0;border-radius:50%;font-size:0;margin:4px auto 0}
  .booking-row{align-items:flex-start;flex-wrap:wrap}
  .booking-row .btn{margin-left:auto}
  .booking-time{width:55px}
}

/* Label row with a toggle switch (cohort transcript setting) */
.switch-row{display:flex;align-items:flex-start;gap:12px;cursor:pointer;font-weight:inherit}
.switch-row .switch{margin-top:1px}
.switch-row b{display:block}

/* Connect with PVL: social links (participant dashboard and My Results) */
.social-card{margin-top:20px;padding:22px}
.social-head h3{margin:4px 0 4px;font-size:19px}
.social-head .login-note{margin:0 0 16px}
.social-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}
.social-btn{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #d9e0ea;border-radius:14px;background:#fff;color:inherit;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s}
.social-btn:hover{transform:translateY(-2px);border-color:var(--orange,#f89a20);box-shadow:0 6px 16px rgba(18,48,79,.12)}
.social-btn:focus-visible{outline:2px solid var(--orange,#f89a20);outline-offset:2px}
.social-ic{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center}
.social-ic svg{width:22px;height:22px}
.social-txt{min-width:0}
.social-txt b{display:block;font-size:14.5px;line-height:1.25}
.social-txt small{display:block;color:var(--muted,#64748b);font-size:12.5px;margin-top:2px;overflow-wrap:anywhere}

/* Resource bank cards (participant Resources page) */
.resource-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:8px}
.resource-card{display:flex;flex-direction:column;gap:14px;padding:22px}
.resource-card .btn{margin-top:auto;justify-content:center;text-align:center;text-decoration:none}
.resource-card .btn svg{width:18px;height:18px;margin-right:6px;vertical-align:-3px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.resource-ic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center}
.resource-ic svg{width:24px;height:24px;stroke:#fff;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.resource-ic.dl{background:var(--orange,#f89a20)}
.resource-ic.lk{background:#12304f}
.resource-body h3{margin:0 0 6px;font-size:18px}
.resource-body p{margin:0;color:var(--muted,#64748b);font-size:14px;line-height:1.5}
.resource-ic.vd{background:#e02424}

/* weekly average chart */
.wk-grid{stroke-dasharray:3 4;opacity:.8}
.wk-series{transition:opacity .15s}
.wk-focus .wk-series:not(.on){opacity:.14}
.weekly-svg:has(.wk-series:hover) .wk-series:not(:hover){opacity:.2}
.chart-legend-item[tabindex]{cursor:pointer;border-radius:999px;padding:2px 6px;margin:-2px -6px;outline:none}
.chart-legend-item[tabindex]:hover,.chart-legend-item[tabindex]:focus-visible{background:#f1f5f9}
/* equal-width chart cards so the daily and weekly charts line up */
@media(min-width:981px){.attendance-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.attendance-chart-grid .analytics-card{min-width:0}

/* smaller chart text (the charts are now drawn 1:1, so these are the real sizes) */
.weekly-svg .chart-axis{font-size:8.5px;font-weight:600}
.weekly-svg .chart-label{font-size:9px;font-weight:700}
.weekly-svg .chart-value{font-size:9px;font-weight:800}
.chart-tools{display:flex;align-items:center;gap:6px;flex:none}
.chart-nav{display:inline-flex;gap:4px}.chart-nav[hidden]{display:none}
.chart-nav button{width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:#fff;color:var(--navy);font-size:16px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.chart-nav button:hover:not(:disabled){background:#f1f5f9}.chart-nav button:disabled{opacity:.35;cursor:default}

/* the y-axis stays in view while the chart scrolls sideways */
.chart-flex{display:flex}
.chart-flex .yax{position:sticky;left:0;z-index:2;flex:none;background:#fff;display:block}
.chart-flex .weekly-svg{flex:none;margin-left:-40px}
.yax .chart-axis{font-size:8.5px;font-weight:600}

/* Transcript table: long course names wrap instead of being cut off */
.transcript .table th,.transcript .table td{white-space:normal;overflow-wrap:anywhere;word-break:normal;vertical-align:top}
.transcript .tx-head b{overflow-wrap:anywhere}

/* ===== Admin Results (modernised) ===== */
.rr .rr-export{display:inline-flex;align-items:center;gap:7px;height:42px;white-space:nowrap}
.rr .rr-export svg{width:16px;height:16px}
.rr-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.rr-kpi{display:flex;gap:14px;align-items:flex-start;padding:18px;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-card)}
.rr-kpi>div{min-width:0;flex:1}
.rr-kpi small{display:block;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.02em}
.rr-kpi strong{display:block;font-size:28px;line-height:1.15;margin:3px 0 6px;color:var(--navy)}
.rr-kpi .rr-of{font-size:15px;color:var(--muted);font-weight:700}
.rr-kpi em{display:block;margin-top:7px;font-style:normal;color:var(--muted);font-size:12px}
.rr-kpi-ic{flex:0 0 42px;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:18px}
.rr-kpi-ic svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.rr-kpi-ic.navy{background:#e4ecf6;color:var(--navy)}.rr-kpi-ic.orange{background:#fdf0dc;color:#b9680a}.rr-kpi-ic.blue{background:#e1ecf9;color:var(--navy-2)}.rr-kpi-ic.green{background:#e0f3e9;color:var(--green)}
.rr-bar{position:relative;height:8px;border-radius:99px;background:#e8eef5;overflow:visible}
.rr-bar>i{display:block;height:100%;border-radius:99px;min-width:0;transition:width .35s ease}
.rr-bar.thin{height:6px}
.rr-bar>u{position:absolute;top:-3px;width:2px;height:12px;background:var(--navy);border-radius:2px;opacity:.55;text-decoration:none}
.rr-bar i.navy{background:var(--navy-2)}.rr-bar i.ok{background:var(--green)}.rr-bar i.warn{background:var(--orange)}.rr-bar i.low{background:var(--red)}
.rr-bands{padding:18px 22px}
.rr-bands-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
.rr-bands-head h3{margin:0}
.rr-stack{display:flex;gap:3px;height:30px;border-radius:10px;overflow:hidden}
.rr-stack i{display:grid;place-items:center;min-width:26px;color:#fff;font-style:normal;font-size:12px;font-weight:800}
.rr-stack i.low,.rr-legend i.low{background:var(--red)}.rr-stack i.mid,.rr-legend i.mid{background:var(--orange)}.rr-stack i.good,.rr-legend i.good{background:var(--navy-2)}.rr-stack i.high,.rr-legend i.high{background:var(--green)}.rr-stack i.none{background:#e8eef5}
.rr-legend{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:12px;font-size:12.5px;color:var(--muted)}
.rr-legend span{display:inline-flex;align-items:center;gap:7px}
.rr-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.rr-legend b{color:var(--navy);margin-left:2px}
.rr-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:16px 22px;border-bottom:1px solid var(--border)}
.rr-chips{display:flex;gap:8px;flex-wrap:wrap}
.rr-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:99px;border:1px solid var(--border);background:var(--card);color:var(--text);font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}
.rr-chip b{font-size:11.5px;padding:1px 8px;border-radius:99px;background:var(--soft);color:var(--muted)}
.rr-chip:hover{border-color:var(--orange)}
.rr-chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.rr-chip.on b{background:rgba(255,255,255,.18);color:#fff}
.rr-chip:focus-visible,.rr-sort:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.rr-table th{padding:0 16px}
.rr-sort{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;height:48px}
.rr-sort span{font-size:9px;opacity:.45}.rr-sort.on{color:var(--navy)}.rr-sort.on span{opacity:1}
.rr-table tbody tr{transition:background .12s}.rr-table tbody tr:hover{background:#f7fafd}
.rr-meter{display:flex;align-items:center;gap:10px;min-width:150px}
.rr-meter .rr-bar{flex:1;min-width:70px}.rr-meter b{flex:0 0 52px;text-align:right;font-size:13px}
.rr-status{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:99px;font-size:12px;font-weight:800}
.rr-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.rr-status.ok{background:#e0f3e9;color:var(--green)}.rr-status.no{background:#eef1f5;color:var(--muted)}
.rr-foot{padding:13px 22px;border-top:1px solid var(--border);color:var(--muted);font-size:12.5px}
@media(max-width:1100px){.rr-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.rr-kpis{grid-template-columns:1fr}.rr-toolbar{padding:14px}.rr-table{min-width:880px}.rr .rr-export{width:100%;justify-content:center}}

/* Admin Results: align column headings with their data */
.rr-table th,.rr-table td{padding-left:16px;padding-right:16px;text-align:left}
.rr-table th.results-actions-head,.rr-table td:last-child{text-align:right}
.rr-table th.results-actions-head{padding-right:16px}
.rr-table .id-badge{display:inline-block;padding-left:0;padding-right:0;background:none;font-size:12px;letter-spacing:.02em}
.rr-table .rr-meter{min-width:0;gap:12px}
.rr-table .rr-meter b{flex:0 0 40px}

/* ---------- Messages ---------- */
.msg-card{max-width:860px}
.thread{display:flex;flex-direction:column;gap:12px;max-height:55vh;overflow-y:auto;padding:6px 2px 14px;margin-bottom:6px;-webkit-overflow-scrolling:touch}
.bubble-row{display:flex}
.bubble-row.me{justify-content:flex-end}
.bubble{max-width:min(78%,560px);padding:11px 14px;border-radius:var(--r-md);background:var(--col);border:1px solid var(--border)}
.bubble-row.me .bubble{background:#e7f0fb;border-color:#cfe0f4}
.bubble-meta{display:flex;gap:10px;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--muted);margin-bottom:4px}
.bubble-meta b{color:var(--text)}
.bubble-subject{font-weight:600;font-size:13px;margin-bottom:3px}
.bubble-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}
.msg-warn{display:block;margin-top:6px;color:#9a5b00}
.msg-composer{border-top:1px solid var(--border);padding-top:8px}
.conv-list{display:flex;flex-direction:column;gap:6px}
.conv{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff}
.conv:hover{background:#f7f9fc}
.conv-main{flex:1;min-width:0;display:flex;flex-direction:column}
.conv-main small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;color:var(--muted);font-size:12px;flex:none}
@media (max-width:600px){.bubble{max-width:92%}.thread{max-height:48vh}}

/* Team members list (Settings): no horizontal scrolling; permissions shown as short chips */
.team-card{padding:6px 20px}
.team-row{display:grid;grid-template-columns:minmax(220px,1.6fr) auto minmax(180px,1.6fr) auto;align-items:center;gap:12px 20px;padding:14px 0;border-bottom:1px solid var(--border)}
.team-row:last-child{border-bottom:0}
.team-who{display:flex;align-items:center;gap:12px;min-width:0}
.team-name{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}
.team-name b{font-size:14px;overflow-wrap:anywhere}
.team-name small{color:var(--muted);font-size:12.5px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-meta{display:flex;gap:6px;flex-wrap:wrap}
.team-perms{display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-width:0}
.team-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
@media(max-width:1100px){.team-row{grid-template-columns:minmax(0,1fr) auto}.team-perms{grid-column:1/-1;order:3}.team-meta{justify-content:flex-end}.team-actions{grid-column:1/-1;order:4;justify-content:flex-start}}
@media(max-width:600px){.team-row{grid-template-columns:1fr}.team-meta,.team-actions{justify-content:flex-start}}
.team-title{display:flex;align-items:center;gap:6px 8px;flex-wrap:wrap}
.team-remove{color:#b42318;border-color:#f1c9c4}.team-remove:hover{background:#fdf1ef}

/* Repeating sessions */
.rep-box{border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:6px 0 12px;background:#fafcfe}
.rep-box [hidden]{display:none!important}
.day-chips{display:flex;gap:6px;flex-wrap:wrap}
.day-chip{position:relative;cursor:pointer}
.day-chip input{position:absolute;opacity:0;pointer-events:none}
.day-chip span{display:inline-flex;align-items:center;justify-content:center;min-width:46px;padding:7px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;font-size:13px;font-weight:600;color:#44566e}
.day-chip input:checked+span{background:var(--navy);border-color:var(--navy);color:#fff}
.day-chip input:focus-visible+span{outline:2px solid #0b5cab;outline-offset:2px}
.rep-error{color:#b42318}

/* Calendar publish bar and switch */
.publish-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:12px 16px;margin:0 0 14px;border-radius:12px;border:1px solid}
.publish-bar.is-draft{background:#fff7e6;border-color:#f5d48a}
.publish-bar.is-live{background:#eaf7ef;border-color:#a9dcbc}
.publish-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 320px}
.publish-text b{font-size:14px}.publish-text span{font-size:13px;color:#44566e}
.publish-switch{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:14px;white-space:nowrap}

/* Attendance page: per-session "Take attendance" switch */
.attendance-controls{grid-template-columns:minmax(260px,1.15fr) minmax(260px,1fr) auto auto}
.attendance-controls .att-toggle{padding:4px 8px;align-self:end;min-height:42px;align-items:center;border:1px solid var(--border);border-radius:11px;background:#fff}
.attendance-controls .att-toggle small{display:none}
.attendance-bulk:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:980px){.attendance-controls{grid-template-columns:1fr 1fr}.attendance-controls .att-toggle{grid-column:1/-1}}

/* Calendar sessions coloured by course (same colours as the dashboard) */
.event{border-top-color:var(--ec,var(--orange));background:color-mix(in srgb,var(--ec,#fff) 12%,#fff)}
.event.capstone-event{border-top-color:#2a8c69;background:#fff}
.agenda-item[style*="--ec"] .agenda-date{background:color-mix(in srgb,var(--ec) 14%,#fff);box-shadow:inset 3px 0 0 var(--ec)}
.day-dots{display:none;gap:3px;margin-top:4px;flex-wrap:wrap}.day-dots i,.cal-legend i{display:inline-block;width:8px;height:8px;border-radius:50%}
.cal-legend{display:flex;flex-wrap:wrap;gap:6px 16px;padding:12px 16px 0;font-size:12px;color:var(--muted)}.cal-legend span{display:inline-flex;align-items:center;gap:6px}
@media(max-width:700px){.day-dots{display:flex}}

/* ==========================================================================
   MCQ quizzes: creator, results and the participant quiz page
   ========================================================================== */
.modal-card.wide{width:min(940px,100%)}
.qz-head-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.qz-chips{display:flex;gap:6px;flex-wrap:wrap}
.qz-lock{background:#fdf0dc;color:#7a4a08;border-radius:var(--r-md);padding:12px 14px;margin:8px 0;font-size:13px}
.qz-settings{background:var(--bg);border-radius:var(--r-md);padding:6px 14px 12px;margin:14px 0}
.qz-settings h3{margin:10px 0 2px;font-size:14px}
.qz-settings .check{padding:8px 0}
.qz-settings .check small{display:block;color:var(--muted);font-weight:400;margin-top:2px}
.qz-inline{margin:0 0 6px 30px;max-width:260px}
.qz-copy-note{margin:8px 0 0}
.qz-q-title{margin-top:18px;align-items:center;gap:10px;flex-wrap:wrap}
.qz-q-title h3{margin:0}
.qz-file{position:relative;overflow:hidden;cursor:pointer}
.qz-file input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;font-size:0}
.qz-help{margin:10px 0;font-size:13px}
.qz-help summary{cursor:pointer;font-weight:600;color:var(--navy-2)}
.qz-help pre{background:var(--bg);border-radius:var(--r-sm);padding:10px 12px;overflow-x:auto;font-size:12.5px;line-height:1.5}
.qz-warn{background:#fff6e5;border:1px solid #f3d9a6;border-radius:var(--r-md);padding:12px 14px;margin:10px 0;font-size:13px}
.qz-warn ul{margin:6px 0 10px;padding-left:18px}
.qz-empty{padding:24px;text-align:center;border:1px dashed var(--border);border-radius:var(--r-md)}
.qz-edit-q{border:1px solid var(--border);border-radius:var(--r-md);padding:12px;margin:10px 0;background:#fff}
.qz-edit-q.needs{border-color:var(--orange);box-shadow:0 0 0 3px rgba(248,154,32,.15)}
.qz-edit-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.qz-edit-tools{display:flex;gap:6px}
.qz-edit-q textarea{display:block;width:100%;padding:10px 12px;border:1px solid #d3dce7;border-radius:var(--r-md);font-size:16px;resize:vertical;min-height:56px}
.qz-edit-opt{display:flex;align-items:center;gap:8px;margin-top:8px}
.qz-edit-opt>input{flex:1;min-width:0;min-height:40px;padding:8px 12px;border:1px solid #d3dce7;border-radius:var(--r-md);font-size:16px}
.qz-correct{display:inline-flex;align-items:center;gap:6px;cursor:pointer;flex:none;font-weight:700;width:46px}
.qz-correct input{accent-color:var(--green);width:18px;height:18px;margin:0}
.qz-edit-foot{display:flex;align-items:center;gap:12px;margin-top:10px}
.qz-need{color:#a8620a;font-size:12.5px;font-weight:600}
.qz-save-bar{display:flex;gap:10px;margin-top:16px;position:sticky;bottom:-22px;background:#fff;padding:12px 0;border-top:1px solid var(--border)}
.qz-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin:10px 0 14px}
.qz-stats div{background:var(--bg);border-radius:var(--r-md);padding:10px 12px}
.qz-stats b{display:block;font-size:20px}
.qz-stats span{font-size:12px;color:var(--muted)}
.qz-log summary{cursor:pointer;list-style:none}
.qz-log ul{margin:6px 0 0;padding-left:16px;font-size:12.5px;max-height:140px;overflow:auto}
.qz-rules{padding-left:20px;line-height:1.55}
.qz-rules li{margin:8px 0}

/* ---- the quiz page (full-screen overlay) ---- */
html.qz-active,html.qz-active body{overflow:hidden}
#quizRoot{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100000;background:#f4f7fb;display:flex;flex-direction:column;color:var(--text);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#quizRoot *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.qz-wm{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;background-image:var(--qz-wm);background-repeat:repeat}
.qz-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(10px + var(--sat)) 18px 10px;background:var(--navy);color:#fff;flex:none}
.qz-title{font-weight:800;font-size:15px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qz-meta{display:flex;align-items:center;gap:10px;flex:none;font-size:13px}
.qz-viol{background:rgba(255,255,255,.14);padding:4px 10px;border-radius:999px;font-weight:600}
.qz-viol.hot{background:var(--red)}
.qz-clock{background:var(--orange);color:var(--navy);font-weight:800;padding:5px 14px;border-radius:999px;font-variant-numeric:tabular-nums;font-size:15px}
.qz-clock.low{background:var(--red);color:#fff;animation:qzpulse 1s infinite}
@keyframes qzpulse{50%{opacity:.65}}
.qz-body{flex:1;display:flex;min-height:0}
.qz-nav{width:150px;flex:none;padding:16px 12px;display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start;overflow-y:auto;background:#fff;border-right:1px solid var(--border)}
.qz-dot{width:38px;height:38px;border-radius:12px;border:1px solid var(--border);background:#fff;font-weight:700;font-size:13px}
.qz-dot.done{background:#e3f4ea;border-color:#b7e0c8;color:var(--green)}
.qz-dot.cur{background:var(--navy);border-color:var(--navy);color:#fff}
.qz-main{flex:1;min-width:0;overflow-y:auto;padding:26px clamp(16px,5vw,64px) calc(26px + var(--sab));max-width:880px;margin:0 auto;width:100%;position:relative;z-index:1}
.qz-qnum{font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.qz-q{font-size:19px;font-weight:700;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:20px}
.qz-opts{display:flex;flex-direction:column;gap:10px}
.qz-opt{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border:2px solid var(--border);border-radius:var(--r-md);background:#fff;cursor:pointer;transition:border-color .12s,background .12s}
.qz-opt:hover{border-color:#b9c7d8}
.qz-opt.sel{border-color:var(--navy-2);background:#eef4fb}
.qz-opt input{position:absolute;opacity:0;pointer-events:none}
.qz-opt:focus-within{box-shadow:0 0 0 3px rgba(13,67,119,.2)}
.qz-letter{flex:none;width:28px;height:28px;border-radius:50%;background:var(--col);display:grid;place-items:center;font-weight:800;font-size:13px}
.qz-opt.sel .qz-letter{background:var(--navy-2);color:#fff}
.qz-text{font-size:16px;line-height:1.45;padding-top:2px;overflow-wrap:anywhere;white-space:pre-wrap}
.qz-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:24px}
.qz-save{font-size:12.5px;color:var(--muted)}
.qz-save.bad{color:var(--red);font-weight:700}
.qz-submit-row{margin-top:14px;text-align:right}
.qz-block{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;background:rgba(4,25,48,.72);display:grid;place-items:center;padding:20px}
.qz-block-card{background:#fff;border-radius:20px;padding:26px;max-width:460px;width:100%;box-shadow:var(--shadow-pop)}
.qz-block-card h2{margin:0 0 8px}
.qz-confirm-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}
.qz-banner{position:absolute;left:50%;top:70px;transform:translateX(-50%);z-index:30;background:var(--navy);color:#fff;padding:10px 18px;border-radius:14px;font-size:13.5px;font-weight:600;max-width:min(560px,92vw);text-align:center;box-shadow:var(--shadow-pop)}
.qz-banner.hot{background:var(--red)}
.qz-result{overflow-y:auto}
.qz-final{position:relative;z-index:1;max-width:760px;margin:0 auto;padding:40px 20px;width:100%}
.qz-score{background:#fff;border-radius:20px;padding:26px;text-align:center;margin:16px 0;box-shadow:var(--shadow-card)}
.qz-score-n{font-size:46px;font-weight:800;color:var(--navy)}
.qz-score-n small{font-size:20px;color:var(--muted);font-weight:600}
.qz-rev-title{margin:24px 0 8px}
.qz-rev{background:#fff;border:1px solid var(--border);border-left:5px solid var(--red);border-radius:var(--r-md);padding:12px 14px;margin:10px 0}
.qz-rev.ok{border-left-color:var(--green)}
.qz-rev-q{margin-bottom:6px;font-weight:600;white-space:pre-wrap}
.qz-rev-o{padding:4px 8px;border-radius:8px;font-size:14px}
.qz-rev-o span{display:inline-block;width:20px;font-weight:800}
.qz-rev-o.right{background:#e3f4ea}
.qz-rev-o.wrong{background:#fdecea}
.qz-rev-o em{font-size:12px;color:var(--muted);margin-left:6px}
@media (max-width:720px){
  .qz-body{flex-direction:column}
  .qz-nav{width:100%;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid var(--border);padding:10px 12px}
  .qz-dot{flex:none}
  .qz-title{max-width:38vw}
  .qz-q{font-size:17px}
  .qz-save-bar{bottom:-20px}
}
/* printing is blocked: a printed quiz page is empty */
@media print{
  html.qz-active body,html.qz-active #quizRoot{display:none!important}
  html.qz-active::before{content:"Printing is disabled during a quiz.";display:block;padding:40px;font:20px sans-serif}
}
[hidden]{display:none!important}

/* Sessions that run over several days: joined bar across the days they cover */
.event.multi{border-top-width:3px}
.event.multi-first{border-top-left-radius:10px;border-bottom-right-radius:3px;border-top-right-radius:3px}
.event.multi-mid{border-radius:3px}
.event.multi-last{border-radius:3px 3px 10px 10px}

/* Assignment release / due markers on the calendar */
.event.asg-event{background:color-mix(in srgb,var(--ec) 10%,#fff);border-top-color:var(--ec)}
.event.asg-event b{color:var(--ec);font-size:10px;letter-spacing:.02em;text-transform:uppercase}
.asg-more{margin-top:4px;font-size:10px;font-weight:800;color:var(--muted,#667)}
@media(max-width:700px){.asg-more{display:none}}

/* Participant cohort switcher + "My cohorts" dashboard cards */
.my-cohort-grid{margin-bottom:18px}
.my-cohort-card{cursor:pointer;display:flex;flex-direction:column;gap:10px;border:2px solid transparent;transition:border-color .15s,box-shadow .15s,transform .15s}
.my-cohort-card:hover{box-shadow:0 6px 18px rgba(4,44,83,.12);transform:translateY(-1px)}
.my-cohort-card:focus-visible{outline:none;border-color:var(--orange,#f89a20);box-shadow:0 0 0 3px rgba(248,154,32,.25)}
.my-cohort-card.active{border-color:var(--orange,#f89a20);background:color-mix(in srgb,var(--orange,#f89a20) 6%,#fff)}
.my-cohort-card .card-heading{margin-bottom:0}
.my-cohort-card p{margin:0}
.my-cohort-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted,#64748b)}
.my-cohort-meta b{color:var(--navy,#042c53);font-size:15px}
.my-cohort-go{margin-top:auto;display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:800;color:var(--orange-dark,#c2410c)}
.my-cohort-go svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
@media(max-width:950px){.my-cohort-grid{grid-template-columns:1fr}}
.event .ev-course{display:block;margin-top:2px;font-size:10px;font-weight:600;color:var(--muted,#64768d)}

/* calendar cards: the whole date cell and every card inside it open the day's details */
.day.clickable .event,.day.clickable .asg-event,.day.clickable .availability-chip,.day.clickable .asg-more{cursor:pointer}
@media (hover:hover){.day.clickable .event:hover{box-shadow:0 4px 12px rgba(4,44,83,.18);transform:translateY(-1px)}}
.day.clickable:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* ---- Participant dashboard (compact, attention-first layout) ---- */
.dash-participant{display:flex;flex-direction:column;gap:14px}
.dash-participant .participant-welcome{margin-bottom:0;padding:18px 22px}
.dash-participant .participant-welcome h2{font-size:21px;margin:4px 0}
.dash-participant .participant-welcome p{margin:0}
.dash-participant .card{margin:0}
.dash-chips{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.dash-chip{flex:none;display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:border-color .15s,background .15s}
.dash-chip:hover{border-color:var(--orange)}
.dash-chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.dash-chip .pill{padding:1px 8px;font-size:11px}
.dash-chip:focus-visible,.dash-attn-tile:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.dash-attn{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.dash-attn-tile{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--border);border-radius:16px;background:#fff;color:inherit;font:inherit;text-align:left;cursor:pointer;box-shadow:var(--shadow-card);transition:transform .15s,border-color .15s}
.dash-attn-tile:hover{transform:translateY(-2px);border-color:var(--orange)}
.dash-attn-tile.hot{border-color:#f3c98e;background:linear-gradient(135deg,#fff 0%,#fff8ee 100%)}
.dash-attn-ic{flex:none;width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:#fdf0dc;color:#a8620a}
.dash-attn-ic svg{width:19px;height:19px;fill:currentColor}
.dash-attn-copy{flex:1;min-width:0}
.dash-attn-copy b{display:block;font-size:14px;line-height:1.3;color:var(--navy)}
.dash-attn-copy em{font-style:normal;font-size:17px;margin-right:2px}
.dash-attn-copy small{display:block;margin-top:2px;color:var(--muted);font-size:12px}
.dash-attn-tile>svg{flex:none;width:16px;height:16px;fill:var(--muted)}
.dash-two{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:14px}
.dash-progress{padding:18px 20px}
.dash-progress-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.dash-progress small{color:var(--muted);font-size:12px}
.dash-progress-top strong{display:block;font-size:34px;line-height:1.1;color:var(--navy);letter-spacing:-.02em}
.dash-progress p{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--muted)}
.dash-meter{position:relative;height:10px;margin:16px 0 22px;border-radius:999px;background:var(--col)}
.dash-meter>i{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:var(--orange)}
.dash-progress.yes .dash-meter>i{background:var(--green)}
.dash-meter>b{position:absolute;top:-4px;width:2px;height:18px;background:var(--navy);transform:translateX(-1px)}
.dash-meter>b span{position:absolute;top:19px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:600;color:var(--navy);white-space:nowrap}
.dash-mini{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:12.5px;color:var(--muted)}
.dash-mini b{margin-left:4px;color:var(--navy);font-size:14px}
.dash-next{padding:18px 20px}
.dash-next p{margin:10px 0 12px;font-size:13px}
.dash-later{list-style:none;margin:14px 0 0;padding:12px 0 0;border-top:1px solid var(--border);display:grid;gap:8px}
.dash-later li{display:flex;justify-content:space-between;gap:10px;font-size:12.5px}
.dash-later li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.dash-later small{flex:none;color:var(--muted)}
.dash-courses{padding:18px 20px}
.dash-course-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,2fr) 48px;align-items:center;gap:14px;padding:11px 0;border-top:1px solid var(--border)}
.dash-course-row:first-of-type{margin-top:10px}
.dash-course-name{min-width:0}
.dash-course-name b{display:block;font-size:13.5px;color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-course-name span{font-size:11.5px;color:var(--muted)}
.dash-course-bar{height:8px;border-radius:999px;background:var(--col);overflow:hidden}
.dash-course-bar i{display:block;height:100%;border-radius:999px;background:var(--orange)}
.dash-course-row strong{text-align:right;font-size:14px;color:var(--navy)}
.dash-courses .extra{display:none}
.dash-courses.all .extra{display:grid}
.dash-more{margin-top:8px;padding:8px 0 0;border-top:1px solid var(--border);width:100%;text-align:center}
/* The social links are a footer here: one slim row of icons instead of a big card. */
.dash-social .social-card{margin-top:0;padding:14px 18px}
.dash-social .social-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.dash-social .social-head h3{margin:0;font-size:14px}
.dash-social .social-head .eyebrow,.dash-social .social-head p{display:none}
.dash-social .social-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.dash-social .social-btn{padding:8px 10px;gap:8px;border-radius:12px}
.dash-social .social-txt small{display:none}
.dash-social .social-txt b{font-size:13px}
@media(max-width:950px){.dash-two{grid-template-columns:1fr}}
@media(max-width:560px){.dash-course-row{grid-template-columns:minmax(0,1fr) 44px;row-gap:6px}.dash-course-bar{grid-column:1/-1;order:3}.dash-progress-top strong{font-size:30px}.dash-attn{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.dash-attn-tile,.dash-chip{transition:none}.dash-attn-tile:hover{transform:none}}

/* ---- Transcript download gate (review + social pages) ---- */
.gate-step{margin-top:14px;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:#fff}
.gate-step.ok{border-color:#bfe3cd;background:#f5fbf7}
.gate-step h3{display:flex;align-items:center;gap:10px;margin:0 0 8px;font-size:15px;color:var(--navy)}
.gate-step h3 small{margin-left:auto;font-weight:600;color:var(--muted);font-size:12px}
.gate-n{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--navy);color:#fff;font-size:12px}
.gate-step.ok .gate-n{background:var(--green)}
.gate-step .login-note{margin:0 0 10px}
.gate-done,.gate-ok{display:inline-flex;align-items:center;gap:8px;color:var(--green);font-weight:600;font-size:13px}
.gate-tick{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--green);color:#fff;font-size:11px}
.gate-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--border)}
.gate-row .social-ic{width:36px;height:36px;border-radius:10px}
.gate-row .social-ic svg{width:19px;height:19px}
.gate-row-copy{flex:1;min-width:0}
.gate-row-copy b{display:block;font-size:13.5px}
.gate-row-copy small{display:block;color:var(--muted);font-size:11.5px}
.gate-row-act{flex:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.gate-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;flex-wrap:wrap}
.gate-foot .btn[disabled]{opacity:.5;cursor:not-allowed}
@media(max-width:520px){.gate-row{flex-wrap:wrap}.gate-row-act{width:100%;justify-content:flex-start;padding-left:48px}.gate-foot .btn{flex:1}}

/* ---- Quiz typeface: Century Gothic (the quiz screen, the rules pop-up and the result pop-up) ---- */
@font-face{font-family:'Century Gothic';src:local('Century Gothic'),local('CenturyGothic'),url('/fonts/CenturyGothic-Regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Century Gothic';src:local('Century Gothic Bold'),local('CenturyGothic-Bold'),url('/fonts/CenturyGothic-Bold.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap}
:root{--qz-font:'Century Gothic','CenturyGothic','URW Gothic','Avant Garde',var(--font)}
#quizRoot,#quizRoot *,.qz-font,.qz-font *{font-family:var(--qz-font)}

/* Recap recordings: watch progress and in-portal YouTube player */
.recap-box{margin-top:14px;padding:14px;border-radius:var(--r-md);background:#fff;box-shadow:0 1px 4px rgba(4,44,83,.06)}
.recap-bar{position:relative;height:10px;border-radius:99px;background:#e6edf5;margin:8px 0 10px;overflow:visible}
.recap-fill{height:100%;border-radius:99px;background:#f08a00;transition:width .4s}
.recap-fill.done{background:#1f9d55}
.recap-mark{position:absolute;top:-4px;width:2px;height:18px;background:#042c53;opacity:.55}
.recap-player{margin:10px 0}
.recap-player iframe{width:100%;aspect-ratio:16/9;height:auto;border:0;border-radius:12px;background:#000;display:block}
.recap-msg{margin:6px 0 10px}


/* ---------- role chooser, per-role sign-in, online ring ---------- */
.choose-card{text-align:center}.choose-card .login-logo{margin:0 auto 18px}
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}
.role-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:26px 16px;border:2px solid var(--border);border-radius:18px;background:#fff;color:var(--navy);text-decoration:none;transition:.15s}
.role-card:hover,.role-card:focus-visible{border-color:var(--orange);box-shadow:0 10px 28px rgba(4,44,83,.14);transform:translateY(-2px);outline:none}
.role-icon{width:76px;height:76px;border-radius:22px;display:flex;align-items:center;justify-content:center;background:#edf3f8;color:var(--navy)}
.role-card:hover .role-icon{background:var(--navy);color:#fff}
.role-card b{font-size:17px;font-weight:800}.role-card small{font-size:12px;color:var(--muted);line-height:1.45}
.portal-badge{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 8px;border-radius:999px;background:#edf3f8;color:var(--navy);font-size:12px;font-weight:800;margin-bottom:10px}
.portal-badge svg{width:20px;height:20px}.portal-badge.admin{background:var(--navy);color:#fff}
.pw-alt{margin-top:14px;font-size:12.5px;color:var(--muted)}.pw-alt summary{cursor:pointer;text-align:center;padding:6px}.pw-alt .field{margin-top:10px}
.person-avatar.online{box-shadow:0 0 0 2px #fff,0 0 0 4.5px #22b35e;position:relative}
.person-avatar.online::after{content:"";position:absolute;right:-3px;bottom:-3px;width:9px;height:9px;border-radius:50%;background:#22b35e;border:2px solid #fff}
.online-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#22b35e;margin-right:5px}
.online-summary b{color:#207044}
@media(max-width:480px){.role-grid{grid-template-columns:1fr}.role-card{flex-direction:row;text-align:left;padding:16px;gap:14px}.role-icon{width:60px;height:60px;flex:none}.role-card div{flex:1}}
.role-card b,.role-card small{display:block}.role-card small{margin-top:4px}

.login-success{color:#146c3a;background:#e8f7ee;border:1px solid #b7e4c7;border-radius:8px;padding:9px 12px;font-weight:600}
.login-error{color:#b42318;background:#fdecea;border:1px solid #f5c2bd;border-radius:8px;padding:9px 12px;font-weight:600}

/* Dragging a session to another date (staff) */
.event[draggable="true"]{cursor:grab}
.event.dragging{opacity:.45;cursor:grabbing}
.day.drop-target{outline:2px dashed #0b5cab;outline-offset:-2px;background:#eaf3ff}

/* v29: proctored-quiz camera + AI check */
#qzCam{position:fixed;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));width:128px;aspect-ratio:4/3;z-index:100001;border-radius:12px;overflow:hidden;background:#000;border:2px solid #1d9e75;box-shadow:0 6px 18px rgba(4,25,48,.35);pointer-events:none}
#qzCam.bad{border-color:#d93025}
#qzCam video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1);display:block}
#qzCam .qzcam-tag{position:absolute;left:6px;bottom:5px;display:flex;align-items:center;gap:5px;font:600 10px/1 sans-serif;color:#fff;background:rgba(4,25,48,.65);padding:3px 6px;border-radius:99px}
#qzCam .qzcam-tag i{width:6px;height:6px;border-radius:50%;background:#1d9e75}
#qzCam.bad .qzcam-tag i{background:#d93025}
@media(max-width:640px){#qzCam{width:88px;right:8px}}
#quizRoot.qz-hide .qz-body{visibility:hidden}
@media print{#qzCam{display:none!important}}
.qz-snaps{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:12px}
.qz-snaps figure{margin:0;border:2px solid transparent;border-radius:10px;overflow:hidden;background:#f1f4f9}
.qz-snaps figure.flag{border-color:#d93025}
.qz-snaps img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#dfe6ef}
.qz-snaps figcaption{font-size:11.5px;padding:5px 7px;color:var(--muted,#51627a)}
.ai-rej{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid rgba(0,0,0,.07)}

.modal-card.wide{width:min(1180px,100%)}

/* Submissions table (admin) */
.sub-table th,.sub-table td{white-space:normal;vertical-align:top;padding:14px 12px}
.sub-table td:nth-child(1){min-width:170px}.sub-table td:nth-child(2){min-width:150px;max-width:200px}.sub-table td:nth-child(3){min-width:150px;width:170px}.sub-table td:nth-child(4){min-width:190px}
.sub-who{display:flex;gap:10px;align-items:flex-start}
.sub-who b{display:block;font-size:13.5px}.sub-who small{display:block;color:var(--muted);font-size:12px;line-height:1.5}
.avatar-sm{flex:none;width:34px;height:34px;border-radius:50%;background:var(--col);color:var(--navy-2,#0d4377);font-weight:800;font-size:12px;display:grid;place-items:center}
.sub-file{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;text-decoration:none;color:var(--navy-2,#0d4377)}
.sub-file:hover{text-decoration:underline}
.sub-answer summary{cursor:pointer;color:var(--muted);font-size:12.5px;margin-top:4px}.sub-answer div{white-space:pre-wrap;margin-top:6px;max-height:160px;overflow:auto;font-size:12.5px}
.ai-cell{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.ai-score{display:flex;align-items:baseline;gap:8px}.ai-score b{font-size:22px;line-height:1;font-weight:800}.ai-score span{font-size:12px;color:var(--muted)}
.ai-score.hi b{color:var(--red)}.ai-score.mid b{color:#a8620a}.ai-score.lo b{color:var(--green)}
.ai-bar{width:100%;max-width:150px;height:6px;border-radius:999px;background:var(--col);overflow:hidden}.ai-bar i{display:block;height:100%;border-radius:999px;background:var(--navy-2,#0d4377)}
.ai-score.hi~.ai-bar i{background:var(--red)}.ai-score.mid~.ai-bar i{background:#e0a040}.ai-score.lo~.ai-bar i{background:var(--green)}
.ai-note{color:var(--muted);font-size:12px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;max-width:200px}
.ai-when{color:var(--muted);font-size:11.5px}
.ai-run{margin-top:2px}
.sub-grade{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.sub-score{display:flex;align-items:center;gap:8px}.sub-score span{color:var(--muted);font-size:12.5px;white-space:nowrap}
.sub-grade input{width:100%;min-height:36px;padding:7px 10px;border:1px solid #d3dce7;border-radius:var(--r-sm);background:#fff;font:inherit;font-size:13px}
.sub-score input{width:96px}
.sub-grade input:focus{outline:none;border-color:var(--navy-2,#0d4377);box-shadow:0 0 0 3px rgba(13,67,119,.14)}
.sub-grade input:disabled{background:var(--col);cursor:not-allowed}
.sub-grade .btn{align-self:flex-start}
.sub-req{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.sub-table tbody tr:hover td{background:#fafcfe}

/* Work column */
.work-file{display:flex;gap:10px;align-items:flex-start}
.ext{flex:none;min-width:38px;height:38px;padding:0 4px;border-radius:10px;display:grid;place-items:center;font-size:10.5px;font-weight:800;letter-spacing:.03em;background:var(--col);color:var(--muted)}
.ext-pdf{background:#fdecea;color:var(--red)}.ext-doc{background:#e6effa;color:#1d5fa8}.ext-ppt{background:#fdf0dc;color:#a8620a}.ext-xls{background:#e3f4ea;color:var(--green)}
.work-meta{min-width:0}
.sub-file{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-break:break-word;line-height:1.35;font-size:13px}
.work-meta small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.work-warn{color:#a8620a;font-weight:600}
.sub-answer{margin-top:8px}
.sub-table td:nth-child(2){min-width:180px;max-width:230px}

/* ---------- Settings: certificate pass mark & AI limit ---------- */
.cert-wrap{max-width:920px;display:grid;gap:16px}
.cert-head h2{margin:4px 0 6px;font-size:22px;font-weight:800;letter-spacing:-.02em}
.cert-head .login-note{margin:0;max-width:70ch}
.cert-note{padding:12px 16px;border-radius:var(--r-md);background:#eef4fb;color:var(--navy);font-size:13px;line-height:1.5;border:1px solid #d9e6f4}
.cert-note.warn{background:#fff6e8;border-color:#f6dcae;color:#7a4a08}
.cert-defaults{padding:18px 20px;border-radius:var(--r-lg);background:linear-gradient(180deg,#fff,#f8fafd)}
.cert-defaults-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.cert-defaults-head b{display:block;font-size:15px;font-weight:800}
.cert-defaults-head small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.cert-list{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr))}
.cert-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:18px 20px;display:flex;flex-direction:column;gap:16px;transition:box-shadow .2s,border-color .2s}
.cert-card:focus-within{border-color:#c4d3e4;box-shadow:0 1px 2px rgba(4,44,83,.05),0 12px 32px rgba(4,44,83,.10)}
.cert-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.cert-card-title{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.cert-card-title b{font-size:15.5px;font-weight:800;overflow-wrap:anywhere}
.cert-card-title small{flex-basis:100%;color:var(--muted);font-size:12px}
.cert-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cert-field{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:#fbfcfe;cursor:text;transition:border-color .15s,box-shadow .15s,background .15s}
.cert-field:focus-within{border-color:var(--navy-2);background:#fff;box-shadow:0 0 0 3px rgba(13,67,119,.12)}
.cert-lab{display:flex;gap:10px;align-items:flex-start}
.cert-lab b{display:block;font-size:13px;font-weight:700;line-height:1.3}
.cert-lab small{display:block;color:var(--muted);font-size:11.5px;line-height:1.35;margin-top:2px}
.cert-ic{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-size:15px}
.cert-ic svg{width:16px;height:16px}
.cert-ic.pm{background:#e7eff8;color:var(--navy-2)}
.cert-ic.ai{background:#fdf0dc;color:#a8620a}
.cert-input{display:flex;align-items:baseline;gap:4px}
.cert-input input{width:100%;min-width:0;border:0;background:transparent;padding:0;font-size:26px;font-weight:800;letter-spacing:-.02em;color:var(--navy);-moz-appearance:textfield;appearance:textfield}
.cert-input input::-webkit-outer-spin-button,.cert-input input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.cert-input input::placeholder{font-size:15px;font-weight:600;letter-spacing:0;color:#9aa8ba}
.cert-input input:focus-visible{outline:none}
.cert-input i{font-style:normal;font-size:15px;font-weight:700;color:var(--muted)}
.cert-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto}
.cert-card-foot .btn[disabled]{opacity:.45;cursor:not-allowed}
@media (max-width:520px){.cert-fields{grid-template-columns:1fr}.cert-defaults-head{flex-wrap:wrap}.cert-list{grid-template-columns:1fr}}

/* ---------- Messages: grouped by cohort ---------- */
.msg-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:4px 0 14px}
.msg-tools input[type=search]{flex:1 1 220px;min-width:0;padding:10px 14px;border:1px solid var(--border);border-radius:999px;background:#fbfcfe;font-size:14px}
.msg-tools input[type=search]:focus{outline:none;border-color:var(--navy-2);box-shadow:0 0 0 3px rgba(13,67,119,.12);background:#fff}
.chip{padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;font-size:13px;font-weight:700;color:var(--muted)}
.chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.msg-group{border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:10px;background:#fff;overflow:hidden}
.msg-group-head{display:flex;align-items:center;gap:10px;width:100%;padding:14px 16px;text-align:left;background:#f8fafd;font-size:15px}
.msg-group-head b{font-weight:800;min-width:0;overflow-wrap:anywhere}
.msg-group-head small{color:var(--muted);font-size:12.5px;margin-right:auto}
.msg-chev{display:inline-block;width:16px;text-align:center;color:var(--muted);font-size:18px;line-height:1;transition:transform .15s}
.msg-group.open .msg-chev{transform:rotate(90deg)}
.msg-group.open .msg-group-head{border-bottom:1px solid var(--border)}
.msg-group .conv-list{padding:10px;gap:6px}

/* ---------- Assignments (staff list + participant status) ---------- */
.asg-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:6px 0 16px}
.asg-stats.p{grid-template-columns:repeat(3,minmax(0,1fr))}
.asg-stat{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:2px}
.asg-stat small{color:var(--muted);font-size:12px;font-weight:700}
.asg-stat b{font-size:26px;font-weight:800;letter-spacing:-.02em;color:var(--navy);line-height:1.15}
.asg-stat span{color:var(--muted);font-size:11.5px}
.asg-stat.warn b{color:#b45f06}.asg-stat.good b{color:#207044}
.chip small{font-weight:800;opacity:.7;margin-left:2px}
#asgChips{display:contents}
#asgList{display:grid;gap:12px}
.asg-card{display:flex;align-items:stretch;justify-content:space-between;gap:18px;padding:16px 18px;background:var(--card);border:1px solid var(--border);border-left:4px solid #d5dde8;border-radius:var(--r-lg);box-shadow:var(--shadow-card);transition:box-shadow .2s,border-color .2s}
.asg-card:hover{box-shadow:0 1px 2px rgba(4,44,83,.05),0 12px 32px rgba(4,44,83,.10)}
.asg-card.needs{border-left-color:var(--orange,#f89a20)}
.asg-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.asg-main h3{margin:0;font-size:16px;font-weight:800;overflow-wrap:anywhere}
.asg-tags{display:flex;flex-wrap:wrap;gap:6px}
.asg-facts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:12.5px;color:var(--muted)}
.asg-progress{display:flex;flex-direction:column;gap:6px;max-width:360px}
.asg-progress small{font-size:12px;color:var(--muted)}.asg-progress small b{color:var(--text)}.asg-progress .asg-req{color:#b45f06}
.asg-bar{height:7px;border-radius:999px;background:#e8eef5;overflow:hidden}
.asg-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#2f8f5b,#43b378)}
.asg-side{display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:10px;flex:none}
.asg-vis{text-align:right}
.asg-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.due-chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;background:#eaf1fb;color:#24547f;font-size:11px;font-weight:800;white-space:nowrap}
.due-chip.soon{background:#fff3df;color:#9a5c09}
.due-chip.late,.due-chip.past{background:#fde8e8;color:#a32a2a}
.due-chip.none{background:#eef1f5;color:var(--muted)}
.assignment-meta .due-chip{margin-left:8px}
.assignment-card.pending{border-top:3px solid var(--orange,#f89a20)}
.assignment-card.submitted{border-top:3px solid #5b8fc7}
.assignment-card.done{border-top:3px solid #43b378}
@media (max-width:760px){.asg-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.asg-stats.p{grid-template-columns:repeat(3,minmax(0,1fr))}.asg-card{flex-direction:column}.asg-side{align-items:stretch}.asg-vis{text-align:left}.asg-actions{justify-content:flex-start}}

/* ---------- Announcements ---------- */
#annChips{display:contents}
#annFeed{display:grid;gap:12px;max-width:860px}
.ann-card{display:flex;gap:14px;padding:18px 20px;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-card)}
.ann-card.fresh{border-left:4px solid var(--orange,#f89a20)}
.ann-avatar{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--navy);color:#fff;font-size:13px;font-weight:800}
.ann-main{flex:1;min-width:0}
.ann-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:12.5px;color:var(--muted)}
.ann-meta b{color:var(--text);font-size:13px}
.ann-main h3{margin:6px 0 6px;font-size:17px;font-weight:800;letter-spacing:-.01em;overflow-wrap:anywhere}
.ann-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.6;color:#2c3e50}
.ann-body.clamp{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.ann-reach{margin:2px 0 12px;padding:10px 14px;border-radius:var(--r-md);background:#eef4fb;border:1px solid #d9e6f4;color:var(--navy);font-size:13px}
@media (max-width:520px){.ann-card{padding:14px}.ann-avatar{width:34px;height:34px;border-radius:10px;font-size:12px}}

/* ---------- Calendar: finished items + hover card ---------- */
.event.done,.agenda-item.done b,.agenda-item.done>div:last-child span,.struck{text-decoration:line-through;text-decoration-thickness:1.5px;text-decoration-color:rgba(70,85,105,.7)}
.event.done{opacity:.6}
.event.done small{text-decoration:inherit}
.agenda-item.done{opacity:.65}
.event[data-tip]:focus-visible{outline:2px solid var(--navy-2);outline-offset:1px}
.cal-tip{position:fixed;z-index:1000;display:none;width:min(320px,calc(100vw - 16px));padding:14px 16px;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 48px rgba(4,44,83,.22),0 2px 6px rgba(4,44,83,.08);font-size:12.5px;line-height:1.45;color:var(--text);pointer-events:none}
.cal-tip .tip-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px}
.cal-tip .tip-head i{flex:none;width:10px;height:10px;border-radius:50%;margin-top:5px}
.cal-tip .tip-head small{display:block;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.cal-tip .tip-head b{display:block;font-size:14.5px;font-weight:800;color:var(--navy);overflow-wrap:anywhere}
.cal-tip .tip-row{display:flex;justify-content:space-between;gap:14px;padding:5px 0;border-top:1px solid var(--border)}
.cal-tip .tip-row span{color:var(--muted)}.cal-tip .tip-row b{text-align:right;font-weight:700}
.cal-tip .tip-note{margin:8px 0 0;color:#44566a}
.cal-tip .tip-course{margin-top:10px;padding:9px 11px;border-radius:10px;background:#f4f7fb}
.cal-tip .tip-course small{display:block;color:var(--muted);font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.cal-tip .tip-course b{display:block;font-size:13px;color:var(--navy)}
.cal-tip .tip-course p{margin:4px 0 0;color:#44566a;font-size:12px}
.cal-tip .tip-foot{margin-top:10px;font-size:11px;color:var(--muted)}

/* Certificates */
.cert-card{display:flex;gap:16px;align-items:center;margin-top:12px;box-shadow:none;background:#f6f8fb}
.cert-thumb{width:200px;max-width:34%;aspect-ratio:auto;border-radius:10px;border:1px solid rgba(4,44,83,.12);background:#fff;flex:none}
.cert-meta{display:grid;gap:8px;min-width:0}.cert-meta small{color:var(--muted)}
.cert-canvas{position:relative;margin-top:14px;border-radius:12px;overflow:hidden;border:1px solid rgba(4,44,83,.15);background:#eef2f7;cursor:crosshair;touch-action:none;user-select:none;-webkit-user-select:none}
.cert-canvas img{display:block;width:100%;height:auto;pointer-events:none;min-height:120px}
.cert-name{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;pointer-events:none;line-height:1.1;text-shadow:0 0 0 currentColor}
.cert-guide{position:absolute;transform:translate(-50%,-50%);height:0;border-top:1.5px dashed rgba(11,92,171,.7);pointer-events:none;margin-top:1.4em}
@media (max-width:640px){.cert-card{flex-direction:column;align-items:flex-start}.cert-thumb{max-width:100%;width:100%}}

/* Certificates (admin) and the share window */
.cert-top{margin-bottom:14px}
.cert-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 18px}
.cert-stats>div{padding:14px 16px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff;box-shadow:var(--shadow-card)}
.cert-stats small{display:block;color:var(--muted);font-size:11.5px;font-weight:700}
.cert-stats b{display:block;margin-top:4px;color:var(--navy);font-size:26px;font-weight:800;letter-spacing:-.02em}
.cert-stats b span{color:var(--muted);font-size:14px;font-weight:600}
.cert-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr))}
.cert-tile{padding:0;overflow:hidden;display:flex;flex-direction:column;margin:0}
.cert-shot{background:linear-gradient(135deg,#eef2f7,#e3eaf2);padding:16px;display:grid;place-items:center}
.cert-shot img{width:100%;height:auto;max-height:230px;object-fit:contain;border-radius:8px;box-shadow:0 6px 22px rgba(4,44,83,.18);background:#fff}
.cert-body{padding:16px 18px 18px;display:grid;gap:10px}
.cert-body h3{margin:0;font-size:16px;font-weight:800;color:var(--navy)}
.cert-used{margin:0;color:var(--muted);font-size:13px;line-height:1.5}
.cert-actions{display:flex;flex-wrap:wrap;gap:8px}
.cert-empty{text-align:center;padding:36px 20px;display:grid;gap:10px;justify-items:center}
.cert-empty-ic{width:54px;height:54px;border-radius:16px;background:#e8f0fa;color:var(--navy-2);display:grid;place-items:center}
.cert-empty-ic svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cert-search{max-width:360px;margin:6px 0 12px}
.share-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.share-btn{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff;cursor:pointer;font:inherit;color:var(--text);transition:box-shadow .15s,border-color .15s,transform .15s}
.share-btn:hover{border-color:#b9cde3;box-shadow:var(--shadow-card);transform:translateY(-1px)}
.share-btn b{display:block;font-size:13.5px}.share-btn small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.share-btn .social-ic{flex:none;display:grid;place-items:center}
.share-btn .social-ic svg{width:20px;height:20px}
.share-tip{margin:12px 0 0;padding:10px 12px;border-radius:12px;background:#eef4fb;color:var(--navy)}
@media (max-width:760px){.cert-stats{grid-template-columns:repeat(2,1fr)}.share-grid{grid-template-columns:1fr}}

/* Certificates: cohort assignment rows */
.cert-assign{display:grid;gap:10px;margin-top:6px}
.cert-assign-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto minmax(220px,300px);align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff;transition:border-color .15s,box-shadow .15s}
.cert-assign-row:hover{border-color:#c4d5e8;box-shadow:var(--shadow-card)}
.cert-assign-thumb{width:64px;height:46px;border-radius:9px;overflow:hidden;background:#eef2f7;border:1px solid var(--border);display:grid;place-items:center;color:#9aabbe}
.cert-assign-thumb img{width:100%;height:100%;object-fit:cover}
.cert-assign-thumb svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cert-assign-info{min-width:0}.cert-assign-info b{display:block;color:var(--navy);font-size:14.5px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cert-assign-info small{display:block;margin-top:2px;color:var(--muted);font-size:12px}
.cert-select{position:relative}
.cert-select::after{content:"";position:absolute;right:14px;top:50%;width:7px;height:7px;border-right:2px solid var(--navy-2);border-bottom:2px solid var(--navy-2);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.cert-select select{appearance:none;-webkit-appearance:none;width:100%;height:42px;padding:0 38px 0 14px;border:1.5px solid #d3deea;border-radius:var(--r-pill);background:#f7f9fc;color:var(--navy);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;text-overflow:ellipsis;transition:border-color .15s,box-shadow .15s,background .15s}
.cert-select select:hover:not(:disabled){border-color:#9db7d3;background:#fff}
.cert-select select:focus{outline:none;border-color:var(--navy-2);background:#fff;box-shadow:0 0 0 4px rgba(13,67,119,.12)}
.cert-select select:disabled{opacity:.6;cursor:not-allowed}
@media (max-width:760px){.cert-assign-row{grid-template-columns:56px minmax(0,1fr) auto}.cert-assign-row .cert-select{grid-column:1/-1}.cert-assign-thumb{width:56px;height:40px}}

/* Quiz offered under a recording */
.recap-quiz-card{border:1px solid #d3dce7;border-radius:12px;padding:12px 14px;margin:10px 0;background:rgba(127,127,127,.04)}
.recap-quiz-card p{margin:4px 0 10px}

.staff-tools{flex-wrap:wrap;gap:8px;margin:10px 0}

.attendance-btn.clear{background:transparent;color:#6f7b8c;border:1px dashed #b9c3d0}
.attendance-btn.clear:hover{color:#d9534f;border-color:#d9534f}

/* ---------- Cohorts & Courses: tabs, cohort cards, stepped cohort form ---------- */
.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:6px;border-radius:999px;background:rgba(4,44,83,.08);color:var(--muted);font-size:11px;font-weight:700}
.tabs button.active .tab-count{background:var(--orange);color:var(--navy)}
.coh-search{max-width:340px;margin:0 0 14px}
.coh-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:16px}
.coh-card{display:flex;flex-direction:column;gap:14px;padding:20px}
.coh-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.coh-title{min-width:0}
.coh-title h3{margin:0;font-size:16px;font-weight:800;color:var(--navy);overflow-wrap:anywhere}
.coh-dates{margin:4px 0 0;font-size:12.5px;color:var(--muted)}
.coh-dates i{font-style:normal;margin:0 2px;color:#a8b5c6}
.coh-section small{display:block;margin-bottom:7px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#71839a}
.coh-card .course-chip.more{background:var(--navy);border-color:var(--navy);color:#fff}
.coh-flags{display:flex;flex-wrap:wrap;gap:6px}
.coh-flag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;background:var(--col);color:var(--muted);font-size:11.5px;font-weight:600}
.coh-flag.on{background:#e3f4ea;color:var(--green)}
.coh-foot{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:14px;border-top:1px solid var(--border)}
.coh-foot .action-more{margin-left:auto}
.coh-empty{text-align:center;padding:44px 20px}
.coh-empty h3{margin:0 0 4px}
.coh-empty .btn{margin-top:10px}

.coh-steps{display:flex;gap:8px;list-style:none;margin:14px 0 18px;padding:0}
.coh-steps li{flex:1;min-width:0}
.coh-steps button{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border-radius:var(--r-pill);background:#eef2f7;color:var(--muted);font-weight:700;font-size:12.5px;white-space:nowrap;overflow:hidden}
.coh-steps button span{display:inline-flex;align-items:center;justify-content:center;flex:none;width:22px;height:22px;border-radius:50%;background:#fff;color:var(--muted);font-size:11.5px}
.coh-steps li.active button{background:var(--navy);color:#fff}
.coh-steps li.active button span{background:var(--orange);color:var(--navy)}
.coh-steps li.done button{background:#e3f4ea;color:var(--green)}
.coh-steps li.done button span{background:var(--green);color:#fff}
.coh-step[hidden]{display:none}
.coh-step-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.coh-courses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:300px;overflow-y:auto;padding:2px}
.coh-course{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;background:#fff;transition:border-color .15s,background .15s}
.coh-course[hidden]{display:none}
.coh-course input{margin:2px 0 0;width:18px;height:18px;accent-color:var(--navy-2);flex:none}
.coh-course b{display:block;font-size:13px;font-weight:700;line-height:1.35}
.coh-course small{display:block;color:var(--muted);font-size:11.5px}
.coh-course:has(input:checked){border-color:var(--orange);background:#fff8ec}
.coh-setting{display:flex;align-items:flex-start;gap:14px;padding:14px;margin-top:10px;border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer}
.coh-setting b{display:block;font-size:13.5px}
.coh-setting small{display:block;margin-top:2px;color:var(--muted);font-size:12px;line-height:1.45}
.coh-resources{margin-top:8px;max-height:200px;overflow-y:auto;padding:4px;border:1px dashed var(--border);border-radius:var(--r-md)}
.coh-err{min-height:18px;margin:12px 0 0;color:var(--red);font-size:12.5px;font-weight:600}
.coh-actions{margin-top:6px}
@media (max-width:700px){
  .coh-grid{grid-template-columns:1fr}
  .coh-courses{grid-template-columns:1fr}
  .coh-steps button{justify-content:center;padding:8px 6px;font-size:12px}
  .coh-steps button span{display:none}
  .coh-actions .btn{flex:1}
}

/* cohort card picture */
.coh-card{overflow:hidden}
.coh-cover{margin:-20px -20px 0;aspect-ratio:16/7;background:#e8eef2;overflow:hidden}
.coh-cover img{display:block;width:100%;height:100%;object-fit:cover}
.coh-img-row{display:flex;gap:14px;align-items:center}
.coh-img-prev{flex:none;width:168px;aspect-ratio:16/9;border-radius:var(--r-md);overflow:hidden;background:#eef2f7;border:1px dashed #c8d2de;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px}
.coh-img-prev:not(.empty){border-style:solid;border-color:var(--border)}
.coh-img-prev img{width:100%;height:100%;object-fit:cover;display:block}
.coh-img-ctl{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.coh-img-ctl .login-note{flex-basis:100%;margin:2px 0 0}
.coh-img-ctl .btn[hidden]{display:none}
@media (max-width:700px){.coh-img-row{flex-direction:column;align-items:stretch}.coh-img-prev{width:100%}.coh-cover{margin:-18px -18px 0}}
.file-links{display:flex;flex-direction:column;gap:6px;margin:6px 0}
.asg-files{display:flex;flex-direction:column;gap:4px;margin:4px 0 8px}

/* ---------- v40: Recording Q&A ---------- */
.nav-badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--orange);color:#fff;font-size:11.5px;font-weight:800;line-height:20px;text-align:center;flex:none}
.sidebar-collapsed .nav-badge{position:absolute;top:4px;right:10px;min-width:16px;height:16px;line-height:16px;font-size:10px;padding:0 4px}
.sess-sub svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:inline-block;vertical-align:-3px;margin-right:6px}
.rq-box{margin-top:14px;padding:14px 16px;border-radius:var(--r-md);background:#fff;box-shadow:0 1px 4px rgba(4,44,83,.06)}
.rq-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.rq-head-row .sess-sub{margin-top:2px}
.rq-head-row p{margin:0 0 10px}
.rq-ask{display:flex;flex-direction:column;gap:8px;margin:4px 0 12px}
.rq-ask textarea,.rq-reply-form textarea{width:100%;min-height:64px;resize:vertical;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:#fbfcfe;font-size:16px;line-height:1.45}
@media (min-width:701px){.rq-ask textarea,.rq-reply-form textarea{font-size:14px}}
.rq-ask textarea:focus,.rq-reply-form textarea:focus,.rq-at input:focus{border-color:var(--navy-2);background:#fff}
.rq-ask-row,.rq-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rq-grow{flex:1}
.rq-at{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}
.rq-at input{width:84px;padding:7px 10px;border:1px solid var(--border);border-radius:999px;font-size:14px;text-align:center;font-variant-numeric:tabular-nums}
.rq-none{margin:6px 0 0}
.rq-list{display:flex;flex-direction:column;gap:10px}
.rq-card{border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px;background:#fff}
.rq-card.st-open{border-left:4px solid var(--orange)}
.rq-card.st-answered{border-left:4px solid var(--green)}
.rq-card.st-resolved{border-left:4px solid #c9d3df;background:#fbfcfd}
.rq-card.fresh{box-shadow:0 0 0 3px rgba(248,154,32,.22)}
.rq-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rq-who{display:flex;flex-direction:column;min-width:0;flex:1}
.rq-who b{font-size:13.5px;overflow-wrap:anywhere}
.rq-who b small{font-weight:600;color:var(--muted);margin-left:4px}
.rq-who>small{color:var(--muted);font-size:12px}
.rq-pills{display:flex;gap:6px;flex-wrap:wrap}
.rq-time{display:inline-flex;align-items:center;gap:4px;padding:4px 10px 4px 7px;border-radius:999px;background:var(--navy);color:#fff;font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}
.rq-time svg{width:13px;height:13px;fill:currentColor;stroke:none}
.rq-time:hover{background:var(--navy-2)}
.rq-ctx{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 0;padding:7px 10px;border-radius:var(--r-sm);background:var(--bg);font-size:12.5px}
.rq-ctx span{color:var(--muted)}
.rq-ctx .link-btn{margin-left:auto;display:inline-flex;align-items:center;gap:2px;font-size:12.5px}
.rq-ctx .link-btn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.rq-body{margin:10px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}
.rq-thread{margin:10px 0 0;padding-left:12px;border-left:2px solid var(--border);display:flex;flex-direction:column;gap:8px}
.rq-reply{padding:8px 11px;border-radius:var(--r-sm);background:var(--bg)}
.rq-reply.staff{background:#e9f5ee}
.rq-reply-meta{display:flex;align-items:baseline;gap:8px;font-size:12.5px}
.rq-reply-meta small{color:var(--muted)}
.rq-team{margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--green);color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.02em}
.rq-reply p{margin:3px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.rq-reply-form{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.rq-actions{margin-top:8px}
.rq-actions .link-btn{font-size:13px}
.danger-link{color:var(--red)!important}
.rq-viewonly{margin:8px 0 0}
.rq-follow{margin-top:6px}
.rq-follow summary{cursor:pointer;color:var(--navy-2);font-weight:600;font-size:13px;list-style:none;display:inline-block}
.rq-follow summary::-webkit-details-marker{display:none}
.rq-follow summary::before{content:"+ "}
.rq-follow[open] summary::before{content:"– "}
.qa-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.qa-tools .tabs{margin-bottom:0}
.qa-tools input[type=search]{flex:1;min-width:200px;padding:9px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;font-size:16px}
@media (min-width:701px){.qa-tools input[type=search]{font-size:14px}}
.qa-n{margin-left:6px;font-weight:800;color:#a8620a}
.qa-n:empty{display:none}
.qa-alert{border-color:#f5d6a8}
.tutor-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;max-height:220px;overflow-y:auto;padding:2px}
.tutor-opt{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;background:#fff}
.tutor-opt:has(input:checked){border-color:var(--navy-2);background:#eef4fb}
.field .tutor-opt input{display:inline-block;width:18px;height:18px;min-height:0;padding:0;margin:2px 0 0;border:0;box-shadow:none;-webkit-appearance:checkbox;appearance:auto;accent-color:var(--navy-2);flex:none;background:none}
.tutor-opt span{display:flex;flex-direction:column;min-width:0}
.tutor-opt small{color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.tutor-accts{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
@media (max-width:600px){.rq-box{padding:12px}.rq-card{padding:11px 12px}.rq-ctx .link-btn{margin-left:0}.rq-ask-row .btn{flex:1}}

/* ---------- v84: assignments tab, deletes ---------- */
.asg-tools{flex-wrap:wrap}
.asg-sort{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}
.asg-sort select{padding:8px 30px 8px 12px;border:1px solid var(--border);border-radius:999px;background-color:#fff;font-size:13px;font-weight:600;color:var(--text)}
.asg-progress{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-width:460px}
.asg-prog-row{display:grid;grid-template-columns:72px 1fr 56px;align-items:center;gap:10px}
.asg-prog-row small{color:var(--muted);font-size:12px;font-weight:600}
.asg-prog-row>b{font-size:13px;text-align:right;font-variant-numeric:tabular-nums}
.asg-prog-row>b span{color:var(--muted);font-weight:600}
.asg-prog-row .asg-bar{margin:0}
.asg-bar.green i{background:var(--green)}
.asg-auto{font-size:12px;color:var(--muted)}
.asg-notes{font-size:12.5px;color:var(--muted)}
.asg-notes .link-btn{font-size:12.5px;color:#a8620a;font-weight:700}
.asg-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.grade-tabs{margin:4px 0 12px}
.grade-tabs small{margin-left:4px;font-weight:800;opacity:.7}
.grade-missing-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.grade-missing-head p{margin:0}
.grade-tip{margin:10px 0 0}
.sub-table tr.just-saved td{animation:savedFlash 1.4s ease}
@keyframes savedFlash{0%{background:#e3f4ea}100%{background:transparent}}
.ann-del,.msg-del{margin-left:auto;font-size:12.5px}
.bubble-meta{display:flex;align-items:baseline;gap:8px}
.msg-del{opacity:.7}
.bubble:hover .msg-del,.msg-del:focus-visible{opacity:1}
@media (max-width:600px){.asg-prog-row{grid-template-columns:64px 1fr 48px}}
.asg-prog-row .asg-bar:not(.green) i{background:linear-gradient(90deg,var(--navy-2),#2f6db0)}
.asg-sort select{width:auto;min-width:0;max-width:200px;min-height:0}

/* ---------- v86: Recordings tab (participants) ---------- */
.rec-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px}
.rec-tools input[type=search]{flex:1;min-width:200px;padding:9px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;font-size:16px}
.rec-tools select{padding:9px 32px 9px 14px;border:1px solid var(--border);border-radius:999px;background-color:#fff;font-size:14px;font-weight:600;max-width:240px}
@media (min-width:701px){.rec-tools input[type=search]{font-size:14px}}
.rec-chips{display:flex;gap:6px;flex-wrap:wrap}
.rec-continue{margin:0 0 18px}
.rec-continue h3{margin:0 0 10px;font-size:15px}
.rec-continue-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.rec-resume{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-md);background:var(--navy);color:#fff;text-align:left;box-shadow:var(--shadow-card)}
.rec-resume:hover{background:var(--navy-2)}
.rec-play{width:38px;height:38px;border-radius:50%;background:var(--orange);display:flex;align-items:center;justify-content:center;flex:none}
.rec-play svg{width:16px;height:16px;fill:#fff;stroke:none;margin-left:2px}
.rec-resume-copy{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.rec-resume-copy b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rec-resume-copy small{opacity:.8;font-size:12px}
.rec-resume .rec-bar{background:rgba(255,255,255,.2)}
.rec-group{margin:0 0 20px}
.rec-group-h{margin:0 0 10px;font-size:15px;color:var(--navy)}
.rec-group-h small{font-weight:600;color:var(--muted);font-size:12.5px;margin-left:6px}
.rec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.rec-card{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border-top:4px solid var(--rc,var(--navy-2))}
.rec-card.st-done{opacity:.92}
.rec-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rec-course{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--muted);min-width:0}
.rec-course i{width:8px;height:8px;border-radius:50%;flex:none}
.rec-card h4{margin:0;font-size:15.5px;line-height:1.3}
.rec-when{margin:0;color:var(--muted);font-size:12.5px}
.rec-progress{display:flex;flex-direction:column;gap:5px}
.rec-progress small{color:var(--muted);font-size:12.5px}
.rec-ok{color:var(--green)}
.rec-bar{position:relative;display:block;height:7px;border-radius:999px;background:#e8eef5;overflow:visible}
.rec-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--navy-2),#2f6db0);max-width:100%}
.rec-bar i.done{background:linear-gradient(90deg,#2f8f5b,#43b378)}
.rec-mark{position:absolute;top:-3px;width:2px;height:13px;background:var(--orange);border-radius:2px;transform:translateX(-1px)}
.rec-files{margin:2px 0 0}
.rec-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:4px}
.rec-actions .btn svg{width:14px;height:14px;fill:currentColor;stroke:none;margin-right:5px;display:inline-block;vertical-align:-2px}
.rec-extras{color:var(--muted);font-size:12px}
@media (max-width:600px){.rec-grid{grid-template-columns:1fr}.rec-actions .btn{flex:1;justify-content:center}}
.rec-resume .rec-bar i{background:var(--orange)}
.rec-tools select{width:auto;min-width:0;min-height:0}

/* ---------- v86: missed-session prompt ---------- */
.missed-card{border-left:5px solid var(--red);margin-bottom:16px}
.missed-card h3{margin:2px 0 4px}
.missed-card .card-heading{align-items:flex-start;gap:12px}
.missed-card .login-note{margin:0}
.missed-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.missed-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-md);background:var(--bg)}
.missed-dot{width:10px;height:10px;border-radius:50%;flex:none}
.missed-copy{display:flex;flex-direction:column;min-width:0;flex:1}
.missed-copy b{overflow-wrap:anywhere}
.missed-copy small{color:var(--muted);font-size:12.5px}
.missed-acts{display:flex;align-items:center;gap:10px;flex:none}
.missed-acts .btn svg{width:14px;height:14px;fill:currentColor;stroke:none;margin-right:5px;display:inline-block;vertical-align:-2px}
.missed-acts .link-btn{font-size:12.5px;color:var(--muted)}
.rec-missed-note{margin:0;padding:8px 10px;border-radius:var(--r-sm);background:#fdecea;color:#9b2c27;font-size:12.5px;font-weight:600}
@media (max-width:600px){.missed-row{flex-wrap:wrap}.missed-acts{width:100%;justify-content:space-between}.missed-acts .btn{flex:1;justify-content:center}}

/* ---------- v87: who can see a session ---------- */
.sess-audience:empty{display:none}
.aud-note{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:10px 0;padding:10px 12px;border-radius:var(--r-sm);font-size:13px}
.aud-note small{display:block;margin-top:3px;color:var(--muted)}
.aud-note.ok{background:#e9f5ee;color:#1b6b3a}
.aud-note.warn{background:#fdf0dc;color:#7a4508;border:1px solid #f5d6a8}
.miss-courses{display:block;color:#a8620a!important;font-weight:600}
.coh-enrol-existing{margin-top:12px}
.dash-other-coh{margin:8px 0 0;padding:8px 10px;border-radius:var(--r-sm);background:#fdf0dc;font-size:12.5px;color:#7a4508}

/* ---------- v87: access troubleshooting ---------- */
.aud-note.bad{background:#fdecea;color:#8f2420;border:1px solid #f6c6c2}
.acc-problems .aud-note{margin:8px 0}
.acc-sum{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0 12px;font-size:13px}
.acc-list{display:flex;flex-direction:column;gap:6px;max-height:52vh;overflow-y:auto}
.acc-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:#fff}
.acc-who{display:flex;flex-direction:column;min-width:0;flex:1}
.acc-who small{color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.acc-pills{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.acc-sessions{display:flex;flex-direction:column;gap:6px}
.acc-sess{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--r-sm);background:var(--bg)}
.acc-sess div{flex:1;min-width:0;display:flex;flex-direction:column}
.acc-sess small{color:var(--muted);font-size:12px}
.acc-mark{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex:none}
.acc-sess.ok .acc-mark{background:#e3f4ea;color:var(--green)}
.acc-sess.no .acc-mark{background:#fdecea;color:var(--red)}
.acc-why{font-size:12.5px;font-weight:700;color:var(--muted);text-align:right}
.acc-sess.no .acc-why{color:var(--red)}
@media (max-width:600px){.acc-row{flex-wrap:wrap}.acc-pills{justify-content:flex-start}.acc-sess{flex-wrap:wrap}.acc-why{width:100%;text-align:left;padding-left:32px}}
.recap-mark.present{background:#1f9d55;opacity:.8}
.recap-scale{position:relative;height:14px;margin:-6px 0 6px;font-size:11px;color:var(--muted,#64748b)}
.recap-scale span{position:absolute;transform:translateX(-50%);white-space:nowrap}
.rec-mark.present{background:#1f9d55}

/* ---- v89: time zone chip, preview bar, access-check time zone ---- */
.tz-chip{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:var(--r-md);border:1px solid var(--border);background:#fff;color:var(--navy);font:inherit;cursor:pointer;flex:none}
.tz-chip svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.tz-chip span{display:flex;flex-direction:column;line-height:1.1;text-align:left}
.tz-chip b{font-size:13px}
.tz-chip small{font-size:10.5px;color:var(--muted);max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tz-chip:hover{border-color:var(--orange)}
.tz-chip.previewing{border-color:var(--orange);background:#fff8ee}
@media(max-width:700px){.tz-chip small{display:none}.tz-chip{padding:0 10px}}
@media(max-width:420px){.tz-chip span{display:none}.tz-chip{width:40px;justify-content:center;padding:0}}
.tz-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px;padding:10px 14px;border-radius:14px;background:#fff4e2;border:1px solid #f3c98e;font-size:13px;color:var(--text)}
.acc-tz{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#f8fafc}
.acc-tz-now{display:flex;flex-direction:column;align-items:center;min-width:84px}
.acc-tz-now b{font-size:20px;color:var(--navy)}
.acc-tz-now small,.acc-tz-copy small{color:var(--muted);font-size:12px}
.acc-tz-copy{flex:1;min-width:220px;display:flex;flex-direction:column;gap:3px}
.acc-tz-form{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}
.acc-tz-form select{max-width:300px;flex:1}

/* ---- v89: participant dashboard ---- */
.dash-tz{display:inline-flex;align-items:center;gap:4px;margin-left:6px;font-size:12px;vertical-align:middle}
.dash-tz svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
.dash-h{margin:0 0 10px;font-size:14px;color:var(--navy);letter-spacing:.01em}
.dash-hero{align-items:stretch}
.dash-next{display:flex;flex-direction:column}
.dash-next.live{border-color:#9fd8b8;background:linear-gradient(135deg,#fff 0%,#f0faf4 100%)}
.dash-next h3{font-size:18px;line-height:1.3}
.dash-next .dash-next-when{display:flex;gap:10px;align-items:flex-start;margin:12px 0 4px}
.dash-next-when svg{flex:none;width:18px;height:18px;margin-top:2px;fill:none;stroke:var(--orange);stroke-width:2}
.dash-next-when span{display:flex;flex-direction:column}
.dash-next-when b{font-size:14px;color:var(--navy)}
.dash-next-when small{font-size:11.5px;color:var(--muted)}
.dash-next .dash-next-course{margin:0 0 12px 28px;color:var(--muted);font-size:12.5px}
.dash-join{align-self:flex-start;margin-top:4px}
.dash-next .text-btn{margin-top:auto;padding-top:12px;align-self:flex-start}
.dash-later-h{margin-top:14px;padding-top:12px;border-top:1px solid var(--border);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.dash-next .dash-later{margin-top:8px;padding-top:0;border-top:0}
.dash-att{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.dash-att-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--muted)}
.dash-att-head b{font-size:18px;color:var(--navy)}
.dash-att-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0 8px}
.dash-att-cell{display:flex;flex-direction:column;align-items:center;padding:8px 4px;border-radius:12px;background:#f4f7fa;border-top:3px solid var(--muted)}
.dash-att-cell b{font-size:17px;color:var(--navy);line-height:1.1}
.dash-att-cell small{font-size:10.5px;color:var(--muted);text-align:center}
.dash-att-cell.green{border-top-color:var(--green)}
.dash-att-cell.orange{border-top-color:var(--orange)}
.dash-att-cell.grey{border-top-color:#94a3b8}
.dash-att-cell.red{border-top-color:var(--red)}
.dash-att .login-note{display:block;font-size:11.5px;line-height:1.5}
.missed-card .login-note b{color:var(--navy)}
@media(max-width:560px){.dash-att-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-next h3{font-size:16px}.dash-join{align-self:stretch;justify-content:center}}

/* ---- v89: Teams attendance import ---- */
.ti-drop{margin:0 0 14px;padding:14px 16px;border:2px dashed #c9d6e4;border-radius:16px;background:#f8fbfe;font-size:13px;color:var(--muted);cursor:pointer;line-height:1.5}
.ti-drop b{color:var(--navy)}
.ti-drop:hover,body.ti-drag .ti-drop{border-color:var(--orange);background:#fff8ee}
body.ti-drag .attendance-card{outline:2px dashed var(--orange);outline-offset:4px}
.ti-btn svg{transform:rotate(180deg)}
.ti-setup{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.2fr) minmax(0,1fr);gap:12px;margin:6px 0 10px}
.ti-setup .field{margin:0}.ti-setup small{display:block;margin-top:4px}
.ti-rules{margin:8px 0;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:#f8fafc;font-size:13px}
.ti-rules summary{cursor:pointer}
.ti-rule-grid{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px}
.ti-rule-grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.ti-rule-grid input{width:110px}
.ti-sum{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 4px}
.ti-table td small{display:block}
.ti-table td{vertical-align:middle}
.ti-table tr.ti-skip{opacity:.55}
.ti-bar{position:relative;display:block;width:120px;height:7px;border-radius:9px;background:#e6edf5;margin-bottom:4px}
.ti-bar i{display:block;height:100%;border-radius:9px;background:var(--navy-2)}
.ti-bar b{position:absolute;top:-2px;width:2px;height:11px;background:#94a3b8}
.ti-st{min-width:120px;font-weight:600}
.ti-st.st-present{color:var(--green)}.ti-st.st-late{color:#b86b00}.ti-st.st-absent{color:var(--red)}
.ti-cur.kept{color:var(--navy);font-weight:600}
.ti-ignored{margin:12px 0;font-size:13px;color:var(--muted)}
.ti-ignored ul{margin:6px 0 0;padding-left:18px}
.ti-foot{position:sticky;bottom:-1px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding:12px 0 2px;background:var(--card,#fff);border-top:1px solid var(--border)}
.ti-foot .check{margin:0;max-width:560px}
@media(max-width:800px){.ti-setup{grid-template-columns:1fr}}
.ti-table th,.ti-table td{padding-top:8px;padding-bottom:8px}
.ti-table select{padding:6px 10px;border:1px solid var(--border);border-radius:10px;background:#fff;font:inherit;font-size:13px;min-width:200px;max-width:100%}
.ti-others{margin:14px 0 6px;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:#f8fafc}
.ti-others summary{cursor:pointer;font-size:13px}
.ti-others summary small{display:inline;margin-left:4px}
.ti-others .table-wrap{margin-top:10px}
.missed-copy small{display:block}
.missed-st{font-weight:600}.missed-st.st-absent,.missed-st.st-unmarked{color:var(--red)}.missed-st.st-excused{color:#64748b}.missed-st.st-late{color:#b86b00}

/* =====================================================================
   v89: every browser, every screen size
   Safari (macOS + iOS 14+), Chrome, Edge, Firefox, Samsung Internet; 320 px phones to wide desktops.
   ===================================================================== */

/* -- browser differences -- */
html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}
img,video,canvas,iframe{max-width:100%}
button,input,select,textarea{font-family:inherit}
select{text-overflow:ellipsis}
/* iPhone/iPad Safari zooms the whole page into any field with text under 16 px and does not zoom back out. */
@media (hover:none) and (pointer:coarse){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select,textarea{font-size:16px!important}
}
/* Older Safari/Firefox without color-mix(): plain tints instead of a white box. */
@supports not (background:color-mix(in srgb,red 50%,blue)){
  .event{background:#f6f9fc}.event.asg-event{background:#fbfcfe}
  .agenda-item[style*="--ec"] .agenda-date{background:var(--col)}
  .my-cohort-card.active{background:#fff8ee}
}
/* Safari before 15 has no aspect-ratio: give video frames a real height instead of 150 px. */
@supports not (aspect-ratio:1/1){
  .recap-player iframe{height:56vw;max-height:540px}
  #qzCam,.qz-snaps img{height:auto}
  .coh-cover{height:0;padding-top:43.75%}
}
/* Firefox before 121 has no :has(): ticked options get the same highlight through the checkbox itself. */
@supports not selector(:has(*)){
  .coh-course input:checked+span,.tutor-opt input:checked+span{font-weight:700;color:var(--navy)}
}
/* Thin, consistent scrollbars where a box scrolls sideways (tables, calendars) */
.table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.table-wrap::-webkit-scrollbar{height:8px}.table-wrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px}

/* -- nothing may push the page sideways -- */
.main,#content,#content>*,.card,.grid>*,.dash-two>*,.dash-attn>*,.page-header>*,.section-title>*{min-width:0}
#content{overflow-wrap:break-word}
.main{overflow-x:clip}
/* (no overflow:hidden fallback: it would stop the sticky top bar working in older Safari) */

/* -- top bar: title shrinks first, then labels drop away -- */
.top>div:first-child{min-width:0;flex:1 1 auto}
.top-actions{min-width:0;flex:0 1 auto}
@media (max-width:1180px){.user span:first-child{display:none}}
@media (max-width:1100px){.cohort-switch>span,.cohort-pm{display:none}.cohort-switch{max-width:220px}}
@media (max-width:520px){
  .top .user{display:none}                 /* the name and sign-out are in the menu */
  .top-actions{gap:8px}
  .cohort-switch{max-width:132px;padding:4px 6px}
  .cohort-switch select{max-width:100%;min-width:0}
  .icon-btn,.notif-btn,.tz-chip{width:38px;height:38px}
  .tz-chip span{display:none}.tz-chip{justify-content:center;padding:0}
  .top h1{font-size:18px}
}
@media (max-width:360px){.cohort-switch{max-width:104px}.top-actions{gap:6px}}

/* -- tablets (701-1100 px): the menu becomes an icon rail so pages get the width -- */
@media (min-width:701px) and (max-width:1100px){
  .sidebar{width:var(--sb-collapsed);padding-left:12px;padding-right:12px}
  .main{margin-left:var(--sb-collapsed);width:calc(100% - var(--sb-collapsed));padding-left:20px;padding-right:20px}
  .brand{padding:2px 0 14px}.brand img{display:none}.brand-mark{display:block}
  .brand small,.nav-label,.collapse-nav,.side-foot span,.side-foot button{display:none}
  .nav button{justify-content:center;padding:0}
  .nav button.active::before{left:-12px}
  .side-foot{text-align:center;padding-left:0;padding-right:0}
  .side-foot b{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* -- Attendance toolbar: wraps instead of overflowing -- */
.attendance-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px}
.attendance-controls .attendance-session-field{flex:2 1 300px;min-width:0;margin:0}
.attendance-controls .attendance-search{flex:1 1 220px;min-width:0}
.attendance-controls .att-toggle{flex:0 0 auto}
.attendance-controls .attendance-bulk{flex:0 0 auto;width:auto;max-width:100%}
.attendance-controls select{width:100%;max-width:100%;min-width:0}
@media (max-width:640px){
  .attendance-controls .attendance-session-field,.attendance-controls .attendance-search,.attendance-controls .att-toggle{flex:1 1 100%}
  .attendance-controls .attendance-bulk{flex:1 1 100%;white-space:normal;height:auto;min-height:42px}
}

/* -- Participants filters: wrap on smaller screens -- */
.participant-admin-toolbar{display:flex;flex-wrap:wrap;gap:10px}
.participant-admin-toolbar .search-field{flex:2 1 260px;min-width:0}
.participant-admin-toolbar select{flex:1 1 150px;min-width:0;max-width:100%}
.participant-admin-toolbar>.btn{flex:0 0 auto}
.page-header{flex-wrap:wrap}
.page-header-actions{display:flex;flex-wrap:wrap;gap:10px}
@media (max-width:640px){.participant-admin-toolbar select{flex:1 1 calc(50% - 10px)}.page-header-actions,.page-header-actions .btn{width:100%}}

/* -- participant dashboard on small phones -- */
@media (max-width:420px){
  .dash-later li{flex-wrap:wrap;row-gap:2px}
  .dash-later li span{white-space:normal}
  .missed-row{flex-wrap:wrap}
  .missed-acts{width:100%;justify-content:flex-start}
  .dash-next-course{margin-left:0!important}
}

/* -- pop-ups on phones: full width, comfortable buttons -- */
@media (max-width:600px){
  .modal-card.wide{width:100%}
  .sess-actions,.modal-actions{flex-wrap:wrap}
  .sess-actions .btn,.modal-actions .btn{flex:1 1 auto}
  .ti-foot{flex-direction:column;align-items:stretch}
  .ti-foot .sess-actions{justify-content:stretch}
  .acc-tz{flex-direction:column;align-items:flex-start}
  .tz-preview .btn{width:100%}
}
/* Touch screens: bigger targets for small links */
@media (pointer:coarse){.link-btn,.text-btn{min-height:36px;display:inline-flex;align-items:center}}
.attendance-table-head{flex-wrap:wrap}
.attendance-table-head>div{min-width:0;max-width:100%}
.attendance-table-head h3{white-space:normal;overflow-wrap:anywhere;max-width:100%}

/* ---- v89: quiz creation window ---- */
.qz-modal{padding-bottom:0}
.qz-tabs{position:sticky;top:-22px;z-index:3;display:flex;gap:4px;margin:4px -4px 14px;padding:8px 4px 0;background:#fff;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}
.qz-tabs::-webkit-scrollbar{display:none}
.qz-tabs button{position:relative;flex:none;padding:10px 14px;border:0;border-bottom:3px solid transparent;background:none;font:inherit;font-weight:700;font-size:13.5px;color:var(--muted);cursor:pointer}
.qz-tabs button.on{color:var(--navy);border-bottom-color:var(--orange)}
.qz-dot{position:absolute;top:8px;right:4px;width:7px;height:7px;border-radius:50%;background:var(--red)}
.qz-tab-body{min-height:300px}
.qz-span2{grid-column:1/-1}
.qz-presets{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;margin:0 0 16px}
.qz-presets>span{align-self:center;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.qz-preset{flex:1 1 180px;display:flex;flex-direction:column;gap:2px;padding:10px 14px;border:1px solid var(--border);border-radius:14px;background:#f8fafc;font:inherit;text-align:left;cursor:pointer}
.qz-preset b{font-size:13.5px;color:var(--navy)}.qz-preset small{font-size:12px;color:var(--muted)}
.qz-preset:hover{border-color:var(--orange);background:#fff8ee}
.qz-more{margin:4px 0 14px;padding:10px 14px;border:1px solid var(--border);border-radius:12px}
.qz-more summary{cursor:pointer;font-weight:700;font-size:13.5px;color:var(--navy)}.qz-more[open] summary{margin-bottom:10px}
.qz-h{margin:6px 0 10px;font-size:15px;color:var(--navy)}
.qz-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}
.qz-mode{position:relative;display:flex;flex-direction:column;gap:4px;padding:14px 14px 14px 40px;border:1.5px solid var(--border);border-radius:14px;cursor:pointer;background:#fff}
.qz-mode input{position:absolute;left:14px;top:16px;accent-color:var(--orange)}
.qz-mode b{font-size:14px;color:var(--navy)}.qz-mode small{font-size:12px;line-height:1.45;color:var(--muted)}
.qz-mode.on{border-color:var(--orange);background:#fff8ee}
.qz-session{margin:0 0 16px;padding:14px 16px;background:#f8fafc}
.qz-session .field{margin-bottom:8px}
.qz-inline-check{display:flex;align-items:center;gap:8px}
.qz-sub{margin:-4px 0 10px 30px;padding-left:12px;border-left:2px solid var(--border)}
.qz-q-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.qz-paste{margin:0 0 12px;padding:12px}
.qz-paste textarea{width:100%;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}
.qz-paste-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:8px}
.qz-jump{position:sticky;top:30px;z-index:2;display:flex;flex-wrap:wrap;gap:5px;margin:10px 0;padding:8px 0;background:#fff}
.qz-jump button{min-width:30px;height:30px;padding:0 6px;border:1px solid var(--border);border-radius:8px;background:#fff;font:inherit;font-size:12px;font-weight:700;color:var(--navy);cursor:pointer}
.qz-jump button.bad{border-color:#f3b4b2;background:#fdecec;color:var(--red)}
.qz-add-bottom{margin:6px 0 4px;width:100%}
.qz-save-bar{position:sticky;bottom:0;z-index:3;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:16px -26px 0;padding:12px 26px calc(14px + var(--sab));background:#fff;border-top:1px solid var(--border)}
.qz-status{font-size:13px;min-width:0}.qz-bad{color:var(--red);font-weight:600}.qz-ok{color:var(--green);font-weight:600}
.qz-save-btns{display:flex;gap:8px}
@media (max-width:760px){.qz-modes{grid-template-columns:1fr}.qz-save-bar{margin:16px -18px 0;padding:12px 18px calc(14px + var(--sab))}.qz-save-btns{width:100%}.qz-save-btns .btn{flex:1}.qz-tabs{top:-20px}}
.qz-time{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qz-time input[type=number]{width:110px}
.qz-switch{display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 12px;border:1px solid var(--border);border-radius:11px;cursor:pointer;font-weight:600;font-size:13px}
.qz-switch input{width:18px;height:18px;margin:0;accent-color:var(--orange);flex:none}
.qz-unit{font-size:13px;color:var(--muted)}
.field .qz-switch{display:inline-flex;margin:0;width:auto}
.field .qz-switch input[type=checkbox]{width:18px!important;height:18px!important;min-height:0;padding:0;border:0;border-radius:4px;box-shadow:none;background:none;-webkit-appearance:checkbox;appearance:auto}

/* ---- v89: admin dashboard ---- */
.adm{display:flex;flex-direction:column;gap:16px}
.adm-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.adm-head h2{margin:4px 0;font-size:24px;letter-spacing:-.02em;color:var(--navy)}
.adm-head p{margin:0;color:var(--muted);font-size:13px}
.adm-actions{display:flex;flex-wrap:wrap;gap:8px}
.adm-todo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.adm-todo-tile{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:#fff;font:inherit;text-align:left;cursor:pointer;color:inherit;box-shadow:var(--shadow-card);transition:transform .15s,border-color .15s}
.adm-todo-tile:hover{transform:translateY(-1px);border-color:var(--orange)}
.adm-todo-tile.hot{border-color:#f3c98e;background:linear-gradient(135deg,#fff 0%,#fff8ee 100%)}
.adm-todo-tile em{flex:none;min-width:38px;height:38px;padding:0 8px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;font-size:17px;background:#fdf0dc;color:#a8620a}
.adm-todo-tile span{flex:1;min-width:0}
.adm-todo-tile b{display:block;font-size:13.5px;color:var(--navy)}
.adm-todo-tile small{display:block;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-todo-tile>svg{flex:none;width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:2}
.adm-allclear{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:14px;background:#eaf7ef;color:#1b6b3a;font-size:13.5px}
.adm-allclear svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2}
.adm-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.adm-card{padding:18px 20px;margin:0}
.adm-card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}
.adm-card-h h3{margin:2px 0 0;font-size:16px;color:var(--navy)}
.adm-empty{margin:6px 0;color:var(--muted);font-size:13px}
.adm-sub{margin:14px 0 6px;padding-top:12px;border-top:1px solid var(--border);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.adm-sess{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.adm-sess:last-of-type{border-bottom:0}
.adm-sess.live{margin:0 -10px;padding:10px;border-radius:12px;background:#eef9f2;border-bottom:0}
.adm-sess-time{flex:none;width:64px;display:flex;flex-direction:column}
.adm-sess-time b{font-size:13.5px;color:var(--navy)}.adm-sess-time small{font-size:11.5px;color:var(--muted)}
.adm-sess-copy{flex:1;min-width:0}.adm-sess-copy b{display:block;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adm-sess-copy small{font-size:12px;color:var(--muted)}
.adm-sess-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.adm-line{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:7px 0;font-size:13px;border:0;background:none;font-family:inherit;color:inherit;text-align:left}
.adm-line>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-line small{flex:none;color:var(--muted);font-size:12px}
.adm-link{cursor:pointer;border-radius:8px}.adm-link:hover{background:#f6f9fc}
.adm-warn{color:#b86b00;font-weight:700}
.adm-up{color:var(--green);font-weight:600}.adm-down{color:var(--red);font-weight:600}
.adm-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.adm-kpi{margin:0;padding:16px 18px;display:flex;flex-direction:column;gap:2px}
.adm-kpi small{font-size:12px;color:var(--muted);font-weight:600}
.adm-kpi strong{font-size:28px;line-height:1.15;color:var(--navy);letter-spacing:-.02em}
.adm-kpi strong em{font-style:normal;font-size:16px;color:var(--muted);font-weight:600}
.adm-kpi span{font-size:12px;color:var(--muted)}
.adm-stack{display:flex;height:14px;border-radius:9px;overflow:hidden;background:#eef2f6;margin:6px 0 10px}
.adm-stack i{display:block;height:100%}
.adm-stack .ok,.adm-legend .ok{background:var(--green)}.adm-stack .risk,.adm-legend .risk{background:var(--orange)}.adm-stack .low,.adm-legend .low{background:var(--red)}.adm-stack .none,.adm-legend .none{background:#cbd5e1}
.adm-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--muted)}
.adm-legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}
.adm-legend b{color:var(--navy);margin-left:3px}
.adm-person{display:flex;align-items:center;gap:10px;padding:7px 0}
.adm-person .person-avatar.small{width:32px;height:32px;font-size:11px;flex:none}
.adm-person-n{flex:1;min-width:0}.adm-person-n b{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adm-person-n small{font-size:11.5px;color:var(--muted)}
.adm-score{font-weight:800;font-size:13.5px}.adm-score.risk{color:#b86b00}.adm-score.low{color:var(--red)}
.adm-trend{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.adm-trend:last-child{border-bottom:0}
.adm-trend b{display:block;font-size:13.5px;color:var(--navy)}.adm-trend small{font-size:12px;color:var(--muted)}
.adm-spark{width:140px;height:36px;flex:none;overflow:visible}
.adm-spark path{fill:none;stroke:var(--orange);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.adm-spark-empty{font-size:12px;color:var(--muted)}
.adm-course{display:flex;justify-content:space-between;padding:7px 0;font-size:13px}
.adm-table{width:100%;border-collapse:collapse;font-size:13px}
.adm-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:6px 8px;border-bottom:1px solid var(--border)}
.adm-table td{padding:9px 8px;border-bottom:1px solid var(--border);white-space:nowrap}
.adm-table tr:last-child td{border-bottom:0}
.adm-table .course-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px}
.adm-mini{display:inline-block;width:60px;height:6px;border-radius:6px;background:#e6edf5;margin-right:8px;vertical-align:middle;overflow:hidden}
.adm-mini i{display:block;height:100%;background:var(--navy-2)}
.adm-muted{color:var(--muted)}
.adm-cohort{padding:9px 0;border-bottom:1px solid var(--border)}.adm-cohort:last-child{border-bottom:0}
.adm-cohort-top{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:13.5px}
.adm-cohort-top b{color:var(--navy)}
.adm-cohort-bar{height:7px;border-radius:7px;background:#e6edf5;margin:7px 0 5px;overflow:hidden}
.adm-cohort-bar i{display:block;height:100%;background:var(--orange)}
.adm-cohort small{font-size:12px;color:var(--muted)}
.adm-act{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px;border-bottom:1px solid var(--border)}.adm-act:last-child{border-bottom:0}
.adm-act-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-act small{flex:none;color:var(--muted);font-size:12px}
@media (max-width:1100px){.adm-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){.adm-grid{grid-template-columns:1fr}}
@media (max-width:600px){.adm-head h2{font-size:20px}.adm-actions{width:100%}.adm-actions .btn{flex:1 1 auto}.adm-kpi strong{font-size:24px}.adm-sess{flex-wrap:wrap}.adm-sess-act{width:100%;justify-content:flex-start;padding-left:76px}.adm-todo-grid{grid-template-columns:1fr}}
@media (max-width:380px){.adm-kpis{grid-template-columns:1fr}}
.adm-todo-grid>*{min-width:0}
.adm-todo-tile{width:100%;box-sizing:border-box}
.adm-line b{flex:none;white-space:nowrap}
.adm-grid>*,.adm-kpis>*{min-width:0}
.dup-title{display:none!important}

/* ---- v89: quiz extra access ---- */
.qz-acc{margin-top:16px;padding:16px 18px;background:#f8fafc}
.qz-acc-h{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.qz-acc-h h3{margin:0 0 4px;font-size:15px;color:var(--navy)}
.qz-acc-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 6px}
.qz-acc-tools .chips{display:flex;flex-wrap:wrap;gap:6px}
.qz-acc-all{margin:0}
.qz-acc-list{max-height:300px;overflow-y:auto;border:1px solid var(--border);border-radius:12px;background:#fff}
.qz-acc-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border);cursor:pointer}
.qz-acc-row:last-child{border-bottom:0}
.qz-acc-row input{flex:none;width:18px;height:18px;accent-color:var(--orange)}
.qz-acc-n{flex:1;min-width:0}.qz-acc-n b{display:block;font-size:13.5px}.qz-acc-n small{font-size:12px;color:var(--muted)}
.qz-acc-has{font-size:12px;color:var(--green);font-weight:600;white-space:nowrap}
.qz-acc-note{display:block;margin-top:4px;font-size:11.5px;color:var(--green)}
.qz-acc-foot{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-top:12px}
.qz-acc-foot .field{margin:0}
.qz-acc-quick{display:flex;gap:6px;flex-wrap:wrap}
@media (max-width:600px){.qz-acc-foot>.btn{width:100%}.qz-acc-has{white-space:normal}}
.qz-acc-row.has{background:#f3faf5;cursor:default}
.qz-acc-row.has input{opacity:.5}
.clock-bar{margin:0 0 14px;padding:10px 14px;border-radius:14px;background:#fdecec;border:1px solid #f3b4b2;color:#7a1f1c;font-size:13px;line-height:1.5}

/* ---- v89: viewing a submission (with AI highlights) ---- */
body.sv-open{overflow:hidden}
#subViewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:flex;flex-direction:column;background:#eef2f6}
.sv-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 18px calc(12px) calc(18px + var(--sal));padding-top:calc(12px + var(--sat));background:#fff;border-bottom:1px solid var(--border);box-shadow:0 2px 10px rgba(4,44,83,.06)}
.sv-who{min-width:0}.sv-who b{display:block;font-size:16px;color:var(--navy)}.sv-who small{font-size:12.5px;color:var(--muted)}
.sv-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sv-count{font-size:12.5px;color:var(--muted);min-width:44px;text-align:center}
.sv-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;padding:16px 18px calc(16px + var(--sab))}
.sv-main{min-height:0;overflow:auto;background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 22px;-webkit-overflow-scrolling:touch}
.sv-side{min-height:0;overflow:auto;display:flex;flex-direction:column;gap:12px}
.sv-box{background:#fff;border:1px solid var(--border);border-radius:16px;padding:14px 16px}
.sv-box h4{margin:0 0 8px;font-size:14px;color:var(--navy)}
.sv-big{margin:0 0 8px;font-size:26px;font-weight:800;color:var(--navy)}.sv-big small{font-size:12.5px;font-weight:600;color:var(--muted)}
.sv-doc{white-space:pre-wrap;overflow-wrap:break-word;font-size:14.5px;line-height:1.75;color:var(--text);font-family:Georgia,'Times New Roman',serif}
.sv-sub{margin:20px 0 8px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.sv-pdf{width:100%;height:calc(100% - 46px);min-height:70vh;border:0;border-radius:10px;background:#525659}
.sv-img{text-align:center}.sv-img img{max-width:100%;height:auto;border-radius:8px}
.sv-tabs{display:flex;gap:4px;margin:-4px 0 12px}
.sv-tabs button{padding:7px 12px;border:1px solid var(--border);border-radius:999px;background:#fff;font:inherit;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer}
.sv-tabs button.on{background:var(--navy);border-color:var(--navy);color:#fff}
.sv-hint{margin-top:8px}
mark.ai-hi,mark.ai-mid,mark.ai-low{border-radius:3px;padding:1px 0;color:inherit;-webkit-box-decoration-break:clone;box-decoration-break:clone}
mark.ai-hi{background:#fbc4c1;box-shadow:inset 0 -2px 0 #d9534f}
mark.ai-mid{background:#fde2b8;box-shadow:inset 0 -2px 0 #f08a00}
mark.ai-low{background:#fdf3c4}
mark.flash{outline:3px solid var(--navy);outline-offset:2px}
.sv-legend{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 10px;font-size:12px}
.sv-legend mark{padding:2px 6px}
.sv-toggle{margin:0}
.sv-list{list-style:none;margin:0;padding:0;max-height:38vh;overflow:auto;border-top:1px solid var(--border)}
.sv-list li button{display:flex;gap:8px;align-items:flex-start;width:100%;padding:8px 2px;border:0;border-bottom:1px solid var(--border);background:none;font:inherit;font-size:12.5px;line-height:1.4;text-align:left;color:var(--text);cursor:pointer}
.sv-list li button:hover{background:#f6f9fc}
.sv-p{flex:none;min-width:40px;padding:2px 6px;border-radius:6px;font-weight:800;font-size:11.5px;text-align:center}
.sv-p.hi{background:#fbc4c1;color:#8a1f1b}.sv-p.mid{background:#fde2b8;color:#8a4b00}.sv-p.low{background:#fdf3c4;color:#6b5a00}
.sv-caveat{margin-top:10px;font-size:11.5px}
.sv-grade{display:flex;align-items:center;gap:8px;margin-bottom:8px}.sv-grade input{width:110px}
.sv-box textarea{width:100%;margin-bottom:8px}
.sub-view{margin-top:6px}
.sub-dl{font-size:12px}
@media (max-width:900px){.sv-body{grid-template-columns:1fr;overflow:auto}.sv-main{overflow:visible;min-height:60vh}.sv-side{overflow:visible}.sv-pdf{height:75vh}}
@media (max-width:600px){.sv-top{padding:10px 12px}.sv-body{padding:10px}.sv-main{padding:14px}.sv-doc{font-size:14px}}
.sv-box input[type=number],.sv-box textarea{display:block;min-height:42px;padding:10px 12px;border:1px solid #d3dce7;border-radius:var(--r-md);background:#fff;font:inherit;font-size:14px;color:var(--text);box-sizing:border-box}
.sv-box input[type=number]{display:inline-block}
.sv-box input:focus,.sv-box textarea:focus{outline:0;border-color:var(--navy-2);box-shadow:0 0 0 3px rgba(13,67,119,.14)}
@media (max-width:700px){.sv-top{position:relative;padding-right:58px}.sv-top .close{position:absolute;top:calc(10px + var(--sat));right:10px}}
.qz-stat-warn b{color:var(--red)}
.qz-fast-note{margin:-4px 0 12px}
/* Recording Q&A pictures (v89) */
.rq-att{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rq-att:not(:has(.rq-thumb)){margin-top:-2px}
.rq-thumb{position:relative;width:64px;height:64px;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--border);background:var(--bg);flex:none}
.rq-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rq-thumb button{position:absolute;top:2px;right:2px;width:22px;height:22px;min-height:0;padding:0;border-radius:50%;background:rgba(4,44,83,.82);color:#fff;font-size:15px;line-height:22px;text-align:center}
.rq-addimg{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px dashed #b8c6d6;border-radius:999px;color:var(--navy-2);font-size:13px;font-weight:600;cursor:pointer;background:#fff}
.rq-addimg:hover{border-color:var(--navy-2);background:#eef4fb}
.rq-addimg:focus-within{outline:2px solid var(--navy-2);outline-offset:2px}
.rq-imgs{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.rq-img{display:block;padding:0;min-height:0;width:132px;height:96px;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--border);background:var(--bg);cursor:zoom-in}
.rq-img img{width:100%;height:100%;object-fit:cover;display:block}
.rq-img:hover{border-color:var(--navy-2)}
.rq-zoom{position:fixed;inset:0;z-index:10000;background:rgba(4,20,40,.88);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:20px;cursor:zoom-out}
.rq-zoom img{max-width:100%;max-height:calc(100vh - 90px);max-height:calc(100dvh - 90px);border-radius:8px;background:#fff;box-shadow:0 10px 40px rgba(0,0,0,.4)}
.rq-zoom-bar{display:flex;gap:16px}
.rq-zoom-bar a,.rq-zoom-bar button{color:#fff;font-weight:600;font-size:14px;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.14);text-decoration:none}
@media (max-width:600px){.rq-img{width:calc(50% - 4px);height:110px}}
/* Weekly check-ups (Attendance tab) */
.ck-intro{display:flex;gap:18px;align-items:flex-start;justify-content:space-between;margin-bottom:16px}
.ck-intro h3{margin:0 0 6px}
.ck-intro p{margin:0 0 8px;color:var(--muted);max-width:820px;line-height:1.55}
.ck-intro .ck-auto{color:var(--text);margin:10px 0 0}
.ck-auto .pill{margin-right:6px}
.ck-wk{font-size:20px}
.ck-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.ck-controls .attendance-search{flex:1;min-width:220px}
.ck-c{width:36px;text-align:center}
.ck-weeks{display:flex;gap:4px}
.ck-weeks i{font-style:normal;width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.ck-weeks i.ok{background:#e3f4ea;color:#1c7c45}
.ck-weeks i.ex{background:#fff4e0;color:#a5650a}
.ck-weeks i.no{background:#fde8e8;color:#c0392b}
.ck-zero{color:#c0392b}
.ck-table tr.ck-done td{opacity:.65}
.ck-prev{border:1px solid var(--border);border-radius:var(--r-md);padding:12px 14px;background:var(--bg);margin:4px 0 14px;font-size:14px;line-height:1.55;max-height:260px;overflow:auto}
.ck-prev small{display:block;margin-bottom:4px}
.ck-prev b{display:block;margin-bottom:8px}
.ck-rule{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-weight:600}
.ck-rule select{width:auto;min-width:84px;min-height:42px;padding:8px 34px 8px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background-color:#fff;font:inherit;font-weight:600}
.ck-msg{white-space:nowrap}
.ck-autobox{margin:14px 0 6px}
.ck-when{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:700px){.ck-intro{flex-direction:column}.ck-stats{grid-template-columns:1fr 1fr}.ck-when{grid-template-columns:1fr}}

/* ---- v47: weekly review templates and responses ---- */
.rq-list{display:grid;gap:10px;margin-bottom:10px}
.rq-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px;border:1px solid var(--border);border-radius:12px;background:#fff}
.rq-main{display:grid;grid-template-columns:1fr 150px;gap:8px}
.rq-side{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.rq-req{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;font-weight:600;color:var(--muted);white-space:nowrap}
.rq-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.rq-resp{margin-bottom:12px}
.rq-resp-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:8px}
.rq-qa{padding:8px 0;border-top:1px solid var(--border)}
.rq-qa small{display:block;color:var(--muted);font-size:11.5px;font-weight:700;margin-bottom:3px}
.rq-pending{margin-top:12px}.rq-pending summary{cursor:pointer;font-weight:600}
@media(max-width:640px){.rq-row{grid-template-columns:1fr}.rq-main{grid-template-columns:1fr}.rq-side{justify-content:flex-start}}
/* v48: weekly check-up for one chosen week */
.ck-week{margin:0;min-width:240px}.ck-week label{display:block;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:4px}
.ck-sess{display:grid;gap:4px;font-size:13px}
.ck-sess>div{display:flex;gap:8px;align-items:flex-start}
.ck-sess i{font-style:normal;flex:none;width:20px;height:20px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;background:#fde8e8;color:#c0392b}
/* Stacked daily attendance columns and weekly trend line */
.weekly-svg .chart-seg-value{font-size:10px;font-weight:800;fill:#fff;pointer-events:none}
.weekly-svg .wk-trend{pointer-events:stroke}
/* Tutor assignment (questions and assignments) */
.rq-assign{display:flex;align-items:center;gap:8px;margin:6px 0 2px;font-size:13px;color:var(--muted)}
.rq-assign b{color:var(--navy-2)}
.rq-assign select{width:auto;max-width:260px;min-height:32px;padding:4px 30px 4px 10px;font-size:13px;border:1px solid var(--border);border-radius:var(--r-sm);background-color:#fff}
.asg-tutor{display:inline-flex;align-items:center;gap:4px}
.asg-tutor.none{color:#a5650a}
/* ---- Admin dashboard layout (v90): KPI strip, then two columns; one column on narrow screens ---- */
.adm2 .adm-cols{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px;align-items:start}
.adm2 .adm-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.adm2 .adm-card{margin:0}
.adm2 .adm-kpis{gap:12px}
.adm2 .adm-kpi{padding:14px 16px}
.adm2 .adm-kpi strong{font-size:26px}
/* Needs your attention: a compact list instead of tiles */
.adm-todo-list{display:flex;flex-direction:column}
.adm-todo-row{display:flex;align-items:center;gap:12px;width:100%;padding:10px 4px;border:0;border-top:1px solid var(--border);background:none;font:inherit;text-align:left;cursor:pointer;color:inherit;border-radius:0;min-height:0}
.adm-todo-row:first-child{border-top:0}
.adm-todo-row:hover{background:#f7f9fc}
.adm-todo-row em{flex:none;min-width:34px;height:30px;padding:0 8px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;font-size:15px;background:#eef3f9;color:var(--navy-2)}
.adm-todo-row.hot em{background:#fdf0dc;color:#a8620a}
.adm-todo-row span{flex:1;min-width:0}
.adm-todo-row b{display:block;font-size:13.5px;color:var(--navy);line-height:1.3}
.adm-todo-row small{display:block;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-todo-row>svg{flex:none;width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:2}
.adm-todo-row.adm-hide{display:none}
.adm-more{display:block;margin:6px 0 0;padding:6px 0;border:0;background:none;color:var(--navy-2);font:inherit;font-size:13px;font-weight:700;cursor:pointer;min-height:0}
.adm-more:hover{text-decoration:underline}
.adm2 .adm-allclear{margin:0}
.adm2 .adm-geo #geoMap{min-height:0}
@media (max-width:1100px){.adm2 .adm-cols{grid-template-columns:1fr}.adm2 .adm-col{display:contents}
  .adm2 .adm-cols{display:flex;flex-direction:column;align-items:stretch}
  .adm2 .adm-cols .adm-card{min-width:0;max-width:100%;box-sizing:border-box}
  .adm-o1{order:1}.adm-o2{order:2}.adm-o3{order:3}.adm-o4{order:4}.adm-o5{order:5}.adm-o6{order:6}.adm-o7{order:7}.adm-o8{order:8}.adm-o9{order:9}}
/* Settings -> Email usage */
.eu-bars{display:flex;align-items:flex-end;gap:3px;height:90px;margin:16px 0 6px;padding:0 2px;border-bottom:1px solid var(--border)}
.eu-bars i{flex:1;background:#0d4377;border-radius:3px 3px 0 0;min-width:4px}
.eu-bars i:hover{background:var(--orange)}
.eu-h{margin:18px 0 8px;font-size:15px}
.eu-tip{margin-top:14px}
