/* Shared visual language. Presentation only; never overrides hidden/locked states. */
:root{--tqm-ink:#183e43;--tqm-muted:#657e7a;--tqm-brand:#1b625d;--tqm-deep:#103f46;--tqm-line:#e0e9e6;--tqm-sage:#eaf3ed;--tqm-canvas:#f5f7f8;--tqm-radius:24px}
body:not(.auth-page){background:var(--tqm-canvas);color:var(--tqm-ink);min-height:100vh;min-height:100dvh}
body:not(.auth-page) .app{width:min(1220px,100%);max-width:none;margin:auto;padding:0 30px 35px}
.workspace-masthead{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:27px 2px 26px}
.auth-page .workspace-masthead{display:none}
.workspace-brand{display:flex;align-items:center;gap:12px;color:#194e53;min-width:0}
.workspace-logo{width:42px;height:44px;flex:none}.workspace-logo svg{width:100%;height:100%}
.workspace-brand strong{font-size:27px;line-height:1.1;letter-spacing:.025em;font-weight:850;display:block}.workspace-brand strong span{color:#429e92}
.workspace-brand small{font-size:11px;display:block;color:var(--tqm-muted);margin-top:5px}
.workspace-environment{display:flex;align-items:center;gap:7px;white-space:nowrap;font-size:11px;border:1px solid var(--tqm-line);border-radius:30px;padding:8px 12px;color:var(--tqm-muted);background:white}
.workspace-environment i{width:6px;height:6px;border-radius:50%;background:#c79851}.workspace-environment b{font-size:10px;font-weight:650}
body:not(.auth-page) .hero{position:relative;overflow:hidden;border-radius:28px;background:var(--tqm-deep);padding:35px 40px;color:#f1faf7;margin:0 0 25px;min-height:195px}
body:not(.auth-page) .hero::before{content:'';position:absolute;right:-80px;top:-240px;width:420px;height:420px;border:65px solid #ffffff04;border-radius:50%;pointer-events:none}
body:not(.auth-page) .hero .eyebrow{font-size:10px;letter-spacing:.1em;color:#bbd9cf;font-weight:600;max-width:78%}
body:not(.auth-page) .hero h1{font-size:clamp(28px,3.2vw,39px);font-weight:750;line-height:1.3;letter-spacing:-1px;margin:13px 0 10px;max-width:80%}
body:not(.auth-page) .hero p{font-size:13px;color:#bfd7d3;line-height:1.9;max-width:78%;margin:0}
body:not(.auth-page) .hero .tag{font-size:9px;color:#cce3d5;border:1px solid #b4d6c738;letter-spacing:.08em;padding:5px 9px;display:inline-block;margin-bottom:2px}
.hero-motif{position:absolute;right:40px;top:28px;width:135px;height:135px;display:grid;place-items:center;border-radius:30px;background:#e4f1e408;border:1px solid #c8e4d21a;transform:rotate(8deg);color:#aacbb9;pointer-events:none}
.hero-motif .book-symbol{width:90px;height:75px;display:block;margin:0;color:inherit}
body:not(.auth-page) .panel{border:1px solid var(--tqm-line);border-radius:var(--tqm-radius);background:#fff;padding:30px 32px;margin:20px 0;box-shadow:0 8px 30px #183e4304;min-width:0}
body:not(.auth-page) h2{font-size:26px;font-weight:750;line-height:1.4;letter-spacing:-.6px;color:var(--tqm-ink);margin:0 0 10px}
body:not(.auth-page) h3{color:#245250;font-weight:700;letter-spacing:-.2px}
body:not(.auth-page) .panel p{line-height:1.8;font-size:13px}
.screen-eyebrow{display:block;color:#64867a;font-size:10px;font-weight:650;letter-spacing:.12em;margin-bottom:9px;line-height:1.7}
.section-intro{color:var(--tqm-muted);font-size:13px;line-height:1.8;max-width:720px}
body:not(.auth-page) .subtle{color:var(--tqm-muted)}
body:not(.auth-page) .small{font-size:12px}
body:not(.auth-page) .between{gap:15px}
body:not(.auth-page) .actions{justify-content:flex-start;align-items:center;gap:10px;margin:22px 0 8px}
body:not(.auth-page) button{min-height:46px;max-width:100%;border-radius:11px;background:var(--tqm-brand);color:#fff;padding:11px 18px;font-size:13px;font-weight:650;line-height:1.6;white-space:normal;transition:background .15s,border-color .15s,box-shadow .15s}
body:not(.auth-page) button:hover:not(:disabled){background:#164f4b;filter:none}
body:not(.auth-page) button:disabled{opacity:.45;cursor:not-allowed}
body:not(.auth-page) .muted-button{background:#edf4ef;color:#416f63;border:1px solid #e2ece5;box-shadow:none}
body:not(.auth-page) .muted-button:hover:not(:disabled){background:#e2eee6;border-color:#c4dace;color:#245e4f}
body:not(.auth-page) :is(button,a,input,select,textarea,summary):focus-visible{outline:3px solid #4d9882;outline-offset:3px}
body:not(.auth-page) label{color:#365954;font-size:13px;font-weight:650;line-height:1.7}
body:not(.auth-page) input:not([type=checkbox]):not([type=radio]),body:not(.auth-page) select,body:not(.auth-page) textarea{font:inherit;font-size:16px;color:#244d49;min-width:0;width:100%;min-height:50px;border:1px solid #d7e4de;border-radius:10px;background:#fcfdfc;padding:12px 14px;margin:7px 0 18px;box-shadow:none}
body:not(.auth-page) :is(input,select,textarea):focus{border-color:#5a9b85;box-shadow:0 0 0 3px #3a8e8310}
body:not(.auth-page) input::placeholder,body:not(.auth-page) textarea::placeholder{font-size:12px;color:#91a29a;opacity:1}
body:not(.auth-page) input:is([type=checkbox],[type=radio]){accent-color:#2e7b66;width:18px;height:18px;flex-shrink:0}
body:not(.auth-page) fieldset{border:1px solid var(--tqm-line);border-radius:14px;background:#fbfdfb;padding:19px;margin:22px 0}
body:not(.auth-page) legend{color:#476f61;font-weight:650;font-size:13px;padding:0 8px}
body:not(.auth-page) fieldset label:has(input[type=checkbox]){display:flex;align-items:flex-start;gap:10px;min-height:44px;padding:9px 0;margin:0;font-weight:400;font-size:13px}
body:not(.auth-page) fieldset input[type=checkbox]{margin:3px 0 0}
body:not(.auth-page) .note{background:#f1f7f3;color:#4a7465;border-inline-start:3px solid #79a88b;border-radius:0 10px 10px 0;font-size:12px;line-height:1.9;padding:15px 17px;margin:19px 0}
body:not(.auth-page) .notice{border-radius:12px;font-size:13px;line-height:1.8;margin:14px 0}
body:not(.auth-page) .error{background:#fff3f3;color:#9e3f49;border:1px solid #efd9dc}
body:not(.auth-page) .danger{color:#a03f4c}
body:not(.auth-page) .workspace-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;padding:16px 4px 0;color:#788e85;font-size:11px;line-height:1.8}
.workspace-footer a{display:inline-flex;align-items:center;min-height:44px;color:#397764;text-decoration:none}.workspace-footer a:hover{text-decoration:underline}
/* Courses, lectures and exam selection. */
body:not(.auth-page) #home{padding:31px 32px 25px}
#home #profile{color:#4d7a6c;margin:6px 0;font-size:13px}
.course-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}
.lecture-grid{gap:16px;margin:22px 0}
body:not(.auth-page) .course-card,body:not(.auth-page) .lecture-card{position:relative;background:#fff;color:var(--tqm-ink);border:1px solid #dfe9e3;border-radius:19px;text-align:left;align-items:flex-start;padding:22px;gap:12px;box-shadow:0 4px 15px #183e4303;min-width:0}
body:not(.auth-page) .course-card{min-height:222px;padding-right:34px}
body:not(.auth-page) .course-card::after{content:'↗';position:absolute;right:16px;top:19px;font-size:16px;color:#82a48b;pointer-events:none}
body:not(.auth-page) .course-card:hover,body:not(.auth-page) .lecture-card:hover{background:#fbfdfb;border-color:#94b6a1;box-shadow:0 8px 22px #183e4309}
.course-code{background:#eaf3eb;color:#39715b;border-radius:7px;font-size:10px;font-weight:750;padding:5px 9px;letter-spacing:.045em}
body:not(.auth-page) .course-title{font-size:18px;line-height:1.5;font-weight:700;letter-spacing:-.3px;flex:1}
body:not(.auth-page) .course-count{border-color:#edf2ed;color:#789185;font-weight:500;font-size:11px;padding-top:12px}
.course-card .small{font-size:11px;font-weight:400}
.course-breadcrumb{gap:8px;margin:20px 0 17px}
body:not(.auth-page) .course-breadcrumb button{background:#eef4ef;color:#4c7766;border:1px solid #e3ece5;font-size:12px;padding:8px 13px;min-height:44px}
.course-breadcrumb span{font-size:12px}.course-heading{font-size:20px!important;margin:18px 0 10px!important;scroll-margin-top:100px}
.unassigned-exams{border-color:var(--tqm-line);padding-top:23px;margin-top:28px}
body:not(.auth-page) .exam-tile{background:white;border:1px solid var(--tqm-line);border-radius:16px;padding:21px 23px;margin:15px 0;min-width:0}
.exam-tile h3,.exam-tile h4{font-size:18px;line-height:1.5;letter-spacing:-.25px;margin:0 0 8px}
.exam-tile p{margin:7px 0}.exam-tile a{color:#397764;font-size:12px;text-underline-offset:4px;display:inline-flex;align-items:center;min-height:44px}
#home .exam-tile{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 20px;align-items:center}
#home .exam-tile h4,#home .exam-tile p{grid-column:1;margin:0}
#home .exam-tile>button{grid-column:2;grid-row:1/span 2;font-size:12px}
/* Preflight, timed assessment, receipt and answer review. */
#preflight,#receipt{max-width:970px;margin-inline:auto!important}
body:not(.auth-page) #preflightTitle{font-size:23px;line-height:1.6;margin-top:24px}
#preflightDetails{background:#f5f8f4;border-radius:9px;padding:10px 14px;display:inline-block;color:#547460!important;font-size:12px!important}
body:has(#attempt:not([hidden])) .hero{display:none}
body:has(#attempt:not([hidden])) .workspace-masthead{padding-block:17px}
body:not(.auth-page) #attempt{max-width:1000px;margin-inline:auto;padding:22px 31px 27px}
.attempt-toolbar{top:0;padding:13px 0 16px;gap:14px;background:#fff;border-bottom:1px solid var(--tqm-line)}
body:not(.auth-page) .pill{background:#edf4ed;color:#476f5b;font-size:12px;font-weight:650;border-radius:9px;padding:11px 13px;line-height:1.6}
body:not(.auth-page) .countdown{background:var(--tqm-deep);color:#fff;font-size:25px;font-weight:650;letter-spacing:.025em;border-radius:11px;padding:9px 16px;line-height:1.3}
body:not(.auth-page) .countdown.urgent{background:#fff0ef;color:#a43e43;border:1px solid #edc9ca}
body:not(.auth-page) .progress{height:7px;background:#e8f0e9;border-radius:10px;margin:20px 0 14px}
.progress>div{background:#5a9a74;border-radius:10px}
#questionCounter{font-weight:700;color:#4c7661!important}.question-map{background:#fbfdfb;border:1px solid var(--tqm-line);padding:10px 15px;border-radius:11px}
.question-map summary{font-size:12px;color:#537562;min-height:44px;line-height:2.4}
body:not(.auth-page) .question-jump{min-width:44px;min-height:44px;background:#f0f4f1;color:#597965;border:1px solid #e0e9e2;border-radius:9px;padding:8px}
body:not(.auth-page) .question-jump.answered{background:#e3f1e6;color:#326b49}
.question-jump[aria-current]{border:2px solid #4c8d68!important;box-shadow:none}
body:not(.auth-page) .question{color:#203f39;font-size:22px;font-weight:650;line-height:1.65;letter-spacing:-.3px;margin:26px 0 22px;scroll-margin-top:115px}
#options{gap:12px}
body:not(.auth-page) #options .answer-option{border:1px solid #dce7de;background:#fff;border-radius:13px;min-height:76px;padding:17px 18px;gap:12px;color:#466050;line-height:1.8;font-size:14px;font-weight:400}
body:not(.auth-page) #options .answer-option:hover{background:#f7fbf6;border-color:#9dbda7}
body:not(.auth-page) #options .answer-option.selected{border:2px solid #6a9b79;background:#f0f7ed;color:#284f35;padding:16px 17px}
.answer-option input[type=radio]{margin-top:4px}
#saveStatus{padding:7px 10px;border-radius:7px;background:#f1f6f0}
#attempt .between:has(#saveStatus){margin-top:22px}
#attempt>.actions{padding-block:17px;border-block:1px solid #e6eee6;margin-top:17px;gap:8px}
#attempt>.actions #submitDialogOpen{margin-inline-start:auto}
#attempt>.note,#proctorStatus{font-size:11px!important;line-height:1.9!important}
#fullscreenLock{border:1px solid #d9949b;background:#fff3f3;color:#9b3a46}
body:not(.auth-page) .modal-shade{background:#163c3ad6;backdrop-filter:blur(4px)}
body:not(.auth-page) .modal{border:1px solid var(--tqm-line);border-radius:24px;padding:30px;box-shadow:0 22px 70px #071e2833;max-width:520px}
.modal h2{font-size:24px!important}.modal p{font-size:13px;line-height:1.9}.modal .actions{justify-content:flex-end!important}
body:not(.auth-page) #receipt .score{font-size:58px;color:#306e50;letter-spacing:-2px;background:#eff6ed;border:1px solid #e1ecdf;border-radius:20px;padding:25px 30px;margin:26px 0;display:inline-block;font-weight:750;line-height:1.2}
body:not(.auth-page) .review{border:1px solid var(--tqm-line);border-radius:16px;padding:20px 23px;margin:16px 0}
.review h3{font-size:17px;line-height:1.7}.review p{font-size:13px!important}.correct-answer{background:#edf6ea;color:#376a47;border-radius:9px;padding:12px 14px;font-weight:600}
#returnHome{margin-top:15px}
/* Supervisor workspace and subscription management. */
.workspace-nav{display:flex;gap:6px;flex-wrap:wrap;position:sticky;top:10px;z-index:8;background:#ffffffed;border:1px solid var(--tqm-line);border-radius:15px;padding:6px;margin:20px 0;box-shadow:0 4px 17px #183e4306;backdrop-filter:blur(12px)}
.workspace-nav a{display:flex;align-items:center;gap:8px;min-height:44px;border-radius:10px;padding:10px 17px;color:#5b7d6d;font-size:12px;font-weight:650;text-decoration:none}
.workspace-nav a:hover,.workspace-nav a:focus{background:#edf4ec;color:#2e694b}.workspace-nav a>span{font-size:10px;color:#8ba58d;font-weight:500}
.admin-page #usersPanel,.admin-page #adminExams,.admin-page #examBuilder,.admin-page #resultsPanel{scroll-margin-top:90px}
.admin-page #login{max-width:550px;margin:30px auto;padding:33px 37px}.admin-page #login h2{margin-bottom:22px}.admin-page #loginBtn{width:100%;margin:3px 0 8px}
.admin-page .form-cols{gap:18px}.admin-page .member-search-grid{display:grid;grid-template-columns:2fr 1fr;gap:18px;margin:24px 0 0}
.admin-page #memberStatus{font-size:12px;color:#71907b;padding:12px 0;border-block:1px solid #edf2ed;margin:14px 0}
.admin-page .member-card{border:1px solid #e0e9e1;border-radius:16px;padding:16px 20px;margin:13px 0;box-shadow:0 3px 15px #163e3202}
.admin-page .member-card[open]{border-color:#b5ceba;background:#fdfefd}
.admin-page .member-card summary{gap:14px;min-height:48px}.admin-page .member-card summary strong{font-size:14px;font-weight:650;color:#315b45}.admin-page .member-card summary::after{color:#90ac94;font-size:22px}
.admin-page .member-badge{background:#eff4ef;color:#6b806d;font-size:11px;border-radius:25px;padding:6px 10px;white-space:normal;text-align:center}
.admin-page .member-badge[data-status=active]{color:#306c49;background:#e5f2e6}.admin-page .member-badge:is([data-status=scheduled],[data-status=expired],[data-status=pending]){color:#8a713e;background:#faf4e7}
.admin-page .member-badge:is([data-status=suspended],[data-status=rejected]){color:#9a4a51;background:#fcf0f0}
.admin-page .member-identity{padding:12px 0;border-block:1px solid #edf2ec;margin:12px 0;color:#6d8875;font-size:12px}.admin-page .member-card p{font-size:12px;color:#6c8372}
.admin-page .member-courses{background:#f6faf4}.admin-page .member-courses label{padding:11px 7px!important;color:#47634a}
.admin-page .member-access-form>button{min-width:230px}.admin-page .member-session-option{font-weight:500;font-size:12px;align-items:flex-start;line-height:1.8}
.admin-page .exam-tile .actions{padding-top:15px;border-top:1px solid #edf2ed;gap:8px;justify-content:flex-start}
.admin-page .exam-tile .actions>*{font-size:12px}.admin-page .exam-tile .actions select{width:auto;min-width:170px;max-width:100%;margin:0;min-height:44px;font-size:12px}
.admin-page #examBuilder{background:#fdfefd}.admin-page #questions{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1.9;min-height:200px}
.admin-page #createExamBtn{margin-top:8px;min-width:200px}
.admin-page .overflow{overflow:auto;border:1px solid var(--tqm-line);border-radius:14px;max-height:70vh;overscroll-behavior:contain;margin:20px 0}
.admin-page .results-table{border-collapse:separate;border-spacing:0;font-size:12px;line-height:1.7}
.admin-page .results-table th{position:sticky;top:0;z-index:1;background:#eff5ee;color:#4f7457;font-size:11px;font-weight:700;padding:14px 12px;border-bottom:1px solid #d6e5d7;white-space:nowrap}
.admin-page .results-table td{border-color:#e8eee8;padding:13px 12px;color:#58705c}.admin-page .results-table tbody tr:nth-child(even){background:#fbfdfb}
.admin-page .results-table td button{font-size:11px;padding:8px 10px;min-height:44px;margin:4px 0}
.admin-page #downloadCsv{background:#245f4e;color:#fff;border:0}
.auth-page .account-status-card .screen-eyebrow{margin-bottom:14px}
@media(max-width:1050px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}body:not(.auth-page) .hero{padding:30px}.hero-motif{right:28px;width:110px;height:110px}.hero-motif .book-symbol{width:75px}.workspace-brand strong{font-size:25px}}
@media(max-width:720px){body:not(.auth-page) .app{padding:0 20px 25px}.hero-motif{display:none}body:not(.auth-page) .hero{min-height:0;padding:27px 28px}body:not(.auth-page) .hero :is(h1,p,.eyebrow){max-width:100%}body:not(.auth-page) .hero h1{font-size:30px}.workspace-masthead{padding:22px 1px}.workspace-brand small{font-size:10px}body:not(.auth-page) .panel{padding:24px}body:not(.auth-page) #home{padding:25px}.admin-page .member-search-grid{grid-template-columns:1fr;gap:0}.workspace-nav a{padding:9px 12px;flex:1;justify-content:center}.workspace-nav a>span{display:none}.admin-page .member-access-form .form-cols{grid-template-columns:1fr}}
@media(max-width:560px){body:not(.auth-page) .app{padding:0 15px 24px}.workspace-masthead{padding:20px 2px}.workspace-logo{width:33px;height:36px}.workspace-brand{gap:8px}.workspace-brand strong{font-size:24px}.workspace-brand small{font-size:9px}.workspace-environment{padding:6px 9px;font-size:9px;gap:5px}.workspace-environment b{font-size:8px}body:not(.auth-page) .hero{border-radius:22px;padding:25px 23px;margin-bottom:20px}body:not(.auth-page) .hero h1{font-size:28px;letter-spacing:-.7px}.hero .eyebrow{font-size:9px!important}.hero p{font-size:12px!important}body:not(.auth-page) .panel{border-radius:20px;padding:22px}body:not(.auth-page) h2{font-size:24px}body:not(.auth-page) #home{padding:23px 19px}.course-grid,.lecture-grid{grid-template-columns:minmax(0,1fr);gap:13px}body:not(.auth-page) .course-card{min-height:190px;padding:20px 28px 20px 20px}body:not(.auth-page) .course-title{font-size:18px}.course-heading{font-size:19px!important}#home .exam-tile{grid-template-columns:minmax(0,1fr);padding:18px}#home .exam-tile>button{grid-column:1;grid-row:auto;width:100%;margin-top:12px}body:not(.auth-page) #attempt{padding:15px 18px 22px;border-radius:20px}.attempt-toolbar{gap:9px;padding-top:9px}body:not(.auth-page) .countdown{font-size:22px;padding:10px 12px}body:not(.auth-page) .pill{font-size:11px;padding:10px}body:not(.auth-page) .question{font-size:19px;line-height:1.75;margin-top:24px}#options{grid-template-columns:minmax(0,1fr)}body:not(.auth-page) #options .answer-option{padding:15px;min-height:65px;font-size:14px}body:not(.auth-page) #options .answer-option.selected{padding:14px}.question-map summary{font-size:11px}#attempt>.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}#attempt>.actions #submitDialogOpen{margin:0}#attempt .actions button{font-size:12px;padding:11px 8px;min-width:0}.modal-shade{padding:12px}body:not(.auth-page) .modal{padding:24px}.modal .actions{flex-direction:column}.modal .actions button{width:100%}body:not(.auth-page) .review{padding:17px}body:not(.auth-page) #receipt .score{font-size:45px;padding:20px 25px}.admin-page .member-card{padding:14px}.admin-page .member-card summary{gap:8px;align-items:flex-start}.admin-page .member-card summary strong{font-size:13px;line-height:1.8}.admin-page .member-badge{font-size:10px;max-width:105px}.admin-page .member-card summary::after{font-size:19px}.admin-page .member-access-form>button{width:100%;min-width:0}.admin-page #login{padding:27px 23px}.workspace-nav{top:6px;padding:5px;border-radius:12px}.workspace-nav a{font-size:10px;padding:8px 7px;min-height:44px}.admin-page .exam-tile{padding:18px}.admin-page .exam-tile .actions select{width:100%}.admin-page .exam-tile .actions>button{flex:1;min-width:95px}.admin-page #questions{font-size:16px}body:not(.auth-page) .workspace-footer{font-size:10px;padding-top:9px}.workspace-footer a{min-height:44px}}
@media(max-width:360px){body:not(.auth-page) .app{padding-inline:11px}.workspace-brand small{font-size:8px}.workspace-environment b{display:none}body:not(.auth-page) .panel{padding:20px}body:not(.auth-page) #attempt{padding-inline:14px}body:not(.auth-page) .countdown{font-size:20px}body:not(.auth-page) .hero h1{font-size:26px}}
@media(prefers-reduced-motion:reduce){body:not(.auth-page) *,body:not(.auth-page) *::before,body:not(.auth-page) *::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
