/* Course library — hero, stats, pill tabs and course cards. Loaded after styles.css. */
.ul-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:18px;padding:18px 22px;border-radius:20px;background:linear-gradient(120deg,#f7f9fd,#eef3fb 60%,#f6f1ff);border:1px solid #e6ebf3}
.ul-hero-text{display:flex;align-items:center;gap:14px;min-width:0}
.ul-hero-icon{width:52px;height:52px;border-radius:14px;background:#fff;border:1px solid #dfe6f2;display:grid;place-items:center;color:#1d6ff2;box-shadow:0 4px 12px rgba(29,111,242,.12);flex:none}
.ul-hero-icon .icon{width:26px;height:26px}
.ul-hero-text h2{margin:0;font-size:24px;font-weight:800;color:#141a2b;letter-spacing:-.3px}
.ul-hero-text p{margin:2px 0 0;font-size:13px;color:#6b7280}
.ul-stats{display:flex;gap:10px;flex-wrap:wrap}
.ul-stat{display:flex;align-items:center;gap:10px;min-width:118px;padding:10px 14px;border-radius:14px;color:#fff;box-shadow:0 6px 16px rgba(20,26,43,.12)}
.ul-stat.blue{background:linear-gradient(135deg,#1d6ff2,#2e8bff)}.ul-stat.teal{background:linear-gradient(135deg,#0f9b8e,#19b7a7)}.ul-stat.violet{background:linear-gradient(135deg,#6d3df5,#8b5cf6)}.ul-stat.orange{background:linear-gradient(135deg,#f0812a,#f59e4a)}
.ul-stat-icon{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.2);display:grid;place-items:center;flex:none}.ul-stat-icon .icon{width:18px;height:18px}
.ul-stat b{display:block;font-size:20px;line-height:1.05;font-weight:800}.ul-stat small{display:block;font-size:10px;opacity:.9;margin-top:2px;white-space:nowrap}
.ul-hero-actions{display:flex;gap:8px}
.ul-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px;padding:0;border:0;background:none}
.ul-tabs{display:flex;gap:8px;flex-wrap:wrap}
.ul-tab{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:999px;border:1px solid #e6ebf3;background:#fff;color:#374151;font-weight:700;font-size:13px;cursor:pointer}
.ul-tab .ul-count{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 6px;border-radius:999px;background:#eef2f8;color:#4b5563;font-size:11px;font-weight:700}
.ul-tab.active{background:#1d6ff2;border-color:#1d6ff2;color:#fff}.ul-tab.active .ul-count{background:rgba(255,255,255,.22);color:#fff}
.ul-tab.active.tab-published{background:#e9f8ef;border-color:#bfe8cd;color:#15803d}.ul-tab.active.tab-published .ul-count{background:#c9ecd6;color:#15803d}
.ul-tab.active.tab-draft{background:#fff4e0;border-color:#fcd9a2;color:#b45309}.ul-tab.active.tab-draft .ul-count{background:#fde2b8;color:#b45309}
.ul-tab.active.tab-archived{background:#f2e9ff;border-color:#dccbfb;color:#6d28d9}.ul-tab.active.tab-archived .ul-count{background:#e6d9fd;color:#6d28d9}
.ul-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ul-controls select{height:36px;border-radius:10px;border:1px solid #e6ebf3;background:#fff;padding:0 30px 0 12px;font-size:13px;font-weight:600;color:#374151}
.ul-view-toggles{display:inline-flex;border:1px solid #e6ebf3;border-radius:10px;overflow:hidden;background:#fff}
.ul-view-toggle{width:36px;height:36px;border:0;background:none;display:grid;place-items:center;color:#6b7280;cursor:pointer}.ul-view-toggle.active{background:#1d6ff2;color:#fff}.ul-view-toggle .icon{width:16px;height:16px}
.ul-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}
.ul-card{display:flex;flex-direction:column;border-radius:16px;border:1px solid #e6ebf3;background:#fff;box-shadow:0 4px 14px rgba(17,24,39,.05);overflow:hidden;min-width:0}
.ul-card-cover{position:relative;aspect-ratio:16/9;height:auto;background:#0f172a center/cover no-repeat;border:0}
.ul-card-cover.ul-cover-has-image{background-size:cover;background-color:#0f172a}
.ul-card-cover-fallback{position:absolute;inset:0;display:grid;place-items:center;padding:16px;text-align:center;color:#fff;font-weight:800;font-size:15px;letter-spacing:.2px;background:linear-gradient(135deg,#1e3a8a,#1d6ff2 55%,#7c3aed)}
.ul-cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ul-status-badge{position:absolute;top:10px;left:10px;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px 0 6px;border-radius:999px;font-size:11px;font-weight:700;text-transform:capitalize;letter-spacing:0;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.ul-status-badge.published{background:#16a34a;color:#fff}.ul-status-badge.draft{background:#f59e0b;color:#fff}.ul-status-badge.archived{background:#334155;color:#fff}
.ul-status-badge .icon{width:14px;height:14px;padding:2px;border-radius:50%;background:#fff;color:#16a34a;stroke:#16a34a}
.ul-cover-more{position:absolute;top:10px;right:10px;width:26px;height:26px;border-radius:8px;border:0;background:rgba(15,23,42,.55);color:#fff;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(4px)}.ul-cover-more .icon{width:14px;height:14px}.ul-cover-more:hover{background:rgba(15,23,42,.8)}
.ul-lesson-count{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column;align-items:center;padding:4px 10px;border-radius:10px;background:rgba(15,23,42,.72);color:#fff;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;line-height:1;backdrop-filter:blur(4px)}
.ul-lesson-count b{font-size:16px;font-weight:800;margin-bottom:2px;letter-spacing:0}
.ul-cover-btn{position:absolute;left:10px;bottom:10px;top:auto;right:auto;opacity:0;transition:opacity .15s;height:26px;padding:0 10px;border-radius:8px;border:0;background:rgba(15,23,42,.65);color:#fff;font-size:11px;font-weight:600;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.ul-cover-btn .icon{width:13px;height:13px}
.ul-card:hover .ul-cover-btn,.ul-cover-btn:focus-visible{opacity:1}
.ul-card-content{display:flex;flex-direction:column;flex:1;padding:12px 12px 12px;gap:8px;min-width:0;overflow:hidden}
.ul-card-title{margin:0;font-size:15px;font-weight:800;color:#141a2b;line-height:1.3;text-transform:none;letter-spacing:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ul-card-stats{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0;font-size:12px;color:#6b7280}
.ul-card-stats span{display:inline-flex;align-items:center;gap:5px}.ul-card-stats .icon{width:13px;height:13px;color:#1d6ff2}
.ul-card-tags{display:flex;gap:6px;flex-wrap:wrap;min-height:22px}
.ul-tag{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:7px;background:#e8f0fe;color:#1d4ed8;font-size:11px;font-weight:600;white-space:nowrap}
.ul-tag-teachers{background:#fdf1dc;color:#9a5b00}.ul-tag-price{background:#e7f8ee;color:#15803d}
.ul-card-icons{display:flex;gap:6px;flex-wrap:wrap}
.ul-card-icons .ul-card-icon-btn{height:30px;min-width:34px;padding:0 8px;border-radius:9px;border:1px solid #e6ebf3;background:#fff;color:#374151;display:inline-flex;align-items:center;justify-content:center;gap:5px;font-size:12px;font-weight:700;cursor:pointer;box-shadow:none}
.ul-card-icons .ul-card-icon-btn:hover{background:#f3f6fb;border-color:#d6deea}.ul-card-icons .ul-card-icon-btn .icon{width:14px;height:14px}
.ul-card-footer{display:block;margin-top:auto;padding:4px 0 0;border:0}
.ul-card-footer .ul-btn-navy{width:100%;height:36px;margin:0;border-radius:10px;border:0;background:#1d6ff2;color:#fff;font-size:13px;font-weight:700;box-shadow:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}
.ul-card-footer .ul-btn-navy:hover{background:#155fd8}.ul-card-footer .ul-btn-navy .icon{width:14px;height:14px}
.ul-archived-record{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;height:36px;border-radius:10px;background:#f1f5f9;color:#475569;font-size:13px;font-weight:600}.ul-archived-record .icon{width:14px;height:14px}
.ul-progress-text{display:flex;justify-content:space-between;font-size:11px;color:#6b7280;margin:0}
.ul-progress-bar{height:6px;border-radius:999px;background:#e9edf4;overflow:hidden}.ul-progress-fill{height:100%;background:#1d6ff2;border-radius:999px}
.ul-list .ul-card{flex-direction:row;align-items:stretch}.ul-list .ul-card-cover{width:220px;flex:none;aspect-ratio:auto;min-height:124px}.ul-list .ul-card-content{flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px 16px}.ul-list .ul-card-title{flex:1 1 220px}.ul-list .ul-card-footer{margin:0;width:160px}
@media(max-width:900px){.ul-hero{padding:14px}.ul-stats{width:100%}.ul-stat{flex:1;min-width:0}}
@media(max-width:520px){.ul-grid{grid-template-columns:1fr}.ul-list .ul-card{flex-direction:column}.ul-list .ul-card-cover{width:100%;aspect-ratio:16/9}}
.ul-tabs~.ul-controls #ulStatusFilter{display:none}
/* Locked course: lock badge in the card toolbar. */
.ul-card-icons .ul-locked-btn,.ul-card-footer .ul-locked-btn{background:#fff6e0;border-color:#e4c98a;color:#7a5a16}

/* ---- Quizzes & exams ---------------------------------------------------- */
.cb-rules{list-style:none;margin:10px 0;padding:0;display:grid;gap:6px}
.cb-rules li{display:flex;gap:8px;align-items:center;font-size:14px}
.cb-rules .icon{width:16px;height:16px;flex:none;opacity:.7}
.cb-exam-start{border:1px solid var(--line,#2a2d33);border-radius:14px;padding:18px 20px;margin:12px 0;background:var(--panel,rgba(255,255,255,.03))}
.cb-exam-start h3{margin:0 0 8px;display:flex;gap:8px;align-items:center}
.cb-exam-bar{position:sticky;top:0;z-index:5;display:flex;gap:12px;align-items:baseline;padding:14px 26px;border-radius:18px;background:linear-gradient(135deg,#1f2a44,#0f766e);border:1px solid rgba(255,255,255,.14);color:#fff;width:max-content;margin:10px 0 18px;font-variant-numeric:tabular-nums;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.cb-exam-bar svg{width:26px;height:26px;align-self:center;opacity:.9}
.cb-exam-bar strong{font-size:44px;line-height:1;font-weight:800;letter-spacing:.04em;color:#fff}
.cb-exam-bar .small{font-size:15px;color:rgba(255,255,255,.75);text-transform:uppercase;letter-spacing:.12em}
.cb-exam-bar.is-late{background:linear-gradient(135deg,#7f1d1d,#dc2626);animation:examPulse 1s ease-in-out infinite}
@keyframes examPulse{50%{box-shadow:0 0 0 8px rgba(220,38,38,.25)}}
.cb-page.is-exam .cb-nav,.cb-page.is-exam .cb-head-actions .btn:not([data-action="cb-open-lesson"]){display:none}
.cb-question textarea{width:100%;min-height:90px;resize:vertical;font:inherit;padding:10px;border-radius:10px;border:1px solid var(--line,#2a2d33);background:transparent;color:inherit}
.cb-question.pending{border-color:#c9a227}
.cb-answer{margin:6px 0 10px;padding:10px 14px;border-left:3px solid var(--line,#2a2d33);white-space:pre-wrap;background:rgba(255,255,255,.03);border-radius:0 10px 10px 0}
.chip-choice{display:inline-flex;gap:6px;align-items:center;padding:4px 10px;border:1px solid var(--line,#2a2d33);border-radius:999px;font-size:13px;cursor:pointer}
.cb-q-type{display:flex;gap:14px;font-size:13px;margin:4px 0 8px}
.cb-q-type label{display:inline-flex;gap:6px;align-items:center;cursor:pointer}
.cb-q-edit.is-text .cb-q-options,.cb-q-edit.is-text .cb-only-choice{display:none}
.cb-exam-settings{margin:10px 0}
.cb-exam-settings summary{list-style:none;display:inline-flex;width:auto}
.cb-exam-settings summary::-webkit-details-marker{display:none}
.cb-exam-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:10px 0}
.cb-exam-grid .field{margin:0}
.cb-check{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line,#2a2d33);cursor:pointer}
.cb-check input{margin-top:4px}
.cb-check small{display:block;opacity:.7}
.cb-attempts .chip{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--line,#2a2d33);font-size:12px}
.cb-attempts .chip.green{border-color:#2e9e5b;color:#5fd38a}
.cb-attempts .chip.warn{border-color:#d9534f;color:#ff7b76}
.cb-attempts tr.needs-review td:first-child{box-shadow:inset 3px 0 #c9a227}
.cb-link{font:inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--line,#2a2d33);background:transparent;color:inherit}
.cb-snaps{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0}
.cb-snap{display:block;border:1px solid var(--line,#2a2d33);border-radius:10px;overflow:hidden;text-decoration:none;color:inherit}
.cb-snap img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#000}
.cb-snap small{display:block;padding:4px 8px;font-size:11px;opacity:.75}
.cb-snap.screen img{aspect-ratio:16/9}
.cb-events{max-height:160px;overflow:auto;margin:4px 0 10px;padding-left:18px}
/* Capture-only: the camera feed is never shown to the student, the photos go to the teacher. */
.exam-cam{position:fixed;left:-9999px;top:0;width:160px;height:120px;opacity:0;pointer-events:none;overflow:hidden}
.exam-cam video{display:block;width:100%;height:100%;object-fit:cover}
#myQuizzes .panel-title{margin:0 0 10px;font-size:16px}

/* Quiz centre, recipients picker */
.qc-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.qc-course .panel-title .chip{margin-left:8px;vertical-align:middle}
.cb-recipients{max-height:220px;overflow:auto;border:1px solid var(--line,#e5e7eb);border-radius:10px;padding:4px 8px;margin:6px 0 10px}
.cb-recipient{display:flex;align-items:center;gap:10px;padding:6px 2px;border-bottom:1px solid var(--line,#eef0f3)}
.cb-recipient:last-child{border-bottom:0}
.cb-recipient span{display:flex;flex-direction:column;line-height:1.25}
.cb-recipient small{color:var(--muted,#6b7280)}
#quizResultsFeed{margin-top:16px}

/* Guest quiz sessions: the portal is reduced to the quiz */
body.quiz-guest .sidebar .nav-section, body.quiz-guest .sidebar nav, body.quiz-guest .top-actions, body.quiz-guest .mobile-menu { display: none !important; }
.guest-quiz-panel h1 { margin: 0 0 8px; }
.guest-quiz-panel .actions { margin-top: 18px; }
.guest-rules { text-align: left; margin: 8px 0 16px 18px; padding: 0; font-size: 14px; line-height: 1.7; }

.exam-cam small::before{content:'';width:8px;height:8px;border-radius:50%;background:#ef4444;box-shadow:0 0 6px #ef4444}

/* Send quiz dialog */
#modal.sq-modal{padding:0;overflow:hidden;border-radius:22px;max-width:960px}
#modal.sq-modal .dialog-header{position:absolute;right:14px;top:14px;z-index:2;background:none;border:0;padding:0}
#modal.sq-modal .dialog-header h2{display:none}
#modal.sq-modal .dialog-header .btn{background:#0b2a6b;color:#fff;border-radius:50%}
#modal.sq-modal .dialog-body{padding:0}
.sq{background:#f4f8ff;color:#0f172a}
.sq-head{position:relative;display:flex;align-items:center;gap:18px;padding:26px 30px;background:linear-gradient(100deg,#1d4ed8,#2f7cf6 60%,#3b8dff);color:#fff;overflow:hidden}
.sq-head h2{margin:0;font-size:40px;line-height:1;font-weight:800;letter-spacing:-.5px}
.sq-head h2 em{font-style:normal;color:#fbbf24}
.sq-head p{margin:6px 0 0;font-size:18px;opacity:.95}
.sq-badge{width:72px;height:72px;border-radius:50%;background:#fff;color:#2563eb;display:grid;place-items:center;box-shadow:0 8px 24px rgba(0,0,0,.18);flex:none}
.sq-badge .icon{width:34px;height:34px}
.sq-art{position:absolute;right:120px;top:-10px;width:150px;height:130px;pointer-events:none}
.sq-art i{position:absolute;width:88px;height:112px;background:#fff;border-radius:10px;box-shadow:0 10px 24px rgba(0,0,0,.2);opacity:.95}
.sq-art i:nth-child(1){left:0;top:28px;transform:rotate(-14deg)}
.sq-art i:nth-child(2){left:34px;top:16px;transform:rotate(-4deg)}
.sq-art i:nth-child(3){left:66px;top:6px;transform:rotate(8deg);background:linear-gradient(#fff 0 18%,#2563eb 18% 32%,#fff 32%)}
.sq-body{padding:18px 26px 6px;display:flex;flex-direction:column;gap:14px}
.sq-row{display:flex;gap:16px;align-items:flex-start;background:#fff;border:1px solid #dbe4f3;border-radius:14px;padding:14px 16px}
.sq-row .field{margin:0}
.sq-row .field textarea{background:#fff;border:1px solid #cdd8ea;border-radius:10px}
.sq-row strong{font-size:17px}
.sq-ico{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;flex:none}
.sq-ico .icon{width:24px;height:24px}
.sq-ico.blue{background:#dbeafe;color:#1d4ed8}.sq-ico.green{background:#dcfce7;color:#15803d}.sq-ico.orange{background:#ffedd5;color:#c2410c}.sq-ico.purple{background:#ede9fe;color:#6d28d9}
.sq-linkrow{gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px}
.sq-linkrow .cb-link{flex:1;min-width:220px;background:#f8fafc;border-color:#cdd8ea;color:#0f172a}
.sq-toggles{gap:6px}
.sq .cb-recipients{background:#fff;border-color:#cdd8ea}
.sq .cb-recipient{padding:10px 8px;border-radius:10px;border-bottom:0}
.sq .cb-recipient:has(input:checked){background:#ecfdf5;outline:1px solid #86efac}
.sq-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 26px 22px;background:#e9f0fc;margin-top:12px}
.sq-foot .btn.ghost{background:#fff;border:1px solid #cdd8ea;color:#0f172a}
.sq-toggles .btn{padding:4px 12px;border-radius:999px;background:#dbeafe;color:#1d4ed8;border:0;font-weight:600}
.sq-toggles .btn.ghost{background:#eef2f7;color:#334155}
.sq .cb-recipient input[type=checkbox]{width:20px;height:20px;accent-color:#2563eb}

.no-capture,.cb-page.is-exam{-webkit-user-select:none;user-select:none}
.cb-page.is-exam textarea,.cb-page.is-exam input{-webkit-user-select:text;user-select:text}
@media print{.no-capture,.cb-page.is-exam,.guest-quiz-panel{visibility:hidden}}

/* Result stats (student result screen, Exams & quizzes tab, admin audit) */
.cb-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0}
.cb-stat{background:var(--panel,#fff);border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.cb-stat small{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#6b7280);display:flex;align-items:center;gap:5px}
.cb-stat small svg{width:13px;height:13px}
.cb-stat strong{font-size:24px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.cb-stat.is-time{background:linear-gradient(135deg,rgba(224,172,24,.14),rgba(224,172,24,.03));border-color:rgba(224,172,24,.45)}
.cb-time{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}
.cb-time svg{width:14px;height:14px;opacity:.7}
.cb-row-actions{white-space:nowrap}.cb-row-actions .btn+.btn{margin-left:6px}
.cb-audit-sec{margin-top:14px}.cb-audit-sec h3{margin:0 0 6px;font-size:15px}
.cb-events li.is-alert{color:#b45309;font-weight:600}

#captureCurtain{position:fixed;inset:0;z-index:2147483000;background:#0b1020;color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;cursor:pointer}
#captureCurtain strong{font-size:22px;display:block;margin-bottom:6px}#captureCurtain p{margin:0;opacity:.8}
.cb-page .cb-quiz,.cb-page .cb-result,.cb-page .cb-stats{-webkit-user-select:none;user-select:none}
.cb-page .cb-quiz textarea,.cb-page .cb-quiz input{-webkit-user-select:text;user-select:text}
@media print{.cb-page .cb-quiz,.cb-page .cb-result,.cb-page .cb-stats{visibility:hidden}}

/* Exam entry gate + full-screen exam design */
.exam-gate{position:fixed;inset:0;z-index:2147482000;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 30%,#13213f,#0b1020 70%);color:#fff;animation:gateIn .45s ease both}
.exam-gate.is-leaving{animation:gateOut .6s ease forwards;pointer-events:none}
@keyframes gateIn{from{opacity:0}to{opacity:1}}
@keyframes gateOut{to{opacity:0;transform:scale(1.08);filter:blur(6px)}}
.exam-gate-card{text-align:center;max-width:460px;padding:36px 32px;border-radius:24px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(8px);animation:gateCard .6s cubic-bezier(.2,.8,.2,1) both}
@keyframes gateCard{from{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:none}}
.exam-gate h2{margin:14px 0 6px;font-size:26px;color:#fff}.exam-gate p{opacity:.8;margin:10px 0 18px;line-height:1.5}
.exam-gate-ring{width:84px;height:84px;margin:0 auto;border-radius:50%;border:3px solid rgba(224,172,24,.35);position:relative;display:grid;place-items:center}
.exam-gate-ring::before{content:"";position:absolute;inset:-3px;border-radius:50%;border:3px solid transparent;border-top-color:#e0ac18;animation:gateSpin 1.6s linear infinite}
.exam-gate-ring span{width:40px;height:40px;border-radius:50%;background:#e0ac18;box-shadow:0 0 0 0 rgba(224,172,24,.6);animation:gatePulse 1.6s ease-out infinite}
@keyframes gateSpin{to{transform:rotate(360deg)}}
@keyframes gatePulse{to{box-shadow:0 0 0 22px rgba(224,172,24,0)}}
.exam-gate-list{list-style:none;padding:0;margin:0 0 6px;display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
.exam-gate-list li{padding:6px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.2);font-size:13px;opacity:.75}
.exam-gate-list li.ok{border-color:#3fbf7f;color:#8ff0bd;opacity:1}.exam-gate-list li.ok::before{content:"✓ "}
.exam-gate-go{font-size:17px;padding:14px 28px;margin:4px 8px}.exam-gate-cancel{color:#fff;opacity:.6}
#viewer.exam-mode .player-sidebar,#viewer.exam-mode .cb-sidebar,#viewer.exam-mode .player-header [data-action="fullscreen-player"],#viewer.exam-mode .player-header [data-action="complete-course"],#viewer.exam-mode .player-header [data-action="close-viewer"],#viewer.exam-mode .player-bottom{display:none!important}
#viewer.exam-mode .player-body{animation:examIn .6s ease both}
@keyframes examIn{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
#viewer.exam-mode .cb-page{max-width:860px;margin:0 auto}
.player-shell:fullscreen{overflow:auto;background:var(--bg,#f6f7fb);width:100%;height:100%}

/* Student "Quizzes & Exams" card rows */
.qz-head{display:flex;gap:12px;align-items:center;margin-bottom:12px}.qz-head .panel-title{margin:0}
.qz-head-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#7c4dff,#a07bff);color:#fff}
.qz-cols,.qz-row{display:grid;grid-template-columns:28px minmax(220px,2fr) minmax(130px,1fr) 90px 120px 150px 150px;gap:12px;align-items:center}
.qz-cols{padding:6px 14px;font-size:11px;letter-spacing:.06em;color:#6b7280;font-weight:600}.qz-cols span{display:flex;align-items:center;gap:6px}.qz-cols svg{width:14px;height:14px}
.qz-list{display:grid;gap:10px}
.qz-row{padding:12px 14px;border-radius:16px;background:#fff;border:1px solid #e6e9f2;box-shadow:0 6px 18px rgba(20,30,60,.06);transition:transform .15s,box-shadow .15s}.qz-row:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(20,30,60,.1)}
.qz-num{width:26px;height:26px;border-radius:50%;background:#eef1f8;color:#334;font-weight:700;font-size:12px;display:grid;place-items:center}
.qz-name{display:flex;gap:10px;align-items:center;min-width:0}.qz-name>div{min-width:0;display:grid}.qz-name strong{font-size:15px}.qz-name .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qz-icon{width:40px;height:40px;border-radius:12px;background:#e8f0ff;color:#2f5bea;display:grid;place-items:center;flex:none}
.qz-score{display:grid;gap:2px}.qz-score strong{font-size:18px}.qz-score strong.ok{color:#15803d}.qz-score strong.low{color:#dc2626}
.qz-bar{display:block;height:6px;border-radius:999px;background:#e6e9f2;overflow:hidden;margin-top:4px}.qz-bar b{display:block;height:100%;border-radius:999px;background:#dc2626}.qz-bar b.ok{background:#16a34a}
.qz-cell{display:flex;align-items:center;gap:8px;color:#1f2937}.qz-cell>svg{width:18px;height:18px;color:#3b6cf0;flex:none}
.qz-status{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;font-size:11px;letter-spacing:.04em}.qz-status svg{width:14px;height:14px}
.qz-status.pass{background:#e6f7ec;color:#15803d}.qz-status.fail{background:#fde8e8;color:#c81e1e}.qz-status.wait{background:#fff5d6;color:#946200}.qz-status.new{background:#eef1f8;color:#4b5563}
.qz-action{display:flex;justify-content:flex-end}.qz-btn{border-radius:12px;padding:10px 16px;font-weight:700}.qz-btn.is-off{background:#eef1f8;color:#9aa3b2;cursor:not-allowed;opacity:1}
@media (max-width:900px){.qz-cols{display:none}.qz-row{grid-template-columns:1fr 1fr}.qz-num{display:none}.qz-name,.qz-action{grid-column:1/-1}.qz-action{justify-content:flex-start}}
.qz-action{gap:8px;flex-wrap:wrap}
.cb-quiz-review .cb-question{pointer-events:none}

/* ---- Student quiz hero + panel (student's design) ---- */
.qz-hero{position:relative;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:20px;padding:26px 28px;margin:0 0 18px;border-radius:22px;background:linear-gradient(100deg,#eef3ff 0%,#dfe8ff 55%,#e9e4ff 100%);overflow:hidden;min-height:140px}
.qz-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 120%,rgba(255,255,255,.7),transparent 45%),radial-gradient(circle at 80% -20%,rgba(255,255,255,.6),transparent 40%);pointer-events:none}
.qz-hero-text{position:relative;z-index:1}.qz-hero h1{margin:0 0 6px;font-size:30px;font-weight:800;letter-spacing:-.02em;color:#0f172a}.qz-hero h1 span{color:#2563eb}.qz-hero p{margin:0;color:#4b5563;font-size:14px}
.qz-hero-art{position:relative;z-index:1;width:230px;height:170px;margin:-14px 0;background:url(img/quiz-hero.png) center/contain no-repeat;filter:drop-shadow(0 12px 18px rgba(30,50,120,.25))}
.qz-hero-tip{position:relative;z-index:1;display:flex;align-items:center;gap:12px;max-width:230px;padding:14px 16px;border-radius:16px;background:#fff7dc;border:1px solid #f6e3a4;box-shadow:0 10px 24px rgba(120,90,0,.12);font-size:14px;line-height:1.25;color:#1f2937}
.qz-tip-icon{width:40px;height:40px;flex:none;border-radius:12px;background:linear-gradient(135deg,#ffd54a,#ff9f1a);color:#fff;display:grid;place-items:center}.qz-tip-icon svg{width:22px;height:22px}
.qz-panel,#myQuizzes.page-panel{background:linear-gradient(180deg,#f3f6ff,#eef2fb);border:1px solid #dfe6f7;border-radius:22px;padding:18px}
.qz-head .panel-title{font-size:18px;font-weight:800}
.qz-cols{padding:10px 16px;margin-bottom:10px;border-radius:12px;background:#e7edfb;color:#4b5a7a;font-size:11px;font-weight:700;letter-spacing:.08em}.qz-cols svg{color:#3b6cf0}
.qz-row{padding:14px 16px;border-radius:18px;border:1px solid #e3e8f4;box-shadow:0 10px 26px rgba(30,50,120,.08)}
.qz-icon{width:46px;height:46px;border-radius:14px;background:#e3edff;color:#2f5bea}.qz-icon svg{width:22px;height:22px}
.qz-name strong{font-size:16px;font-weight:800}
.qz-score strong{font-size:22px;font-weight:800}.qz-bar{height:7px}
.qz-cell strong{font-size:14px;font-weight:700;color:#1f2937}
.qz-status{padding:9px 14px;font-weight:800;font-size:11px}.qz-status.fail{background:#fde8e8;color:#c81e1e}.qz-status.pass{background:#e6f7ec;color:#15803d}
.qz-dot{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;color:#fff;flex:none}.qz-dot svg{width:12px;height:12px}.qz-status.fail .qz-dot{background:#e11d48}.qz-status.pass .qz-dot{background:#16a34a}
.qz-btn.primary{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border:0;padding:12px 18px;border-radius:14px;font-size:14px;box-shadow:0 10px 22px rgba(37,99,235,.35)}.qz-btn.primary:hover{filter:brightness(1.05)}
@media (max-width:900px){.qz-hero{grid-template-columns:1fr}.qz-hero-art{display:none}.qz-hero-tip{max-width:none}}
.qc-tabs{display:inline-flex;margin-bottom:14px}
/* Results dialog: as wide as the screen allows so the table never scrolls sideways */
#modal.cb-results-modal{width:calc(100vw - 48px);max-width:1500px}
#modal.cb-results-modal .table-wrap{overflow-x:auto}#modal.cb-results-modal table{width:100%}
#modal.cb-results-modal td,#modal.cb-results-modal th{white-space:nowrap}#modal.cb-results-modal td:first-child{white-space:normal;min-width:160px}

.qc-short{color:var(--gold,#b8902f);text-decoration:none;font-weight:600;word-break:break-all}
.qc-short:hover{text-decoration:underline}
/* Results: one folder per quiz/exam */
.qc-folder{padding:0;overflow:hidden}
.qc-folder+.qc-folder{margin-top:12px}
.qc-folder-head{list-style:none;display:flex;align-items:center;gap:14px;padding:16px 20px;cursor:pointer;user-select:none}
.qc-folder-head::-webkit-details-marker{display:none}
.qc-folder-head>.icon,.qc-folder-head>svg:first-child{width:22px;height:22px;color:#a97a1f;flex:none}
.qc-folder-title{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.qc-folder-title strong{font-size:15px;line-height:1.3}
.qc-folder-meta{white-space:nowrap}
.qc-folder-head .section-chevron{width:16px;height:16px;transition:transform .2s;flex:none}
.qc-folder[open]>.qc-folder-head .section-chevron{transform:rotate(180deg)}
.qc-folder[open]>.qc-folder-head{border-bottom:1px solid var(--line)}
.qc-folder-body{padding:6px 20px 18px}
.qc-folder-actions{display:flex;justify-content:flex-end;margin-top:12px}
@media(max-width:700px){.qc-folder-head{flex-wrap:wrap;padding:14px}.qc-folder-meta{white-space:normal;flex-basis:100%;padding-left:36px}.qc-folder-body{padding:6px 14px 14px}}
