/* ==========================================================================
   PVL Portal — v91 makeover theme
   Loaded after styles.css: this file is the design system (tokens + components).
   Century Gothic everywhere, self-hosted. Navy + orange brand, calmer surfaces,
   one radius scale, one shadow scale, clear focus states, fast (no web requests
   beyond the two font files, no heavy effects while scrolling).
   ========================================================================== */
@font-face{font-family:'PVL Gothic';src:local('Century Gothic'),local('CenturyGothic'),url('/fonts/pvl-gothic-Regular.woff') format('woff');font-weight:100 500;font-style:normal;font-display:swap}
@font-face{font-family:'PVL Gothic';src:local('Century Gothic Bold'),local('CenturyGothic-Bold'),url('/fonts/pvl-gothic-Bold.woff') format('woff');font-weight:600 900;font-style:normal;font-display:swap}

:root{
  --navy-solid:#0a2c52;--on-orange:#071c33;
  /* brand */
  --navy:#0a2c52;--navy-2:#123f70;--navy-3:#1c5491;--ink:#071c33;
  --orange:#f7941d;--orange-dark:#d97b06;--orange-soft:#fff3e2;
  /* surfaces */
  --bg:#f3f5f9;--card:#fff;--soft:#f6f8fb;--col:#eef2f7;--border:#e3e9f1;--border-strong:#cfd8e4;
  --text:#11233b;--muted:#5f6f84;--faint:#66768b;
  /* status */
  --green:#16794a;--green-soft:#e4f5ec;--red:#c4362f;--red-soft:#fdeceb;--amber:#9a5a00;--amber-soft:#fff1dc;--blue-soft:#e8f0fa;
  /* type */
  --font:'PVL Gothic','Century Gothic','CenturyGothic','URW Gothic','Apple SD Gothic Neo',AppleGothic,'Segoe UI',system-ui,sans-serif;
  /* shape */
  --r-sm:10px;--r-md:12px;--r-lg:18px;--r-xl:24px;--r-pill:999px;
  --shadow-card:0 1px 2px rgba(10,44,82,.05),0 4px 16px rgba(10,44,82,.04);
  --shadow-hover:0 2px 4px rgba(10,44,82,.06),0 10px 28px rgba(10,44,82,.09);
  --shadow-pop:0 24px 64px rgba(7,28,51,.22),0 2px 8px rgba(7,28,51,.08);
  --ring:0 0 0 3px rgba(28,84,145,.18);
  --sb:248px;--sb-collapsed:76px;
}

/* ---------- base ---------- */
html{background:var(--bg)}
body{font-family:var(--font);font-size:14px;line-height:1.55;color:var(--text);background:var(--bg);letter-spacing:0;font-feature-settings:"kern" 1}
h1,h2,h3,h4{font-family:var(--font);font-weight:700;letter-spacing:-.01em;color:var(--ink)}
b,strong{font-weight:700}
a{color:var(--navy-3);text-underline-offset:2px}
:focus-visible{outline:2px solid var(--navy-3);outline-offset:2px;border-radius:6px}
::selection{background:rgba(247,148,29,.25)}
.eyebrow{display:inline-block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--faint)}
.login-note,.muted{color:var(--muted)}

/* ---------- sidebar ---------- */
.sidebar{background:linear-gradient(180deg,#0b2e55 0%,#071f3b 100%);border-radius:0;box-shadow:none;border-right:1px solid rgba(255,255,255,.04);padding:18px 12px 12px}
.brand{padding:2px 8px 12px}
.brand img{width:150px}
.brand small{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:3px 10px;border-radius:var(--r-pill);background:rgba(247,148,29,.14);color:#ffb65c;font-size:11px;font-weight:700;letter-spacing:.04em}
.collapse-nav{border-radius:var(--r-md);border-color:rgba(255,255,255,.1);background:transparent;color:#a9bbd2;min-height:34px;margin-bottom:4px}
.collapse-nav:hover{background:rgba(255,255,255,.06);color:#fff}
.nav{padding-top:4px}
.nav-group{display:block;margin:10px 10px 2px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#6f88a8;font-weight:700}
.nav-group:first-child{margin-top:4px}
.nav button{min-height:35px;border-radius:var(--r-md);margin:1px 0;color:#c4d3e6;font-size:13.5px;font-weight:400;gap:12px;transition:background .15s,color .15s}
.nav button:hover{background:rgba(255,255,255,.06);color:#fff}
.nav button.active{background:rgba(255,255,255,.1);box-shadow:inset 3px 0 0 var(--orange);color:#fff;font-weight:700}
.nav button.active .nav-icon{color:var(--orange)}
.nav-icon svg{width:19px;height:19px}
.nav-badge{background:var(--orange);color:var(--ink)}
.side-foot{border-top:1px solid rgba(255,255,255,.08);padding:12px 6px calc(4px + var(--sab));display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center}
.side-foot .side-avatar{display:flex;width:36px;height:36px;border-radius:50%;background:var(--orange);color:var(--ink);align-items:center;justify-content:center;font-weight:700;font-size:12px;grid-row:span 2}
.side-foot .side-user-copy{min-width:0}
.side-foot b{font-size:13px}
.side-foot span{color:#8fa6c2;font-size:11.5px;margin-top:1px}
.side-foot button{grid-column:1/-1;justify-self:start;margin-top:8px;padding:6px 10px;border-radius:var(--r-sm);color:#ffb65c;font-weight:700;font-size:12.5px;min-height:30px}
.side-foot button:hover{background:rgba(255,255,255,.06)}
/* compact footer: avatar, name, sign out on one line */
.side-foot{grid-template-columns:auto 1fr auto;gap:0 10px}
.side-foot .side-avatar{grid-row:auto}
.side-foot button{grid-column:auto;margin:0;justify-self:end}
/* icon rail (collapsed, and tablets 701-1100 px): section labels become thin dividers */
@media (min-width:701px){
  .sidebar-collapsed .nav-group{height:1px;margin:8px 12px;background:rgba(255,255,255,.1);font-size:0}
  .sidebar-collapsed .side-foot{display:flex;justify-content:center}
}
@media (min-width:701px) and (max-width:1100px){
  .nav-group{height:1px;margin:8px 12px;background:rgba(255,255,255,.1);font-size:0}
  .side-foot{display:flex;justify-content:center}
  .side-foot .side-user-copy{display:none}
}

/* ---------- main + top bar ---------- */
@media (min-width:1101px){.main{padding:0 32px 40px}.top{margin:0 -32px 24px;padding:14px 32px}.nav button{padding:7px 12px}}
.top{background:rgba(243,245,249,.86);border-bottom:1px solid var(--border);-webkit-backdrop-filter:saturate(160%) blur(10px);backdrop-filter:saturate(160%) blur(10px)}
.top h1{font-size:21px;font-weight:700;letter-spacing:-.015em;color:var(--ink)}
.top-actions{gap:10px}
.icon-btn,.notif-btn,.cal-nav,.help-btn{width:40px;height:40px;border-radius:var(--r-md);background:#fff;border:1px solid var(--border);box-shadow:none;color:var(--navy);transition:border-color .15s,background .15s}
.icon-btn:hover,.notif-btn:hover,.help-btn:hover{border-color:var(--border-strong);background:var(--soft)}
.notif-dot{background:var(--orange);color:var(--ink);box-shadow:0 0 0 2px var(--bg)}
.avatar{background:var(--navy-solid);color:#fff;box-shadow:none;width:38px;height:38px;font-size:12.5px;font-weight:700}
.user{color:var(--text);font-weight:700;font-size:13px}
.notif-panel{border-radius:var(--r-lg);box-shadow:var(--shadow-pop);border-color:var(--border)}
.notif-item.unread{background:#f7f9fd;border-left-color:var(--orange)}

/* ---------- cards ---------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:22px}
.stat strong{font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.section-title h3,.card h3{font-weight:700}
.page-header{margin:0 0 20px;align-items:flex-end}
.page-header h2{font-size:22px;font-weight:700;letter-spacing:-.015em}
.page-header p{font-size:13.5px;color:var(--muted)}
.empty{color:var(--muted)}

/* ---------- buttons ---------- */
.btn{min-height:40px;padding:0 18px;border-radius:var(--r-md);background:var(--orange);color:var(--ink);font-weight:700;font-size:13.5px;letter-spacing:.005em;box-shadow:0 1px 0 rgba(7,28,51,.08),inset 0 -1px 0 rgba(0,0,0,.06);transition:background .15s,box-shadow .15s,transform .05s}
.btn:hover{background:#f98a00;box-shadow:0 4px 12px rgba(247,148,29,.28)}
.btn.secondary{background:#fff;color:var(--ink);border:1px solid var(--border-strong);font-weight:700;box-shadow:none}
.btn.secondary:hover{background:var(--soft);border-color:#b8c5d6;box-shadow:none}
.btn.danger{background:var(--red-soft);color:var(--red);border:1px solid #f6cfcc;box-shadow:none}
.btn.danger:hover{background:#fbdcda}
.btn.small{min-height:32px;padding:0 12px;font-size:12.5px;border-radius:var(--r-sm)}
.btn[disabled],.btn[disabled]:hover{opacity:.5;box-shadow:none}
.link-btn,.text-btn{color:var(--navy-3);font-weight:700}
.link-btn:hover,.text-btn:hover{color:var(--orange-dark)}

/* ---------- forms ---------- */
.field label{font-size:12.5px;font-weight:700;color:var(--text);margin-bottom:6px}
.field input,.field select,.field textarea,.copy-row input,.search-field input,.participant-admin-toolbar select,.attendance-controls select{border:1px solid var(--border-strong);border-radius:var(--r-md);background-color:#fff;font-family:var(--font);color:var(--text);transition:border-color .15s,box-shadow .15s}
.field input,.field select{min-height:44px}
.field input:hover,.field select:hover,.field textarea:hover{border-color:#b8c5d6}
.field input:focus,.field select:focus,.field textarea:focus,.copy-row input:focus,.search-field input:focus{border-color:var(--navy-3);box-shadow:var(--ring);outline:none}
.check input,input[type=checkbox],input[type=radio]{accent-color:var(--navy-3)}
.participant-admin-toolbar select,.attendance-controls select,.search-field input{height:42px;font-size:13px;border-radius:var(--r-md)}

/* ---------- tables ---------- */
.table th,.table td{font-size:13px;border-bottom-color:var(--border)}
.table th,.participant-table th,.attendance-table th,.results-table th{background:var(--soft);color:var(--muted);font-weight:700;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}
.person-avatar,.result-avatar{border-radius:50%;background:var(--blue-soft);color:var(--navy);font-weight:700}
.id-code,.id-badge{border-radius:var(--r-pill);background:var(--soft);border:1px solid var(--border);font-weight:700;font-size:10.5px}
@media (hover:hover){.table tbody tr:hover td{background:#f8fafd}}

/* ---------- pills / tabs / banners ---------- */
.pill{padding:3px 10px;font-size:11.5px;font-weight:700;letter-spacing:.01em;background:var(--col);color:#41546d}
.pill.green,.pill.ok{background:var(--green-soft);color:var(--green)}
.pill.red{background:var(--red-soft);color:var(--red)}
.pill.orange{background:var(--amber-soft);color:var(--amber)}
.pill.grey{background:var(--col);color:var(--muted)}
.tabs{gap:2px;padding:4px;margin-bottom:18px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff;width:max-content;max-width:100%}
.tabs button{padding:8px 16px;border-radius:var(--r-sm);border-bottom:0;margin:0;font-weight:700;color:var(--muted);font-size:13px}
.tabs button.active{background:var(--navy-solid);color:#fff}
.tabs button.active .tab-count{background:rgba(255,255,255,.18);color:#fff}
.banner{background:var(--orange-soft);border:1px solid #f6d6a8;border-left:4px solid var(--orange);border-radius:var(--r-md)}

/* ---------- modals / toast ---------- */
.modal{background:rgba(7,28,51,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.modal-card{border-radius:var(--r-xl);padding:26px;box-shadow:var(--shadow-pop)}
.modal-head h2{font-weight:700;font-size:19px}
.close{border-radius:var(--r-sm)}
.toast{background:var(--ink);border-radius:var(--r-md);box-shadow:var(--shadow-pop);font-weight:700;font-size:13px;padding:12px 18px}

/* ---------- login / sign-up ---------- */
.login{background:radial-gradient(1200px 600px at 10% -10%,#174a80 0%,transparent 60%),radial-gradient(900px 500px at 110% 110%,rgba(247,148,29,.22) 0%,transparent 55%),#071f3b}
.login-card{border-radius:var(--r-xl);padding:36px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.login-card h2{font-weight:700;font-size:22px;letter-spacing:-.015em}
.role-card{border-radius:var(--r-lg)}

/* ---------- dashboards ---------- */
.participant-welcome,.adm-head{border-radius:var(--r-xl)}
.participant-welcome{background:linear-gradient(120deg,#0b2e55 0%,#123f70 60%,#1c5491 100%);color:#fff;border:0;box-shadow:0 10px 30px rgba(10,44,82,.18)}
.participant-welcome h2{color:#fff}
.participant-welcome p,.participant-welcome .eyebrow{color:#b9cbe2}
.participant-welcome .link-btn{color:#ffc27a}
.welcome-avatar{background:var(--orange);color:var(--ink);border-radius:50%;box-shadow:none}
.dash-attn-tile{border-radius:var(--r-lg)}
.dash-h{font-size:15px;font-weight:700;margin:4px 0 10px}
.adm-kpi strong{font-weight:700}
.adm-todo-row em,.dash-attn-tile em{font-style:normal}

/* ---------- small screens ---------- */
@media (max-width:700px){
  .sidebar{width:288px;border-radius:0 var(--r-xl) var(--r-xl) 0}
  .main{margin:0;width:100%;padding:0 calc(14px + var(--sar)) calc(28px + var(--sab)) calc(14px + var(--sal))}
  .top{margin:0 calc(-14px - var(--sar)) 14px calc(-14px - var(--sal));padding:calc(10px + var(--sat)) calc(14px + var(--sar)) 10px calc(14px + var(--sal))}
  .top h1{font-size:18px}
  .card{padding:16px;border-radius:var(--r-lg)}
  .modal-card{border-radius:var(--r-xl) var(--r-xl) 0 0}
  .tabs{width:auto}
  .btn{min-height:44px}
}
@media (prefers-reduced-motion:reduce){.help-drawer,.tour-spot,.tour-pop{transition:none!important}}

/* ==========================================================================
   Help centre (help.js): button, drawer, page hint, checklist, tour
   ========================================================================== */
.help-btn{display:inline-flex;align-items:center;gap:7px;width:auto;padding:0 12px 0 10px;font-weight:700;font-size:13px;color:var(--navy)}
.help-btn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:900px){.help-btn{width:40px;padding:0;justify-content:center}.help-btn span{display:none}}
.help-layer{position:fixed;inset:0;z-index:90;pointer-events:none}
.help-scrim{position:absolute;inset:0;background:rgba(7,28,51,.35);opacity:0;transition:opacity .2s}
.help-drawer{position:absolute;top:0;right:0;bottom:0;width:min(440px,100%);background:#fff;box-shadow:var(--shadow-pop);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .22s ease;padding-top:var(--sat)}
.help-layer.open{pointer-events:auto}.help-layer.open .help-scrim{opacity:1}.help-layer.open .help-drawer{transform:none}
.help-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:22px 22px 10px}
.help-top h2{margin:4px 0 0;font-size:21px}
.help-x{width:36px;height:36px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:var(--muted);flex:none}
.help-x:hover{background:var(--soft);color:var(--ink)}
.help-x svg,.help-item svg,.help-flow svg,.help-hint-ic svg,.help-open svg,.help-foot svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.help-x.small{width:30px;height:30px}
.help-search{padding:4px 22px 12px}
.help-search input{width:100%;height:44px;border:1px solid var(--border-strong);border-radius:var(--r-md);padding:0 14px;font:inherit;font-size:14px;background:var(--soft)}
.help-search input:focus{outline:none;border-color:var(--navy-3);box-shadow:var(--ring);background:#fff}
.help-tabs{display:flex;gap:2px;margin:0 22px;padding:4px;background:var(--soft);border-radius:var(--r-md)}
.help-tabs button{flex:1;padding:8px 6px;border-radius:var(--r-sm);font-weight:700;font-size:12.5px;color:var(--muted)}
.help-tabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(10,44,82,.12)}
.help-body{flex:1;overflow-y:auto;padding:18px 22px 22px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.help-foot{display:flex;gap:8px;flex-wrap:wrap;padding:14px 22px calc(14px + var(--sab));border-top:1px solid var(--border)}
.help-guide h3{margin:0 0 6px;font-size:17px}
.help-why{margin:0 0 14px;color:var(--muted)}
.help-steps{counter-reset:s;list-style:none;margin:0 0 14px;padding:0;display:grid;gap:10px}
.help-steps li{counter-increment:s;position:relative;padding:10px 12px 10px 46px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff;line-height:1.5}
.help-steps li::before{content:counter(s);position:absolute;left:12px;top:10px;width:24px;height:24px;border-radius:50%;background:var(--navy-solid);color:#fff;font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center}
.help-tips p{margin:0 0 8px;padding:10px 12px;border-radius:var(--r-md);background:var(--orange-soft);color:#6b4307;font-size:13px}
.help-tips b{margin-right:6px;color:var(--orange-dark)}
.help-open{display:inline-flex;align-items:center;gap:4px;margin:-4px 0 18px}
.help-note{color:var(--muted);font-size:12.5px}
.help-check-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.help-check-head b{white-space:nowrap}
.help-bar{flex:1;height:8px;border-radius:9px;background:var(--col);overflow:hidden}
.help-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--orange),#ffb34d);border-radius:9px}
.help-item{display:flex;align-items:center;gap:12px;width:100%;padding:12px;margin-bottom:8px;border:1px solid var(--border);border-radius:var(--r-md);text-align:left;font-weight:700;color:var(--ink);background:#fff;transition:border-color .15s,background .15s}
.help-item:hover{border-color:var(--border-strong);background:var(--soft)}
.help-item>span:nth-child(2){flex:1}
.help-item.done>span:nth-child(2){color:var(--muted);text-decoration:line-through;text-decoration-color:var(--border-strong);font-weight:400}
.help-tick{width:24px;height:24px;border-radius:50%;border:2px solid var(--border-strong);display:flex;align-items:center;justify-content:center;flex:none}
.help-item.done .help-tick{background:var(--green);border-color:var(--green);color:#fff}
.help-tick svg{width:14px;height:14px;stroke-width:2.6}
.help-flow{border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:10px;background:#fff}
.help-flow summary{list-style:none;display:flex;align-items:center;gap:10px;padding:14px;cursor:pointer}
.help-flow summary::-webkit-details-marker{display:none}
.help-flow summary>span{flex:1}
.help-flow summary b{display:block;color:var(--ink)}
.help-flow summary small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
.help-flow summary svg{transition:transform .15s;color:var(--faint)}
.help-flow[open] summary svg{transform:rotate(90deg)}
.help-flow ol{margin:0;padding:0 14px 12px 36px;display:grid;gap:4px}
.help-flow li{padding:6px 0;border-top:1px dashed var(--border)}
.help-flow li span{display:inline}
.help-flow li .link-btn{float:right;padding:0 0 0 10px;font-size:12px}
.help-hint{display:flex;align-items:center;gap:12px;padding:10px 10px 10px 14px;margin:0 0 18px;border:1px solid #d6e3f3;background:linear-gradient(90deg,#eef4fb,#f7f9fd);border-radius:var(--r-md)}
.help-hint-ic{width:32px;height:32px;border-radius:50%;background:#fff;color:var(--navy-3);display:flex;align-items:center;justify-content:center;flex:none;box-shadow:0 1px 3px rgba(10,44,82,.1)}
.help-hint-copy{flex:1;font-size:13px;color:var(--text);min-width:0}
.help-hint .btn{flex:none}
@media (max-width:700px){.help-hint{flex-wrap:wrap}.help-hint-copy{flex-basis:calc(100% - 90px)}.help-hint .btn{order:3;margin-left:44px}}
.help-welcome{position:fixed;right:max(20px,var(--sar));bottom:calc(20px + var(--sab));z-index:85;display:flex;gap:12px;width:min(360px,calc(100vw - 32px));padding:16px;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);animation:helpIn .3s ease}
.help-welcome b{display:block;color:var(--ink);font-size:14px}
.help-welcome p{margin:4px 0 10px;color:var(--muted);font-size:13px}
.help-welcome .help-hint-ic{background:var(--orange-soft);color:var(--orange-dark);box-shadow:none}
@keyframes helpIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
#pvlTour{position:fixed;inset:0;z-index:95}
.tour-spot{position:fixed;border-radius:var(--r-md);box-shadow:0 0 0 9999px rgba(7,28,51,.55),0 0 0 3px var(--orange);transition:all .25s ease;pointer-events:none}
.tour-pop{position:fixed;background:#fff;border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow-pop);transition:top .25s ease,left .25s ease}
.tour-pop h3{margin:4px 0 6px;font-size:16px}
.tour-pop p{margin:0 0 14px;color:var(--muted);font-size:13.5px}
.tour-btns{display:flex;justify-content:space-between;align-items:center;gap:8px}
.tour-btns>span{display:flex;gap:6px}
.login-help{margin:10px 0 0;border-top:1px solid var(--border);padding-top:10px}
.login-help summary{cursor:pointer;text-align:center;font-size:12.5px;font-weight:700;color:var(--navy-3);list-style:none}
.login-help summary::-webkit-details-marker{display:none}
.login-help ul{margin:10px 0 0;padding:12px 14px 12px 30px;background:var(--soft);border-radius:var(--r-md);font-size:12.5px;color:var(--muted);display:grid;gap:6px}
.portal-badge{font-family:var(--font)}

/* ==========================================================================
   Calendar (v91): calm month grid, Month/List switch, tidy day view
   ========================================================================== */
.seg{display:inline-flex;padding:3px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff}
.seg button{padding:7px 14px;border-radius:var(--r-sm);font-weight:700;font-size:12.5px;color:var(--muted)}
.seg button.on{background:var(--navy-solid);color:#fff}
.calendar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.calendar-actions .action-more .btn svg{transform:rotate(90deg);width:14px;height:14px}
.calendar-card{padding:14px}
.calendar{gap:6px}
.cal-head{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:700;padding:4px 8px}
.day{min-height:112px;padding:8px;border-radius:var(--r-md);background:#fff;border:1px solid var(--border);box-shadow:none;display:flex;flex-direction:column;gap:3px}
.day.empty-day{background:transparent;border-color:transparent}
.day.today{border-color:var(--orange);box-shadow:inset 0 0 0 1px var(--orange);background:#fffaf3}
.day>.day-top b,.day-top b{font-size:12.5px;font-weight:700;color:var(--text)}
.day.today .day-top b{color:var(--orange-dark)}
@media (hover:hover){.day.clickable:hover{transform:none;box-shadow:var(--shadow-hover);border-color:var(--border-strong)}}
.day .day-dots{display:none}
.day .event{display:flex;align-items:center;gap:6px;min-width:0;margin:0;padding:3px 7px;border:0;border-left:3px solid var(--ec,var(--navy-3));border-radius:6px;background:color-mix(in srgb,var(--ec,#1c5491) 9%,#fff);font-size:11.5px;line-height:1.35;white-space:nowrap;overflow:hidden;box-shadow:none}
.day .event b{font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;min-width:0}
.day .event .ev-time{flex:none;color:var(--muted);font-size:10.5px;font-weight:700}
.day .event.done{opacity:.55}
.day .event.done b{text-decoration:none}
.day .event.asg-event .ev-time{color:var(--ec)}
.day .event.capstone-event{--ec:#16794a}
.day .asg-more{font-size:11px;font-weight:700;color:var(--navy-3);padding:1px 7px}
.availability-chip{font-size:10.5px;font-weight:700;color:var(--green);background:var(--green-soft);border-radius:var(--r-pill);padding:2px 8px;align-self:flex-start}
.cal-legend{display:flex;flex-wrap:wrap;gap:6px 16px;padding:12px 6px 2px;font-size:12px;color:var(--muted)}
.cal-legend i{width:9px;height:9px;border-radius:3px}
/* list view (and phones) */
.calendar-card.cal-list .calendar,.calendar-card.cal-list .cal-legend{display:none}
.calendar-card.cal-list .agenda{display:grid}
.agenda{gap:8px}
.agenda-item{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--border);border-left:4px solid var(--ec,var(--navy-3));border-radius:var(--r-md);background:#fff}
.agenda-item b{color:var(--ink)}
.agenda-item span{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
.agenda-item.done{opacity:.6}
.agenda-date{width:44px;flex:none;text-align:center}
.agenda-date b{display:block;font-size:20px;line-height:1}
.agenda-date small{color:var(--faint);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:700}
@media (hover:hover){.agenda-item:hover{border-color:var(--border-strong);box-shadow:var(--shadow-hover)}}
@media (max-width:700px){.calendar-card .calendar,.calendar-card .cal-legend{display:none}.calendar-card .agenda{display:grid}.seg{display:none}}

/* day pop-up */
.day-sum{margin:2px 0 0}
.sess-block{margin:14px 0 0}
.sess-card{border:1px solid var(--border);border-left:4px solid var(--ec,var(--navy-3));border-radius:var(--r-lg);padding:16px;background:#fff}
.sess-card.is-live{border-color:#bfe3cf;border-left-color:var(--green);background:#fbfefc}
.sess-top{display:flex;align-items:flex-start;gap:14px}
.sess-when{flex:none;width:62px;padding:6px 0;text-align:center;border-radius:var(--r-md);background:var(--soft)}
.sess-when b{display:block;font-size:14px;color:var(--ink)}
.sess-when small{display:block;font-size:11px;color:var(--faint)}
.sess-what{flex:1;min-width:0}
.sess-what h3{margin:2px 0 3px;font-size:16px;line-height:1.3}
.sess-what p{margin:0;color:var(--muted);font-size:12.5px}
.sess-desc{margin:12px 0 0;color:var(--text);font-size:13.5px}
.sess-main{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.sess-main:empty{display:none}
.sess-empty{margin:12px 0 0;padding:10px 12px;border-radius:var(--r-md);background:var(--soft);color:var(--muted);font-size:13px}
.sess-audience:empty{display:none}
.sess-audience{margin-top:12px}
.sx-list{margin-top:14px;border-top:1px solid var(--border)}
.sx-list:empty{display:none}
.sx{border-bottom:1px solid var(--border)}
.sx:last-child{border-bottom:0}
.sx summary{list-style:none;display:flex;align-items:center;gap:8px;padding:12px 2px;cursor:pointer;font-weight:700;color:var(--ink);font-size:13.5px}
.sx summary::-webkit-details-marker{display:none}
.sx summary span{flex:1}
.sx summary em{font-style:normal;font-size:11px;font-weight:700;min-width:22px;height:22px;padding:0 7px;border-radius:var(--r-pill);background:var(--col);color:var(--muted);display:inline-flex;align-items:center;justify-content:center}
.sx summary svg{width:16px;height:16px;fill:none;stroke:var(--faint);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s}
.sx[open] summary svg{transform:rotate(90deg)}
.sx-body{padding:0 2px 14px}
.sess-tools{display:flex;flex-wrap:wrap;gap:8px}
.sess-danger{display:flex;gap:16px;margin-top:12px;padding-top:10px;border-top:1px dashed var(--border)}
.danger-text{color:var(--red)!important}
.mat-row{border-radius:var(--r-md)}
.cap-rule{margin:6px 0 4px;padding:12px 14px 4px;border:1px solid #f6d6a8;border-radius:var(--r-md);background:var(--orange-soft)}
.cap-rule .field{margin-top:0}
.sess-block{padding:0!important;background:none!important;border:0!important;box-shadow:none!important}
.day .event.done,.day .event.done *{text-decoration:none!important}
.day .event b,.day .asg-event b{text-transform:none;letter-spacing:0}
.sess-card .aud-note.ok{background:none;border:0;padding:0;color:var(--green);font-size:12px}
.agenda-item.done,.agenda-item.done *{text-decoration:none!important}
.calendar-card.cal-list .agenda,.calendar-card .agenda{margin:0;padding:0;border:0}
.help-btn,.notif-btn,.icon-btn,.tz-chip{flex:none}

/* ---------- quick search + small extras (extras.js) ---------- */
.qs-btn{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 10px 0 12px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff;color:var(--muted);font-size:13px;flex:none}
.qs-btn:hover{border-color:var(--border-strong);background:var(--soft)}
.qs-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.qs-btn kbd,.qs-foot kbd{font:inherit;font-size:10.5px;font-weight:700;padding:2px 6px;border-radius:6px;background:var(--col);color:var(--muted)}
@media (max-width:1250px){.qs-btn span,.qs-btn kbd{display:none}.qs-btn{width:40px;justify-content:center;padding:0}}
@media (max-width:700px){.qs-btn{display:none}}
.qs-layer{position:fixed;inset:0;z-index:96;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px}
.qs-scrim{position:absolute;inset:0;background:rgba(7,28,51,.45)}
.qs-box{position:relative;width:min(620px,100%);background:#fff;border-radius:var(--r-xl);box-shadow:var(--shadow-pop);overflow:hidden;animation:helpIn .18s ease}
.qs-box input{width:100%;border:0;border-bottom:1px solid var(--border);padding:18px 20px;font:inherit;font-size:16px;outline:none}
.qs-list{max-height:min(420px,55vh);overflow-y:auto;padding:6px}
.qs-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:var(--r-md);text-align:left}
.qs-item.on{background:var(--soft)}
.qs-item em{font-style:normal;flex:none;width:84px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.qs-item span{min-width:0}
.qs-item b{display:block;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qs-item small{display:block;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qs-empty{padding:18px;color:var(--muted);text-align:center}
.qs-foot{display:flex;gap:16px;padding:10px 16px;border-top:1px solid var(--border);font-size:11.5px;color:var(--faint)}
.sess-main .link-btn,.dash-ics{display:inline-flex;align-items:center;gap:6px}
.sess-main .link-btn svg,.dash-ics svg,.calendar-actions .btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.dash-ics{margin-top:10px}

/* ==========================================================================
   Motion (fx.js): oil & gas hero scene, tank meter, count-ups, entrances.
   transform/opacity only; all off with prefers-reduced-motion.
   ========================================================================== */
.fx-hero{position:relative;overflow:hidden;isolation:isolate}
.adm-head.fx-hero{padding:26px 28px;margin-bottom:18px;border-radius:var(--r-xl);color:#fff;background:radial-gradient(600px 220px at 85% 120%,rgba(247,148,29,.25),transparent 60%),linear-gradient(120deg,#011a33 0%,#0b2e55 55%,#123f70 100%);box-shadow:0 12px 32px rgba(1,26,51,.22);align-items:center}
.adm-head.fx-hero h2{color:#fff}
.adm-head.fx-hero p,.adm-head.fx-hero .eyebrow{color:#b9cbe2}
.adm-head.fx-hero .adm-actions{position:relative;z-index:2}
.adm-head.fx-hero .btn.secondary{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:#fff}
.adm-head.fx-hero .btn.secondary:hover{background:rgba(255,255,255,.18)}
.participant-welcome.fx-hero{background:radial-gradient(600px 220px at 85% 120%,rgba(247,148,29,.25),transparent 60%),linear-gradient(120deg,#011a33 0%,#0b2e55 55%,#123f70 100%);min-height:150px}
.fx-hero>div:first-child{position:relative;z-index:2;max-width:min(560px,60%)}
.participant-welcome.fx-hero .welcome-avatar{display:none}
.fx-scene{position:absolute;right:0;bottom:0;width:min(560px,58%);height:100%;z-index:1;pointer-events:none;opacity:.95}
.adm-head.fx-hero .fx-scene{right:auto;left:40%;width:min(440px,30%)}
.fx-svg{width:100%;height:100%;display:block}
.fx-flare{pointer-events:auto;cursor:pointer}
.fx-hills{fill:rgba(255,255,255,.05)}
.fx-stars circle{fill:#fff;opacity:.3;animation:fxTwinkle 3.2s ease-in-out infinite}
.fx-tank-t{fill:rgba(255,255,255,.75);font:700 10px var(--font);letter-spacing:.1em}
.fx-flame{transform-box:fill-box;transform-origin:50% 100%;animation:fxFlicker 1.1s ease-in-out infinite alternate}
.fx-glow{transform-box:fill-box;transform-origin:center;animation:fxGlowP 2.2s ease-in-out infinite alternate}
.fx-flare.puff .fx-flame{animation:fxPuff .7s ease-out}
.fx-flow{animation:fxFlow 1.4s linear infinite}
.fx-level{transform-box:fill-box;transform-origin:bottom;animation:fxLevel 6s ease-in-out infinite alternate}
.fx-bubbles circle{fill:rgba(255,255,255,.35);transform-box:fill-box;animation:fxRise 3.6s ease-in infinite;opacity:0}

.fx-hero:hover .fx-flow{animation-duration:.6s}
@keyframes fxTwinkle{50%{opacity:.9}}
@keyframes fxFlicker{0%{transform:scale(1,1) skewX(0)}50%{transform:scale(1.06,1.18) skewX(-4deg)}100%{transform:scale(.94,1.05) skewX(4deg)}}
@keyframes fxGlowP{from{opacity:.6;transform:scale(.9)}to{opacity:1;transform:scale(1.15)}}
@keyframes fxPuff{0%{transform:scale(1)}40%{transform:scale(1.9,2.4)}100%{transform:scale(1)}}
@keyframes fxNod{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}
@keyframes fxSpin{to{transform:rotate(360deg)}}
@keyframes fxRod{0%,100%{transform:translateY(-6px) scaleY(1.15)}50%{transform:translateY(6px) scaleY(.85)}}
@keyframes fxFlow{to{stroke-dashoffset:-30}}
@keyframes fxLevel{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
@keyframes fxRise{0%{transform:translateY(0);opacity:0}20%{opacity:.8}100%{transform:translateY(-46px) translateX(6px);opacity:0}}
/* tank meter (participant score) */
.dash-progress-top{display:flex;align-items:center;gap:14px}
.dash-progress-top>div{flex:1}
.fx-tankmeter{width:58px;height:76px;flex:none}
.fx-oil{transform:translateY(var(--y));animation:fxFill 1.4s cubic-bezier(.2,.8,.2,1) both}
.fx-wave{animation:fxWave 2.4s linear infinite}
@keyframes fxFill{from{transform:translateY(80px)}}
@keyframes fxWave{to{transform:translateX(40px)}}
/* bars fill, cards enter, tiles respond */
.dash-meter i,.dash-course-bar i,.adm-cohort-bar i,.adm-mini i,.adm-stack i,.help-bar i{transform-origin:left;animation:fxGrow 1s cubic-bezier(.2,.8,.2,1) both}
@keyframes fxGrow{from{transform:scaleX(0)}}
.fx-enter>*,.fx-enter .adm-kpis>*,.fx-enter .adm-col>*,.fx-enter .dash-two>*,.fx-enter .coh-grid>*,.fx-enter .dash-attn>*{animation:fxUp .5s cubic-bezier(.2,.8,.2,1) both}
.fx-enter>*:nth-child(2),.fx-enter .adm-kpis>*:nth-child(2),.fx-enter .adm-col>*:nth-child(2){animation-delay:.05s}
.fx-enter>*:nth-child(3),.fx-enter .adm-kpis>*:nth-child(3),.fx-enter .adm-col>*:nth-child(3){animation-delay:.1s}
.fx-enter>*:nth-child(4),.fx-enter .adm-kpis>*:nth-child(4),.fx-enter .adm-col>*:nth-child(4){animation-delay:.15s}
.fx-enter>*:nth-child(n+5),.fx-enter .adm-col>*:nth-child(n+5){animation-delay:.2s}
@keyframes fxUp{from{opacity:0;transform:translateY(12px)}}
@media (hover:hover){
  .adm-kpi,.dash-attn-tile,.coh-card,.stat,.agenda-item,.help-item{transition:transform .18s ease,box-shadow .18s ease,border-color .18s}
  .adm-kpi:hover,.dash-attn-tile:hover,.coh-card:hover,.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}
  .adm-todo-row{transition:background .15s,padding-left .15s}
  .adm-todo-row:hover{padding-left:6px}
}
.dash-next.live .dash-join{animation:fxPulse 1.8s ease-in-out infinite}
@keyframes fxPulse{50%{box-shadow:0 0 0 8px rgba(247,148,29,.22)}}
/* phones and small tablets: the scene sits behind the greeting, smaller */
@media (max-width:900px){.adm-head.fx-hero .fx-scene{left:auto;right:0;width:60%;opacity:.5}.fx-hero>div:first-child{max-width:100%}}
@media (max-width:700px){
  .fx-scene{width:100%;opacity:.35}
  .participant-welcome.fx-hero,.adm-head.fx-hero{padding:20px 18px}
  .adm-head.fx-hero{flex-direction:column;align-items:stretch}
  .adm-head.fx-hero .adm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .adm-head.fx-hero .adm-actions .btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .fx-svg *,.fx-oil,.fx-wave,.fx-enter *,.dash-meter i,.dash-course-bar i,.adm-cohort-bar i,.adm-mini i,.adm-stack i,.dash-join{animation:none!important}
}

/* ---------- responsive fixes (phones 360px+, tablets, laptops) ---------- */
@media (min-width:701px) and (max-width:1100px){.brand small{display:none}.adm-head.fx-hero .fx-scene{opacity:.3}}
@media (min-width:701px){.sidebar-collapsed .brand small{display:none}}
@media (max-width:700px){
  .help-hint{flex-wrap:nowrap;padding:8px 8px 8px 10px;gap:8px;margin-bottom:14px}
  .help-hint-ic{width:28px;height:28px}
  .help-hint-copy{flex-basis:auto;font-size:12.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .help-hint .btn{order:0;margin:0;padding:0 10px;min-height:34px;font-size:12px}
  .participant-welcome.fx-hero,.adm-head.fx-hero{min-height:0}
}
@media (max-width:420px){
  .top-actions .help-btn{display:none}      /* Help moves into the menu on small phones */
  .top h1{font-size:17px}
  .help-hint .btn{display:none}             /* tapping the ? icon in the top bar opens the same guide */
  .help-hint-ic{cursor:pointer}
}

.nav .nav-help{display:none}
@media (max-width:700px){.nav .nav-help{display:flex;margin-top:12px;border:1px dashed rgba(255,255,255,.18)}}
.dash-coach{margin:10px 0 0;padding:10px 12px;border-radius:var(--r-md);font-size:13px;line-height:1.5}
.dash-coach.ok{background:var(--green-soft);color:#0f5534}
.dash-coach.go{background:var(--orange-soft);color:#6b4307}
.dash-coach b{display:block;margin-bottom:2px}
.dash-progress{position:relative}
.fx-confetti{position:absolute;left:50%;top:40%;width:0;height:0;pointer-events:none;z-index:5}
.fx-confetti i{position:absolute;width:7px;height:11px;border-radius:2px;animation:fxConf 1.6s cubic-bezier(.2,.7,.3,1) var(--d) both}
@keyframes fxConf{0%{transform:translate(0,0) rotate(0);opacity:1}70%{opacity:1}100%{transform:translate(var(--x),calc(var(--y) + 220px)) rotate(var(--r));opacity:0}}
@media (max-width:700px){.adm-kpis{grid-template-columns:1fr 1fr!important;gap:10px}.adm-kpi{padding:14px!important}.adm-kpi strong{font-size:24px}.adm-kpi span{font-size:11.5px}}

/* ==========================================================================
   Quiz (v91): intro, taking, review, result
   ========================================================================== */
:root{--qz-font:'PVL Gothic','Century Gothic','CenturyGothic','URW Gothic',var(--font)}
.qz-intro{position:relative}
.qz-intro-head{margin:-26px -26px 18px;padding:24px 60px 20px 26px;border-radius:var(--r-xl) var(--r-xl) 0 0;color:#fff;background:radial-gradient(500px 160px at 90% 120%,rgba(247,148,29,.3),transparent 60%),linear-gradient(120deg,#011a33,#123f70)}
.qz-intro-head .eyebrow{color:#9fb6d3}
.qz-intro-head h2{color:#fff;margin:6px 0 14px;font-size:22px}
.qz-intro-head .close{position:absolute;top:18px;right:18px;background:rgba(255,255,255,.12);color:#fff}
.qz-chiprow{display:flex;flex-wrap:wrap;gap:8px}
.qz-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-pill);background:rgba(255,255,255,.12);font-size:12.5px}
.qz-instr{padding:12px 14px;border-radius:var(--r-md);background:var(--soft);border:1px solid var(--border);margin-bottom:14px;white-space:pre-wrap}
.qz-intro-h{font-size:14px;margin:0 0 8px}
.qz-rules{list-style:none;padding:0;margin:0 0 16px;display:grid;gap:8px}
.qz-rules li{position:relative;margin:0;padding:10px 12px 10px 38px;border:1px solid var(--border);border-radius:var(--r-md);font-size:13.5px;line-height:1.55;background:#fff}
.qz-rules li::before{content:"✓";position:absolute;left:12px;top:10px;width:18px;height:18px;border-radius:50%;background:var(--green-soft);color:var(--green);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.qz-ready{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-md);background:var(--orange-soft);border:1px solid #f6d6a8;font-weight:700;font-size:13.5px;cursor:pointer}
.qz-ready input{width:20px;height:20px;margin:0;flex:none;accent-color:var(--orange-dark)}
.qz-intro-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
@media (max-width:700px){.qz-intro-head{margin:-20px -18px 16px;padding:22px 56px 18px 18px}.qz-intro-foot .btn{flex:1}}

#quizRoot{background:linear-gradient(180deg,#eef3f9 0%,#f6f8fb 40%)}
.qz-bar{position:relative;flex-wrap:wrap;background:linear-gradient(120deg,#011a33,#0b2e55);color:#fff;padding:calc(12px + var(--sat)) 20px 14px;box-shadow:0 4px 18px rgba(1,26,51,.25)}
.qz-title{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px}
.qz-title>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qz-brand{flex:none;padding:3px 8px;border-radius:6px;background:var(--orange);color:var(--ink);font-size:11px;letter-spacing:.08em}
.qz-meta{gap:10px}
.qz-meta .qz-save{color:#9fb6d3;font-size:12px}
.qz-meta .qz-save.bad{color:#ffb1ab}
.qz-viol{background:rgba(255,255,255,.12);font-size:12px;font-weight:700;padding:5px 10px}
.qz-clock{background:#fff;color:var(--ink);font-weight:700;font-size:15px;padding:6px 14px;min-width:78px;text-align:center;border-radius:var(--r-pill);transition:background .3s,color .3s}
.qz-clock::before{content:"⏱ ";font-size:12px}
.qz-clock.warn{background:var(--orange);color:var(--ink)}
.qz-clock.low{background:var(--red);color:#fff}
.qz-pbar{position:absolute;left:0;right:0;bottom:0;height:4px;background:rgba(255,255,255,.12)}
.qz-pbar i{display:block;height:100%;background:linear-gradient(90deg,var(--orange),#ffc35c);transition:width .35s ease}
.qz-nav{width:230px;padding:18px 16px;background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;gap:14px;flex-wrap:nowrap}
.qz-nav-h{font-size:13px;color:var(--muted)}
.qz-nav-h b{color:var(--ink);font-size:16px}
.qz-flagc{color:var(--amber);font-weight:700}
.qz-dots{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.qz-dot{width:auto;height:36px;border-radius:10px;border:1px solid var(--border);background:#fff;font-weight:700;font-size:13px;color:var(--muted);position:relative;transition:transform .1s,background .15s}
.qz-dot:hover{transform:translateY(-1px)}
.qz-dot.done{background:var(--green-soft);border-color:#b7e0c8;color:var(--green)}
.qz-dot.flag::after{content:"";position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:var(--orange);border:2px solid #fff}
.qz-dot.cur{background:var(--navy-solid);border-color:var(--navy-solid);color:#fff;box-shadow:0 4px 10px rgba(10,44,82,.25)}
.qz-legend{display:grid;gap:5px;font-size:11.5px;color:var(--muted)}
.qz-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.l-done{background:var(--green-soft);border:1px solid #b7e0c8}.l-flag{background:var(--orange)}.l-todo{background:#fff;border:1px solid var(--border-strong)}
.qz-keys{margin:auto 0 0;font-size:11px;color:var(--faint);line-height:1.8}
.qz-keys kbd,.qz-review kbd{font:inherit;font-weight:700;font-size:10.5px;padding:1px 5px;border-radius:5px;background:var(--col);color:var(--muted)}
.qz-main{max-width:860px;padding:28px clamp(14px,4vw,48px) calc(28px + var(--sab))}
.qz-card{background:#fff;border:1px solid var(--border);border-radius:var(--r-xl);padding:clamp(18px,3vw,30px);box-shadow:var(--shadow-card)}
.qz-qhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.qz-qnum{margin:0;font-size:12px;letter-spacing:.12em;color:var(--orange-dark)}
.qz-qnum small{color:var(--faint);font-size:12px}
.qz-flagbtn{padding:6px 12px;border-radius:var(--r-pill);border:1px solid var(--border);font-size:12px;font-weight:700;color:var(--muted);background:#fff}
.qz-flagbtn.on{background:var(--orange-soft);border-color:#f6d6a8;color:var(--amber)}
.qz-q{font-size:clamp(17px,2.2vw,20px);font-weight:700;color:var(--ink);margin-bottom:22px}
.qz-opts{gap:10px}
.qz-opt{align-items:center;padding:14px 16px;border:2px solid var(--border);border-radius:var(--r-lg);background:#fff;cursor:pointer;transition:border-color .15s,background .15s,transform .1s}
.qz-opt:hover{border-color:#b8c8dc;background:#fbfcfe}
.qz-opt:active{transform:scale(.995)}
.qz-opt.sel{border-color:var(--navy-3);background:#eef4fb;box-shadow:0 4px 14px rgba(28,84,145,.12)}
.qz-letter{width:32px;height:32px;border-radius:10px;background:var(--soft);border:1px solid var(--border);color:var(--navy);font-size:13px}
.qz-opt.sel .qz-letter{background:var(--navy-3);border-color:var(--navy-3);color:#fff}
.qz-text{flex:1;padding-top:0}
.qz-tick{flex:none;width:24px;height:24px;border-radius:50%;background:var(--navy-3);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;opacity:0;transform:scale(.6);transition:opacity .15s,transform .15s}
.qz-opt.sel .qz-tick{opacity:1;transform:none}
.qz-actions{margin-top:18px;gap:10px}
.qz-actions .btn{min-width:120px}
.qz-review-btn{margin:0 auto}
.qz-block{background:rgba(1,26,51,.7);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.qz-block-card{border-radius:var(--r-xl);padding:28px}
.qz-review{max-width:560px}
.qz-rv-sum{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 16px}
.qz-rv-sum span{padding:6px 12px;border-radius:var(--r-pill);background:var(--soft);font-size:13px}
.qz-rv-sum .ok{background:var(--green-soft);color:var(--green)}.qz-rv-sum .bad{background:var(--red-soft);color:var(--red)}.qz-rv-sum .fl{background:var(--amber-soft);color:var(--amber)}
.qz-rv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px;max-height:min(260px,40vh);overflow-y:auto;padding:2px}
.qz-rv{position:relative;padding:8px 0;border-radius:10px;border:1px solid var(--border);background:#fff;text-align:center}
.qz-rv b{display:block;font-size:14px;color:var(--ink)}.qz-rv small{color:var(--muted);font-size:11px}
.qz-rv.done{background:var(--green-soft);border-color:#b7e0c8}
.qz-rv.todo{border-color:#f3c6c2;background:#fff7f6}
.qz-rv.flag::after{content:"";position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:var(--orange);border:2px solid #fff}
.qz-rv-note{margin:14px 0 0;color:var(--muted);font-size:13px}
.qz-banner{top:84px;border-radius:var(--r-pill);font-weight:700;box-shadow:var(--shadow-pop)}
.qz-final{text-align:center}
.qz-final h2{font-size:24px;margin:8px 0 4px}
.qz-done-ic{width:64px;height:64px;margin:0 auto;border-radius:50%;background:var(--green);color:#fff;font-size:30px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 10px var(--green-soft);animation:fxUp .5s both}
.qz-score{border-radius:var(--r-xl);border:1px solid var(--border)}
.qz-ring{width:150px;height:150px;display:block;margin:0 auto 8px}
.qz-ring circle{fill:none;stroke-width:10}
.qz-ring .bg{stroke:var(--col)}
.qz-ring .fg{stroke:var(--orange);stroke-linecap:round;transform:rotate(-90deg);transform-origin:60px 60px;transition:stroke-dashoffset 1.2s ease}
.qz-ring .pct{font:700 24px var(--font);fill:var(--ink)}
.qz-ring .sub{font:700 9px var(--font);fill:var(--faint);letter-spacing:.14em;text-transform:uppercase}
.qz-final .qz-rev,.qz-final .qz-rev-title{text-align:left}
.qz-rev{border-radius:var(--r-lg)!important}
@media (max-width:760px){
  .qz-body{flex-direction:column}
  .qz-nav{width:auto;border-right:0;border-bottom:1px solid var(--border);padding:10px 12px;gap:8px}
  .qz-dots{display:flex;overflow-x:auto;gap:6px;padding-bottom:2px;-webkit-overflow-scrolling:touch}
  .qz-dot{flex:none;width:36px}
  .qz-legend,.qz-keys{display:none}
  .qz-meta .qz-save{display:none}
  .qz-actions{position:sticky;bottom:0;background:linear-gradient(180deg,rgba(246,248,251,0),#f6f8fb 30%);padding:14px 0 calc(6px + var(--sab));margin-top:8px}
  .qz-actions .btn{min-width:0;flex:1;padding:0 10px}
}

/* ---------- background drawings (fx.js) ---------- */
.fx-bg{position:fixed;inset:-560px 0 0 -480px;z-index:0;pointer-events:none;background-image:var(--fx-tile);background-size:480px 560px;opacity:.06;will-change:transform;animation:fxDrift 80s linear infinite}
@keyframes fxDrift{to{transform:translate3d(480px,560px,0)}}
.shell,.login>*{position:relative;z-index:1}
.login .fx-bg,.login~.fx-bg{opacity:.06;filter:invert(1)}
body:has(.login) .fx-bg{opacity:.07;filter:invert(1) brightness(2)}
.sidebar{z-index:40}
@media (prefers-reduced-motion:reduce){.fx-bg{animation:none}}
html.qz-active .fx-bg{display:none}
/* certificate editor */
.cert-place{display:flex;align-items:center;gap:10px;margin:4px 0 10px;font-weight:700;font-size:13px}
.cert-canvas.placing-id{cursor:crosshair}
.cert-pid{white-space:nowrap}
.cert-id-box{margin:10px 0;padding:12px 14px 4px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--soft)}
.cert-id-box .check small{display:block;color:var(--muted);font-weight:400}
.cert-id-fields.off{opacity:.45;pointer-events:none}
/* quiz, second pass */
#quizRoot[data-size="s"] .qz-q{font-size:16px}#quizRoot[data-size="s"] .qz-text{font-size:14px}
#quizRoot[data-size="l"] .qz-q{font-size:23px}#quizRoot[data-size="l"] .qz-text{font-size:18px}
#quizRoot[data-size="xl"] .qz-q{font-size:27px}#quizRoot[data-size="xl"] .qz-text{font-size:21px}
.qz-size{display:inline-flex;border:1px solid rgba(255,255,255,.2);border-radius:var(--r-pill);overflow:hidden}
.qz-size button{color:#fff;font-weight:700;font-size:12px;padding:5px 10px}
.qz-size button+button{border-left:1px solid rgba(255,255,255,.2)}
.qz-size button:hover{background:rgba(255,255,255,.1)}
.qz-off{font-size:12px;font-weight:700;color:#ffd08a}
.qz-card.in-r{animation:qzInR .28s cubic-bezier(.2,.8,.2,1)}
.qz-card.in-l{animation:qzInL .28s cubic-bezier(.2,.8,.2,1)}
@keyframes qzInR{from{opacity:0;transform:translateX(24px)}}
@keyframes qzInL{from{opacity:0;transform:translateX(-24px)}}
.qz-opt.sel .qz-letter{animation:qzPop .25s ease}
@keyframes qzPop{50%{transform:scale(1.18)}}
.qz-mid{display:flex;flex-direction:column;align-items:center;gap:4px;margin:0 auto;text-align:center}
.qz-mid small{color:var(--faint);font-size:11.5px}
.qz-mid .qz-review-btn{margin-top:4px}
.qz-alldone{color:var(--green);font-weight:700;font-size:13px}
.qz-rev-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:18px 0 8px}
.qz-rev-head h3{margin:0}
.qz-rev-only{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;cursor:pointer}
.only-wrong .qz-rev.ok{display:none}
.qz-rev{padding:14px 16px!important;margin:10px 0!important;border:1px solid var(--border)!important;background:#fff!important}
.qz-rev.ok{border-left:4px solid var(--green)!important}.qz-rev.no{border-left:4px solid var(--red)!important}
.qz-rev-o{border-radius:var(--r-sm)!important}
.qz-rev-o.right{background:var(--green-soft)!important;color:#0f5534}
.qz-rev-o.wrong{background:var(--red-soft)!important;color:#8c2620}
@media (max-width:760px){.qz-size{display:none}.qz-mid{order:3;width:100%}.qz-actions{flex-wrap:wrap}.qz-mid small{display:none}}
@media (prefers-reduced-motion:reduce){.qz-card.in-r,.qz-card.in-l,.qz-opt.sel .qz-letter{animation:none}}
@media (max-width:760px){.qz-dots{padding:3px 2px 6px}.qz-nav-h{font-size:12px}}

/* ==========================================================================
   Assignment hand-in + AI check (v91)
   ========================================================================== */
.sub-card{width:min(680px,100%)}
.sub-head{position:relative;margin:-26px -26px 16px;padding:22px 60px 18px 26px;border-radius:var(--r-xl) var(--r-xl) 0 0;background:linear-gradient(120deg,#011a33,#123f70);color:#fff}
.sub-head .eyebrow{color:#9fb6d3}.sub-head h2{color:#fff;margin:6px 0 10px;font-size:20px}
.sub-head .close{position:absolute;top:16px;right:16px;background:rgba(255,255,255,.12);color:#fff}
.sub-facts{display:flex;flex-wrap:wrap;gap:8px}
.sub-facts span{padding:5px 11px;border-radius:var(--r-pill);background:rgba(255,255,255,.12);font-size:12.5px}
.sub-facts .bad{background:rgba(196,54,47,.5)}.sub-facts .ok{background:rgba(22,121,74,.55)}
.sub-brief{margin:0 0 14px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--soft)}
.sub-brief summary{cursor:pointer;padding:10px 14px;font-weight:700}
.sub-brief div{padding:0 14px 12px;white-space:pre-wrap;font-size:13.5px}
.sub-steps{display:flex;gap:6px;margin-bottom:12px}
.sub-steps span{flex:1;text-align:center;padding:6px;border-radius:var(--r-pill);background:var(--col);color:var(--muted);font-size:12px;font-weight:700;transition:background .3s,color .3s}
.sub-steps span.on{background:var(--navy-solid);color:#fff}
.sub-drop{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 16px;border:2px dashed var(--border-strong);border-radius:var(--r-lg);background:#fbfcfe;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}
.sub-drop:hover,.sub-drop.over{border-color:var(--orange);background:var(--orange-soft)}
.sub-drop input{position:absolute;width:1px;height:1px;opacity:0}
.sub-drop-ic{width:46px;height:46px;border-radius:50%;background:var(--blue-soft);color:var(--navy-3);font-size:20px;display:flex;align-items:center;justify-content:center}
.sub-drop b{color:var(--ink)}.sub-drop u{color:var(--navy-3)}.sub-drop small{color:var(--muted);font-size:12px}
.sub-file{display:flex;align-items:center;gap:12px;margin-top:10px;padding:10px 12px;border:1px solid #b7e0c8;border-radius:var(--r-md);background:var(--green-soft);animation:fxUp .25s both}
.sub-file>span:nth-child(2){flex:1;min-width:0}.sub-file b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sub-file small{color:var(--muted)}
.sub-ext{flex:none;width:42px;height:42px;border-radius:10px;background:var(--navy-solid);color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;letter-spacing:.06em}
.sub-count{display:block;text-align:right;color:var(--faint);font-size:11.5px;margin-top:4px}
.sub-ai{display:flex;gap:12px;padding:12px 14px;border-radius:var(--r-md);background:var(--blue-soft);border:1px solid #d3e2f3;font-size:13px}
.sub-ai b{display:block;color:var(--ink)}.sub-ai span{color:var(--muted)}
.sub-ai-ic{font-size:20px;flex:none}
.sub-progress{margin-top:14px}
.sub-bar{height:10px;border-radius:9px;background:var(--col);overflow:hidden}
.sub-bar i{display:block;height:100%;width:0;border-radius:9px;background:linear-gradient(90deg,var(--orange),#ffc35c);transition:width .25s}
.sub-progress.checking .sub-bar i{background:linear-gradient(90deg,var(--navy-3),#6ea3db,var(--navy-3));background-size:200% 100%;animation:subScan 1.2s linear infinite}
@keyframes subScan{to{background-position:-200% 0}}
.sub-progress p{margin:8px 0 0;font-size:13px;font-weight:700;color:var(--navy-3)}
.sub-done{text-align:center}
.sub-done h2{margin:12px 0 4px}
.sub-receipt{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;text-align:left;margin:16px 0;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--soft)}
.sub-receipt dt{color:var(--muted);font-size:12.5px}.sub-receipt dd{margin:0;font-weight:700;overflow-wrap:anywhere}
.sub-done .modal-actions{justify-content:center}
.ai-gauge{margin:4px 0 12px;padding:14px;border-radius:var(--r-md);background:var(--red-soft);border:1px solid #f6cfcc}
.ai-gauge p{margin:10px 0 0;font-size:13.5px}
.ai-gauge-bar{position:relative;height:12px;border-radius:9px;background:#fff}
.ai-gauge-bar i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,#f7941d,#c4362f)}
.ai-gauge-bar b{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink)}
.ai-gauge-bar b span{position:absolute;top:22px;left:50%;transform:translateX(-50%);font-size:11px;white-space:nowrap}
.ai-score{display:flex;align-items:baseline;gap:6px}
.ai-score b{font-size:16px}.ai-score.hi b{color:var(--red)}.ai-score.mid b{color:var(--amber)}.ai-score.lo b{color:var(--green)}
.ai-bar{height:6px;border-radius:6px;background:var(--col);overflow:hidden;margin:4px 0}
.ai-bar i{display:block;height:100%;background:linear-gradient(90deg,#16794a,#f7941d,#c4362f);background-size:300px 100%}
@media (max-width:700px){.sub-head{margin:-20px -18px 14px;padding:20px 56px 16px 18px}.sub-steps span{font-size:11px}}
.ai-gauge{padding-top:30px}
.ai-gauge-bar b span{top:-22px}

/* ==========================================================================
   Settings, Recording Q&A, Results, Attendance, Announcements, Messages (v91)
   ========================================================================== */
.set-wrap{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start}
.set-nav{position:sticky;top:90px;display:flex;flex-direction:column;gap:4px;padding:8px;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg)}
.set-nav button{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-md);text-align:left;transition:background .15s}
.set-nav button:hover{background:var(--soft)}
.set-nav button.active{background:var(--navy-solid);color:#fff}
.set-nav button.active small{color:#b9cbe2}
.set-nav b{display:block;font-size:13.5px}
.set-nav small{display:block;color:var(--muted);font-size:11.5px;line-height:1.35;margin-top:1px}
.set-ic{flex:none;width:34px;height:34px;border-radius:10px;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:16px}
.set-nav button.active .set-ic{background:rgba(255,255,255,.12)}
.set-body>.card+.card{margin-top:16px}
.set-body h2{font-size:18px;margin-top:0}
@media (max-width:900px){.set-wrap{grid-template-columns:1fr}.set-nav{position:static;flex-direction:row;overflow-x:auto;padding:6px;-webkit-overflow-scrolling:touch}.set-nav button{flex:none}.set-nav small{display:none}.set-ic{width:28px;height:28px;font-size:14px}}
/* Recording Q&A */
.qa-card{padding:22px}
.qa-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0 16px}
.qa-tools .tabs{margin:0}
.qa-tools input[type=search],.msg-tools input[type=search]{flex:1;min-width:200px;height:42px;padding:0 14px;border:1px solid var(--border-strong);border-radius:var(--r-md);font:inherit;background:#fff}
.qa-n{display:inline-flex;min-width:20px;height:20px;padding:0 6px;margin-left:6px;border-radius:var(--r-pill);background:var(--orange);color:var(--ink);font-size:11px;align-items:center;justify-content:center}
.chip{padding:8px 14px;border-radius:var(--r-pill);border:1px solid var(--border-strong);background:#fff;font-weight:700;font-size:12.5px;color:var(--muted)}
.chip.on{background:var(--navy-solid);border-color:var(--navy-solid);color:#fff}
.rq-list{display:grid;gap:12px}
.rq-card,.rq-item{border:1px solid var(--border)!important;border-radius:var(--r-lg)!important;background:#fff!important;box-shadow:none}
.rq-ctx{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin-bottom:10px;border-radius:var(--r-md);background:var(--soft)}
.rq-ctx span{color:var(--muted);font-size:12.5px;flex:1}
.rq-time{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);background:var(--blue-soft);color:var(--navy-3);font-weight:700;font-size:12px}
.rq-time svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.rq-reply{border-radius:var(--r-md)!important;padding:10px 12px!important;background:var(--soft)!important;margin-top:8px}
.rq-reply.staff{background:var(--orange-soft)!important;border-left:3px solid var(--orange)}
.rq-team{margin-left:6px;padding:1px 7px;border-radius:var(--r-pill);background:var(--orange);color:var(--ink);font-size:10px;font-weight:700}
.rq-reply-form textarea{width:100%;border:1px solid var(--border-strong);border-radius:var(--r-md);padding:10px 12px;font:inherit;resize:vertical}
.rq-reply-form textarea:focus{outline:none;border-color:var(--navy-3);box-shadow:var(--ring)}
.rq-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
/* results */
.rr-bar{border-radius:9px;overflow:hidden}
.rr-bar i{border-radius:9px;transform-origin:left;animation:fxGrow .9s cubic-bezier(.2,.8,.2,1) both}
.rr-bar i.ok{background:var(--green)}.rr-bar i.warn{background:var(--orange)}.rr-bar i.low{background:var(--red)}
/* attendance */
.attendance-btn{border-radius:var(--r-pill);padding:7px 12px;font-family:var(--font)}
.attendance-rate-badge{border-radius:var(--r-pill);background:var(--green-soft);color:var(--green);font-weight:700;padding:6px 12px;font-size:12px}
/* announcements + messages */
.ann-card,.ann-item{border-radius:var(--r-lg)!important;border:1px solid var(--border)!important;box-shadow:none!important}
.msg-tools{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.msg-thread,.msg-list{border-radius:var(--r-lg)}
.msg-bubble{border-radius:16px!important}
.msg-bubble.mine{background:var(--navy-solid)!important;color:#fff!important}
/* certificates */
.cert-tile{overflow:hidden;padding:0!important}
.cert-shot{background:var(--soft);border-bottom:1px solid var(--border)}
.cert-body{padding:16px 18px}
.cert-stats>div{border-radius:var(--r-md)!important}

/* ---------- final alignment pass (v91) ---------- */
/* top bar: page title always readable; less chrome on laptops and tablets */
.top>div:first-child{flex:1 1 auto;min-width:120px}
.top h1{min-width:0}
.top-actions{flex:0 1 auto;min-width:0}
@media (max-width:1440px){.top .user span:first-child{display:none}}
@media (max-width:1366px){.qs-btn span,.qs-btn kbd{display:none}.qs-btn{width:40px;justify-content:center;padding:0}.help-btn span{display:none}.help-btn{width:40px;padding:0;justify-content:center}}
@media (max-width:1366px){.cohort-switch{max-width:230px}.cohort-switch select{min-width:0;max-width:100%}}
@media (max-width:1100px){.cohort-switch{max-width:190px}.cohort-switch .cohort-pm{display:none}.tz-chip small{display:none}}
/* Recording Q&A on phones */
@media (max-width:700px){
  .qa-card{padding:14px}
  .rq-card{padding:12px!important;min-width:0;max-width:100%}
  .rq-card-head{flex-wrap:wrap;gap:6px 8px}
  .rq-card-head>*{min-width:0}
  .rq-pills{margin-left:0!important;width:100%;justify-content:flex-start}
  .rq-ctx{flex-direction:column;align-items:flex-start}
  .rq-assign{flex-wrap:wrap}
  .rq-assign select{width:100%;min-width:0;max-width:100%}
  .rq-actions .link-btn{padding:6px 0}
}
/* cards never push the page wider than the screen */
#content .card,#content .table-wrap,#content .grid>*{min-width:0;max-width:100%}

/* floating icons (parallax) and scene extras */
.fx-float{position:fixed;inset:0;z-index:0;pointer-events:none;color:#0a2c52;--px:0;--py:0}
.fx-float span{position:absolute;opacity:.07;transform:translate3d(calc(var(--px) * var(--dep) * -60px),calc(var(--py) * var(--dep) * -60px),0);transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.fx-float svg{display:block;animation:fxBob var(--dur) ease-in-out var(--del) infinite alternate;will-change:transform}
@keyframes fxBob{0%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-26px) rotate(4deg)}100%{transform:translateY(10px) rotate(-2deg)}}
body:has(.login) .fx-float{color:#fff}body:has(.login) .fx-float span{opacity:.09}
html.qz-active .fx-float{display:none}
@media (max-width:700px){.fx-float span:nth-child(n+6){display:none}.fx-float span{opacity:.06}}
.fx-truck{animation:fxDrive 9s linear infinite}
@keyframes fxDrive{0%{transform:translate(-60px,151px)}100%{transform:translate(600px,151px)}}
.fx-birds{animation:fxFly 14s linear infinite}
@keyframes fxFly{0%{transform:translate(600px,30px)}50%{transform:translate(300px,18px)}100%{transform:translate(-60px,34px)}}
@media (prefers-reduced-motion:reduce){.fx-float svg,.fx-truck,.fx-birds{animation:none}.fx-float span{transition:none;transform:none}}
.cohort-switch{flex:none}

/* ---------- Announcements (v91) ---------- */
#annFeed{display:grid;gap:12px;max-width:860px}
.ann-label{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--faint);margin:6px 0 -4px}
.ann-card{display:flex;gap:14px;padding:18px 20px;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);transition:box-shadow .15s}
@media (hover:hover){.ann-card:hover{box-shadow:var(--shadow-hover)}}
.ann-card.latest{border-left:4px solid var(--orange);background:linear-gradient(90deg,#fffaf3,#fff 40%)}
.ann-avatar{flex:none;width:42px;height:42px;border-radius:50%;background:var(--navy-solid);color:#fff;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center}
.ann-main{flex:1;min-width:0}
.ann-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;font-size:12.5px;color:var(--muted)}
.ann-meta b{color:var(--ink)}
.ann-del{margin-left:auto}
.ann-card h3{margin:8px 0 6px;font-size:17px}
.ann-body{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);line-height:1.6}
.ann-body.clamp{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.ann-foot{display:flex;gap:16px;margin-top:8px}
.ann-copy{color:var(--muted)!important}
.ann-modal{width:min(980px,100%)}
.ann-tpls{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}
.ann-compose{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.95fr);gap:20px;align-items:start}
.ann-prev-wrap{position:sticky;top:0;padding:14px;border-radius:var(--r-lg);background:var(--soft);border:1px dashed var(--border-strong)}
.ann-prev-wrap .ann-card{margin-top:8px}
.ann-deliv{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ann-deliv label{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:2px solid var(--border);border-radius:var(--r-md);cursor:pointer;font-weight:400}
.ann-deliv label:has(input:checked){border-color:var(--navy-3);background:#eef4fb}
.ann-deliv input{margin-top:3px;accent-color:var(--navy-3)}
.ann-deliv b{display:block;font-size:13px}.ann-deliv small{display:block;color:var(--muted);font-size:11.5px}
.ann-reach{padding:10px 12px;border-radius:var(--r-md);background:var(--blue-soft);font-size:13px}
.ann-warn{margin:10px 0 0;padding:8px 12px;border-radius:var(--r-md);background:var(--amber-soft);color:var(--amber);font-weight:700;font-size:12.5px}
@media (max-width:860px){.ann-compose{grid-template-columns:1fr}.ann-prev-wrap{position:static}}
@media (max-width:520px){.ann-deliv{grid-template-columns:1fr}.ann-card{padding:14px;gap:10px}.ann-avatar{width:34px;height:34px}}
.field input[type=radio],.field input[type=checkbox]{display:inline-block;width:18px!important;height:18px;min-height:0!important;padding:0;margin:2px 0 0;flex:none;border:0;box-shadow:none;background:none}
.top>div:first-child{min-width:0}
@media (max-width:1100px){.top>div:first-child{flex:1 1 0}}
@media (max-width:420px){.cohort-switch{max-width:96px}.top-actions{gap:6px}.icon-btn,.notif-btn,.tz-chip{width:36px;height:36px}}
.fx-hero .fx-scene{overflow:hidden}

/* ==========================================================================
   Radios and checkboxes (v91): one look everywhere, drawn by us so no old rule can hide them.
   Hidden inputs that drive their own UI (switches, quiz options, day chips) are left alone.
   ========================================================================== */
:is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input){
  -webkit-appearance:none!important;appearance:none!important;display:inline-grid!important;place-content:center;flex:none;
  width:20px!important;height:20px!important;min-width:20px;min-height:0!important;margin:1px 0 0!important;padding:0!important;
  border:2px solid #b8c5d6!important;border-radius:6px!important;background:#fff!important;box-shadow:none!important;opacity:1!important;position:static!important;
  cursor:pointer;vertical-align:-4px;transition:background .15s,border-color .15s,box-shadow .15s}
input[type=radio]:not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input){border-radius:50%!important}
:is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input)::before{content:"";transform:scale(0);transition:transform .15s cubic-bezier(.2,.8,.2,1)}
input[type=checkbox]:not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input)::before{width:11px;height:11px;background:#fff;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%)}
input[type=radio]:not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input)::before{width:8px;height:8px;border-radius:50%;background:#fff}
:is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input):checked{background:var(--navy-3)!important;border-color:var(--navy-3)!important}
:is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input):checked::before{transform:scale(1)}
:is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input):hover{border-color:var(--navy-3)!important}
:is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input):focus-visible{outline:none;box-shadow:var(--ring)!important}
:is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input):disabled{opacity:.45!important;cursor:not-allowed}
.qz-ready input[type=checkbox]:checked{background:var(--orange-dark)!important;border-color:var(--orange-dark)!important}
/* choice cards (radio inside a bordered label) */
.ann-deliv label{align-items:flex-start}
.ann-deliv input{margin-top:2px!important}


/* ==========================================================================
   DARK MODE (v91). html[data-theme=dark]; set before first paint (index.html), toggled in the top bar.
   Tokens flip; "navy" becomes a light text blue, and fills use --navy-solid. Then the surfaces the
   older stylesheet paints white are switched to the dark card colour.
   ========================================================================== */
html.theme-switching *{transition:background-color .3s,border-color .3s,color .2s!important}
/* v91: generated dark-mode safety net for hard-coded light backgrounds / dark text in styles.css */
[data-theme=dark] .icon-btn,[data-theme=dark] .notif-btn{background-color:var(--card)}
[data-theme=dark] .btn.secondary{background-color:var(--card)}
[data-theme=dark] .btn.danger{background-color:var(--soft)}
[data-theme=dark] .cal-nav{background-color:var(--card)}
[data-theme=dark] .btn.secondary:hover,[data-theme=dark] .cal-nav:hover,[data-theme=dark] .icon-btn:hover,[data-theme=dark] .notif-btn:hover{background-color:var(--soft)}
[data-theme=dark] .btn.danger:hover{background-color:var(--soft)}
[data-theme=dark] .check:hover{background-color:var(--soft)}
[data-theme=dark] .table th{background-color:var(--soft)}
[data-theme=dark] .pill.red{background-color:var(--soft)}
[data-theme=dark] .pill.green,[data-theme=dark] .pill.ok{background-color:var(--soft)}
[data-theme=dark] .pill.orange{background-color:var(--soft)}
[data-theme=dark] .field input,[data-theme=dark] .field select,[data-theme=dark] .field textarea{background-color:var(--card)}
[data-theme=dark] .field input[type=file]{background-color:var(--soft)}
[data-theme=dark] .copy-row input{background-color:var(--soft)}
[data-theme=dark] .switch span:before{background-color:var(--card)}
[data-theme=dark] .login-card{background-color:var(--card)}
[data-theme=dark] .signup-course{background-color:var(--soft)}
[data-theme=dark] .modal-card{background-color:var(--card)}
[data-theme=dark] .notif-panel{background-color:var(--card)}
[data-theme=dark] .notif-head{background-color:var(--card)}
[data-theme=dark] .notif-item.unread{background-color:var(--soft)}
[data-theme=dark] .banner{background-color:var(--soft)}
[data-theme=dark] .transcript .table tfoot td{background-color:var(--soft)}
[data-theme=dark] .day{background-color:var(--card)}
[data-theme=dark] .day.today{background-color:var(--soft)}
[data-theme=dark] .event{background-color:var(--card)}
[data-theme=dark] .field input,[data-theme=dark] .field select,[data-theme=dark] .field textarea{background-color:var(--soft)}
[data-theme=dark] .field input:focus,[data-theme=dark] .field select:focus,[data-theme=dark] .field textarea:focus,[data-theme=dark] .copy-row input:focus{background-color:var(--card)}
[data-theme=dark] .tabs{background-color:var(--soft)}
[data-theme=dark] .tabs button.active{background-color:var(--card)}
[data-theme=dark] .day{background-color:var(--soft)}
[data-theme=dark] .res-tag{background-color:var(--soft)}
[data-theme=dark] .sess-block{background-color:var(--soft)}
[data-theme=dark] .mat-row{background-color:var(--card)}
[data-theme=dark] .mat-ico{background-color:var(--soft)}
[data-theme=dark] .sess-empty{background-color:var(--card)}
[data-theme=dark] .small-icon{background-color:var(--card)}
[data-theme=dark] .action-menu{background-color:var(--card)}
[data-theme=dark] .action-menu button:hover{background-color:var(--soft)}
[data-theme=dark] .action-menu .danger-text{color:var(--text)}
[data-theme=dark] .course-chip{background-color:var(--soft)}
[data-theme=dark] .assignment-status.pending{background-color:var(--soft)}
[data-theme=dark] .assignment-status.submitted{background-color:var(--soft)}
[data-theme=dark] .assignment-status.done{background-color:var(--soft)}
[data-theme=dark] .assignment-details{background-color:var(--soft)}
[data-theme=dark] .assignment-result{background-color:var(--soft)}
[data-theme=dark] .participant-admin-toolbar select,[data-theme=dark] .attendance-controls select{background-color:var(--card)}
[data-theme=dark] .search-field input{background-color:var(--card)}
[data-theme=dark] .directory-summary{background-color:var(--card)}
[data-theme=dark] .participant-table th{background-color:var(--soft)}
[data-theme=dark] .person-avatar{background-color:var(--soft)}
[data-theme=dark] .id-code{background-color:var(--soft)}
[data-theme=dark] .danger-icon{color:var(--text)}
[data-theme=dark] .attendance-summary{background-color:var(--card)}
[data-theme=dark] .attendance-summary .att-absent b{color:var(--text)}
[data-theme=dark] .attendance-table th{background-color:var(--soft)}
[data-theme=dark] .attendance-btn{background-color:var(--card)}
[data-theme=dark] .attendance-btn:hover{background-color:var(--soft)}
[data-theme=dark] .analytics-badge{background-color:var(--card)}
[data-theme=dark] .attendance-rate-badge,[data-theme=dark] .chart-kpi{background-color:var(--soft)}
[data-theme=dark] .analytics-badge{background-color:var(--soft)}
[data-theme=dark] .attendance-insight-strip>div{background-color:var(--card)}
[data-theme=dark] .chart-kpi{background-color:var(--soft)}
[data-theme=dark] .dashboard-alert{background-color:var(--soft)}
[data-theme=dark] .kpi-icon{background-color:var(--soft)}
[data-theme=dark] .dashboard-track{background-color:var(--soft)}
[data-theme=dark] .session-date{background-color:var(--soft)}
[data-theme=dark] .quick-actions button{background-color:var(--card)}
[data-theme=dark] .quick-actions button:hover{background-color:var(--soft)}
[data-theme=dark] .geo-chip{background-color:var(--soft)}
[data-theme=dark] .geo-ctl{background-color:var(--card)}
[data-theme=dark] .geo-ctl button{background-color:var(--card);color:var(--text)}
[data-theme=dark] .geo-ctl button:hover{background-color:var(--soft)}
[data-theme=dark] .th-sort:hover,[data-theme=dark] .th-sort:focus-visible{color:var(--text)}
[data-theme=dark] .participant-table thead th{background-color:var(--soft)}
[data-theme=dark] .more-pill{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .cohort-switch{background-color:var(--card)}
[data-theme=dark] .cohort-pm{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .rs-pm{background-color:var(--card)}
[data-theme=dark] .rs-kpi-ic{background-color:var(--soft)}
[data-theme=dark] .day-count{background-color:var(--soft)}
[data-theme=dark] .day.today .day-count{background-color:var(--card)}
[data-theme=dark] .availability-chip{background-color:var(--soft)}
[data-theme=dark] .calendar-cutoff{background-color:var(--soft)}
[data-theme=dark] .day-activity-block{background-color:var(--soft)}
[data-theme=dark] .slot-chip,[data-theme=dark] .slot-option{background-color:var(--card)}
[data-theme=dark] .slot-chip.more{background-color:var(--soft)}
[data-theme=dark] .booking-info{background-color:var(--soft)}
[data-theme=dark] .slot-day{background-color:var(--soft)}
[data-theme=dark] .social-btn{background-color:var(--card)}
[data-theme=dark] .chart-legend-item[tabindex]:hover,[data-theme=dark] .chart-legend-item[tabindex]:focus-visible{background-color:var(--soft)}
[data-theme=dark] .chart-nav button{background-color:var(--card)}
[data-theme=dark] .chart-nav button:hover:not(:disabled){background-color:var(--soft)}
[data-theme=dark] .chart-flex .yax{background-color:var(--card)}
[data-theme=dark] .rr-kpi-ic.navy{background-color:var(--soft)}
[data-theme=dark] .rr-kpi-ic.orange{background-color:var(--soft)}
[data-theme=dark] .rr-kpi-ic.blue{background-color:var(--soft)}
[data-theme=dark] .rr-kpi-ic.green{background-color:var(--soft)}
[data-theme=dark] .rr-bar{background-color:var(--soft)}
[data-theme=dark] .rr-stack i.none{background-color:var(--soft)}
[data-theme=dark] .rr-status.ok{background-color:var(--soft)}
[data-theme=dark] .rr-status.no{background-color:var(--soft)}
[data-theme=dark] .bubble-row.me .bubble{background-color:var(--soft)}
[data-theme=dark] .conv{background-color:var(--card)}
[data-theme=dark] .conv:hover{background-color:var(--soft)}
[data-theme=dark] .team-remove{color:var(--text)}
[data-theme=dark] .team-remove:hover{background-color:var(--soft)}
[data-theme=dark] .rep-box{background-color:var(--card)}
[data-theme=dark] .day-chip span{background-color:var(--card)}
[data-theme=dark] .rep-error{color:var(--text)}
[data-theme=dark] .publish-bar.is-draft{background-color:var(--soft)}
[data-theme=dark] .publish-bar.is-live{background-color:var(--soft)}
[data-theme=dark] .attendance-controls .att-toggle{background-color:var(--card)}
[data-theme=dark] .event.capstone-event{background-color:var(--card)}
[data-theme=dark] .qz-lock{background-color:var(--soft)}
[data-theme=dark] .qz-warn{background-color:var(--soft)}
[data-theme=dark] .qz-edit-q{background-color:var(--card)}
[data-theme=dark] .qz-save-bar{background-color:var(--card)}
[data-theme=dark] #quizRoot{background-color:var(--soft)}
[data-theme=dark] .qz-nav{background-color:var(--card)}
[data-theme=dark] .qz-dot{background-color:var(--card)}
[data-theme=dark] .qz-dot.done{background-color:var(--soft)}
[data-theme=dark] .qz-opt{background-color:var(--card)}
[data-theme=dark] .qz-opt.sel{background-color:var(--soft)}
[data-theme=dark] .qz-block-card{background-color:var(--card)}
[data-theme=dark] .qz-score{background-color:var(--card)}
[data-theme=dark] .qz-rev{background-color:var(--card)}
[data-theme=dark] .qz-rev-o.right{background-color:var(--soft)}
[data-theme=dark] .qz-rev-o.wrong{background-color:var(--soft)}
[data-theme=dark] .dash-chip{background-color:var(--card)}
[data-theme=dark] .dash-attn-tile{background-color:var(--card)}
[data-theme=dark] .dash-attn-ic{background-color:var(--soft)}
[data-theme=dark] .gate-step{background-color:var(--card)}
[data-theme=dark] .gate-step.ok{background-color:var(--soft)}
[data-theme=dark] .recap-box{background-color:var(--card)}
[data-theme=dark] .recap-bar{background-color:var(--soft)}
[data-theme=dark] .role-card{background-color:var(--card)}
[data-theme=dark] .role-icon{background-color:var(--soft)}
[data-theme=dark] .portal-badge{background-color:var(--soft)}
[data-theme=dark] .login-success{background-color:var(--soft)}
[data-theme=dark] .login-error{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .day.drop-target{background-color:var(--soft)}
[data-theme=dark] .qz-snaps figure{background-color:var(--soft)}
[data-theme=dark] .sub-grade input{background-color:var(--card)}
[data-theme=dark] .ext-pdf{background-color:var(--soft)}
[data-theme=dark] .ext-doc{background-color:var(--soft)}
[data-theme=dark] .ext-ppt{background-color:var(--soft)}
[data-theme=dark] .ext-xls{background-color:var(--soft)}
[data-theme=dark] .cert-note{background-color:var(--soft)}
[data-theme=dark] .cert-note.warn{background-color:var(--soft)}
[data-theme=dark] .cert-field{background-color:var(--card)}
[data-theme=dark] .cert-field:focus-within{background-color:var(--card)}
[data-theme=dark] .cert-ic.pm{background-color:var(--soft)}
[data-theme=dark] .cert-ic.ai{background-color:var(--soft)}
[data-theme=dark] .msg-tools input[type=search]{background-color:var(--card)}
[data-theme=dark] .msg-tools input[type=search]:focus{background-color:var(--card)}
[data-theme=dark] .chip{background-color:var(--card)}
[data-theme=dark] .msg-group{background-color:var(--card)}
[data-theme=dark] .msg-group-head{background-color:var(--soft)}
[data-theme=dark] .asg-bar{background-color:var(--soft)}
[data-theme=dark] .due-chip{background-color:var(--soft)}
[data-theme=dark] .due-chip.soon{background-color:var(--soft)}
[data-theme=dark] .due-chip.late,[data-theme=dark] .due-chip.past{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .due-chip.none{background-color:var(--soft)}
[data-theme=dark] .ann-reach{background-color:var(--soft)}
[data-theme=dark] .cal-tip{background-color:var(--card)}
[data-theme=dark] .cal-tip .tip-course{background-color:var(--soft)}
[data-theme=dark] .cert-card{background-color:var(--soft)}
[data-theme=dark] .cert-thumb{background-color:var(--card)}
[data-theme=dark] .cert-stats>div{background-color:var(--card)}
[data-theme=dark] .cert-empty-ic{background-color:var(--soft)}
[data-theme=dark] .share-btn{background-color:var(--card)}
[data-theme=dark] .share-tip{background-color:var(--soft)}
[data-theme=dark] .cert-assign-row{background-color:var(--card)}
[data-theme=dark] .cert-assign-thumb{background-color:var(--soft)}
[data-theme=dark] .cert-select select{background-color:var(--soft)}
[data-theme=dark] .cert-select select:hover:not(:disabled){background-color:var(--card)}
[data-theme=dark] .cert-select select:focus{background-color:var(--card)}
[data-theme=dark] .coh-flag.on{background-color:var(--soft)}
[data-theme=dark] .coh-steps button{background-color:var(--soft)}
[data-theme=dark] .coh-steps button span{background-color:var(--card)}
[data-theme=dark] .coh-steps li.done button{background-color:var(--soft)}
[data-theme=dark] .coh-course{background-color:var(--card)}
[data-theme=dark] .coh-course:has(input:checked){background-color:var(--soft)}
[data-theme=dark] .coh-cover{background-color:var(--soft)}
[data-theme=dark] .coh-img-prev{background-color:var(--soft)}
[data-theme=dark] .rq-box{background-color:var(--card)}
[data-theme=dark] .rq-ask textarea,[data-theme=dark] .rq-reply-form textarea{background-color:var(--card)}
[data-theme=dark] .rq-ask textarea:focus,[data-theme=dark] .rq-reply-form textarea:focus,[data-theme=dark] .rq-at input:focus{background-color:var(--card)}
[data-theme=dark] .rq-card{background-color:var(--card)}
[data-theme=dark] .rq-card.st-resolved{background-color:var(--card)}
[data-theme=dark] .rq-reply.staff{background-color:var(--soft)}
[data-theme=dark] .qa-tools input[type=search]{background-color:var(--card)}
[data-theme=dark] .tutor-opt{background-color:var(--card)}
[data-theme=dark] .tutor-opt:has(input:checked){background-color:var(--soft)}
[data-theme=dark] .asg-sort select{background-color:var(--card)}
[data-theme=dark] .rec-tools input[type=search]{background-color:var(--card)}
[data-theme=dark] .rec-tools select{background-color:var(--card)}
[data-theme=dark] .rec-bar{background-color:var(--soft)}
[data-theme=dark] .rec-missed-note{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .aud-note.ok{background-color:var(--soft)}
[data-theme=dark] .aud-note.warn{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .dash-other-coh{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .aud-note.bad{background-color:var(--soft);color:var(--text)}
[data-theme=dark] .acc-row{background-color:var(--card)}
[data-theme=dark] .acc-sess.ok .acc-mark{background-color:var(--soft)}
[data-theme=dark] .acc-sess.no .acc-mark{background-color:var(--soft)}
[data-theme=dark] .tz-chip{background-color:var(--card)}
[data-theme=dark] .tz-chip.previewing{background-color:var(--soft)}
[data-theme=dark] .tz-preview{background-color:var(--soft)}
[data-theme=dark] .acc-tz{background-color:var(--soft)}
[data-theme=dark] .dash-att-cell{background-color:var(--soft)}
[data-theme=dark] .ti-drop{background-color:var(--soft)}
[data-theme=dark] .ti-rules{background-color:var(--soft)}
[data-theme=dark] .ti-bar{background-color:var(--soft)}
[data-theme=dark] .ti-table select{background-color:var(--card)}
[data-theme=dark] .ti-others{background-color:var(--soft)}
[data-theme=dark] .event{background-color:var(--soft)}
[data-theme=dark] .event.asg-event{background-color:var(--card)}
[data-theme=dark] .my-cohort-card.active{background-color:var(--soft)}
[data-theme=dark] .qz-tabs{background-color:var(--card)}
[data-theme=dark] .qz-preset{background-color:var(--soft)}
[data-theme=dark] .qz-preset:hover{background-color:var(--soft)}
[data-theme=dark] .qz-mode{background-color:var(--card)}
[data-theme=dark] .qz-mode.on{background-color:var(--soft)}
[data-theme=dark] .qz-session{background-color:var(--soft)}
[data-theme=dark] .qz-jump{background-color:var(--card)}
[data-theme=dark] .qz-jump button{background-color:var(--card)}
[data-theme=dark] .qz-jump button.bad{background-color:var(--soft)}
[data-theme=dark] .adm-todo-tile{background-color:var(--card)}
[data-theme=dark] .adm-todo-tile em{background-color:var(--soft)}
[data-theme=dark] .adm-allclear{background-color:var(--soft)}
[data-theme=dark] .adm-sess.live{background-color:var(--soft)}
[data-theme=dark] .adm-link:hover{background-color:var(--soft)}
[data-theme=dark] .adm-stack{background-color:var(--soft)}
[data-theme=dark] .adm-mini{background-color:var(--soft)}
[data-theme=dark] .adm-cohort-bar{background-color:var(--soft)}
[data-theme=dark] .qz-acc{background-color:var(--soft)}
[data-theme=dark] .qz-acc-list{background-color:var(--card)}
[data-theme=dark] .qz-acc-row.has{background-color:var(--soft)}
[data-theme=dark] .clock-bar{background-color:var(--soft);color:var(--text)}
[data-theme=dark] #subViewer{background-color:var(--soft)}
[data-theme=dark] .sv-top{background-color:var(--card)}
[data-theme=dark] .sv-main{background-color:var(--card)}
[data-theme=dark] .sv-box{background-color:var(--card)}
[data-theme=dark] .sv-tabs button{background-color:var(--card)}
[data-theme=dark] mark.ai-low{background-color:var(--soft)}
[data-theme=dark] .sv-list li button:hover{background-color:var(--soft)}
[data-theme=dark] .sv-p.hi{color:var(--text)}
[data-theme=dark] .sv-p.low{background-color:var(--soft)}
[data-theme=dark] .sv-box input[type=number],[data-theme=dark] .sv-box textarea{background-color:var(--card)}
[data-theme=dark] .rq-addimg{background-color:var(--card)}
[data-theme=dark] .rq-addimg:hover{background-color:var(--soft)}
[data-theme=dark] .rq-zoom img{background-color:var(--card)}
[data-theme=dark] .ck-weeks i.ok{background-color:var(--soft)}
[data-theme=dark] .ck-weeks i.ex{background-color:var(--soft)}
[data-theme=dark] .ck-weeks i.no{background-color:var(--soft)}
[data-theme=dark] .ck-rule select{background-color:var(--card)}
[data-theme=dark] .rq-row{background-color:var(--card)}
[data-theme=dark] .ck-sess i{background-color:var(--soft)}
[data-theme=dark] .rq-assign select{background-color:var(--card)}
[data-theme=dark] .adm-todo-row:hover{background-color:var(--soft)}
[data-theme=dark] .adm-todo-row em{background-color:var(--soft)}
[data-theme=dark] .adm-todo-row.hot em{background-color:var(--soft)}

[data-theme=dark]{
  color-scheme:dark;
  --bg:#0a1420;--card:#111d2c;--soft:#152437;--col:#1b2d43;--border:#22354c;--border-strong:#30475f;
  --text:#d8e2ef;--muted:#9aabc0;--faint:#71859c;--ink:#f0f4fa;--navy:#a9c8ec;--navy-2:#8fb6e4;--navy-3:#6ea3db;--navy-solid:#1c4f87;
  --green:#4cc38a;--green-soft:#123326;--red:#ff7b72;--red-soft:#3a1a1d;--amber:#f3b45b;--amber-soft:#3a2a12;--blue-soft:#14273d;--orange-soft:#33240f;
  --shadow-card:0 1px 2px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.25);--shadow-hover:0 4px 22px rgba(0,0,0,.45);--shadow-pop:0 24px 64px rgba(0,0,0,.6);--ring:0 0 0 3px rgba(110,163,219,.35)}
[data-theme=dark] body{background:var(--bg);color:var(--text)}
/* brand fills that must stay dark-on-dark readable */
[data-theme=dark] :is(.toast,.welcome-avatar,.result-avatar,.rr-chip.on,.dash-chip.on,.gate-n,.portal-badge.admin,.coh-steps li.active button,.rec-resume,.sv-tabs button.on,.day-chip input:checked+span,.dash-meter>b,.rr-bar>u){background:var(--navy-solid)!important;color:#fff!important}
[data-theme=dark] .btn,[data-theme=dark] .btn:hover{color:var(--on-orange)}
[data-theme=dark] .btn.secondary{background:var(--soft);color:var(--text);border-color:var(--border-strong)}
[data-theme=dark] .btn.secondary:hover{background:var(--col)}
[data-theme=dark] .btn.danger{background:var(--red-soft);color:var(--red);border-color:#5a2a2c}
[data-theme=dark] .qz-brand{color:var(--on-orange)}
[data-theme=dark] .rq-team,[data-theme=dark] .nav-badge,[data-theme=dark] .notif-dot,[data-theme=dark] .qa-n{color:var(--on-orange)}
/* surfaces painted white by the older stylesheet */
[data-theme=dark] :is(.card,.modal-card,.notif-panel,.notif-head,.help-drawer,.tabs,.seg,.set-nav,.day,.agenda-item,.ann-card,.ann-card.latest,.help-item,.help-flow,.help-steps li,.qz-card,.qz-nav,.qz-opt,.qz-dot,.qz-rv,.qz-block-card,.qz-score,.qz-rules li,.qz-flagbtn,.sub-drop,.sess-card,.rq-card,.rq-item,.cert-tile,.coh-card,.stat,.adm-kpi,.dash-attn-tile,.chip,.icon-btn,.notif-btn,.help-btn,.qs-btn,.theme-btn,.tz-chip,.cohort-switch,.cal-nav,.action-menu,.qs-box,.tour-pop,.help-welcome,.social-card,.social-btn,.share-btn,.role-card,.login-card,.mat-row,.student-row,.booking-row,.window-row,.slot-chip,.attendance-btn,.dash-att-cell,.rs-kpi,.rs-course,.rr-card,.results-card,.result-card,.participant-directory-card,.attendance-card,.analytics-card,.ti-drop,.ti-card,.wr-card,.coh-empty,.course-chip,.id-code,.id-badge,.qz-edit-q,.qz-settings,.eu-bars,.cert-stats>div,.qz-stats div,.adm-card){background-color:var(--card)!important;border-color:var(--border)!important;color:var(--text)}
[data-theme=dark] :is(.ann-card.latest){background:linear-gradient(90deg,#2a1f10,var(--card) 45%)!important}
[data-theme=dark] :is(.qz-opt:hover,.help-item:hover,.agenda-item:hover,.chip:hover){background-color:var(--soft)!important}
[data-theme=dark] .qz-opt.sel{background:#14273d!important;border-color:var(--navy-3)!important}
[data-theme=dark] :is(.dash-attn-tile,.dash-attn-tile.hot){background:linear-gradient(90deg,#2a1f10,var(--card))!important;border-color:#4a3415!important}
[data-theme=dark] :is(.day.today){background:#2a1f10!important;border-color:var(--orange)!important}
[data-theme=dark] :is(.day.empty-day){background:transparent!important;border-color:transparent!important}
[data-theme=dark] :is(.tabs button.active,.seg button.on,.set-nav button.active,.chip.on,.qz-dot.cur,.sub-steps span.on){background:var(--navy-solid)!important;color:#fff!important;border-color:var(--navy-solid)!important}
[data-theme=dark] .qz-dot.done{background:var(--green-soft)!important;border-color:#1f5a3f!important;color:var(--green)!important}
/* inputs */
[data-theme=dark] :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea){background-color:var(--soft)!important;color:var(--text)!important;border-color:var(--border-strong)!important}
[data-theme=dark] :is(input,textarea)::placeholder{color:#6f849d!important}
[data-theme=dark] :is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input){background:var(--soft)!important;border-color:#4a6380!important}
[data-theme=dark] :is(input[type=checkbox],input[type=radio]):not(.switch input,.day-chip input,.qz-opt input,.rv-stars input,.at-switch input,.cap-pick input):checked{background:var(--navy-3)!important;border-color:var(--navy-3)!important}
[data-theme=dark] .field select,[data-theme=dark] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%239aabc0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 8 5 5 5-5'/%3E%3C/svg%3E")!important}
/* tables */
[data-theme=dark] :is(.table th,.participant-table th,.attendance-table th,.results-table th,.adm-table th){background:var(--soft)!important;color:var(--muted)!important;border-color:var(--border)!important}
[data-theme=dark] :is(.table td,.adm-table td){border-color:var(--border)!important;color:var(--text)}
[data-theme=dark] .table tbody tr:hover td{background:var(--soft)!important}
[data-theme=dark] :is(.directory-summary,.attendance-summary,.results-card-head){background:var(--soft)!important;border-color:var(--border)!important}
/* top bar, hints, banners */
[data-theme=dark] .top{background:rgba(10,20,32,.86)!important;border-color:var(--border)!important}
[data-theme=dark] .help-hint{background:linear-gradient(90deg,#13253a,#111d2c)!important;border-color:#24405f!important}
[data-theme=dark] .help-hint-ic{background:var(--soft)!important;box-shadow:none}
[data-theme=dark] :is(.banner,.qz-ready,.cap-rule,.help-tips p,.dash-coach.go,.qz-warn,.qz-lock){background:var(--orange-soft)!important;border-color:#5a3f17!important;color:#f3d3a3!important}
[data-theme=dark] :is(.dash-coach.ok,.aud-note.ok){background:var(--green-soft)!important;color:#a6e3c4!important}
[data-theme=dark] :is(.aud-note.warn,.ai-gauge){background:var(--red-soft)!important;border-color:#5a2a2c!important;color:#ffc9c4!important}
[data-theme=dark] :is(.sub-ai,.ann-reach,.booking-info,.rq-ctx,.sess-when,.sess-empty,.sub-brief,.qz-instr,.ann-prev-wrap,.cert-id-box,.sub-receipt,.rq-reply,.help-search input,.help-tabs,.calendar-cutoff){background:var(--soft)!important;border-color:var(--border)!important;color:var(--text)}
[data-theme=dark] .rq-reply.staff{background:var(--orange-soft)!important}
[data-theme=dark] .help-tabs button.on{background:var(--card)!important;color:var(--ink)!important}
[data-theme=dark] .sub-file{background:var(--green-soft)!important;border-color:#1f5a3f!important}
[data-theme=dark] .sub-drop:hover,[data-theme=dark] .sub-drop.over{background:var(--orange-soft)!important;border-color:var(--orange)!important}
/* pills */
[data-theme=dark] .pill{background:var(--col);color:var(--muted)}
[data-theme=dark] .pill.green,[data-theme=dark] .pill.ok{background:var(--green-soft);color:var(--green)}
[data-theme=dark] .pill.red{background:var(--red-soft);color:var(--red)}
[data-theme=dark] .pill.orange{background:var(--amber-soft);color:var(--amber)}
/* text that the older stylesheet hard-codes dark */
[data-theme=dark] :is(h1,h2,h3,h4,b,strong,.top h1,.qz-q,.person-cell b,.stat strong,.adm-kpi strong){color:var(--ink)}
[data-theme=dark] :is(p,li,td,label,small,span){border-color:var(--border)}
[data-theme=dark] .login-note,[data-theme=dark] .muted{color:var(--muted)}
[data-theme=dark] a{color:#8fbcec}
/* quiz, background, misc */
[data-theme=dark] #quizRoot{background:linear-gradient(180deg,#0c1826,#0a1420)!important}
[data-theme=dark] .qz-actions{background:none}
@media (max-width:760px){[data-theme=dark] .qz-actions{background:linear-gradient(180deg,rgba(10,20,32,0),#0a1420 30%)}}
[data-theme=dark] .fx-bg{filter:invert(1) brightness(1.4);opacity:.05}
[data-theme=dark] .fx-float{color:#8fb6e4}[data-theme=dark] .fx-float span{opacity:.08}
[data-theme=dark] .skel{background:linear-gradient(90deg,#152437,#1b2d43,#152437)!important;background-size:200% 100%!important}
[data-theme=dark] .modal{background:rgba(0,0,0,.6)}
[data-theme=dark] .cert-shot,[data-theme=dark] .coh-cover{background:var(--soft)!important}
/* theme button */
.theme-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-md);background:#fff;border:1px solid var(--border);color:var(--navy);flex:none}
.theme-btn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.theme-btn .i-sun{display:none}[data-theme=dark] .theme-btn .i-sun{display:block}[data-theme=dark] .theme-btn .i-moon{display:none}
.theme-btn:hover{background:var(--soft)}
.login-theme{position:fixed;top:calc(16px + var(--sat));right:calc(16px + var(--sar));z-index:5}
.login-theme .theme-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff}
@media (max-width:420px){.top-actions .theme-btn{display:none}}
[data-theme=dark] :is(.side-foot .side-avatar,.qz-clock.warn,.adm-todo-row em,.help-hint .pill){color:var(--on-orange)}
[data-theme=dark] .qz-clock{background:var(--soft);color:var(--ink)}
[data-theme=dark] .qz-clock.low{background:var(--red);color:#fff}
[data-theme=dark] :is(.adm-stack,.rq-addimg,.assignment-details,.assignment-result,.more-pill,.check.att-toggle,.rep-box,.coh-img-prev,.coh-steps button,.coh-steps li,.due-chip,.cohort-pm,.coh-flag,.rs-kpi-ic,.dash-attn-ic){background-color:var(--soft)!important;border-color:var(--border)!important;color:var(--text)!important}
[data-theme=dark] :is(.coh-flag.on,.publish-bar.is-live){background-color:var(--green-soft)!important;border-color:#1f5a3f!important;color:#a6e3c4!important}
[data-theme=dark] :is(.adm-todo-row em,.dash-attn-ic,.assignment-status.pending){background-color:var(--amber-soft)!important;color:var(--amber)!important}
[data-theme=dark] .ann-deliv label:has(input:checked){background:var(--blue-soft)!important;border-color:var(--navy-3)!important}
[data-theme=dark] input[type=color]{background:var(--soft)!important;border-color:var(--border-strong)!important}
[data-theme=dark] .publish-bar{background-color:var(--soft)!important;border-color:var(--border)!important}
[data-theme=dark] .field select,[data-theme=dark] select{background-repeat:no-repeat!important;background-position:right 12px center!important;background-size:16px 16px!important;padding-right:36px!important}
[data-theme=dark] select[multiple]{background-image:none!important;padding-right:8px!important}
[data-theme=dark] .cohort-switch select{background-image:none!important;padding-right:4px!important;background-color:transparent!important;border:0!important}
[data-theme=dark] .day .event{background:color-mix(in srgb,var(--ec,#6ea3db) 22%,var(--card))!important}
[data-theme=dark] .day .event b{color:var(--ink)}
[data-theme=dark] .day .event .ev-time{color:var(--muted)}
[data-theme=dark] :is(.rs-hero){background:radial-gradient(600px 220px at 85% 120%,rgba(247,148,29,.25),transparent 60%),linear-gradient(120deg,#011a33,#0b2e55 55%,#123f70)!important;color:#fff!important}
[data-theme=dark] .rs-hero :is(h2,h3,p,b,strong,span){color:#fff}
[data-theme=dark] :is(.contact-email,.course-count,.cell-sub,.person-cell small,.id-code){color:var(--muted)!important}
@media (max-width:1366px){.cohort-switch>span:first-child{display:none}.cohort-switch select{min-width:120px}}

/* ---------- Quiz results window (v91) ---------- */
.qr-modal{width:min(1020px,100%)}
.qr-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}
.qr-head h2{margin:4px 0 8px}
.qr-facts{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.qr-facts>span:not(.pill){padding:3px 10px;border-radius:var(--r-pill);background:var(--soft);border:1px solid var(--border);font-size:12px;color:var(--muted)}
.qr-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:14px}
.qr-stats div{padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--soft)}
.qr-stats b{display:block;font-size:20px;color:var(--ink)}.qr-stats span{font-size:11.5px;color:var(--muted)}
.qr-stats .warn{background:var(--amber-soft);border-color:#f6d6a8}.qr-stats .warn b{color:var(--amber)}
.qr-tabs{margin-bottom:12px}
.qr-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.qr-tools .chips{display:flex;gap:6px;flex-wrap:wrap}
.qr-tools input[type=search]{flex:1;min-width:160px;height:38px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--r-md);font:inherit;background:#fff}
.qr-all{margin:0 0 6px;padding:6px 4px}
.qr-list{display:grid;gap:6px}
.qr-row{display:grid;grid-template-columns:auto 36px minmax(150px,1.4fr) minmax(110px,.9fr) minmax(120px,1fr) minmax(0,1.2fr) auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:#fff;transition:border-color .15s,background .15s}
.qr-row.sel{border-color:var(--navy-3);background:#f4f8fd}
.qr-av{width:36px;height:36px;border-radius:50%;background:var(--blue-soft);color:var(--navy);font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
.qr-who{min-width:0}.qr-who b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qr-who small{display:block;color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qr-score b{font-size:15px}.qr-score b small{color:var(--muted);font-size:11px}
.qr-bar{display:block;height:5px;margin-top:4px;border-radius:5px;background:var(--col);overflow:hidden}
.qr-bar i{display:block;height:100%;border-radius:5px}.qr-bar i.ok{background:var(--green)}.qr-bar i.mid{background:var(--orange)}.qr-bar i.low{background:var(--red)}
.qr-meta small{display:block;color:var(--muted);font-size:12px}.qr-why{color:var(--amber)!important}
.qr-flags{display:flex;flex-wrap:wrap;gap:4px}.qr-clean{color:var(--green);font-size:12px;font-weight:700}
.qr-act{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.qr-detail{display:none;grid-column:1/-1;padding:8px 0 2px 46px}
.qr-row.open .qr-detail{display:block}
.qr-log{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:4px;max-height:180px;overflow:auto;font-size:12.5px}
.qr-log time{display:inline-block;min-width:84px;color:var(--muted)}
.qr-note{margin-top:10px}
.qr-bulk{position:sticky;bottom:-26px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:12px -26px -26px;padding:12px 26px;background:var(--navy-solid);color:#fff;border-radius:0 0 var(--r-xl) var(--r-xl)}
.qr-bulk b{color:#fff}.qr-bulk label{display:flex;align-items:center;gap:8px;font-size:12.5px}
.qr-bulk input[type=datetime-local]{height:34px;border-radius:var(--r-sm);border:0;padding:0 8px;font:inherit}
.qr-bulk .link-btn{color:#ffd08a}
.qz-acc-mail{margin:0 8px}
@media (max-width:860px){
  .qr-row{grid-template-columns:auto 32px minmax(0,1fr) auto;gap:8px}
  .qr-meta,.qr-flags{grid-column:3/-1}
  .qr-score{grid-column:4;grid-row:1}
  .qr-act{grid-column:1/-1;justify-content:flex-start}
  .qr-detail{padding-left:0}
  .qr-bulk{margin:12px -18px -24px;padding:12px 18px}
}
[data-theme=dark] :is(.qr-row,.qr-tools input[type=search]){background:var(--card)!important;border-color:var(--border)!important}
[data-theme=dark] .qr-row.sel{background:#14273d!important;border-color:var(--navy-3)!important}
[data-theme=dark] :is(.qr-stats div,.qr-facts>span:not(.pill)){background:var(--soft)!important;border-color:var(--border)!important}
[data-theme=dark] .qr-stats .warn{background:var(--amber-soft)!important}
.qr-bulk input[type=datetime-local]{color:var(--text);background:#fff}
@media (max-width:700px){.qr-stats{grid-template-columns:repeat(3,1fr);gap:6px}.qr-stats div{padding:8px 10px}.qr-stats b{font-size:16px}.qr-stats span{font-size:10.5px}.qr-facts>span:not(.pill){font-size:11px}.qr-tools input[type=search]{min-width:0}}
/* results rows: fixed columns so every row lines up; actions live in one ⋯ menu */
.qr-row{grid-template-columns:22px 36px minmax(150px,1.3fr) 120px 200px minmax(0,1fr) 40px!important}
.qr-row>input[type=checkbox]{justify-self:center}
.qr-meta{min-width:0}
.qr-time{display:flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap}
.qr-time b{font-weight:700;color:var(--ink)}
.qr-time i{font-style:normal;color:var(--faint)}
.qr-meta small{display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qr-act{justify-content:center!important;position:relative}
.qr-menu{width:34px!important;height:34px!important;font-size:18px;font-weight:700;line-height:1;color:var(--muted)}
.qr-detail{padding:10px 0 4px 68px}
.qr-log{position:relative;padding-left:16px!important;border-left:2px solid var(--border)}
.qr-log li{position:relative}
.qr-log li::before{content:"";position:absolute;left:-22px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--border-strong);border:2px solid var(--card)}
.qr-log li.in::before{background:var(--navy-3)}.qr-log li.out::before{background:var(--green)}.qr-log li.ev::before{background:var(--orange)}
.qr-log small{color:var(--muted)}
@media (max-width:860px){
  .qr-row{grid-template-columns:22px 32px minmax(0,1fr) auto 36px!important}
  .qr-score{grid-column:4!important;grid-row:1!important}
  .qr-act{grid-column:5!important;grid-row:1!important}
  .qr-meta,.qr-flags{grid-column:3/-1!important}
  .qr-detail{padding-left:0}
}
.qr-detail .qr-log{max-height:none;overflow:visible;margin-left:10px!important;padding-left:18px!important}.qr-detail .qr-log li::before{left:-25px}

/* ==========================================================================
   Chats (chat.js): WhatsApp-style, PVL colours
   ========================================================================== */
.cx{display:grid;grid-template-columns:340px minmax(0,1fr);height:calc(100dvh - 150px);min-height:520px;border:1px solid var(--border);border-radius:var(--r-xl);overflow:hidden;background:var(--card);box-shadow:var(--shadow-card)}
.cx-solo{grid-template-columns:1fr;max-width:900px;margin:0 auto}
.cx-side{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border);background:var(--card)}
.cx-side-h{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 8px}
.cx-side-h h2{margin:0;font-size:20px}
.cx-search{padding:4px 12px 8px}
.cx-search input{width:100%;height:40px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--soft);font:inherit;font-size:13.5px}
.cx-search input:focus{outline:none;border-color:var(--navy-3);box-shadow:var(--ring);background:var(--card)}
.cx-chips{display:flex;gap:6px;padding:0 12px 10px;flex-wrap:wrap}
.cx-chips .chip{padding:5px 12px;font-size:12px}
.cx-list{flex:1;overflow-y:auto;overscroll-behavior:contain}
.cx-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);background:var(--card);transition:background .12s}
.cx-item:hover{background:var(--soft)}
.cx-item.on{background:var(--blue-soft)}
.cx-av{flex:none;width:44px;height:44px;border-radius:50%;background:var(--navy-solid);color:#fff;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center}
.cx-av-pvl{background:var(--orange);color:var(--on-orange);font-size:11px;letter-spacing:.06em}
.cx-mid{flex:1;min-width:0}
.cx-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.cx-top b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.cx-top small{flex:none;color:var(--faint);font-size:11.5px}
.cx-sub{display:flex;align-items:center;gap:6px;margin-top:2px}
.cx-snip{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12.5px}
.cx-q{flex:none;font-size:11px;font-weight:700;color:var(--amber);background:var(--amber-soft);padding:1px 7px;border-radius:var(--r-pill)}
.cx-badge{flex:none;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--orange);color:var(--on-orange);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.cx-item:has(.cx-badge) .cx-top small{color:var(--orange-dark);font-weight:700}
.cx-none{padding:30px 18px;text-align:center;color:var(--muted);font-size:13px}
.cx-main{display:flex;flex-direction:column;min-height:0;min-width:0;background-color:#f3efe8;background-image:var(--fx-tile);background-size:480px 560px;background-blend-mode:multiply}
.cx-main>*{position:relative}
.cx-head{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--card);border-bottom:1px solid var(--border)}
.cx-who{flex:1;min-width:0}.cx-who b{display:block;color:var(--ink)}.cx-who small{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cx-back{display:none;font-size:26px;line-height:1;padding:0 6px 4px;color:var(--navy-3)}
.cx-msgs{flex:1;overflow-y:auto;padding:14px clamp(12px,4%,48px);display:flex;flex-direction:column;gap:4px;overscroll-behavior:contain}
.cx-day{display:flex;justify-content:center;margin:10px 0 6px}
.cx-day span{padding:4px 12px;border-radius:8px;background:rgba(255,255,255,.92);color:var(--muted);font-size:11.5px;font-weight:700;box-shadow:0 1px 1px rgba(0,0,0,.06)}
.cx-row{display:flex}
.cx-row.me{justify-content:flex-end}
.cx-bub{position:relative;max-width:min(560px,78%);padding:7px 10px 6px;border-radius:12px;background:#fff;color:var(--text);box-shadow:0 1px 1px rgba(0,0,0,.08);font-size:14px;line-height:1.45;overflow-wrap:anywhere}
.cx-row.them .cx-bub{border-top-left-radius:3px}
.cx-row.me .cx-bub{background:#fde6c4;border-top-right-radius:3px}
.cx-from{display:block;font-size:12px;font-weight:700;color:var(--navy-3);margin-bottom:1px}
.cx-subj{display:block;font-size:13px;margin-bottom:2px}
.cx-text{white-space:normal}
.cx-text a{color:var(--navy-3)}
.cx-meta{float:right;display:inline-flex;align-items:center;gap:4px;margin:6px 0 -2px 10px;font-size:10.5px;color:var(--faint);white-space:nowrap}
.cx-tick{color:#2370bd;font-weight:700;letter-spacing:-2px}.cx-tick.bad{color:var(--red);letter-spacing:0}
.cx-del{opacity:0;font-size:11px;transition:opacity .15s;margin-left:2px}
.cx-bub:hover .cx-del{opacity:.6}.cx-del:hover{opacity:1!important}
.cx-qrow{margin:6px 0}
.cx-qcard{max-width:min(600px,92%);background:#fff;border-radius:14px;border-left:4px solid var(--orange);padding:10px 12px;box-shadow:0 1px 2px rgba(0,0,0,.1)}
.cx-qh{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--amber);margin-bottom:6px}
.cx-qs{display:block;text-align:left;padding:7px 10px;margin-bottom:6px;border-radius:8px;background:var(--soft);width:100%}
.cx-qs b{display:block;font-size:13px;color:var(--ink)}.cx-qs small{color:var(--muted);font-size:11.5px}
.cx-qt{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;margin-bottom:6px;border-radius:var(--r-pill);background:var(--blue-soft);color:var(--navy-3);font-weight:700;font-size:12px}
.cx-qbody{display:block;font-size:14px}
.cx-qreps{clear:both;display:grid;gap:6px;margin-top:10px;padding-top:8px;border-top:1px dashed var(--border)}
.cx-qr{padding:6px 9px;border-radius:10px;background:var(--soft)}
.cx-qr.staff{background:#fde6c4}
.cx-qr::after,.cx-bub::after,.cx-qcard>.cx-meta+*::before{content:"";display:table;clear:both}
.cx-qform{clear:both;margin-top:10px}
.cx-qform textarea,.cx-compose textarea{width:100%;resize:none;border:1px solid var(--border);border-radius:20px;padding:9px 14px;font:inherit;font-size:14px;line-height:1.4;background:var(--card);color:var(--text);max-height:160px}
.cx-qform textarea:focus,.cx-compose textarea:focus{outline:none;border-color:var(--navy-3);box-shadow:var(--ring)}
.cx-qbtns{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px}
.cx-grow{flex:1}
.cx-reopen{margin-top:8px}
.cx-compose{display:flex;align-items:flex-end;gap:8px;padding:10px 12px calc(10px + var(--sab));background:var(--soft);border-top:1px solid var(--border)}
.cx-compose textarea{flex:1;border-radius:22px}
.cx-send{flex:none;width:44px;height:44px;border-radius:50%;background:var(--orange);color:var(--on-orange);font-size:17px;display:flex;align-items:center;justify-content:center;transition:transform .1s,background .15s}
.cx-send:hover{background:#f98a00}.cx-send:active{transform:scale(.94)}.cx-send:disabled{opacity:.5}
.cx-hint{margin:0;padding:0 14px 8px;background:var(--soft);font-size:11px;color:var(--faint)}
.cx-empty{margin:auto;max-width:360px;padding:30px;text-align:center;background:rgba(255,255,255,.88);border-radius:var(--r-xl)}
.cx-empty-ic{font-size:40px}.cx-empty p{color:var(--muted);font-size:13.5px}
.cx-loading{margin:auto;color:var(--muted)}
@media (max-width:900px){
  .cx{grid-template-columns:1fr;height:calc(100dvh - 120px);border-radius:var(--r-lg)}
  .cx .cx-main{display:none}.cx.has-open .cx-side{display:none}.cx.has-open .cx-main{display:flex}
  .cx-back{display:block}
  .cx-bub{max-width:86%}
}
@media (max-width:700px){.cx{height:calc(100dvh - 92px);margin:0 -6px;min-height:0}.cx-hint{display:none}.cx-msgs{padding:10px}}
[data-theme=dark] .cx-main{background-color:#0b141e;background-blend-mode:normal}
[data-theme=dark] .cx-main::before{content:"";position:absolute;inset:0;background:inherit;filter:invert(1);opacity:.04;pointer-events:none}
[data-theme=dark] .cx-bub,[data-theme=dark] .cx-qcard{background:#1b2d43!important;color:var(--text)}
[data-theme=dark] .cx-row.me .cx-bub,[data-theme=dark] .cx-qr.staff{background:#4a3214!important}
[data-theme=dark] .cx-day span,[data-theme=dark] .cx-empty{background:rgba(27,45,67,.95)}
[data-theme=dark] .cx-item,[data-theme=dark] .cx-side{background:var(--card)!important}
[data-theme=dark] .cx-item.on{background:#14273d!important}
.cx-title{margin:0;font-size:20px}
.cx-main{background-image:none!important;background-color:#f1ece4}
.cx-main::before{content:"";position:absolute;inset:0;background-image:var(--fx-tile);background-size:480px 560px;opacity:.07;pointer-events:none}
.cx-main{position:relative}
[data-theme=dark] .cx-main{background-color:#0b141e}
[data-theme=dark] .cx-main::before{filter:invert(1);opacity:.035}
.cx-qopen{display:block;clear:both;margin-top:8px;font-size:12.5px}
.cx-qform[hidden]{display:none}
.cx{height:auto}

/* ---------- dark mode: second pass (tooltips, notifications, day view, publish bar) ---------- */
[data-theme=dark] .cal-tip{background:#14243a!important;border-color:var(--border-strong)!important;box-shadow:0 18px 48px rgba(0,0,0,.55)!important;color:var(--text)}
[data-theme=dark] .cal-tip .tip-head b,[data-theme=dark] .cal-tip .tip-course b{color:var(--ink)!important}
[data-theme=dark] .cal-tip .tip-row{border-color:var(--border)!important}
[data-theme=dark] .cal-tip .tip-row b{color:var(--text)}
[data-theme=dark] .cal-tip .tip-note,[data-theme=dark] .cal-tip .tip-course p{color:var(--muted)!important}
[data-theme=dark] .cal-tip .tip-course{background:var(--soft)!important}
[data-theme=dark] :is(.notif-item,.notif-head){background:var(--card)!important;border-color:var(--border)!important}
[data-theme=dark] .notif-item.unread{background:#14273d!important}
[data-theme=dark] .notif-item p,[data-theme=dark] .notif-item small{color:var(--muted)!important}
[data-theme=dark] .sess-sub{color:var(--ink)!important}
[data-theme=dark] .publish-text span{color:var(--muted)!important}
[data-theme=dark] .publish-bar.is-live .publish-text span{color:#a6e3c4!important}
[data-theme=dark] .rq-box{background:var(--soft)!important;box-shadow:none!important}
[data-theme=dark] :is(.directory-summary span,.attendance-summary span,.directory-count span){color:var(--muted)!important}
[data-theme=dark] .day:hover,[data-theme=dark] .day.clickable:hover{background:#16283e!important;border-color:var(--border-strong)!important}
[data-theme=dark] .day .event:hover{filter:brightness(1.2)}
/* contrast pass 3 */
[data-theme=dark] .banner span{color:#f3d3a3!important}
[data-theme=dark] .cx-tick{color:#6fb6ff}
.day.today .day-top b{color:#a94a12}
[data-theme=dark] .day.today .day-top b{color:var(--orange)}
.notif-item small{color:var(--faint)}
[data-theme=dark] ::selection{background:rgba(247,148,29,.6);color:#fff}

/* ===== v91: Reviews ===== */
.rv-tabs{margin:2px 0 16px}
.rv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;align-items:start}
.rv-card{display:flex;flex-direction:column;gap:12px;padding:16px 18px;margin:0;border-left:4px solid var(--border)}
.rv-card.open{border-left-color:var(--green)}.rv-card.upcoming{border-left-color:var(--orange)}.rv-card.done{border-left-color:var(--green)}
.rv-card-top{display:flex;gap:12px;align-items:flex-start}
.rv-card-t{flex:1;min-width:0}
.rv-card-t h3{margin:6px 0 4px;font-size:15.5px;line-height:1.3}
.rv-week{flex:none;display:grid;place-items:center;width:52px;height:56px;border-radius:14px;background:var(--soft);border:1px solid var(--border);line-height:1}
.rv-week small{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:700}
.rv-week b{font-size:22px;color:var(--text)}
.rv-tags{display:flex;gap:6px;flex-wrap:wrap}
.rv-facts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
.rv-prog{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center}
.rv-prog .asg-bar{margin:0}.rv-prog b{font-size:14px}.rv-prog b span{color:var(--faint);font-weight:600}.rv-prog small{color:var(--muted);font-weight:700;min-width:34px;text-align:right}
.rv-card-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:12px}
.rv-grow{flex:1}
.rv-avg{display:inline-flex;align-items:center;gap:6px;font-size:13px}
.rv-desc{margin:0;color:var(--muted);font-size:13px}
.rv-st{color:#f5a524;letter-spacing:1px;font-size:14px;white-space:nowrap}.rv-st i{font-style:normal;color:var(--border-strong,#d4dce7)}
.rv-st.big{font-size:20px}
.rv-empty{grid-column:1/-1;text-align:center;padding:34px 20px}.rv-empty b{display:block;font-size:16px;margin-bottom:6px}.rv-empty p{margin:0 0 12px;color:var(--muted)}
.rv-nudge{display:flex;align-items:center;gap:14px;padding:14px 18px;margin:0 0 16px;border-radius:var(--r-lg);background:linear-gradient(120deg,#fff4e6,#fff);border:1px solid #f6d3a6}
.rv-nudge>span{font-size:26px}.rv-nudge>div{flex:1;min-width:0}.rv-nudge b{display:block}.rv-nudge small{color:var(--muted)}
.rv-nudge.done{background:linear-gradient(120deg,#eaf8f0,#fff);border-color:#bfe6cf}
/* responses */
.rv-rhead{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:0 0 14px}
.rv-rate{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:baseline;min-width:200px}
.rv-rate b{font-size:26px}.rv-rate b span{font-size:15px;color:var(--faint)}.rv-rate small{color:var(--muted)}
.rv-rate .asg-bar{grid-column:1/-1;margin:4px 0 0}
.rv-rtools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rv-rtools input{width:200px;min-height:36px}
.rv-q{border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px;margin:0 0 12px;background:var(--card,#fff)}
.rv-q-h small{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:700}
.rv-q-h h4{margin:3px 0 10px;font-size:15px}
.rv-q-rate{display:grid;grid-template-columns:160px 1fr;gap:18px;align-items:center}
.rv-big{display:flex;flex-direction:column;gap:3px}.rv-big b{font-size:34px;line-height:1}.rv-big small{color:var(--muted);font-size:12px}
.rv-dists{display:flex;flex-direction:column;gap:5px}
.rv-dist-row{display:grid;grid-template-columns:30px 1fr 28px;gap:8px;align-items:center;font-size:12px;color:var(--muted);font-weight:700;background:none;border:0;padding:2px 4px;border-radius:8px;text-align:left;width:100%}
button.rv-dist-row{cursor:pointer}button.rv-dist-row:hover,button.rv-dist-row.on{background:var(--soft)}
.rv-dist{height:8px;border-radius:999px;background:var(--col,#e8eef5);overflow:hidden}.rv-dist i{display:block;height:100%;background:#f5a524;border-radius:999px}
.rv-dist-row small{text-align:right}
.rv-answers{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.rv-ans{margin:0;padding:10px 12px;border-radius:12px;background:var(--soft);border-left:3px solid var(--orange)}
.rv-ans p{margin:0 0 6px;white-space:pre-wrap;font-size:13.5px;color:var(--text)}.rv-ans cite{font-style:normal;font-size:11.5px;color:var(--muted);font-weight:700}
.rq-resp-head{display:flex;align-items:center;gap:10px}.rq-resp-head>div{flex:1;min-width:0}.rq-resp-head small{display:block}
.rv-names{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.rv-names span{padding:3px 10px;border-radius:999px;background:var(--soft);border:1px solid var(--border);font-size:12px}
.rv-pend-acts{display:flex;gap:8px}
/* programme */
.rv-sum{display:grid;grid-template-columns:180px minmax(200px,1fr) minmax(200px,.9fr);gap:22px;align-items:center;padding:18px 20px}
.rv-sum-note b{display:block;margin-bottom:4px}.rv-sum-note p{margin:0 0 10px;color:var(--muted);font-size:13px}
.rv-pcard{margin:0;display:flex;flex-direction:column;gap:8px;padding:16px 18px}
.rv-pcard-h{display:flex;align-items:center;gap:10px}.rv-pcard-h>div{flex:1;min-width:0}.rv-pcard-h small{display:block;color:var(--muted);font-size:12px}
.rv-quote{margin:0;white-space:pre-wrap;font-size:14px;line-height:1.55;color:var(--text)}
/* participant form */
.rv-form{display:flex;flex-direction:column;gap:14px}
.rv-field{border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;margin:0;min-width:0}
.rv-flab{display:block;font-weight:700;font-size:14px;margin:0 0 8px;color:var(--text)}
.rv-flab small{display:block;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:3px}.rv-flab em{color:var(--danger,#c0392b);font-style:normal}
.rv-stars{display:inline-flex;flex-direction:row-reverse;gap:4px}
.rv-stars input{position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;pointer-events:none}
.rv-stars label{font-size:34px;line-height:1;color:var(--border-strong,#d4dce7);cursor:pointer;transition:transform .12s,color .12s;padding:2px}
.rv-stars label:hover,.rv-stars label:hover~label,.rv-stars input:checked~label{color:#f5a524}
.rv-stars label:hover{transform:scale(1.15)}
.rv-stars input:focus-visible+label{outline:2px solid var(--orange);border-radius:6px}
.rv-word{display:block;font-size:12px;color:var(--muted);font-weight:700;margin-top:2px}
.rv-form-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
@media (max-width:760px){.rv-sum{grid-template-columns:1fr}.rv-q-rate{grid-template-columns:1fr}.rv-rtools input{width:100%;flex:1}.rv-grid{grid-template-columns:1fr}.rv-nudge{flex-wrap:wrap}.rv-nudge .btn{width:100%}}
[data-theme=dark] .rv-nudge{background:linear-gradient(120deg,#2b2213,var(--card));border-color:#5a4220}
[data-theme=dark] .rv-nudge.done{background:linear-gradient(120deg,#11281d,var(--card));border-color:#24513a}
[data-theme=dark] .rv-st i,[data-theme=dark] .rv-stars label{color:#3a4c63}
[data-theme=dark] .rv-stars label:hover,[data-theme=dark] .rv-stars label:hover~label,[data-theme=dark] .rv-stars input:checked~label{color:#f5a524}
[data-theme=dark] .rv-dist{background:#22344b}
/* ===== v91: tutor line on chat question cards ===== */
.cx-qwho{margin:8px 0 0;padding-top:8px;border-top:1px dashed var(--border)}
.cx-qwho .rq-assign{margin:0;font-size:12px}
.cx-qwho.me .rq-assign b{color:var(--orange-dark)}
.cx-qview{margin:8px 0 0;font-size:12px;color:var(--muted)}
.cx-q.me{background:var(--orange);color:#fff}
.cx-chips .chip small{margin-left:3px;background:var(--orange);color:#fff;border-radius:999px;padding:0 6px;font-size:10.5px}
[data-theme=dark] .cx-qwho.me .rq-assign b{color:var(--orange)}
[data-theme=dark] .rq-assign select{background-color:var(--soft)}
.rv-stars input[type=radio]{position:absolute!important;opacity:0!important;width:0!important;height:0!important;margin:0!important;border:0!important}
.rv-field textarea{display:block;width:100%;min-height:84px;box-sizing:border-box}
/* extra access (quiz results) */
.qz-acc-row{gap:12px}.qz-acc-has{display:inline-flex;align-items:center;gap:8px}
.qz-acc-has .link-btn{font-weight:700}
[data-theme=dark] .qz-acc{background:var(--soft)!important}
[data-theme=dark] .qz-acc-list{background:var(--card)!important;border-color:var(--border)!important}
[data-theme=dark] .qz-acc-row{border-color:var(--border)!important}
[data-theme=dark] .qz-acc-row:hover{background:#16283e}
[data-theme=dark] .qz-acc-row.has{background:#10261c!important}
[data-theme=dark] .qz-acc-n b{color:var(--ink,#eef3fa)!important}
[data-theme=dark] .qz-acc-n small{color:var(--muted)!important}
[data-theme=dark] .qz-acc-has{color:#5fd39a}
[data-theme=dark] .qz-acc-h h3{color:var(--ink,#eef3fa)}
/* attendance insights, dark */
[data-theme=dark] .attendance-insight-strip>div{background:var(--card)!important;border-color:var(--border)!important}
[data-theme=dark] .attendance-insight-strip small{color:var(--muted)!important}
[data-theme=dark] .attendance-insight-strip b{color:var(--ink,#eef3fa)!important}
[data-theme=dark] .analytics-badge{background:var(--soft)!important;border-color:var(--border)!important;color:var(--muted)!important}
[data-theme=dark] .chart-flex .yax,[data-theme=dark] .yax{background:var(--card)!important}
[data-theme=dark] .chart-value{fill:#dbe6f3!important}
[data-theme=dark] .chart-axis,[data-theme=dark] .chart-label{fill:#9aabc0!important}
[data-theme=dark] .chart-grid,[data-theme=dark] .wk-grid{stroke:#24364d!important}
[data-theme=dark] .chart-baseline{stroke:#3a4c63!important}
[data-theme=dark] .chart-nav button{background:var(--soft)!important;border-color:var(--border)!important;color:var(--ink,#eef3fa)!important}
[data-theme=dark] .chart-nav button:hover:not(:disabled){background:#1d3149!important}
[data-theme=dark] .chart-kpi{background:var(--soft)!important;border-color:var(--border)!important;color:var(--ink,#eef3fa)!important}
[data-theme=dark] [stroke="#0d4377"]{stroke:#5aa6ff}
[data-theme=dark] [fill="#0d4377"]{fill:#5aa6ff}
[data-theme=dark] .chart-legend-item{color:var(--muted)}
[data-theme=dark] .chart-scroll::-webkit-scrollbar-track{background:var(--soft)}
[data-theme=dark] .chart-scroll::-webkit-scrollbar-thumb{background:#3a4c63}
[data-theme=dark] .asg-bar{background:#22344b}
.rv-field textarea{padding:10px 12px;border:1px solid var(--border);border-radius:12px;font:inherit;font-size:14px;resize:vertical;background:var(--soft);color:var(--text);transition:border-color .15s,box-shadow .15s,background .15s}
.rv-field textarea:focus{outline:0;border-color:var(--orange);box-shadow:0 0 0 3px rgba(247,148,29,.18);background:var(--card,#fff)}
.rv-field:focus-within{border-color:#f3c48c}
.rv-stars input:focus-visible+label{outline:0;text-shadow:0 0 0 #f5a524,0 0 10px rgba(245,165,36,.6)}
[data-theme=dark] .rv-field textarea{background:#0f1e31;border-color:var(--border)}
[data-theme=dark] .rv-field:focus-within{border-color:#7a5420}

/* ===== v91: Attendance (class tab) ===== */
.at-sess{display:grid;grid-template-columns:minmax(260px,380px) 1fr auto;gap:18px;align-items:center;padding:16px 18px;margin:0 0 12px}
.at-sess-pick{display:flex;align-items:flex-end;gap:6px}
.at-sess-pick .icon-btn{flex:none;margin-bottom:2px}
.at-sess-sel{flex:1;min-width:0}.at-sess-sel label{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:700;margin:0 0 4px}
.at-sess-sel select{width:100%;min-height:40px}
.at-sess-info{min-width:0}.at-sess-info h3{margin:0 0 6px;font-size:17px;line-height:1.25}
.at-sess-meta{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:12.5px;color:var(--muted)}
.at-course{display:inline-flex;align-items:center;gap:6px}.at-course i{width:9px;height:9px;border-radius:50%}
.at-sess-acts{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.at-switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--text);cursor:pointer;white-space:nowrap}
.at-switch input{position:absolute!important;opacity:0!important;width:0!important;height:0!important}
.at-switch i{position:relative;width:38px;height:22px;border-radius:999px;background:var(--border-strong,#cfd8e4);transition:background .2s}
.at-switch i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s}
.at-switch input:checked+i{background:var(--green)}.at-switch input:checked+i::after{transform:translateX(16px)}
.at-switch input:focus-visible+i{outline:2px solid var(--orange);outline-offset:2px}
.at-drop{display:flex;align-items:center;gap:12px;padding:10px 14px;margin:0 0 12px;font-size:13px}
.at-drop-ic{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--orange);color:#fff;font-weight:800}
.at-card{padding:0;overflow:hidden}
.at-sum{display:flex;align-items:center;gap:20px;padding:16px 18px;border-bottom:1px solid var(--border)}
.at-sum-ring{display:flex;align-items:center;gap:10px;flex:none}
.at-ring{width:56px;height:56px}.at-ring circle{fill:none;stroke-width:5}.at-ring-bg{stroke:var(--col,#eef2f7)}.at-ring-fg{stroke:var(--green);stroke-linecap:round;transition:stroke-dasharray .5s}
.at-sum-ring b{display:block;font-size:22px;line-height:1}.at-sum-ring small{color:var(--muted);font-size:12px}
.at-sum-main{flex:1;min-width:0}
.at-stack{display:flex;gap:3px;height:12px;border-radius:999px;overflow:hidden;background:var(--col,#eef2f7)}
.at-seg{display:block;min-width:4px;transition:flex .4s}
.at-seg.present,.at-dot.present{background:var(--green)}.at-seg.late,.at-dot.late{background:#f0a12b}.at-seg.excused,.at-dot.excused{background:#4f8fd6}.at-seg.absent,.at-dot.absent{background:#d9534f}.at-seg.unmarked,.at-dot.unmarked{background:#b7c2d0}
.at-sum-line{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;margin-top:9px;font-size:13px;color:var(--muted)}.at-sum-line b{color:var(--text)}
.at-warn b{color:#c46a10!important}.at-ok{color:var(--green);font-weight:700}
.at-how{margin-left:auto;font-size:12.5px}
.at-weights{margin:0;padding:10px 18px;font-size:12.5px;color:var(--muted);background:var(--soft);border-bottom:1px solid var(--border)}
.at-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 18px;border-bottom:1px solid var(--border)}
.at-tools .attendance-search{flex:0 1 280px;margin:0}
.at-chips{display:flex;gap:6px;flex-wrap:wrap}
.at-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:1px}
.at-list{max-height:none}
.at-row{display:grid;grid-template-columns:36px minmax(160px,1.4fr) auto minmax(110px,auto) auto;gap:12px;align-items:center;padding:10px 18px;border-bottom:1px solid var(--border);border-left:3px solid transparent;transition:background .15s}
.at-row:last-child{border-bottom:0}.at-row:hover{background:var(--soft)}
.at-row.present{border-left-color:var(--green)}.at-row.late{border-left-color:#f0a12b}.at-row.excused{border-left-color:#4f8fd6}.at-row.absent{border-left-color:#d9534f}
.at-row:not(:has(.at-recap)){grid-template-columns:36px minmax(160px,1.4fr) minmax(110px,auto) auto}
.at-who{min-width:0}.at-who b{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.at-who small{display:block;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.at-stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.at-stat small{font-size:11px;color:var(--muted)}
.at-seg-ctl{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--border);border-radius:12px;background:var(--soft);justify-self:end}
.at-seg-ctl button{border:0;background:none;padding:6px 10px;border-radius:9px;font:inherit;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}
.at-seg-ctl button:hover:not(:disabled){background:var(--card,#fff);color:var(--text)}
.at-seg-ctl button.present.on{background:var(--green);color:#fff}.at-seg-ctl button.late.on{background:#f0a12b;color:#fff}.at-seg-ctl button.excused.on{background:#4f8fd6;color:#fff}.at-seg-ctl button.absent.on{background:#d9534f;color:#fff}
.at-seg-ctl .at-clr{padding:6px 8px;font-size:11px}.at-seg-ctl .at-clr:disabled{opacity:.3;cursor:default}
.at-short{display:none}
.at-empty{padding:30px 18px;text-align:center}.at-empty b{display:block;margin-bottom:4px}.at-empty p{margin:0;color:var(--muted)}
.at-trends{margin:14px 0 0;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--card,#fff)}
.at-trends>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;cursor:pointer;list-style:none}
.at-trends>summary::-webkit-details-marker{display:none}
.at-trends>summary b{display:block}.at-trends>summary small{color:var(--muted);font-size:12.5px}
.at-trends-chev svg{width:18px;height:18px;transition:transform .2s;stroke:currentColor;fill:none;stroke-width:2}
.at-trends[open] .at-trends-chev svg{transform:rotate(90deg)}
.at-trends .attendance-analytics{padding:0 18px 16px;margin:0}
.pill.blue{background:#e6f0fb;color:#2c6cb4}
@media (max-width:1100px){.at-sess{grid-template-columns:1fr;gap:12px}.at-sess-acts{justify-content:flex-start}}
@media (max-width:760px){
  .at-row,.at-row:not(:has(.at-recap)){grid-template-columns:36px 1fr auto;padding:10px 12px}
  .at-row .at-recap{grid-column:2/-1}
  .at-row .at-seg-ctl{grid-column:1/-1;justify-self:stretch;display:grid;grid-template-columns:repeat(4,1fr) auto}
  .at-full{display:none}.at-short{display:inline}
  .at-sum{flex-direction:column;align-items:stretch;gap:12px}.at-how{margin-left:0}
  .at-tools{padding:10px 12px}.at-tools .attendance-search{flex:1 1 100%}
  .at-sess-acts .btn{flex:1}
}
[data-theme=dark] .at-switch i{background:#30475f}
[data-theme=dark] .at-stack,[data-theme=dark] .at-ring-bg{background:#1b2d43;stroke:#1b2d43}
[data-theme=dark] .at-seg-ctl{background:#0f1e31;border-color:var(--border)}
[data-theme=dark] .at-seg-ctl button:hover:not(:disabled){background:#1d3149}
[data-theme=dark] .at-trends{background:var(--card)}
[data-theme=dark] .at-weights{background:var(--soft)}
[data-theme=dark] .pill.blue{background:#16304f;color:#8fc0f5}
[data-theme=dark] .at-warn b{color:#f0a12b!important}
[data-theme=dark] .attendance-table-head{background:var(--soft)!important}
[data-theme=dark] .attendance-table-head h3{color:var(--ink,#eef3fa)!important}
.at-sess-sel.field{margin:0}
.at-sess-sel.field label{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:700;margin:0 0 4px}
.at-sess-sel select{padding-right:36px!important;text-overflow:ellipsis}
@media (min-width:1101px){.at-sess{grid-template-columns:minmax(260px,360px) minmax(0,1fr) auto}}
/* v91: bell actions and chat email choice */
.notif-acts{display:inline-flex;gap:12px;align-items:center}
.notif-sound{font-size:12px}
.notif-item.go{cursor:pointer}.notif-item.go:hover{background:var(--soft)}
.notif-item.go b::after{content:" ›";color:var(--orange)}
.chat-mail{display:grid;gap:8px;margin-top:10px}
.chat-mail .check{margin:0}

/* ===== v91: reach map ===== */
.geo-map-wrap{--geo-is-dark:0;--sea1:#f4f8fd;--sea2:#e2ecf7;--land:#d3dce8;--edge:#ffffff;--grat:rgba(13,67,119,.08);--eq:rgba(13,67,119,.16);
  --g1:#b9d4ee;--g2:#86b5e2;--g3:#4c90cf;--g4:#2066a9;--g5:#0d4377;--dot:#f7941d;--dot-edge:#fff;--hover:#f7941d;
  position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--sea2);box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}
:is([data-theme=dark] .geo-map-wrap:not([data-m=light]),.geo-map-wrap[data-m=dark]){--geo-is-dark:1;--sea1:#0f2238;--sea2:#07111e;--land:#1b2c42;--edge:#0a1422;--grat:rgba(120,175,235,.09);--eq:rgba(120,175,235,.2);
  --g1:#1f4c78;--g2:#23639e;--g3:#2d83c9;--g4:#4ea6ea;--g5:#9ad5ff;--dot:#ffb547;--dot-edge:#0a1422;--hover:#ffb547;border-color:#1c2f46;box-shadow:inset 0 0 60px rgba(0,0,0,.35)}
.geo-map .sea1{stop-color:var(--sea1)}.geo-map .sea2{stop-color:var(--sea2)}
.geo-grat line{stroke:var(--grat);stroke-width:1;vector-effect:non-scaling-stroke}.geo-grat line.eq{stroke:var(--eq);stroke-dasharray:4 4}
.geo-map path.g{fill:var(--land);stroke:var(--edge);stroke-width:.7px;vector-effect:non-scaling-stroke;transition:fill .35s,filter .15s}
.geo-map path.g1,.g1{fill:var(--g1);background:var(--g1)}.geo-map path.g2,.g2{fill:var(--g2);background:var(--g2)}.geo-map path.g3,.g3{fill:var(--g3);background:var(--g3)}.geo-map path.g4,.g4{fill:var(--g4);background:var(--g4)}.geo-map path.g5,.g5{fill:var(--g5);background:var(--g5)}
.g0{background:var(--land)}
.geo-map path.g:hover{stroke:var(--hover);stroke-width:1.8px;filter:brightness(1.08)}
.geo-dots{pointer-events:none}
.geo-core{fill:var(--dot);stroke:var(--dot-edge);stroke-width:1.4px;vector-effect:non-scaling-stroke;opacity:.95}
.geo-pulse{fill:var(--dot);opacity:0;transform-box:fill-box;transform-origin:center}
.geo-dot.top .geo-pulse{animation:geoPulse 2.6s ease-out infinite}
.geo-dot.top:nth-child(2n) .geo-pulse{animation-delay:.9s}
@keyframes geoPulse{0%{opacity:.55;transform:scale(1)}80%,100%{opacity:0;transform:scale(3.2)}}
:is([data-theme=dark] .geo-map-wrap:not([data-m=light]),.geo-map-wrap[data-m=dark]) .geo-core{filter:drop-shadow(0 0 4px rgba(255,181,71,.8))}
@media (prefers-reduced-motion:reduce){.geo-dot.top .geo-pulse{animation:none}}
.geo-ctl{top:12px;right:12px;gap:0;border-radius:12px;background:rgba(255,255,255,.85);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);box-shadow:0 6px 18px rgba(13,40,70,.12)}
.geo-ctl button{width:34px;height:34px;background:transparent;color:var(--navy-solid,#0d4377);display:grid;place-items:center}
.geo-ctl button:hover{background:rgba(13,67,119,.08)}
.geo-ctl .geo-style svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8}.geo-ctl .geo-style svg path{fill:currentColor;stroke:none}
:is([data-theme=dark] .geo-map-wrap:not([data-m=light]),.geo-map-wrap[data-m=dark]) .geo-ctl{background:rgba(12,24,40,.8)!important;border-color:#24384f}
:is([data-theme=dark] .geo-map-wrap:not([data-m=light]),.geo-map-wrap[data-m=dark]) .geo-ctl button{color:#dbe7f5!important;background:transparent!important}
:is([data-theme=dark] .geo-map-wrap:not([data-m=light]),.geo-map-wrap[data-m=dark]) .geo-ctl button:hover{background:rgba(255,255,255,.08)!important}
.geo-ctl button+button{border-top:1px solid var(--border)}
.geo-tip{border-radius:14px;background:rgba(9,22,38,.92);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.08)}
.geo-tip-name i{box-shadow:0 0 0 2px rgba(255,255,255,.3)}
.geo-scale{width:150px;height:8px;border-radius:999px}
.geo-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:18px;align-items:start}
.geo-side{display:flex;flex-direction:column;gap:10px}
.geo-big{display:flex;align-items:baseline;gap:6px}.geo-big b{font-size:30px;line-height:1}.geo-big span{color:var(--muted);font-weight:700;font-size:13px}
.geo-rank{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.geo-rank li{display:grid;grid-template-columns:20px minmax(0,1fr) auto auto;grid-template-rows:auto 6px;gap:3px 8px;align-items:center;font-size:13px}
.geo-rk{grid-row:1/3;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;background:var(--soft);color:var(--muted);border:1px solid var(--border)}
.geo-rank li:first-child .geo-rk{background:var(--orange);border-color:var(--orange);color:#fff}
.geo-rn{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.geo-rank b{font-size:13px}.geo-rank small{color:var(--muted);font-size:11px;min-width:30px;text-align:right}
.geo-rb{grid-column:2/-1;height:6px;border-radius:999px;background:var(--col,#eef2f7);overflow:hidden}.geo-rb i{display:block;height:100%;border-radius:999px}
.geo-more{margin:0;font-size:12px;color:var(--muted)}
.geo-rank .g1,.geo-rank .g2,.geo-rank .g3,.geo-rank .g4,.geo-rank .g5,.geo-scale i,.geo-tip-name i{--g1:#b9d4ee;--g2:#86b5e2;--g3:#4c90cf;--g4:#2066a9;--g5:#0d4377}
[data-theme=dark] :is(.geo-rank,.geo-legend,.geo-tip) :is(.g1,.g2,.g3,.g4,.g5){--g1:#1f4c78;--g2:#23639e;--g3:#2d83c9;--g4:#4ea6ea;--g5:#9ad5ff}
[data-theme=dark] .geo-rb{background:#1b2d43}
@media (max-width:1100px){.geo-layout{grid-template-columns:1fr}.geo-side{display:grid;grid-template-columns:auto 1fr;gap:12px 20px;align-items:start}.geo-more{grid-column:2}}
@media (max-width:560px){.geo-side{grid-template-columns:1fr}.geo-more{grid-column:auto}.geo-legend small{display:none}}

/* ===== v91: light / dark switch ===== */
.theme-btn{position:relative;width:62px!important;height:34px!important;padding:0!important;border-radius:999px!important;background:linear-gradient(135deg,#dff0ff,#fff4dc)!important;border:1px solid var(--border)!important;display:inline-flex!important;align-items:center;justify-content:space-between!important;overflow:hidden;cursor:pointer}
.theme-btn svg{position:relative;z-index:2;width:16px!important;height:16px!important;margin:0 8px;display:block!important;transition:color .3s,opacity .3s}
.theme-btn .i-sun{order:1;color:#d98200}.theme-btn .i-moon{order:2;color:#7d8da3}
.theme-btn::after{content:"";position:absolute;z-index:1;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(13,40,70,.25);transition:transform .35s cubic-bezier(.3,1.4,.5,1),background .3s}
[data-theme=dark] .theme-btn{background:linear-gradient(135deg,#0d1e33,#1d3354)!important;border-color:#2a4262!important}
[data-theme=dark] .theme-btn::after{transform:translateX(28px);background:#2c4a70;box-shadow:0 2px 8px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.08)}
[data-theme=dark] .theme-btn .i-sun{color:#6f86a3}[data-theme=dark] .theme-btn .i-moon{color:#ffd27a}
.theme-btn:hover::after{box-shadow:0 2px 10px rgba(247,148,29,.45)}
.theme-btn:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.login-theme .theme-btn{background:rgba(255,255,255,.12)!important;border-color:rgba(255,255,255,.25)!important}
/* v91: announcements in two columns */
#annFeed{display:flex;flex-direction:column;gap:12px;max-width:none!important}
.ann-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:stretch}
.ann-grid .ann-card{height:100%;margin:0}
#annFeed>.ann-card.latest{max-width:none}
.ann-label{margin:8px 0 -2px}
@media (min-width:1700px){.ann-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.ann-grid{grid-template-columns:1fr}}
.ann-meta{flex-wrap:wrap}
.ann-more{margin-left:auto}
.ann-more .icon-btn{width:30px;height:30px}
.ann-edited{font-size:11.5px;color:var(--faint);font-style:italic}
.ann-edit textarea{min-height:200px}
.geo-rank li{grid-template-columns:22px minmax(0,1fr) auto auto;grid-template-rows:auto auto;row-gap:5px}
.geo-rank .geo-rk{grid-column:1;grid-row:1/3;align-self:center}
.geo-rank .geo-rn{grid-column:2;grid-row:1}.geo-rank li>b{grid-column:3;grid-row:1}.geo-rank li>small{grid-column:4;grid-row:1}
.geo-rank .geo-rb{grid-column:2/5;grid-row:2}
.geo-layout{grid-template-columns:minmax(0,1fr) 220px}

/* ===== v91: results table polish ===== */
.results-table td{border-bottom:1px solid var(--border)}
.results-table .id-badge{display:inline-block;padding:4px 9px;border:0!important;border-radius:8px!important;background:var(--soft)!important;color:var(--muted)!important;font-size:11.5px!important;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums;box-shadow:inset 0 0 0 1px var(--border)}
.rr-meter{gap:10px}
.rr-meter .rr-bar{height:7px!important;border-radius:999px!important;background:var(--col,#eef2f7)!important;overflow:hidden!important}
.rr-meter .rr-bar i{border-radius:999px!important}
.rr-meter b{font-variant-numeric:tabular-nums;font-size:13px}
.rr-bar i.navy{background:linear-gradient(90deg,#2f6db0,#4c90cf)!important}
.rr-bar i.ok{background:linear-gradient(90deg,#1b8a55,#2fb172)!important}.rr-bar i.warn{background:linear-gradient(90deg,#e08a10,#f7a53a)!important}.rr-bar i.low{background:linear-gradient(90deg,#d0453d,#ef6b62)!important}
.rr-status{padding:5px 12px!important;font-size:12px!important;font-weight:700!important}
.rr-status.ok{background:var(--green-soft,#e4f5ec)!important;color:var(--green)!important}
.rr-status.no{background:#fff1dc!important;color:#9a5a00!important}
.results-transcript{background:transparent!important;color:var(--orange-dark,#c46a10)!important;border:1px solid #f3c48c!important;box-shadow:none!important}
.results-transcript:hover{background:#fff4e6!important}
.results-transcript svg{stroke:currentColor}
.rr-table tbody tr:hover,.results-table tbody tr:hover td{background:var(--soft)!important}
[data-theme=dark] .rr-meter .rr-bar{background:#1b2d43!important}
[data-theme=dark] .rr-bar i.navy{background:linear-gradient(90deg,#2f74c0,#5aa6ff)!important}
[data-theme=dark] .rr-status.ok{background:#11301f!important;color:#5fd39a!important}
[data-theme=dark] .rr-status.no{background:#2e2414!important;color:#f0b35a!important}
[data-theme=dark] .results-table .id-badge{background:#16273b!important;color:#b8c7d9!important;box-shadow:inset 0 0 0 1px #24384f}
[data-theme=dark] .results-transcript{color:#ffb547!important;border-color:#5a4220!important}
[data-theme=dark] .results-transcript:hover{background:#2b2213!important}
[data-theme=dark] :is(.rr-table tbody tr,.results-table tbody tr):hover,[data-theme=dark] .results-table tbody tr:hover td{background:#16283e!important}
[data-theme=dark] .rr-table tbody tr,[data-theme=dark] .results-table tbody tr td{background:transparent}
/* v91: one arrow on every drop-down (the browser's own arrow is hidden; light and dark use the same drawn chevron) */
select:not([multiple]):not(.cohort-switch select):not(.cert-select select){appearance:none!important;-webkit-appearance:none!important;-moz-appearance:none!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%235f6f84' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;background-position:right 12px center!important;background-size:16px!important;padding-right:36px!important}
[data-theme=dark] select:not([multiple]):not(.cohort-switch select):not(.cert-select select){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%239aabc0' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E")!important}
select::-ms-expand{display:none}
/* v91: rich text (paragraphs, line breaks, lists, links) */
.rt{line-height:1.65;overflow-wrap:anywhere}
.rt p{margin:0 0 .75em}.rt p:last-child{margin-bottom:0}
.rt ul,.rt ol{margin:0 0 .75em;padding-left:1.3em}.rt li{margin:.2em 0}
.rt a{color:var(--navy-3,#2f6db0);text-decoration:underline;text-underline-offset:2px}
[data-theme=dark] .rt a{color:#8fc0f5}
.rv-intro{margin:0 0 16px;padding:14px 16px;border-radius:14px;background:var(--soft);border:1px solid var(--border);font-size:14px;color:var(--text);max-height:40vh;overflow:auto}
.rv-desc{font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.rv-desc .rt p{margin-bottom:.4em}
.sess-desc .rt,.asg-desc .rt,.qz-instr .rt{font-size:inherit}
.qz-instr{white-space:normal!important}
.sub-brief>div{white-space:normal!important}
.sub-brief .rt{padding:0!important;white-space:normal!important}

/* ===== v91: certification rules (Settings → Certification) ===== */
.cr-defaults{padding:18px 20px;margin:0 0 16px}
.cr-defaults-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}
.cr-defaults-head h3{margin:3px 0 0;font-size:16px}
.cr-dials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.cr-dial{display:grid;grid-template-columns:44px minmax(0,1fr) auto;grid-template-rows:auto auto;gap:10px 12px;align-items:center;padding:14px 16px;border:1px solid var(--border);border-radius:16px;background:var(--soft);cursor:text}
.cr-dial-ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;color:#fff}
.cr-dial.pm .cr-dial-ic{background:linear-gradient(135deg,#f7941d,#e0700b)}.cr-dial.ai .cr-dial-ic{background:linear-gradient(135deg,#2f74c0,#1c4f87)}
.cr-dial-ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cr-dial-t b{display:block;font-size:14px}.cr-dial-t small{color:var(--muted);font-size:12px}
.cr-dial input[type=range]{grid-column:1/-1;width:100%;accent-color:var(--orange);margin:2px 0 0}
.cr-dial.ai input[type=range]{accent-color:#2f74c0}
.cr-in{display:inline-flex;align-items:center;gap:0;border:1px solid var(--border);border-radius:12px;background:var(--card,#fff);overflow:hidden;transition:border-color .15s,box-shadow .15s}
.cr-in:focus-within{border-color:var(--orange);box-shadow:0 0 0 3px rgba(247,148,29,.18)}
.cr-in input{width:74px;border:0!important;background:transparent!important;box-shadow:none!important;padding:8px 4px 8px 12px!important;font:inherit;font-weight:800;font-size:16px;color:var(--text);text-align:right;min-height:0!important;-moz-appearance:textfield}
.cr-in input::-webkit-outer-spin-button,.cr-in input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.cr-in input::placeholder{color:var(--faint);font-weight:700}
.cr-in i{font-style:normal;font-weight:700;color:var(--muted);padding:0 12px 0 2px}
.cr-in.big input{width:84px;font-size:24px;padding:6px 4px 6px 12px!important}
.cr-in.def{border-style:dashed}
.cr-table{padding:0;overflow:hidden}
.cr-thead,.cr-row{display:grid;grid-template-columns:minmax(200px,1.4fr) minmax(150px,1fr) minmax(150px,1fr) 170px;gap:16px;align-items:center;padding:12px 20px}
.cr-thead{background:var(--soft);border-bottom:1px solid var(--border);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--faint)}
.cr-row{border-bottom:1px solid var(--border);border-left:3px solid transparent;transition:background .15s}
.cr-row:last-child{border-bottom:0}.cr-row:hover{background:var(--soft)}
.cr-row.sel{border-left-color:var(--navy-3,#2f6db0)}
.cr-row.dirty{border-left-color:var(--orange);background:rgba(247,148,29,.06)}
.cr-name{min-width:0}.cr-name b{display:block;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cr-name small{display:block;color:var(--muted);font-size:12px;margin:2px 0 6px}
.cr-tags{display:flex;gap:6px;flex-wrap:wrap}
.cr-cell{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.cr-eff{font-size:11.5px;color:var(--muted)}
.cr-row.dirty .cr-eff{color:#c46a10;font-weight:700}
.cr-acts{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.cr-save:disabled{visibility:hidden}
.cr-tip{margin:10px 2px 0}
@media (max-width:900px){.cr-dials{grid-template-columns:1fr}.cr-thead{display:none}
  .cr-row{grid-template-columns:1fr 1fr;padding:14px 16px}.cr-name{grid-column:1/-1}.cr-acts{grid-column:1/-1;justify-content:flex-start}
  .cr-cell::before{content:attr(data-l);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--faint)}
  .cr-save:disabled{display:none}}
[data-theme=dark] .cr-in{background:#0f1e31;border-color:var(--border)}
[data-theme=dark] .cr-dial{background:var(--soft);border-color:var(--border)}
[data-theme=dark] .cr-row.dirty{background:rgba(247,148,29,.08)}
[data-theme=dark] .cr-row.dirty .cr-eff{color:#f0b35a}
.cr-dial input[type=range]{-webkit-appearance:none;appearance:none;height:6px;border-radius:999px;background:linear-gradient(90deg,var(--rc,#f7941d) var(--rp,50%),var(--col,#e3e9f1) var(--rp,50%));outline:0}
.cr-dial.ai input[type=range]{--rc:#2f74c0}
.cr-dial input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--rc,#f7941d);box-shadow:0 1px 4px rgba(0,0,0,.25);cursor:pointer}
.cr-dial input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--rc,#f7941d);cursor:pointer}
[data-theme=dark] .cr-dial input[type=range]{background:linear-gradient(90deg,var(--rc,#f7941d) var(--rp,50%),#22344b var(--rp,50%))}

/* ===== v91: assignments & quizzes in a 3-column grid ===== */
#asgList{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch}
#asgList>.card.empty{grid-column:1/-1}
#asgList .asg-card{position:relative;flex-direction:column;justify-content:flex-start;gap:12px;padding:16px 16px 14px;margin:0;border-left-width:4px}
#asgList .asg-main{gap:8px}
#asgList .asg-tags{padding-right:92px;display:flex;flex-wrap:wrap;gap:5px}
#asgList .asg-main h3{font-size:15.5px;line-height:1.3}
#asgList .asg-facts{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;font-size:12px}
#asgList .asg-progress{max-width:none;margin-top:4px}
#asgList .asg-prog-row{grid-template-columns:70px 1fr 52px}
#asgList .asg-vis>.pill{position:absolute;top:14px;right:14px}
#asgList .asg-side{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid var(--border);flex-wrap:wrap}
#asgList .asg-vis{text-align:left;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
#asgList .asg-actions{justify-content:flex-end;margin-left:auto}
@media (max-width:1250px){#asgList{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){#asgList{grid-template-columns:minmax(0,1fr)}#asgList .asg-card{min-width:0}}
#asgList .asg-vis .btn,#asgList .asg-actions .btn{margin:0}
@media (min-width:1250px){.participant-assignment-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
/* v91: alignment pass */
#asgList .asg-vis>div{margin-top:0!important;display:flex;gap:6px;align-items:center}
#asgList .asg-side .icon-btn.small-icon,#asgList .asg-side .btn{height:32px!important;min-height:32px!important;box-sizing:border-box}
#asgList .asg-side .icon-btn.small-icon{width:32px!important}
#asgList .asg-side .btn{display:inline-flex;align-items:center;padding-top:0!important;padding-bottom:0!important}
.at-sess-sel.field label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.at-sess-pick{align-items:center}
.rv-grid{align-items:stretch}
.rv-card{height:100%}
.rv-card-foot{margin-top:auto;min-height:45px}
.rv-avg{min-height:24px}
.rv-card-top{min-height:84px}
@media (min-width:761px){.rv-card-foot{height:47px;box-sizing:border-box;flex-wrap:nowrap}}
/* v91: bigger map; compact legend and ranking on phones */
.geo-map-wrap{aspect-ratio:2/1;width:100%;min-width:0}
.geo-map{width:100%;height:100%!important}
.geo-main{min-width:0}
@media (min-width:1101px){.geo-layout{grid-template-columns:minmax(0,1fr) 210px}}
@media (max-width:1100px){.geo-layout{grid-template-columns:1fr!important}.geo-map-wrap{aspect-ratio:16/10}}
@media (max-width:760px){
  .geo-map-wrap{aspect-ratio:auto;height:min(78vw,400px);min-height:300px;border-radius:14px}
  .geo-ctl{top:8px;right:8px}.geo-ctl button{width:30px;height:30px;font-size:16px}
  .geo-legend{gap:6px;margin-top:8px;font-size:10px}.geo-scale{width:90px;height:6px}.geo-legend small{display:none}
  .geo-side{display:block!important}
  .geo-big{gap:4px;margin-bottom:6px}.geo-big b{font-size:20px}.geo-big span{font-size:11.5px}
  .geo-rank{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px}
  .geo-rank li{font-size:12px;grid-template-columns:18px minmax(0,1fr) auto;row-gap:3px;column-gap:6px}
  .geo-rank li>small{display:none}
  .geo-rank .geo-rk{width:18px;height:18px;font-size:10px}
  .geo-rank li>b{font-size:12px}
  .geo-rank .geo-rb{grid-column:2/4;height:4px}
  .geo-more{font-size:11px;margin-top:6px}
}
#geoMap{container-type:inline-size}
@container (max-width:720px){.geo-layout{grid-template-columns:1fr!important}.geo-side{display:block!important}.geo-rank{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 16px}.geo-big{margin-bottom:6px}.geo-big b{font-size:22px}}

/* ===== v91: phone header in two tidy rows =====
   Row 1: menu · full page title · bell.   Row 2: cohort picker (full width) · time zone · light/dark.
   Search and Help live in the menu on phones. */
@media (max-width:640px){
  .top{display:grid!important;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:auto auto;column-gap:8px;row-gap:8px;align-items:center}
  .top>div:first-child{grid-column:1/3;grid-row:1;display:flex;align-items:center;gap:10px;min-width:0}
  .top h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:19px!important}
  .top-actions{display:contents!important}
  .top-actions>.notif-wrap{grid-column:3;grid-row:1;justify-self:end}
  .top-actions>.user,.top-actions .search-btn,.top-actions .qs-btn,.top-actions .help-btn{display:none!important}
  .top-actions>.cohort-switch{grid-column:1;grid-row:2;max-width:none!important;width:100%;min-width:0;height:38px}
  .top-actions>.cohort-switch select{width:100%;max-width:none!important}
  .top-actions>.tz-chip{grid-column:2;grid-row:2;width:auto!important;height:38px!important;padding:0 10px}
  .top-actions>.theme-btn{grid-column:3;grid-row:2;display:inline-flex!important;justify-self:end}
  .top-actions>.cohort-switch~.tz-chip{grid-column:2}
  .top .icon-btn.mobile-menu{width:38px;height:38px;flex:none}
  .notif-btn{width:38px!important;height:38px!important}
}
@media (max-width:700px){.nav .nav-help+.nav-help{margin-top:6px}}
[data-theme=dark] .cohort-switch select,.cohort-switch select{background-color:transparent!important;box-shadow:none!important}
@media (max-width:640px){
  /* no cohort picker (most participants): everything fits on one row */
  .top:not(:has(.cohort-switch)){grid-template-columns:minmax(0,1fr) auto auto auto;grid-template-rows:auto}
  .top:not(:has(.cohort-switch))>div:first-child{grid-column:1}
  .top:not(:has(.cohort-switch)) .top-actions>.tz-chip{grid-column:2;grid-row:1}
  .top:not(:has(.cohort-switch)) .top-actions>.theme-btn{grid-column:3;grid-row:1}
  .top:not(:has(.cohort-switch)) .top-actions>.notif-wrap{grid-column:4;grid-row:1}
}
@media (max-width:380px){.top:not(:has(.cohort-switch)) .top-actions>.tz-chip{display:none}}
html[data-theme] .cohort-switch select:not(#_){background:transparent!important;box-shadow:none!important}
/* v91: chat read receipts */
.cx-tick{color:#8a98ab!important;font-weight:700;letter-spacing:-3px;margin-right:2px;transition:color .3s}
.cx-tick.read{color:#1d9bf0!important}
.cx-tick.bad{color:var(--red)!important;letter-spacing:0}
.cx-mail{font-size:10px;opacity:.7;margin-right:3px}
.cx-seen{align-self:flex-end;margin:-2px 6px 6px auto;font-size:11px;font-weight:700;color:#1d9bf0;text-align:right;width:100%}
.cx-lt{color:#8a98ab;font-weight:800;letter-spacing:-3px;margin-right:3px}.cx-lt.read{color:#1d9bf0}
[data-theme=dark] .cx-tick{color:#7d8da3!important}
[data-theme=dark] .cx-tick.read,[data-theme=dark] .cx-lt.read,[data-theme=dark] .cx-seen{color:#53bdeb!important}
/* v91: settings never wider than the phone */
@media (max-width:900px){.set-wrap{grid-template-columns:minmax(0,1fr)!important}}
.set-body,.set-wrap>*{min-width:0}
.set-body .copy-row{flex-wrap:wrap}.set-body .copy-row input{min-width:0;flex:1 1 200px}
/* v91: sign-up cohorts as cards on phones */
@media (max-width:640px){
  .su-wrap{overflow:visible;border:0}
  .su-table,.su-table tbody,.su-table tr,.su-table td{display:block;width:100%}
  .su-table thead{display:none}
  .su-table tr{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;padding:12px 14px;margin:0 0 10px;border:1px solid var(--border);border-radius:14px;background:var(--card,#fff)}
  .su-table td{padding:0!important;border:0!important;height:auto!important;background:transparent!important}
  .su-table .su-name{grid-column:1;grid-row:1;font-size:14.5px}
  .su-table .su-courses{grid-column:1/-1;grid-row:2;font-size:12.5px;color:var(--muted);white-space:normal;overflow-wrap:anywhere}
  .su-table .su-open{grid-column:2;grid-row:1;justify-self:end}
  .su-table .su-link{grid-column:1/-1;grid-row:3}.su-table .su-link .btn{width:100%;justify-content:center}
}
/* v91: chats never wider than the phone */
.cx-side,.cx-main,.cx-list,.cx-item{min-width:0}
.cx-msgs{overflow-x:hidden}
.cx-seen{width:auto!important;display:block;margin:-2px 8px 6px 0!important;align-self:auto}
@media (max-width:900px){.cx{grid-template-columns:minmax(0,1fr)!important}}
@media (max-width:900px){.main:has(.cx){padding-bottom:0!important}.main:has(.cx) #content{padding-bottom:0!important;margin-bottom:0!important}}
/* v91: Month / List switch on phones too. Month = compact grid with coloured dots; tap a day to open it. */
@media (max-width:700px){
  .seg{display:inline-flex!important}
  .calendar-card:not(.cal-list) .calendar{display:grid!important}
  .calendar-card:not(.cal-list) .agenda{display:none!important}
  .calendar-card.cal-list .agenda{display:grid!important}
  .calendar-card:not(.cal-list) .cal-legend{display:flex!important;flex-wrap:wrap;gap:6px 12px;font-size:11px}
  .calendar-card .calendar{gap:3px!important}
  .calendar-card .calendar .day{min-height:52px!important;padding:5px 4px!important;border-radius:10px!important}
  .calendar-card .calendar .day .event,.calendar-card .calendar .day .ev-more,.calendar-card .calendar .day [class*=more]{display:none!important}
  .calendar-card .calendar .day .day-dots{display:flex!important;gap:2px;margin-top:4px}
  .calendar-card .calendar .day .day-dots i{width:6px;height:6px}
  .calendar-card .calendar .day-top b{font-size:12px}
  .calendar-card .calendar .cal-head{font-size:9.5px!important;letter-spacing:.06em!important;padding:2px 0!important;text-align:center}
}
/* v91: while a quiz is open the portal behind it is switched off completely (no layout, no animations, no blur),
   so phones give the quiz their full attention. Pop-ups and toasts still work. */
html.qz-active body>.shell,html.qz-active body>.fx-bg,html.qz-active body>.fx-float,html.qz-active body>.help-welcome,html.qz-active body>.help-drawer,html.qz-active body>.help-scrim,html.qz-active body>.qs-scrim,html.qz-active body>.cal-tip{display:none!important}
html.qz-active body{background:#f3f5f9}
@media (max-width:760px){.qz-dots{padding:3px 4px!important;scroll-padding:4px}}
/* v91: drop-down lists (the part Windows / Chrome draws itself) readable in both themes */
select option,select optgroup{background-color:#fff;color:#11233b}
html[data-theme=dark] select:not(#_) option,html[data-theme=dark] select:not(#_) optgroup{background-color:#13233a!important;color:#e6eef8!important}
html[data-theme=dark] select:not(#_) option:checked{background-color:#1c4f87!important;color:#fff!important}
html[data-theme=dark] select:not(#_) option:disabled{color:#71859c!important}
html[data-theme=dark] select{color-scheme:dark}
html[data-theme=light] select{color-scheme:light}
/* v91: "something new here" dots */
.nav button[data-page]{position:relative}
.nav-dot{position:absolute;top:9px;left:30px;width:9px;height:9px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 2px var(--sidebar-bg,#011a33);animation:navDot 2s ease-in-out infinite}
body.sidebar-collapsed .nav-dot{left:auto;right:10px}
@media (min-width:701px){.nav button[data-page] .nav-dot{left:auto;right:14px;top:50%;margin-top:-4.5px}}
@keyframes navDot{0%,100%{box-shadow:0 0 0 2px var(--sidebar-bg,#011a33),0 0 0 2px rgba(247,148,29,.0)}50%{box-shadow:0 0 0 2px var(--sidebar-bg,#011a33),0 0 0 6px rgba(247,148,29,.25)}}
.mobile-menu{position:relative}
.mobile-menu.has-dot::after{content:"";position:absolute;top:6px;right:6px;width:9px;height:9px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 2px var(--card,#fff)}
[data-theme=dark] .mobile-menu.has-dot::after{box-shadow:0 0 0 2px #0f1e31}
@media (prefers-reduced-motion:reduce){.nav-dot{animation:none}}

/* ===== v91: photos & videos in Chats ===== */
.cx-compose{align-items:flex-end}
.cx-attach{flex:none;width:40px;height:40px;border-radius:50%;border:0;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer;transition:background .15s,color .15s}
.cx-attach:hover{background:var(--soft);color:var(--orange)}
.cx-attach svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cx-files{display:none;gap:8px;padding:8px 12px 0;flex-wrap:wrap;position:relative}
.cx-files.on{display:flex}
.cx-chip{position:relative;width:64px;height:64px;border-radius:12px;overflow:hidden;background:#0b1626;border:1px solid var(--border);flex:none}
.cx-chip img,.cx-chip video{width:100%;height:100%;object-fit:cover;display:block}
.cx-chip small{position:absolute;left:4px;bottom:3px;font-size:9.5px;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.7)}
.cx-chip .cx-vid{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:18px;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.cx-chip button{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:10px;cursor:pointer;display:grid;place-items:center;padding:0}
.cx-up{display:none;position:absolute;left:12px;right:12px;bottom:-4px;height:3px;border-radius:999px;background:var(--border);overflow:hidden}
.cx-up i{display:block;height:100%;width:0;background:var(--orange);transition:width .2s}
.cx-files.busy .cx-up{display:block}.cx-files.busy .cx-chip button{display:none}.cx-files.busy .cx-chip{opacity:.75}
.cx-main.drop{outline:3px dashed var(--orange);outline-offset:-8px}
.cx-bub.has-media{padding:4px 4px 6px;max-width:min(360px,80%)}
.cx-bub.has-media .cx-text{padding:4px 8px 0;display:block}
.cx-bub.has-media .cx-meta,.cx-bub.has-media .cx-from{padding:0 8px}
.cx-media{display:grid;gap:3px;border-radius:14px;overflow:hidden;margin:0 0 2px}
.cx-media.n2,.cx-media.n4{grid-template-columns:1fr 1fr}.cx-media.n3{grid-template-columns:1fr 1fr}.cx-media.n3>:first-child{grid-column:1/-1}
.cx-media img{display:block;width:100%;height:100%;max-height:320px;object-fit:cover;background:#0b1626;cursor:zoom-in}
.cx-media.n2 img,.cx-media.n3 img,.cx-media.n4 img{aspect-ratio:1/1;max-height:none}
.cx-media.n3>:first-child img{aspect-ratio:16/9}
.cx-media video{display:block;width:100%;max-height:360px;background:#000;border-radius:0}
.cx-media a{display:block;min-width:0}
.cx-viewer{position:fixed;inset:0;z-index:9999;background:rgba(3,10,20,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;animation:cxFade .15s}
.cx-viewer img{max-width:100%;max-height:calc(100vh - 110px);border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.5);object-fit:contain}
.cx-viewer-bar{display:flex;gap:10px}
@keyframes cxFade{from{opacity:0}to{opacity:1}}
@media (max-width:700px){.cx-attach{width:36px;height:36px}.cx-bub.has-media{max-width:86%}}
[data-theme=dark] .cx-attach:hover{background:#1d3149}
.nav button[data-page] .nav-dot{left:auto!important;right:14px;top:50%;margin-top:-4.5px}
/* v91: help — Features & FAQ tab */
.help-tabs{flex-wrap:wrap}
.help-sec{margin:16px 0 8px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.help-sec:first-child{margin-top:4px}
.help-feats{display:grid;gap:8px}
.help-feat{padding:11px 13px;border:1px solid var(--border);border-radius:12px;background:var(--card,#fff)}
.help-feat b{display:block;font-size:13.5px}.help-feat p{margin:3px 0 0;font-size:12.5px;color:var(--muted);line-height:1.5}
.help-feat .link-btn{margin-top:6px;font-size:12.5px}
.help-faq{border:1px solid var(--border);border-radius:12px;margin:0 0 8px;background:var(--card,#fff)}
.help-faq summary{padding:11px 13px;font-weight:700;font-size:13.5px;cursor:pointer;list-style:none}
.help-faq summary::-webkit-details-marker{display:none}
.help-faq summary::after{content:"+";float:right;color:var(--orange);font-weight:800}
.help-faq[open] summary::after{content:"−"}
.help-faq p{margin:0;padding:0 13px 12px;font-size:12.5px;color:var(--muted);line-height:1.55}
[data-theme=dark] :is(.help-feat,.help-faq){background:var(--soft);border-color:var(--border)}

/* v91 capstone: participant's overall cohort attendance against the booking rule */
.cap-att{border:1px solid var(--line,#dfe5ec);border-radius:14px;padding:14px 16px;margin:12px 0;background:var(--card,#fff);display:grid;gap:8px}
.cap-att.ok{border-color:color-mix(in srgb,#16a34a 45%,transparent);background:color-mix(in srgb,#16a34a 7%,var(--card,#fff))}
.cap-att.no{border-color:color-mix(in srgb,#dc2626 45%,transparent);background:color-mix(in srgb,#dc2626 6%,var(--card,#fff))}
.cap-att-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.cap-att-top b{font-size:1.05rem;color:var(--text)}
.cap-att-badge{font-size:.78rem;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}
.cap-att.ok .cap-att-badge{background:#16a34a;color:#fff}.cap-att.no .cap-att-badge{background:#dc2626;color:#fff}
.cap-att-bar{position:relative;height:10px;border-radius:999px;background:var(--soft,#eef2f6);overflow:visible}
.cap-att-bar i{position:absolute;inset:0 auto 0 0;border-radius:999px;background:linear-gradient(90deg,#f59e0b,#ea580c)}
.cap-att.ok .cap-att-bar i{background:linear-gradient(90deg,#22c55e,#16a34a)}
.cap-att-bar em{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--text);opacity:.7;border-radius:2px}
.cap-att-legend{display:flex;justify-content:space-between;font-size:.78rem;color:var(--muted)}
.cap-att p{margin:0;color:var(--text)}.cap-att small{color:var(--muted);line-height:1.45}
html[data-theme=dark] .cap-att.ok{background:color-mix(in srgb,#16a34a 14%,var(--card))}
html[data-theme=dark] .cap-att.no{background:color-mix(in srgb,#dc2626 13%,var(--card))}
@media (max-width:600px){.booking-info{display:grid!important;grid-template-columns:1fr!important;gap:4px}}

/* v91 in-app dialogs (replace the browser's confirm/prompt pop-ups) */
.pvl-dlg{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:18px;background:rgba(6,20,36,.55);backdrop-filter:blur(3px);opacity:0;transition:opacity .16s ease}
.pvl-dlg.in{opacity:1}.pvl-dlg.out{opacity:0}
.pvl-dlg-box{width:min(440px,100%);max-height:calc(100vh - 36px);overflow:auto;background:var(--card,#fff);color:var(--text);border:1px solid var(--border,#dfe5ec);border-radius:18px;padding:22px 22px 18px;box-shadow:0 24px 60px rgba(0,0,0,.28);transform:translateY(10px) scale(.98);transition:transform .18s ease}
.pvl-dlg.in .pvl-dlg-box{transform:none}
.pvl-dlg-box h3{margin:0 0 10px;font-size:1.12rem;line-height:1.35;color:var(--text)}
.pvl-dlg-box p{margin:0 0 10px;color:var(--muted);line-height:1.5;font-size:.93rem}
.pvl-dlg-box.danger h3::before{content:"!";display:inline-grid;place-items:center;width:24px;height:24px;margin-right:9px;border-radius:50%;background:#fee2e2;color:#dc2626;font-size:.85rem;vertical-align:2px}
html[data-theme=dark] .pvl-dlg-box.danger h3::before{background:rgba(220,38,38,.2);color:#f87171}
.pvl-dlg-in{width:100%;margin:4px 0 6px;padding:11px 13px;border-radius:11px;border:1px solid var(--border,#d4dce6);background:var(--soft,#f6f8fb);color:var(--text);font:inherit}
.pvl-dlg-in:focus{outline:2px solid var(--accent,#f28c28);outline-offset:1px}
.pvl-dlg-lbl{display:block;font-weight:700;font-size:.85rem;margin:6px 0 2px;color:var(--text)}.pvl-dlg-lbl small{font-weight:400;color:var(--muted)}
.pvl-dlg-act{display:flex;justify-content:flex-end;gap:10px;margin-top:14px;flex-wrap:wrap}
.pvl-dlg-act .btn{min-width:104px;justify-content:center}
@media (max-width:520px){.pvl-dlg{place-items:end center;padding:0}.pvl-dlg-box{width:100%;border-radius:20px 20px 0 0;padding-bottom:calc(18px + env(safe-area-inset-bottom))}.pvl-dlg-act{flex-direction:column-reverse}.pvl-dlg-act .btn{width:100%}}
.cap-confirm{display:flex;gap:14px;align-items:center;padding:12px;border-radius:14px;background:var(--soft,#f3f6fa);border:1px solid var(--border,#e2e8f0);margin-bottom:10px}
.cap-confirm-date{flex:0 0 56px;height:60px;border-radius:12px;background:linear-gradient(160deg,#06213d,#0b3a66);color:#fff;display:grid;place-items:center;align-content:center;line-height:1}
.cap-confirm-date span{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#f9b46b}.cap-confirm-date b{font-size:1.5rem}
.cap-confirm>div:last-child{display:grid;gap:3px;min-width:0}.cap-confirm>div:last-child b{color:var(--text)}.cap-confirm>div:last-child span{color:var(--muted);font-size:.88rem}
.cap-confirm .cap-confirm-att{color:#16a34a!important;font-weight:700;font-size:.8rem!important}
.pvl-dlg-box p.cap-confirm-note{font-size:.84rem}
/* calendar day panel: time range and label no longer run together */
.window-row>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.window-row>div:first-child small{font-size:.8rem}
.booking-availability .cap-att{margin:10px 0 4px}

/* v91 capstone booking window card (calendar day panel) */
.cap-window{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 16px;margin:10px 0;border-radius:14px;border:1px solid var(--border,#e2e8f0);background:linear-gradient(135deg,color-mix(in srgb,var(--accent,#f28c28) 7%,var(--card,#fff)),var(--card,#fff) 60%);position:relative;overflow:hidden}
.cap-window::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,#f9a03f,#e8730c)}
.cw-ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#e8730c;background:color-mix(in srgb,#f28c28 15%,transparent)}
.cw-main{min-width:0;display:grid;gap:5px}
.cw-time{font-weight:700;font-size:1.08rem;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap;letter-spacing:.01em}
.cw-dash{color:var(--muted);font-weight:400}
.cw-meta{display:flex;flex-wrap:wrap;gap:6px}
.cw-meta span{font-size:.76rem;padding:3px 9px;border-radius:999px;background:var(--soft,#f1f5f9);color:var(--muted);border:1px solid var(--border,#e2e8f0)}
.cw-bar{height:5px;border-radius:999px;background:var(--soft,#eef2f6);overflow:hidden;max-width:260px}.cw-bar i{display:block;height:100%;background:linear-gradient(90deg,#22c55e,#16a34a);border-radius:999px}
.cw-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.cw-pill{font-size:.78rem;font-weight:700;padding:5px 11px;border-radius:999px;white-space:nowrap;color:#15803d;background:color-mix(in srgb,#22c55e 16%,transparent)}
.cw-pill.full{color:#b45309;background:color-mix(in srgb,#f59e0b 18%,transparent)}
html[data-theme=dark] .cw-pill{color:#4ade80}html[data-theme=dark] .cw-pill.full{color:#fbbf24}
html[data-theme=dark] .cw-ico{color:#f9a03f}
html[data-theme=dark] .cap-window{background:linear-gradient(135deg,color-mix(in srgb,#f28c28 10%,var(--card)),var(--card) 60%)!important;border-color:var(--border)!important}
.cw-acts{display:flex;gap:6px}
@media (max-width:560px){.cap-window{grid-template-columns:auto minmax(0,1fr);gap:12px}.cw-side{grid-column:1/-1;flex-direction:row;justify-content:space-between;align-items:center}}
@media (max-width:560px){.cap-window:not(:has(.cw-acts)){grid-template-columns:auto minmax(0,1fr) auto}.cap-window:not(:has(.cw-acts)) .cw-side{grid-column:auto;flex-direction:column}.cw-time{font-size:1rem}.cw-ico{width:38px;height:38px}}
.cw-time{flex-wrap:nowrap;white-space:nowrap}
@media (max-width:560px){.cw-time{font-size:.98rem;gap:6px}.cap-window{padding:12px 13px;gap:11px}}

/* v91 capstone slot change requests */
.cap-chg{grid-column:1/-1;margin-top:8px;padding:10px 12px;border-radius:12px;border:1px dashed color-mix(in srgb,#f59e0b 55%,transparent);background:color-mix(in srgb,#f59e0b 8%,var(--card,#fff));display:grid;gap:6px;font-size:.88rem}
.cap-chg.approved{border-color:color-mix(in srgb,#16a34a 50%,transparent);background:color-mix(in srgb,#16a34a 8%,var(--card,#fff))}
.cap-chg.declined{border-color:color-mix(in srgb,#dc2626 45%,transparent);background:color-mix(in srgb,#dc2626 6%,var(--card,#fff))}
.cap-chg-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.cap-chg-pill{font-size:.74rem;font-weight:700;padding:3px 9px;border-radius:999px;background:color-mix(in srgb,#f59e0b 22%,transparent);color:#b45309;justify-self:start;white-space:nowrap}
.cap-chg.approved .cap-chg-pill{background:color-mix(in srgb,#16a34a 18%,transparent);color:#15803d}.cap-chg.declined .cap-chg-pill{background:color-mix(in srgb,#dc2626 16%,transparent);color:#b91c1c}
html[data-theme=dark] .cap-chg-pill{color:#fbbf24}html[data-theme=dark] .cap-chg.approved .cap-chg-pill{color:#4ade80}html[data-theme=dark] .cap-chg.declined .cap-chg-pill{color:#f87171}
.cap-chg-move{color:var(--text)}.cap-chg-move i{font-style:normal;color:var(--muted);margin:0 4px}
.cap-chg p{margin:0;color:var(--muted);font-style:italic}
.cap-chg-act{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.cap-chg-act small{color:var(--muted);flex:1 1 200px}
.booking-row:has(.cap-chg){flex-wrap:wrap}
.cap-my-acts{display:grid;gap:8px;justify-items:start;margin-top:8px}
.cap-chg-now{display:grid;gap:2px;padding:12px 14px;border-radius:12px;background:var(--soft,#f3f6fa);border:1px solid var(--border,#e2e8f0);margin-bottom:12px}
.cap-chg-now span{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.cap-chg-now b{color:var(--text)}.cap-chg-now small{color:var(--muted)}
.cap-pick-day{margin:6px 0 10px}.cap-pick-day>b{display:block;font-size:.85rem;margin-bottom:6px;color:var(--text)}
.cap-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.cap-pick label{position:relative;cursor:pointer}
.cap-pick input{position:absolute;opacity:0;pointer-events:none}
.cap-pick span{display:grid;place-items:center;gap:1px;padding:9px 6px;border-radius:11px;border:1px solid var(--border,#d9e1ea);background:var(--card,#fff);font-weight:700;color:var(--text);transition:.15s}
.cap-pick span small{font-weight:400;color:var(--muted);font-size:.72rem}
.cap-pick label:hover span{border-color:#f28c28}
.cap-pick input:checked+span{background:linear-gradient(160deg,#f9a03f,#e8730c);border-color:#e8730c;color:#fff;box-shadow:0 6px 16px rgba(232,115,12,.3)}
.cap-pick input:checked+span small{color:#fff}
.cap-pick input:focus-visible+span{outline:2px solid #f28c28;outline-offset:2px}
.cap-pick input{appearance:none!important;width:0!important;height:0!important;margin:0!important;border:0!important}
.booking-row>.cap-chg{flex:1 1 100%;width:100%}.booking-row>div:nth-child(2){flex:1;min-width:0}
.cap-chg-act{justify-content:flex-start}
@media (max-width:640px){
  .booking-row{flex-wrap:wrap}
  .booking-row>div:nth-child(2){flex:1 1 calc(100% - 96px)}
  .booking-row>a.btn,.booking-row>.sess-actions{margin-left:84px}
  .booking-row>.sess-actions{display:flex;gap:8px;flex-wrap:wrap}
  .booking-row>.cap-chg{margin-top:4px}
}
.cap-chg-act .btn{margin:0!important}
@media (max-width:640px){.booking-row>a.btn,.booking-row>.sess-actions{margin-left:0}.booking-row>div:nth-child(2)+*{margin-left:84px}}
@media (max-width:640px){.booking-row>.sess-actions{margin-top:0!important;align-self:center}.booking-row>a.btn{align-self:center}}
/* capstone booking row: Join / Reschedule / Cancel in one aligned group */
.cap-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;margin-left:auto}
.cap-acts .btn{margin:0!important;height:34px;min-height:34px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;line-height:1;box-sizing:border-box}
.cap-my-acts .cap-acts{margin-left:0}
@media (max-width:640px){.booking-row>.cap-acts{margin-left:84px!important;flex:1 1 calc(100% - 84px)}}
.cap-chg-act .btn{height:34px;min-height:34px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;line-height:1;box-sizing:border-box}
/* v91 "new version ready" bar */
.pvl-newver{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:99990;display:flex;align-items:center;gap:12px;padding:10px 10px 10px 18px;border-radius:999px;background:#06213d;color:#fff;box-shadow:0 14px 40px rgba(0,0,0,.35);font-size:.92rem;max-width:calc(100vw - 24px);animation:pvlNv .3s ease}
.pvl-newver .btn{margin:0}.pvl-newver-x{background:none;border:0;color:#cbd5e1;font-size:1.3rem;cursor:pointer;padding:0 6px;line-height:1}
html[data-theme=dark] .pvl-newver{background:#1e3a5f}
@keyframes pvlNv{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
html.qz-active .pvl-newver{display:none}
@media (max-width:520px){.pvl-newver{bottom:12px;border-radius:16px;flex-wrap:wrap;justify-content:center;text-align:center}}
.cw-head-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.cw-head-acts .btn{margin:0;height:34px;min-height:34px;padding:0 14px;display:inline-flex;align-items:center}
@media (max-width:640px){
  .booking-availability .activity-heading{flex-wrap:wrap;gap:10px}
  .booking-availability .activity-heading>div:first-child{flex:1 1 100%}
  .cw-head-acts{flex:1 1 100%}.cw-head-acts .btn{flex:1;justify-content:center}
  .booking-row>.cap-acts{margin-left:0!important;flex:1 1 100%}
  .booking-row>.cap-acts .btn{flex:1}
}

/* ===== v91 Leaderboard: Olympic podium (admin dashboard) ===== */
.lb-card{padding:20px 22px 0;overflow:hidden;position:relative;margin-bottom:18px;background:
  radial-gradient(1200px 260px at 50% -40px,color-mix(in srgb,#f9b233 16%,transparent),transparent 70%),var(--card)}
.lb-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.lb-head>div{flex:1}.lb-head h3{margin:2px 0 0}
.lb-basis{font-size:.78rem;color:var(--muted);padding:4px 10px;border-radius:999px;background:var(--soft);border:1px solid var(--border)}
.lb-body{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:22px;align-items:end}
.lb-podium{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:10px;max-width:640px;width:100%;margin:6px auto 0;padding-top:8px}
.lb-floor{position:absolute;left:-30px;right:-30px;bottom:0;height:10px;background:linear-gradient(180deg,color-mix(in srgb,var(--text) 10%,transparent),transparent);border-radius:50%;filter:blur(4px)}
.lb-spot{display:flex;flex-direction:column;align-items:center;min-width:0;animation:lbRise .7s cubic-bezier(.2,.9,.3,1.2) both}
.lb-p1{animation-delay:.25s}.lb-p2{animation-delay:.05s}.lb-p3{animation-delay:.15s}
@keyframes lbRise{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}
.lb-person{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:10px;min-height:20px;width:100%}
.lb-tag{position:relative;max-width:100%;padding:6px 12px;border-radius:12px;background:var(--card);border:1px solid var(--border);box-shadow:0 6px 18px rgba(0,0,0,.12);text-align:center;display:grid;gap:1px}
.lb-tag::after{content:"";position:absolute;left:50%;bottom:-6px;width:10px;height:10px;background:inherit;border-right:1px solid var(--border);border-bottom:1px solid var(--border);transform:translateX(-50%) rotate(45deg)}
.lb-tag b{font-size:.9rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.lb-tag span{font-size:.78rem;font-weight:700;color:var(--m2)}
.lb-av{position:relative;width:76px;height:76px;border-radius:50%;padding:4px;background:conic-gradient(from 210deg,var(--m1),var(--m2),var(--m1));box-shadow:0 10px 24px color-mix(in srgb,var(--m2) 45%,transparent);animation:lbBob 3.2s ease-in-out infinite}
.lb-p1 .lb-av{width:96px;height:96px}
.lb-ini{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:1.45rem;letter-spacing:.02em;color:#fff;background:linear-gradient(160deg,#0b3a66,#06213d);border:3px solid var(--card)}
.lb-p1 .lb-ini{font-size:1.8rem}
.lb-medal{position:absolute;right:-4px;bottom:-2px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:.85rem;color:#3b2a00;background:radial-gradient(circle at 35% 30%,#fff 0,var(--m1) 35%,var(--m2) 100%);border:2px solid var(--card);box-shadow:0 3px 8px rgba(0,0,0,.25)}
.lb-crown{position:absolute;top:-26px;left:50%;transform:translateX(-50%) rotate(-8deg);font-size:1.7rem;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25))}
@keyframes lbBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.lb-stand{position:relative;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;padding-top:34px;border-radius:14px 14px 0 0;color:#fff;
  background:linear-gradient(180deg,color-mix(in srgb,var(--m2,#64748b) 92%,#fff) 0,var(--m2,#64748b) 18%,color-mix(in srgb,var(--m2,#64748b) 70%,#000) 100%);box-shadow:inset 0 2px 0 rgba(255,255,255,.35),inset 0 -12px 24px rgba(0,0,0,.18)}
.lb-p1 .lb-stand{height:190px}.lb-p2 .lb-stand{height:140px}.lb-p3 .lb-stand{height:108px}
.lb-spot.empty .lb-stand{--m2:#94a3b8;opacity:.35}
.lb-trophy{position:absolute;top:-28px;width:52px;height:52px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.3))}.lb-p1 .lb-trophy{width:62px;height:62px;top:-34px}
.lb-trophy svg{width:100%;height:100%}
.lb-num{font-size:2.6rem;font-weight:800;line-height:1;text-shadow:0 3px 0 rgba(0,0,0,.18)}.lb-p1 .lb-num{font-size:3.4rem}
.lb-stand small{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;opacity:.9;font-weight:700}
.lb-stand em{font-style:normal;font-size:.7rem;opacity:.85;padding:0 8px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.lb-p3 .lb-stand em{display:none}
.lb-spot.gold .lb-stand::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 45%,transparent 60%);background-size:250% 100%;animation:lbShine 3.5s ease-in-out infinite}
@keyframes lbShine{0%{background-position:150% 0}60%,100%{background-position:-60% 0}}
.lb-rest{align-self:center;padding-bottom:20px}
.lb-rest-row{display:grid;grid-template-columns:22px auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--border)}
.lb-rest-n{font-weight:800;color:var(--muted);text-align:center}.lb-rest-name{min-width:0;display:grid}.lb-rest-name b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-rest-name small{color:var(--muted);font-size:.75rem}
.lb-rest-score{color:var(--text)}
html[data-theme=dark] .lb-tag{background:#16263b;box-shadow:0 8px 20px rgba(0,0,0,.4)}
html[data-theme=dark] .lb-ini{border-color:#0f1d2e}
@media (prefers-reduced-motion:reduce){.lb-spot,.lb-av,.lb-spot.gold .lb-stand::before{animation:none}}
@media (max-width:900px){.lb-body{grid-template-columns:1fr}.lb-rest{padding-bottom:16px}}
@media (max-width:560px){.lb-card{padding:16px 12px 0}.lb-podium{gap:6px}.lb-av{width:56px;height:56px}.lb-p1 .lb-av{width:70px;height:70px}.lb-ini{font-size:1.05rem}.lb-p1 .lb-ini{font-size:1.3rem}
  .lb-tag{padding:5px 7px}.lb-tag b{font-size:.74rem;max-width:96px}.lb-tag span{font-size:.7rem}
  .lb-p1 .lb-stand{height:150px}.lb-p2 .lb-stand{height:112px}.lb-p3 .lb-stand{height:86px}
  .lb-num{font-size:1.9rem}.lb-p1 .lb-num{font-size:2.4rem}.lb-trophy{width:40px;height:40px;top:-22px}.lb-p1 .lb-trophy{width:48px;height:48px;top:-26px}.lb-stand{padding-top:24px}.lb-stand em{display:none}.lb-crown{font-size:1.3rem;top:-20px}.lb-medal{width:22px;height:22px;font-size:.7rem}}
/* 3D avatars on the podium */
.lb-av{overflow:visible}
.lb-3d{width:100%;height:100%;border-radius:50%;display:block;border:3px solid var(--card);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
html[data-theme=dark] .lb-3d{border-color:#0f1d2e}
.lb-av::after{content:"";position:absolute;inset:4px;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 30% 22%,rgba(255,255,255,.35),transparent 38%),radial-gradient(circle at 70% 85%,rgba(0,0,0,.28),transparent 45%)}
.lb-av{transform-style:preserve-3d}
.lb-spot:hover .lb-av{animation:lbSpin 1.2s ease}
@keyframes lbSpin{from{transform:perspective(400px) rotateY(0)}to{transform:perspective(400px) rotateY(360deg)}}
.lb-crown,.lb-medal{z-index:2}
/* trophy sits on the front of the platform; room for the crown above #1 */
.lb-trophy,.lb-p1 .lb-trophy{position:static;top:auto;width:46px;height:46px;margin-bottom:4px}
.lb-p1 .lb-trophy{width:58px;height:58px}
.lb-stand{padding-top:14px}
.lb-p1 .lb-stand{height:210px}.lb-p2 .lb-stand{height:165px}.lb-p3 .lb-stand{height:135px}
.lb-p1 .lb-person{gap:26px}.lb-person{gap:12px}
.lb-av{width:84px;height:84px}.lb-p1 .lb-av{width:104px;height:104px}
@media (max-width:560px){.lb-trophy{width:32px;height:32px}.lb-p1 .lb-trophy{width:40px;height:40px}.lb-stand{padding-top:10px}
  .lb-p1 .lb-stand{height:165px}.lb-p2 .lb-stand{height:128px}.lb-p3 .lb-stand{height:104px}.lb-av{width:60px;height:60px}.lb-p1 .lb-av{width:74px;height:74px}.lb-p1 .lb-person{gap:20px}}
.lb-trophy{display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle,rgba(0,0,0,.22),rgba(0,0,0,.08) 60%,transparent 70%);padding:6px;box-sizing:content-box}
@media (max-width:560px){.lb-p1 .lb-stand{height:176px}.lb-p2 .lb-stand{height:142px}.lb-p3 .lb-stand{height:120px}}
/* v91 podium labels: laurel + ordinal, ribbon banner, 3D top face */
.lb-stand{overflow:visible}
.lb-stand::after{content:"";position:absolute;left:6px;right:6px;top:-9px;height:12px;border-radius:10px 10px 4px 4px;background:linear-gradient(180deg,color-mix(in srgb,var(--m1,#cbd5e1) 85%,#fff),var(--m1,#cbd5e1));box-shadow:0 2px 0 rgba(0,0,0,.08);transform:perspective(60px) rotateX(28deg);transform-origin:bottom}
.lb-num,.lb-stand>small{display:none}
.lb-rank{position:relative;width:96px;height:78px;display:grid;place-items:center;margin-top:2px}
.lb-p1 .lb-rank{width:118px;height:94px}
.lb-laurel{position:absolute;inset:0;width:100%;height:100%;color:rgba(255,255,255,.55);filter:drop-shadow(0 1px 0 rgba(0,0,0,.15))}
.lb-n{position:relative;font-size:2.7rem;font-weight:800;line-height:1;color:#fff;text-shadow:0 3px 0 rgba(0,0,0,.2),0 0 18px rgba(255,255,255,.25);display:flex;align-items:flex-start}
.lb-p1 .lb-n{font-size:3.5rem}
.lb-n sup{font-size:.36em;font-weight:800;margin:.18em 0 0 2px;letter-spacing:.02em;opacity:.95}
.lb-ribbon{position:relative;margin-top:6px;padding:5px 16px;font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--m2);background:linear-gradient(180deg,#fff,color-mix(in srgb,var(--m1) 45%,#fff));box-shadow:0 4px 10px rgba(0,0,0,.18);white-space:nowrap;z-index:1}
.lb-ribbon::before,.lb-ribbon::after{content:"";position:absolute;top:4px;width:12px;height:100%;background:color-mix(in srgb,var(--m1) 60%,var(--m2));z-index:-1}
.lb-ribbon::before{left:-9px;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,40% 50%)}
.lb-ribbon::after{right:-9px;clip-path:polygon(0 0,100% 0,60% 50%,100% 100%,0 100%)}
.lb-p2 .lb-ribbon{color:#475569}.lb-p3 .lb-ribbon{color:#7c4a1b}.lb-p1 .lb-ribbon{color:#8a6100}
.lb-stand em{margin-top:6px;color:rgba(255,255,255,.88)}
.lb-p3 .lb-stand em{display:block}
.lb-spot.empty .lb-tag{opacity:.6}
@media (max-width:560px){.lb-rank{width:66px;height:54px}.lb-p1 .lb-rank{width:80px;height:66px}.lb-n{font-size:1.8rem}.lb-p1 .lb-n{font-size:2.4rem}
  .lb-ribbon{font-size:.54rem;letter-spacing:.08em;padding:4px 7px}.lb-ribbon::before,.lb-ribbon::after{width:8px;top:3px}.lb-ribbon::before{left:-6px}.lb-ribbon::after{right:-6px}}
.lb-p1 .lb-stand{height:236px}.lb-p2 .lb-stand{height:192px}.lb-p3 .lb-stand{height:164px}
.lb-trophy{width:38px;height:38px}.lb-p1 .lb-trophy{width:48px;height:48px}
.lb-laurel{color:rgba(255,255,255,.5)}
@media (max-width:560px){.lb-p1 .lb-stand{height:188px}.lb-p2 .lb-stand{height:156px}.lb-p3 .lb-stand{height:134px}.lb-trophy{width:28px;height:28px}.lb-p1 .lb-trophy{width:34px;height:34px}}
/* aligned places: same layout on every platform, digit centred in the wreath, suffix hung off to the right */
.lb-stand,.lb-p1 .lb-stand{display:grid;grid-template-rows:auto auto 1fr;justify-items:center;align-content:start;padding-top:16px;row-gap:8px}
.lb-trophy,.lb-p1 .lb-trophy{width:40px;height:40px;margin:0;padding:6px}
.lb-rank,.lb-p1 .lb-rank{width:100px;height:84px;margin:0}
.lb-n,.lb-p1 .lb-n{position:relative;display:block;font-size:3rem;line-height:1;margin-top:-6px}
.lb-n b{display:block;font-weight:800;text-align:center}
.lb-n sup{position:absolute;left:100%;top:.12em;margin:0 0 0 2px;font-size:.36em;line-height:1}
.lb-stand em{grid-row:3;align-self:end;margin:0 0 12px}
@media (max-width:560px){
  .lb-stand,.lb-p1 .lb-stand{padding-top:12px;row-gap:6px}
  .lb-trophy,.lb-p1 .lb-trophy{width:28px;height:28px;padding:4px}
  .lb-rank,.lb-p1 .lb-rank{width:70px;height:60px}
  .lb-n,.lb-p1 .lb-n{font-size:2.1rem;margin-top:-4px}
}
.lb-stand,.lb-p1 .lb-stand,.lb-p2 .lb-stand,.lb-p3 .lb-stand{display:flex!important;flex-direction:column;align-items:center!important;justify-content:flex-start;gap:8px}
.lb-stand>*{margin-left:auto!important;margin-right:auto!important}
.lb-stand em{margin-top:auto!important}
.lb-rank{display:grid!important;place-items:center}
.lb-n{transform:translateY(-2px)}
/* no wreath: clean centred place number */
.lb-rank,.lb-p1 .lb-rank{width:auto;height:auto;padding:2px 0}
.lb-n,.lb-p1 .lb-n{font-size:3.2rem;margin-top:0;transform:none}
@media (max-width:560px){.lb-n,.lb-p1 .lb-n{font-size:2.3rem}}
/* leaderboard now sits in the main dashboard column under the map: same width, fills the space below it */
.lb-card{margin-bottom:0;container-type:inline-size;container-name:lb}
@media (max-width:1100px){.adm-o10{order:10}}
.lb-body{grid-template-columns:minmax(0,1fr)}
.lb-rest{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));column-gap:20px;padding-bottom:18px}
.lb-rest .adm-sub{grid-column:1/-1}
@container lb (min-width:900px){.lb-body{grid-template-columns:minmax(0,1fr) 260px}.lb-rest{display:block}}
@container lb (max-width:520px){.lb-av{width:60px;height:60px}.lb-p1 .lb-av{width:76px;height:76px}.lb-tag b{font-size:.76rem;max-width:110px}.lb-tag{padding:5px 8px}
  .lb-p1 .lb-stand{height:176px}.lb-p2 .lb-stand{height:144px}.lb-p3 .lb-stand{height:122px}.lb-n,.lb-p1 .lb-n{font-size:2.3rem}.lb-trophy,.lb-p1 .lb-trophy{width:28px;height:28px}}
@container lb (max-width:520px){.lb-tag b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2}}
/* leaderboard: first card of the main column, compact */
@media (max-width:1100px){.adm-o0{order:0}}
.lb-card{padding:16px 18px 0}
.lb-podium{max-width:520px;margin-top:0}
.lb-av{width:64px;height:64px}.lb-p1 .lb-av{width:80px;height:80px}
.lb-person{gap:9px;margin-bottom:8px}.lb-p1 .lb-person{gap:20px}
.lb-tag{padding:5px 10px}.lb-tag b{font-size:.82rem}.lb-tag span{font-size:.74rem}
.lb-crown{font-size:1.35rem;top:-21px}.lb-medal{width:22px;height:22px;font-size:.72rem}
.lb-p1 .lb-stand{height:148px}.lb-p2 .lb-stand{height:118px}.lb-p3 .lb-stand{height:96px}
.lb-stand,.lb-p1 .lb-stand,.lb-p2 .lb-stand,.lb-p3 .lb-stand{padding-top:10px;gap:4px}
.lb-trophy,.lb-p1 .lb-trophy{width:26px;height:26px;padding:4px}
.lb-n,.lb-p1 .lb-n{font-size:2.3rem}
.lb-stand em{font-size:.66rem;margin-bottom:8px!important}
.lb-rest{padding-bottom:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.lb-rest-row{padding:7px 0}
@container lb (max-width:520px){.lb-av{width:54px;height:54px}.lb-p1 .lb-av{width:66px;height:66px}
  .lb-p1 .lb-stand{height:134px}.lb-p2 .lb-stand{height:108px}.lb-p3 .lb-stand{height:90px}.lb-n,.lb-p1 .lb-n{font-size:2rem}.lb-trophy,.lb-p1 .lb-trophy{width:22px;height:22px}}

/* ===== v91 answer review cards (participant "Review your answers" + staff "View answers"), light and dark ===== */
.qa-list{display:grid;gap:12px;text-align:left}
.qa-q,.qz-final .qa-q{--qa-c:#dc2626;background:var(--card,#fff)!important;border:1px solid var(--border,#e2e8f0)!important;border-left:4px solid var(--qa-c)!important;border-radius:14px!important;padding:14px 16px!important;margin:0!important;color:var(--text)}
.qa-q.ok{--qa-c:#16a34a}.qa-q.blank{--qa-c:#94a3b8}
.qa-q-h{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:start;margin-bottom:10px}
.qa-n{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-weight:800;font-size:.8rem;background:var(--soft,#f1f5f9);color:var(--muted)}
.qa-q-h p{margin:2px 0 0;font-weight:700;line-height:1.4;color:var(--text);white-space:pre-wrap}
.qa-st{font-size:.72rem;font-weight:800;padding:4px 9px;border-radius:999px;white-space:nowrap;color:var(--qa-c);background:color-mix(in srgb,var(--qa-c) 13%,transparent)}
.qa-q ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.qa-q li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;border:1px solid transparent;color:var(--text);font-size:.92rem;line-height:1.35}
.qa-l{flex:0 0 24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:.74rem;font-weight:800;background:var(--soft,#f1f5f9);color:var(--muted)}
.qa-t{flex:1;min-width:0}
.qa-q li.right{background:color-mix(in srgb,#16a34a 10%,var(--card,#fff));border-color:color-mix(in srgb,#16a34a 35%,transparent)}
.qa-q li.right .qa-l{background:#16a34a;color:#fff}
.qa-q li.picked:not(.right){background:color-mix(in srgb,#dc2626 9%,var(--card,#fff));border-color:color-mix(in srgb,#dc2626 35%,transparent)}
.qa-q li.picked:not(.right) .qa-l{background:#dc2626;color:#fff}
.qa-tag{flex:0 0 auto;font-size:.68rem;font-weight:800;letter-spacing:.02em;padding:3px 8px;border-radius:999px;white-space:nowrap}
.qa-tag.ok{background:#16a34a;color:#fff}.qa-tag.no{background:#dc2626;color:#fff}.qa-tag.key{background:color-mix(in srgb,#16a34a 16%,transparent);color:#15803d}
html[data-theme=dark] .qa-q li{color:#e2e8f0}
html[data-theme=dark] .qa-q li.right{background:rgba(22,163,74,.14);border-color:rgba(74,222,128,.35)}
html[data-theme=dark] .qa-q li.picked:not(.right){background:rgba(220,38,38,.14);border-color:rgba(248,113,113,.35)}
html[data-theme=dark] .qa-tag.key{color:#4ade80;background:rgba(74,222,128,.14)}
html[data-theme=dark] .qa-q.ok{--qa-c:#22c55e}html[data-theme=dark] .qa-q.no{--qa-c:#f87171}html[data-theme=dark] .qa-q.blank{--qa-c:#94a3b8}
html[data-theme=dark] .qa-q,html[data-theme=dark] .qz-final .qa-q{background:#14243a!important;border-color:#26384f!important}
html[data-theme=dark] .qa-n,html[data-theme=dark] .qa-l{background:#1d3149;color:#a9b8cb}
.only-wrong .qa-q.ok{display:none}
@media (max-width:560px){.qa-q-h{grid-template-columns:auto minmax(0,1fr)}.qa-st{grid-column:2;justify-self:start}.qa-q li{flex-wrap:wrap}.qa-tag{margin-left:34px}}
/* staff: how an attempt ended */
.qr-how{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.qh-b,.qh-ans,.qh-last{font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap;background:var(--soft);color:var(--muted)}
.qh-b.me{background:color-mix(in srgb,#16a34a 15%,transparent);color:#15803d}
.qh-b.auto{background:color-mix(in srgb,#f59e0b 18%,transparent);color:#b45309}
.qh-b.warn{background:color-mix(in srgb,#dc2626 15%,transparent);color:#b91c1c}
.qh-ans.part{color:#b45309}.qh-last.none{color:#b91c1c}
html[data-theme=dark] .qh-b.me{color:#4ade80}html[data-theme=dark] .qh-b.auto,html[data-theme=dark] .qh-ans.part{color:#fbbf24}html[data-theme=dark] .qh-b.warn,html[data-theme=dark] .qh-last.none{color:#f87171}
.qa-sum{display:grid;gap:10px;padding:14px;border-radius:14px;background:var(--soft);border:1px solid var(--border);margin-bottom:12px}
.qa-sum .qh-b{justify-self:start;font-size:.8rem;padding:5px 12px}
.qa-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.qa-facts div{display:grid;gap:2px}.qa-facts span{font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.qa-facts b{color:var(--text)}
.qa-why{margin:0;font-size:.88rem;color:var(--text);padding:8px 10px;border-radius:10px;background:color-mix(in srgb,#f59e0b 12%,transparent)}
.qa-filter{margin:0 0 10px}
.qa-modal .qa-list{max-height:none}
html[data-theme=dark] .qa-q,html[data-theme=dark] .qz-final .qa-q{border-left-color:var(--qa-c)!important}
.qz-final .qa-list+.btn,.qz-final>.btn{margin-top:18px}

/* v91 quizzes colour-coded by course (same colours as the calendar) */
.cc{position:relative;border-left:0!important;overflow:hidden}
.cc::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--cc);border-radius:0}
.cc::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,color-mix(in srgb,var(--cc) 9%,transparent),transparent 45%)}
.cc>*{position:relative;z-index:1}
.cc-pill{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:700;padding:3px 10px 3px 8px;border-radius:999px;background:color-mix(in srgb,var(--cc) 15%,transparent);color:color-mix(in srgb,var(--cc) 75%,var(--text));border:1px solid color-mix(in srgb,var(--cc) 35%,transparent);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.cc-pill i{flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--cc);box-shadow:0 0 0 2px color-mix(in srgb,var(--cc) 25%,transparent)}
html[data-theme=dark] .cc-pill{color:color-mix(in srgb,var(--cc) 55%,#fff);background:color-mix(in srgb,var(--cc) 20%,transparent)}
html[data-theme=dark] .cc::after{background:linear-gradient(90deg,color-mix(in srgb,var(--cc) 14%,transparent),transparent 50%)}
.asg-card.cc .asg-tags{gap:6px}
.assignment-card.cc .card-heading .cc-pill{margin-bottom:2px}
.cc{overflow:visible!important}
.cc::before{border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0;width:5px}
.cc::after{border-radius:inherit}
.cc>.action-more,.cc .action-menu{z-index:5}
/* don't change positioning inside the card (the Published badge is placed against the card) */
.cc>*{position:static;z-index:auto}
.cc>.asg-main,.cc>.card-heading{position:relative}
.cc::after{display:none}
.cc{background-image:linear-gradient(90deg,color-mix(in srgb,var(--cc) 9%,transparent),transparent 45%)!important}
html[data-theme=dark] .cc{background-image:linear-gradient(90deg,color-mix(in srgb,var(--cc) 14%,transparent),transparent 50%)!important}
/* v91 zip downloads */
.mat-zip{margin:0 0 10px;display:inline-flex}
.pack-zip{display:flex;width:100%;justify-content:center;gap:8px;margin:14px 0 4px;padding:14px;font-size:1rem}
.pack-zip-note{text-align:center;margin-top:0}

/* ===== v91 transcript (screen) ===== */
.tx2{position:relative;overflow:hidden;padding:0!important;border-radius:18px}
.tx-wm{position:absolute;left:50%;top:56%;width:min(520px,70%);transform:translate(-50%,-50%);opacity:.05;pointer-events:none;z-index:0}
html[data-theme=dark] .tx-wm{opacity:.07;filter:brightness(2.2) grayscale(1)}
.tx-hero{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:24px 28px 92px;background:linear-gradient(115deg,#06213d,#0b3a66 65%,#123f6b);color:#fff;border-bottom:4px solid #f28c28;overflow:hidden}
.tx-sky{position:absolute;left:0;right:0;bottom:0;width:100%;height:96px;color:#1d4d7c}
.tx-flame{fill:#f28c28;filter:drop-shadow(0 0 6px rgba(242,140,40,.8));transform-origin:322px 26px;animation:txFl 1.6s ease-in-out infinite alternate}
@keyframes txFl{from{transform:scaleY(.9)}to{transform:scaleY(1.12) skewX(-3deg)}}
.tx-logo{position:relative;height:52px;width:auto;z-index:1}
.tx-title{position:relative;z-index:1;text-align:right;display:grid;gap:4px;justify-items:end}
.tx-title h2{margin:0;font-size:1.55rem;letter-spacing:.04em;text-transform:uppercase;color:#fff}
.tx-title>span{color:#f9b46b;font-size:.85rem;letter-spacing:.04em}
.tx-ref{margin-top:6px;padding:7px 12px;border-radius:10px;background:rgba(255,255,255,.1);display:grid;text-align:left}
.tx-ref small{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:#b9cbe0}.tx-ref b{font-size:.85rem;color:#fff}
.tx-body{position:relative;z-index:1;padding:22px 28px 6px;display:grid;gap:18px}
.tx-info{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 22px;padding:16px 18px 16px 22px;border:1px solid var(--border);border-radius:14px;background:color-mix(in srgb,var(--card) 92%,transparent);position:relative}
.tx-info::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:4px;border-radius:2px;background:#f28c28}
.tx-info div{display:grid;gap:3px;min-width:0}.tx-info small{font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.tx-info b{color:var(--text);overflow-wrap:anywhere}
.tx-sum{display:grid;grid-template-columns:repeat(3,auto) minmax(260px,1fr);gap:18px;align-items:center;padding:16px 18px;border-radius:14px;background:color-mix(in srgb,var(--soft) 90%,transparent)}
.tx-ring{position:relative;width:96px;display:grid;justify-items:center;gap:4px}
.tx-ring svg{width:84px;height:84px;transform:rotate(-90deg)}
.tr-bg{fill:none;stroke:color-mix(in srgb,var(--muted) 18%,transparent);stroke-width:7}.tr-fg{fill:none;stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset 1s ease}
.tx-ring b{position:absolute;top:30px;font-size:.98rem;color:var(--text)}
.tx-ring small{font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.tx-res{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:14px 16px;border-radius:12px;background:var(--card);border:1px solid var(--border)}
.tx-res>div{display:grid;gap:5px;align-content:start;justify-items:start}.tx-res small{font-size:.64rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.tx-res b{color:var(--text);font-size:1.05rem}
.tx-res em{font-style:normal;font-size:.78rem;color:var(--muted)}
.tx-cert{font-weight:800;font-size:.95rem}.tx-cert.yes{color:#16a34a}.tx-cert.no{color:var(--muted)}
html[data-theme=dark] .tx-cert.yes{color:#4ade80}
.tx-h{margin:4px 0 -6px;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--navy-2,#0b3a66)}
html[data-theme=dark] .tx-h{color:#9cc3ea}
.tx-h::after{content:"";display:block;width:28px;height:2px;margin-top:6px;background:#f28c28}
.tx-table{width:100%;border-collapse:separate;border-spacing:0}
.tx-table thead th{background:linear-gradient(90deg,#06213d,#0b3a66);color:#fff;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;padding:11px 12px;text-align:left;border:0}
.tx-table thead th:first-child{border-radius:10px 0 0 10px}.tx-table thead th:last-child{border-radius:0 10px 10px 0}
.tx-table td{padding:10px 12px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;background:transparent}
.tx-table tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--soft) 70%,transparent)}
.tx-table td:not(:first-child){width:19%}
.tx-v{display:block;font-size:.9rem}.tx-v.strong{font-weight:800}
.tx-bar{display:block;height:5px;border-radius:999px;background:color-mix(in srgb,var(--muted) 16%,transparent);margin-top:5px;overflow:hidden;max-width:130px}.tx-bar i{display:block;height:100%;border-radius:999px}
.tx-table tfoot td{font-weight:800;background:color-mix(in srgb,#f28c28 14%,transparent);border:0;padding:12px}
.tx-table tfoot td:first-child{border-radius:10px 0 0 10px;box-shadow:inset 4px 0 0 #f28c28;letter-spacing:.08em;text-transform:uppercase}.tx-table tfoot td:last-child{border-radius:0 10px 10px 0}
.tx-table tfoot td.ok{color:#16a34a}.tx-table tfoot td.low{color:#b45309}
html[data-theme=dark] .tx-table tfoot td.ok{color:#4ade80}
.tx-foot{position:relative;z-index:1;padding:8px 28px 20px;display:grid;gap:10px}
.tx-pipe{position:relative;display:block;height:7px;border-radius:4px;background:linear-gradient(180deg,#9fb3c8,#e8eef5 50%,#7c93ab);background-image:linear-gradient(180deg,#9fb3c8,#e8eef5 50%,#7c93ab),repeating-linear-gradient(90deg,transparent 0 88px,#6b8199 88px 92px)}
.tx-pipe::after{content:"";position:absolute;inset:-2px 0;background:repeating-linear-gradient(90deg,transparent 0 88px,#6b8199 88px 91px)}
.tx-pipe i{position:absolute;left:50%;top:-5px;width:14px;height:16px;margin-left:-7px;background:#f28c28;border-radius:2px;z-index:1}
.tx-pipe i::before{content:"";position:absolute;left:50%;top:-12px;width:10px;height:10px;margin-left:-6px;border:2px solid #f28c28;border-radius:50%}
.tx-foot div{display:grid;gap:2px}.tx-foot b{color:var(--text);font-size:.85rem}.tx-foot small{color:var(--muted);font-size:.75rem}
@media (max-width:900px){.tx-sum{grid-template-columns:repeat(3,1fr)}.tx-res{grid-column:1/-1}.tx-ring{justify-self:center}}
@media (max-width:640px){.tx-hero{flex-direction:column;align-items:flex-start;padding:18px 18px 84px}.tx-title{text-align:left;justify-items:start}.tx-title h2{font-size:1.2rem}.tx-logo{height:42px}
  .tx-body{padding:16px 16px 4px}.tx-info{grid-template-columns:1fr 1fr}.tx-ring{width:auto}.tx-ring svg{width:68px;height:68px}.tx-ring b{top:24px;font-size:.82rem}.tx-sum{gap:8px;padding:12px}
  .tx-table thead{display:none}.tx-table,.tx-table tbody,.tx-table tr,.tx-table td,.tx-table tfoot{display:block;width:100%!important}
  .tx-table tbody tr{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 10px;padding:10px 0;border-bottom:1px solid var(--border)}.tx-table tbody td{border:0;padding:0;background:none!important}
  .tx-table tbody td:first-child{grid-column:1/-1}.tx-table tbody td:nth-child(2)::before{content:"Attendance"}.tx-table tbody td:nth-child(3)::before{content:"Assignments"}.tx-table tbody td:nth-child(4)::before{content:"Assessment"}
  .tx-table tbody td:not(:first-child)::before{display:block;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
  .tx-table tfoot tr{display:grid;grid-template-columns:1fr repeat(3,auto);gap:10px;align-items:center;background:color-mix(in srgb,#f28c28 14%,transparent);border-radius:10px;padding:10px 12px;box-shadow:inset 4px 0 0 #f28c28}.tx-table tfoot td{background:none;padding:0;border-radius:0!important;box-shadow:none!important;width:auto!important}}
.tx-hero{flex-wrap:wrap;padding:24px 28px 0!important}
.tx-sky{position:relative!important;flex:1 1 100%;order:3;display:block;width:calc(100% + 56px)!important;margin:6px -28px 0;height:auto!important;max-height:120px}
.tx-flame{transform-origin:542px 26px}
.tx-ring b{top:31px;font-size:.88rem}
.tx-table thead th{background:#0a2f55!important}
.tx-table thead th:first-child{background:#06213d!important}
@media (max-width:640px){.tx-hero{padding:18px 18px 0!important}.tx-sky{width:calc(100% + 36px)!important;margin:4px -18px 0}.tx-ring b{top:23px;font-size:.78rem}}
.tx-sky{margin-top:-52px!important;max-height:104px}
.tx-table thead th:first-child{background:#0a2f55!important}
@media (max-width:640px){.tx-sky{margin-top:2px!important}}

/* ===== v91 assignment editor ===== */
.ae-modal{max-width:1080px!important;width:min(1080px,calc(100vw - 32px))!important;padding-bottom:0!important}
.ae-head h2{margin:2px 0 0;font-size:1.25rem}
.ae{display:grid;gap:0}
.ae-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px;align-items:start}
.ae-main,.ae-side{display:grid;gap:14px;min-width:0}
.ae-side{position:sticky;top:0}
.ae-sec{border:1px solid var(--border);border-radius:14px;background:var(--card);overflow:hidden}
.ae-sec-h{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--soft) 70%,transparent)}
.ae-sec-h h3{margin:0;font-size:.95rem}.ae-sec-h small{color:var(--muted);font-size:.76rem}
.ae-n{flex:0 0 24px;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-size:.75rem;font-weight:800;color:#fff;background:linear-gradient(160deg,#f9a03f,#e8730c)}
.ae-sec-b{padding:14px 16px;display:grid;gap:12px}
.ae-sec-b .field{margin:0}
.ae-row3{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1.2fr) 100px;gap:12px}
.ae-course{position:relative}.ae-course i{position:absolute;left:12px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;background:var(--cc);box-shadow:0 0 0 3px color-mix(in srgb,var(--cc) 25%,transparent);pointer-events:none;z-index:1}
.ae-course select{padding-left:32px!important;border-left:4px solid var(--cc)!important}
.ae-rich-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.ae-rich-h label{margin:0}
.ae-tabs{display:inline-flex;padding:3px;border-radius:999px;background:var(--soft);border:1px solid var(--border)}
.ae-tabs button{border:0;background:none;padding:4px 12px;border-radius:999px;font:inherit;font-size:.76rem;font-weight:700;color:var(--muted);cursor:pointer}
.ae-tabs button.on{background:var(--card);color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.ae textarea{min-height:96px;resize:vertical;line-height:1.5}
.ae-prev{min-height:96px;padding:12px 14px;border:1px dashed var(--border);border-radius:12px;background:color-mix(in srgb,var(--soft) 60%,transparent)}
.ae-files,.ae-new{display:grid;gap:6px}
.ae-file{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--card);cursor:pointer;min-width:0}
.ae-file input{position:absolute;opacity:0;pointer-events:none}
.ae-file-ic{flex:0 0 34px;height:34px;border-radius:8px;display:grid;place-items:center;font-size:.62rem;font-weight:800;color:#fff;background:linear-gradient(160deg,#0b3a66,#06213d)}
.ae-file-n{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700;font-size:.86rem;color:var(--text)}
.ae-file small{color:var(--muted);font-size:.74rem;white-space:nowrap}
.ae-file-x{font-size:.74rem;font-weight:700;color:var(--muted);padding:3px 9px;border-radius:999px;border:1px solid var(--border)}
.ae-file:has(input:checked){opacity:.6;border-style:dashed}.ae-file:has(input:checked) .ae-file-n{text-decoration:line-through}
.ae-file:has(input:checked) .ae-file-x{background:#dc2626;color:#fff;border-color:#dc2626}
.ae-file.new .ae-file-ic{background:linear-gradient(160deg,#f9a03f,#e8730c)}.ae-file.bad{border-color:#dc2626}.ae-file.bad small{color:#dc2626}
.ae-drop{position:relative;display:grid;justify-items:center;gap:4px;padding:18px;border:2px dashed var(--border);border-radius:14px;text-align:center;cursor:pointer;transition:.15s;background:color-mix(in srgb,var(--soft) 50%,transparent)}
.ae-drop:hover,.ae-drop.over{border-color:#f28c28;background:color-mix(in srgb,#f28c28 8%,transparent)}
.ae-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.ae-drop-ic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,#f28c28 18%,transparent);color:#e8730c;font-weight:800}
.ae-drop b{color:var(--text);font-size:.9rem}.ae-drop small{color:var(--muted);font-size:.76rem}
.ae-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.ae-chips .chip{padding:4px 10px;font-size:.74rem}
.ae-switch{margin:0!important}
.ae-bar{position:sticky;bottom:0;z-index:3;display:flex;justify-content:flex-end;gap:10px;margin:16px -24px 0;padding:12px 24px;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(6px);border-top:1px solid var(--border)}
.ae-bar .btn{min-width:130px;justify-content:center;margin:0}
@media (max-width:900px){.ae-grid{grid-template-columns:1fr}.ae-side{position:static}}
@media (max-width:560px){.ae-row3{grid-template-columns:1fr 1fr}.ae-row3>.field:first-child{grid-column:1/-1}.ae-bar{margin:12px -16px 0;padding:10px 16px}.ae-bar .btn{flex:1;min-width:0}}
.rs-kpi-hide{display:none!important}
.rs-kpis{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))!important}
.rr-wait{display:block;margin-top:3px;font-size:.7rem;font-weight:700;color:#b45309}html[data-theme=dark] .rr-wait{color:#fbbf24}
.rr-none{font-size:.78rem;color:var(--muted)}

/* v91 participant assignment card */
.pa{display:flex;flex-direction:column;gap:12px}
.pa h3{margin:0;font-size:1.08rem}
.pa-top{display:flex;flex-wrap:wrap;gap:6px}
.pa-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);position:relative}
.pa-steps::before{content:"";position:absolute;left:16%;right:16%;top:12px;height:2px;background:var(--border)}
.pa-steps li{position:relative;display:grid;justify-items:center;gap:4px;font-size:.72rem;font-weight:700;color:var(--muted)}
.pa-steps i{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:.72rem;background:var(--card);border:2px solid var(--border);z-index:1}
.pa-steps li.on i{background:var(--cc);border-color:var(--cc);color:#fff}.pa-steps li.on{color:var(--text)}
.pa-steps li.cur i{box-shadow:0 0 0 4px color-mix(in srgb,var(--cc) 25%,transparent)}
.pa-facts{display:grid;grid-template-columns:1fr auto;gap:12px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--soft) 80%,transparent)}
.pa-facts div{display:grid;gap:2px;align-content:start}.pa-facts small{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.pa-facts b{color:var(--text);font-size:.9rem}.pa-facts b.bad{color:#dc2626}
.pa-facts .due-chip{justify-self:start;margin-top:2px}
.pa-desc{font-size:.9rem}
.pa-files{display:grid;gap:6px}.pa-files>small{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.pa-file{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--border);border-radius:10px;text-decoration:none;color:var(--text);font-weight:700;font-size:.85rem;min-width:0}
.pa-file span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pa-file svg{width:16px;height:16px;color:var(--muted)}
.pa-file:hover{border-color:var(--cc)}
.pa-grade{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;padding:12px 14px;border-radius:12px;border:1px solid var(--border);--g:#16a34a}
.pa-grade.mid{--g:#f59e0b}.pa-grade.low{--g:#dc2626}
.pa-grade-n{display:flex;align-items:baseline;gap:3px}.pa-grade-n b{font-size:1.8rem;color:var(--g)}.pa-grade-n span{color:var(--muted)}
.pa-bar{height:7px;border-radius:999px;background:color-mix(in srgb,var(--muted) 16%,transparent);overflow:hidden}.pa-bar i{display:block;height:100%;background:var(--g);border-radius:999px}
.pa-grade-b p{margin:6px 0 0;font-size:.85rem;color:var(--text);font-style:italic}
.pa-wait{padding:10px 12px;border-radius:12px;background:color-mix(in srgb,#16a34a 10%,transparent);color:var(--text);font-size:.86rem}.pa-wait small{display:block;color:var(--muted);margin-top:2px}
.pa-note{margin:0;font-size:.84rem;color:var(--text)}.pa-note.ok{color:#15803d}
.pa-act{margin-top:auto;display:grid;gap:8px;justify-items:start}
/* v91 edit chat messages */
.cx-edit{opacity:.55}.cx-row:hover .cx-edit{opacity:1}
.cx-edited{font-style:italic;font-size:.68rem;opacity:.75;margin-right:4px}
.cx-bub.editing{min-width:min(420px,78vw)}
.cx-editbox{display:grid;gap:6px;margin:2px 0 4px}
.cx-editbox textarea{width:100%;min-height:44px;resize:none;border-radius:10px;border:1px solid var(--border);padding:8px 10px;font:inherit;font-size:.92rem;background:var(--card);color:var(--text)}
.cx-editbox>div{display:flex;justify-content:flex-end;align-items:center;gap:10px}
.cx-editbox .btn{margin:0}
.cx-row.me .cx-editbox textarea{background:rgba(255,255,255,.92);color:#0f2742;border-color:transparent}
/* v91 Chats: no visible scrollbars (lists, messages, chips, message box); scrolling by wheel, touch and keys still works */
.cx :is(.cx-list,.cx-msgs,.cx-chips,.cx-files,.cx-compose textarea,.cx-editbox textarea,.cx-qreps,.cx-side,.cx-main),.cx textarea{scrollbar-width:none!important;-ms-overflow-style:none}
.cx :is(.cx-list,.cx-msgs,.cx-chips,.cx-files,.cx-compose textarea,.cx-editbox textarea,.cx-qreps,.cx-side,.cx-main)::-webkit-scrollbar,.cx textarea::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}
.tx-table td:not(:first-child){width:15%}.tx-na{color:var(--muted)}
.tx-sum{grid-template-columns:repeat(4,auto) minmax(240px,1fr)}
@media (max-width:1100px){.tx-sum{grid-template-columns:repeat(4,1fr)}.tx-res{grid-column:1/-1}}
@media (max-width:640px){.tx-table tbody tr{grid-template-columns:repeat(4,1fr)}.tx-table tbody td:nth-child(3)::before{content:"Assignments"}.tx-table tbody td:nth-child(4)::before{content:"Quizzes"}.tx-table tbody td:nth-child(5)::before{content:"Assessment";display:block;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.tx-table tfoot tr{grid-template-columns:1fr repeat(4,auto)}.tx-sum{grid-template-columns:repeat(2,1fr)}}
