:root{
  --blue:#2563EB; --blue-dark:#1D4ED8; --indigo:#4F46E5;
  --bg:#F7F9FC; --surface:#FFFFFF; --line:#E2E8F0; --ink:#0F172A; --sub:#64748B;
  --green:#16A34A; --amber:#D97706; --red:#DC2626; --grid:#EEF2FB;
}
html[data-theme="dark"]{
  --blue:#3B82F6; --blue-dark:#60A5FA; --indigo:#818CF8;
  --bg:#0B1120; --surface:#141B2D; --line:#26314A; --ink:#E5EAF5; --sub:#94A3B8;
  --green:#4ADE80; --amber:#FBBF24; --red:#F87171; --grid:#1B2438;
  color-scheme:dark;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{font-family:'Sarabun',sans-serif;background:var(--bg);color:var(--ink);min-height:100vh;transition:background .2s,color .2s;}
h1,h2,h3{font-family:'Prompt',sans-serif;}
button{font-family:inherit;cursor:pointer;}
.hidden{display:none !important;}
html.restoring-session #adminLoginScreen{visibility:hidden;}html.restoring-session body::after{content:'กำลังตรวจสอบการเข้าสู่ระบบ…';position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--sub);font-family:'Prompt',sans-serif;font-size:15px;}
.btn{border:none;border-radius:12px;padding:14px 22px;font-weight:600;font-size:15px;transition:transform .15s,box-shadow .15s,background .15s;}
.btn-primary{background:var(--blue);color:#fff;box-shadow:0 8px 20px -8px rgba(37,99,235,.6);}
.btn-primary:hover{background:var(--blue-dark);transform:translateY(-1px);}
.btn-primary:disabled{background:var(--sub);box-shadow:none;cursor:not-allowed;transform:none;}
.button-spinner{width:15px;height:15px;display:inline-block;vertical-align:-2px;margin-right:7px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:buttonSpin .7s linear infinite;}@keyframes buttonSpin{to{transform:rotate(360deg)}}
.session-expired-dialog{border:0;padding:0;border-radius:18px;width:min(430px,calc(100% - 28px));background:var(--surface);color:var(--ink);box-shadow:0 24px 70px -18px rgba(15,23,42,.45);}.session-expired-dialog::backdrop{background:rgba(15,23,42,.55);backdrop-filter:blur(2px);}.session-expired-card{padding:28px;text-align:center;}.session-expired-icon{font-size:38px;margin-bottom:7px;}.session-expired-card h2{margin:0 0 7px;font-size:20px;}.session-expired-card p{margin:0 0 20px;color:var(--sub);line-height:1.65;font-size:13.5px;}.session-expired-card .btn{width:100%;}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink);}
.btn-ghost:hover{border-color:var(--blue);color:var(--blue);}
.btn-analysis{background:#fef3c7;border:1px solid #fcd34d;color:#92400e;box-shadow:none;}
.btn-analysis:hover{background:#fde68a;border-color:#f59e0b;color:#78350f;}
html[data-theme="dark"] .btn-analysis{background:#422006;border-color:#a16207;color:#fde68a;}
.btn-danger{background:transparent;border:1px solid var(--red);color:var(--red);}
.btn-danger:hover{background:rgba(220,38,38,.08);}
.btn-sm{padding:8px 14px;font-size:12.5px;border-radius:9px;}
.theme-toggle{white-space:nowrap;}
html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea{background:var(--surface);color:var(--ink);border-color:var(--line);}
html[data-theme="dark"] .mini-card,html[data-theme="dark"] .editor-box,html[data-theme="dark"] .section-hero-card,html[data-theme="dark"] .schedule-box{background:var(--grid);}

.screen-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;}
.card{max-width:720px;width:100%;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:40px;box-shadow:0 20px 50px -20px rgba(37,99,235,.25);}
.eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--blue);background:rgba(37,99,235,.1);padding:5px 12px;border-radius:999px;margin-bottom:14px;}
.card h1{font-size:26px;margin:0 0 6px;}
.card p.lead{color:var(--sub);margin:0 0 22px;line-height:1.7;}
.start-actions{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;}
.name-input{width:100%;padding:14px 16px;border:1.5px solid var(--line);border-radius:12px;font-size:16px;font-family:inherit;margin-bottom:20px;}
.name-input:focus{outline:none;border-color:var(--blue);}

#adminScreen{min-height:100vh;display:flex;flex-direction:column;}
.admin-topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;background:var(--surface);border-bottom:1px solid var(--line);}
.admin-topbar .brand{font-family:'Prompt',sans-serif;font-weight:700;font-size:16px;display:flex;align-items:center;gap:8px;}
.admin-tabs{display:flex;gap:6px;padding:14px 24px 0;background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;}
.admin-tab-btn{background:transparent;border:none;border-bottom:2.5px solid transparent;padding:10px 6px;font-weight:600;font-size:13.5px;color:var(--sub);}
.admin-tab-btn.active{color:var(--blue);border-color:var(--blue);}
.admin-body{flex:1;overflow-y:auto;padding:28px 24px 60px;display:flex;justify-content:center;}
.admin-inner{max-width:1100px;width:100%;}
.admin-inner h2{font-size:19px;margin:0 0 4px;}
.admin-inner .sub{color:var(--sub);font-size:13px;margin:0 0 20px;}
.set-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px;margin-bottom:22px;}
.set-card{background:var(--surface);border:1.5px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:6px;}
.set-card h3{font-size:15px;margin:0;}
.set-card p{font-size:12px;color:var(--sub);margin:0;line-height:1.6;}
.set-card .set-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap;}
.library-list{overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.library-list-head,.library-row{display:grid;grid-template-columns:minmax(280px,1.6fr) minmax(180px,.8fr) 145px 230px;gap:18px;align-items:center}.library-list-head{padding:11px 18px;background:var(--grid);border-bottom:1px solid var(--line);color:var(--sub);font-size:11px;font-weight:700}.library-row{padding:15px 18px;border-bottom:1px solid var(--line)}.library-row:last-child{border-bottom:0}.library-row:hover{background:color-mix(in srgb,var(--grid) 55%,transparent)}.library-title{display:flex;align-items:center;gap:12px;min-width:0}.library-icon{width:38px;height:38px;display:grid;place-items:center;flex:none;border-radius:10px;background:#EEF2FF;font-size:18px}.library-title h3{margin:0;font-size:14.5px;line-height:1.45}.library-title p{margin:3px 0 0;color:var(--sub);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.library-meta{display:flex;align-items:flex-start;flex-direction:column;gap:5px}.library-meta .badge-pill{margin:0}.library-term{color:var(--ink);font-size:12px;font-weight:600}.library-date{display:flex;align-items:flex-start;flex-direction:column;gap:2px}.library-date small{color:var(--sub);font-size:10.5px}.library-date strong{font-size:12.5px}.library-date em{padding:2px 6px;border-radius:5px;background:#DCFCE7;color:#15803D;font-size:10px;font-style:normal;font-weight:700}.library-actions{display:flex;justify-content:flex-end;gap:7px}.library-actions .btn{min-height:34px;white-space:nowrap;padding:7px 10px;font-size:11.5px}html[data-theme="dark"] .library-icon{background:#312E81}@media(max-width:900px){.library-list-head{display:none}.library-row{grid-template-columns:minmax(0,1fr) auto;gap:12px}.library-title{grid-column:1/-1}.library-meta,.library-date{align-self:start}.library-actions{grid-column:1/-1;justify-content:flex-start;padding-top:10px;border-top:1px dashed var(--line)}}@media(max-width:520px){.library-row{grid-template-columns:1fr;padding:15px}.library-title,.library-actions{grid-column:1}.library-meta{flex-direction:row;align-items:center;flex-wrap:wrap}.library-actions .btn{flex:1}.library-date{padding-top:2px}}
.badge-pill{display:inline-block;font-size:11px;font-weight:600;background:var(--indigo);color:#fff;padding:3px 10px;border-radius:999px;width:fit-content;}
.set-badge-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}.academic-period-pill{margin-left:auto;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;}.exam-date-pill{background:#ECFDF5;color:#047857;border:1px solid #A7F3D0;}html[data-theme="dark"] .exam-date-pill{background:rgba(4,120,87,.2);color:#6EE7B7;border-color:#047857;}html[data-theme="dark"] .academic-period-pill{background:rgba(29,78,216,.2);color:#93c5fd;border-color:#1d4ed8;}
.exam-status-pill{border:1px solid transparent;}.exam-status-pill.status-live{background:#DCFCE7;color:#15803D;border-color:#86EFAC;animation:examLivePulse 2s ease-in-out infinite;}.exam-status-pill.status-upcoming{background:#FFF7ED;color:#C2410C;border-color:#FED7AA;}.exam-status-pill.status-finished{background:#E2E8F0;color:#475569;border-color:#CBD5E1;}.exam-status-pill.status-unscheduled{background:#F8FAFC;color:#64748B;border-color:#E2E8F0;}.set-card.exam-status-finished{background:var(--grid);border-color:#CBD5E1;box-shadow:none;opacity:.72;}.set-card.exam-status-finished:hover{opacity:1;border-color:#94A3B8;}.set-card.exam-status-live{border-color:#86EFAC;box-shadow:0 8px 25px -20px rgba(22,163,74,.8);}@keyframes examLivePulse{50%{box-shadow:0 0 0 4px rgba(34,197,94,.12);}}html[data-theme="dark"] .exam-status-pill.status-live{background:rgba(21,128,61,.25);color:#86EFAC;border-color:#15803D;}html[data-theme="dark"] .exam-status-pill.status-upcoming{background:rgba(194,65,12,.18);color:#FDBA74;border-color:#9A3412;}html[data-theme="dark"] .exam-status-pill.status-finished{background:#334155;color:#CBD5E1;border-color:#475569;}html[data-theme="dark"] .exam-status-pill.status-unscheduled{background:#1E293B;color:#94A3B8;border-color:#334155;}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:22px 24px;margin-bottom:18px;}
.deadline-card{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#EFF6FF,#F5F3FF);border:1px solid #C7D2FE;border-radius:16px;padding:13px 15px;min-width:280px;flex:1;box-shadow:0 8px 18px -18px rgba(37,99,235,.7);transition:border-color .15s,box-shadow .15s,transform .15s;}
.deadline-card:focus-within{border-color:var(--blue);box-shadow:0 0 0 4px rgba(37,99,235,.1);transform:translateY(-1px);}
.deadline-card .deadline-icon{font-size:22px;line-height:1;}
.deadline-card .field{margin:0;min-width:0;}
.exam-schedule-card{margin:10px 0;padding:15px;border:1px solid #93C5FD;border-radius:16px;background:#EFF6FF;box-shadow:0 8px 18px -18px rgba(37,99,235,.7);}
.exam-schedule-card.afternoon{border-color:#FBBF24;background:#FFFBEB;}.exam-schedule-card.cooperative{border-color:#A78BFA;background:#F5F3FF;}
.schedule-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}.schedule-card-head h4{margin:0;font-size:15px;}.schedule-card-head p{margin:3px 0 0;font-size:12px;color:var(--sub);}
.schedule-room-field{margin-bottom:12px!important;}.schedule-time-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:end;}.schedule-time-grid .field{min-width:0;margin:0;}.schedule-time-grid input{min-width:0;}
.schedule-late-code-field{max-width:320px;margin:12px 0 0!important;}
.field input[type=datetime-local].date-time-input{background:rgba(255,255,255,.9);border:1.5px solid #C7D2FE;border-radius:11px;padding:12px 42px 12px 13px;color:var(--ink);font-weight:600;letter-spacing:.01em;box-shadow:0 2px 7px -6px rgba(15,23,42,.45);cursor:pointer;transition:border-color .15s,box-shadow .15s;background-image:linear-gradient(135deg,transparent,transparent);}
.field input[type=datetime-local].date-time-input:hover{border-color:#818CF8;}.field input[type=datetime-local].date-time-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12);}.field input[type=datetime-local].date-time-input::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.75;transform:scale(1.15);filter:hue-rotate(190deg) saturate(1.4);}
.section-hero-card{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(135deg,#EFF6FF,#F8FAFF);border:1px solid #BFDBFE;border-radius:14px;padding:15px 16px;margin-bottom:14px;}
.section-hero-card h3{margin:0;font-size:16px;color:var(--blue-dark);}
.section-hero-card p{margin:3px 0 0;color:var(--sub);font-size:12.5px;}
.section-count-badge{background:var(--blue);color:#fff;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:700;white-space:nowrap;}
.lv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;width:100%;}
.lv-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-height:174px;background:var(--surface);border:1.5px solid var(--line);border-radius:16px;padding:20px;box-shadow:0 10px 24px -22px rgba(15,23,42,.55);transition:transform .15s,border-color .15s,box-shadow .15s;}
.lv-card:hover{border-color:#93C5FD;box-shadow:0 14px 28px -20px rgba(37,99,235,.35);transform:translateY(-2px);}
.lv-card h3{margin:0;font-size:16px;color:var(--ink);}
.lv-card .lv-desc{flex:1;color:var(--sub);font-size:13.5px;line-height:1.7;}
.lv-card .lv-desc b{display:inline-block;margin-top:7px;color:var(--blue);background:rgba(37,99,235,.09);border-radius:999px;padding:3px 9px;font-size:12px;}
.lv-card .btn{width:100%;padding:11px 14px;}
.panel h3{font-size:14.5px;margin:0 0 4px;display:flex;align-items:center;justify-content:space-between;}
.panel .panel-sub{font-size:12px;color:var(--sub);margin:0 0 16px;}
.field-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:6px;}
.field{flex:1;min-width:160px;margin-bottom:14px;}
.field label{display:block;font-size:12px;font-weight:600;color:var(--sub);margin-bottom:6px;}
.field input[type=text],.field input[type=number],.field input[type=email],.field input[type=url],.field select,.field textarea{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;font-family:inherit;font-size:13.5px;background:var(--surface);color:var(--ink);}
.field textarea{resize:vertical;min-height:60px;}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--blue);}
.mini-card{background:var(--grid);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px;position:relative;}
.mini-card .rm-btn{position:absolute;top:10px;right:10px;background:transparent;border:none;color:var(--red);font-size:16px;font-weight:700;}
.choice-edit-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.choice-edit-row input[type=radio]{width:16px;height:16px;accent-color:var(--green);flex:none;}
.choice-edit-row input[type=text]{flex:1;padding:8px 10px;border:1.5px solid var(--line);border-radius:8px;font-size:13px;}
.choice-edit-row [data-remove-choice]{flex:none;padding:6px 9px;}
.add-row-btn{background:var(--surface);border:1.5px dashed var(--line);border-radius:10px;padding:9px 14px;font-size:12.5px;color:var(--blue);width:100%;}
.add-row-btn:hover{border-color:var(--blue);}
.editor-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px;align-items:center;}
.match-edit-row{display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap;}
.match-edit-row .idx{font-family:'Prompt',sans-serif;font-weight:700;font-size:12px;color:var(--blue);width:22px;flex:none;}
.match-edit-row input[type=text]{flex:1;min-width:120px;padding:8px 10px;border:1.5px solid var(--line);border-radius:8px;font-size:13px;}
.result-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.result-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--sub);border-bottom:1.5px solid var(--line);padding:8px 8px;}
.result-table td{padding:9px 8px;border-bottom:1px solid var(--line);}
.result-table tr:hover td{background:var(--grid);}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 20px;border-radius:10px;font-size:13.5px;z-index:200;box-shadow:0 10px 30px -10px rgba(0,0,0,.4);}
.loading-note{font-size:13px;color:var(--sub);padding:30px;text-align:center;}
.empty-note{font-size:13.5px;color:var(--sub);background:var(--grid);border:1px dashed var(--line);border-radius:12px;padding:20px;text-align:center;}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}
.chip{background:rgba(37,99,235,.1);color:var(--blue);border-radius:999px;padding:5px 8px 5px 12px;font-size:12.5px;display:flex;align-items:center;gap:6px;}
.chip button{background:transparent;border:none;color:var(--blue);font-weight:700;font-size:13px;line-height:1;padding:2px;}
.chip-empty-note{font-size:12px;color:var(--sub);margin:-2px 0 10px;}
.add-chip-row{display:flex;gap:8px;margin-bottom:4px;}
.add-chip-row input{flex:1;padding:9px 11px;border:1.5px solid var(--line);border-radius:9px;font-size:13px;}
.add-chip-row button{white-space:nowrap;}
.toolbar-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:18px;}
.filter-select{padding:9px 12px;border:1.5px solid var(--line);border-radius:9px;font-size:13px;font-family:inherit;background:var(--surface);}
.import-report{font-size:12.5px;background:var(--grid);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-top:10px;line-height:1.7;}
.import-report .err{color:var(--red);}
.total-indicator{font-size:13px;font-weight:700;padding:10px 14px;border-radius:10px;margin-bottom:16px;display:inline-block;}
.total-indicator.ok{background:rgba(22,163,74,.1);color:var(--green);}
.total-indicator.warn{background:rgba(217,119,6,.12);color:var(--amber);}
.section-manager-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.section-tag{display:inline-flex;align-items:center;gap:8px;background:var(--grid);border:1px solid var(--line);border-radius:999px;padding:6px 8px 6px 14px;font-size:12.5px;font-weight:600;}
.section-tag button{background:transparent;border:none;color:var(--red);font-weight:700;padding:2px 6px;cursor:pointer;}
.add-section-dropdown{position:relative;display:inline-block;}
.add-section-menu{position:absolute;top:110%;left:0;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px -8px rgba(0,0,0,.25);z-index:20;min-width:180px;overflow:hidden;}
.add-section-menu button{display:block;width:100%;text-align:left;padding:10px 14px;background:transparent;border:none;font-size:13px;color:var(--ink);cursor:pointer;}
.add-section-menu button:hover{background:var(--grid);}
.compact-list{margin-bottom:12px;}
.compact-row{display:flex;align-items:center;gap:10px;background:var(--grid);border:1px solid var(--line);border-radius:10px;padding:9px 12px;margin-bottom:8px;font-size:13px;}
.compact-idx{font-family:'Prompt',sans-serif;font-weight:700;color:var(--blue);flex:none;width:20px;}
.compact-text{flex:1;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.compact-meta{font-size:11.5px;color:var(--sub);flex:none;background:var(--surface);border:1px solid var(--line);padding:2px 8px;border-radius:999px;}
.muted-note{color:var(--sub);font-size:12.5px;margin:4px 0 10px;}
.q-editor-panel{background:var(--surface);border:2px solid var(--blue);border-radius:12px;padding:16px;margin-top:10px;}
.mc-import-box{margin-top:12px;background:linear-gradient(135deg,#F5F3FF,#EFF6FF);border:1px solid #C4B5FD;border-radius:14px;padding:15px;}
.mc-import-box h4{margin:0 0 5px;font-family:'Prompt',sans-serif;font-size:14px;color:var(--indigo);}
.mc-import-box p{margin:0 0 10px;font-size:12px;color:var(--sub);line-height:1.6;}
.mc-import-box textarea{width:100%;min-height:170px;padding:10px 12px;border:1px solid #C7D2FE;border-radius:10px;font-family:'Sarabun',sans-serif;font-size:13px;line-height:1.6;resize:vertical;background:#fff;}
.mc-import-preview{margin-top:10px;font-size:12.5px;line-height:1.6;}
.mc-import-preview .ok{color:var(--green);}.mc-import-preview .bad{color:var(--red);}
.question-bank-row{display:flex;align-items:flex-start;gap:10px;width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;cursor:pointer;}
.question-bank-row:hover{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 6%,transparent);}
.question-bank-row input[type="checkbox"]{flex:none;width:16px;height:16px;padding:0;border:1.5px solid var(--line);border-radius:4px;margin:3px 0 0;}
.question-bank-row .qb-info{flex:1;min-width:0;overflow-wrap:break-word;}
.question-bank-row .qb-title{display:block;font-weight:600;font-size:13.5px;}
.question-bank-row .qb-meta{display:block;color:var(--sub);font-size:12px;margin-top:2px;}
.question-bank-row button{flex:none;}
#questionBankList{max-height:50vh;overflow-y:auto;overflow-x:hidden;}
.google-form-preview-summary{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.google-form-preview-summary>span{padding:5px 9px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:700}.google-form-question-preview{display:grid;gap:6px;margin:9px 0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.google-form-question-preview b{font-size:13px}.google-form-question-preview small{color:var(--sub)}.google-form-source-number{margin-left:7px;color:var(--sub);font-size:10.5px}.google-form-preview-images{display:flex;gap:8px;overflow-x:auto}.google-form-preview-images img{width:96px;height:72px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:#fff}.google-form-skipped{margin-top:10px;padding:9px;border-radius:9px;background:rgba(239,68,68,.06)}
.google-import-dialog{border:0;padding:0;border-radius:18px;width:min(620px,calc(100% - 28px));background:var(--surface);color:var(--ink);box-shadow:0 24px 70px -18px rgba(15,23,42,.45);}
.google-import-dialog::backdrop{background:rgba(15,23,42,.52);backdrop-filter:blur(2px);}
.google-import-dialog-inner{padding:22px;}.google-import-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px;}
.google-import-dialog-head h3{margin:0;font-size:18px;}.google-import-dialog-head p{margin:4px 0 0;color:var(--sub);font-size:12.5px;line-height:1.6;}
.google-import-dialog input{width:100%;padding:12px 13px;border:1.5px solid var(--line);border-radius:10px;font-family:inherit;font-size:13px;}.google-import-dialog input:focus{outline:none;border-color:var(--blue);}
.google-import-step{border:1px solid #C7D2FE;background:linear-gradient(135deg,#F5F3FF,#EFF6FF);border-radius:13px;padding:15px;}.google-import-step h4{font-family:'Prompt',sans-serif;margin:0 0 5px;font-size:14px;color:var(--indigo);}.google-import-step p{color:var(--sub);font-size:12.5px;line-height:1.65;margin:0 0 12px;}
.file-format-guide{margin:12px 0;padding:12px;border:1px solid #BFDBFE;border-radius:10px;background:#fff;font-size:12px}.file-format-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}.file-format-grid section{padding:9px;border-radius:8px;background:#F8FAFC}.file-format-grid strong,.file-format-grid small{display:block}.file-format-grid code{display:block;margin:6px 0;padding:7px;border-radius:6px;background:#0F172A;color:#E2E8F0;font:11px/1.55 ui-monospace,monospace;white-space:nowrap;overflow:auto}.file-format-grid small{color:var(--red);line-height:1.45}@media(max-width:520px){.file-format-grid{grid-template-columns:1fr}}
.google-forms-reveal{animation:googleFormsReveal .32s cubic-bezier(.2,.8,.2,1)}.google-forms-loading{display:flex;align-items:center;gap:9px;margin:10px 0;padding:10px 12px;border-radius:10px;background:rgba(79,70,229,.08);color:var(--indigo);font-size:12.5px;font-weight:600}.google-forms-loading::before{content:'';width:14px;height:14px;border:2px solid rgba(79,70,229,.24);border-top-color:var(--indigo);border-radius:50%;animation:googleFormsSpin .7s linear infinite}.google-form-choice-loading{animation:googleFormsPulse .75s ease-in-out infinite;pointer-events:none}@keyframes googleFormsReveal{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes googleFormsSpin{to{transform:rotate(360deg)}}@keyframes googleFormsPulse{50%{transform:scale(.985);opacity:.65}}@media(prefers-reduced-motion:reduce){.google-forms-reveal,.google-forms-loading::before,.google-form-choice-loading{animation:none}}
.resit-dialog{border:0;padding:0;border-radius:20px;width:min(600px,calc(100% - 28px));background:var(--surface);color:var(--ink);box-shadow:0 24px 70px -18px rgba(15,23,42,.45);}.resit-dialog::backdrop{background:rgba(15,23,42,.55);backdrop-filter:blur(2px);}.resit-dialog-card{padding:24px;position:relative;}.resit-dialog-card h3{margin:0 0 5px;font-size:20px;}.resit-dialog-card>p{margin:0 0 18px;color:var(--sub);font-size:13px;line-height:1.65;}.resit-close{position:absolute;right:16px;top:15px;padding:6px 9px;line-height:1;}.resit-summary{background:linear-gradient(135deg,#EFF6FF,#F5F3FF);border:1px solid #C7D2FE;border-radius:13px;padding:12px 14px;margin:0 0 16px;font-size:13px;line-height:1.65;}.resit-summary b{font-family:'Prompt',sans-serif;color:var(--blue-dark);}.resit-time-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}.resit-time-grid .field{min-width:0;}.resit-score-note{margin:-4px 0 14px;color:var(--sub);font-size:12px;line-height:1.6;}.resit-error{min-height:18px;color:var(--red);font-size:12.5px;margin:0 0 4px;}@media(max-width:520px){.resit-time-grid{grid-template-columns:1fr;gap:0;}.resit-dialog-card{padding:20px;}}
.q-editor-panel .q-editor-title{font-family:'Prompt',sans-serif;font-weight:600;font-size:13px;color:var(--blue);margin-bottom:12px;}
.wizard-steps-bar{display:flex;align-items:center;gap:6px;padding:14px 24px;background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;}
.wizard-step-chip{font-size:12px;font-weight:600;padding:6px 12px;border-radius:999px;background:var(--grid);color:var(--sub);border:1px solid var(--line);}
.wizard-step-chip.active{background:var(--blue);color:#fff;border-color:var(--blue);}
.wizard-step-chip.done{background:rgba(22,163,74,.12);color:var(--green);border-color:var(--green);}
.wizard-step-arrow{color:var(--sub);font-size:12px;}
.wizard-nav-row{display:flex;justify-content:space-between;gap:10px;margin-top:8px;padding-bottom:40px;}
.course-group{margin-bottom:22px;}
.course-group-head{display:flex;justify-content:space-between;align-items:center;background:var(--grid);border:1px solid var(--line);border-radius:12px;padding:12px 16px;cursor:pointer;margin-bottom:12px;}
.course-group-head:hover{border-color:var(--blue);}
.course-group-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:stretch;max-width:960px;margin:0 auto;}
.settings-menu-card{margin:0;text-align:left;min-height:168px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:18px;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease;border:1px solid var(--line);}
.settings-menu-card:hover{transform:translateY(-2px);box-shadow:0 13px 28px rgba(15,23,42,.09);border-color:#BFDBFE;}
.settings-menu-card h3{margin:0 0 5px;}.settings-menu-card .panel-sub{margin:0;line-height:1.65;}
.settings-grid .panel{margin-bottom:0;}
@media(max-width:760px){.settings-grid{grid-template-columns:1fr;}.settings-menu-card{min-height:0;}}
.settings-data-tools{display:grid;gap:18px;}
.publish-set-btn:not(:disabled){background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.24);color:var(--blue);}.publish-set-btn:not(:disabled):hover{background:rgba(37,99,235,.14);}
.result-row-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}.result-row-actions .btn{margin:0;}
.course-group-title{font-family:'Prompt',sans-serif;font-weight:600;font-size:14.5px;}
.course-group-count{font-size:12px;color:var(--sub);}
.course-group-body.collapsed{display:none;}
.set-card{border-width:1px;border-radius:10px;padding:17px 18px;gap:7px;box-shadow:none}.set-card h3{font-size:16px;line-height:1.45}.set-card .badge-pill{border-radius:6px;padding:4px 8px;font-size:11.5px}.set-card.exam-status-finished{opacity:1;background:var(--surface)}.set-actions-clear{align-items:center;padding-top:13px;border-top:1px solid var(--line);gap:8px!important}.set-actions-clear .btn{min-height:36px;padding:7px 12px;font-size:12.5px}.set-actions-clear .set-delete-action{margin-left:auto;background:transparent;color:var(--red);box-shadow:none}@media(max-width:640px){.set-actions-clear .btn{flex:1 1 calc(50% - 8px)}.set-actions-clear .set-delete-action{margin-left:0}}
.teacher-row-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;}
.teacher-row-info{font-size:13.5px;}
.teacher-row-info b{font-family:'Prompt',sans-serif;}
.teacher-row-info .username{color:var(--sub);font-size:12px;}
.roster-controls{max-width:900px;}
.roster-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px;}
.roster-form-grid .roster-wide{grid-column:1/-1;}
.roster-class-picker{display:flex;gap:8px;align-items:stretch}.roster-class-picker select{min-width:0;flex:1}.roster-class-picker .btn{white-space:nowrap;padding-inline:14px}.roster-selected-classes{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}.roster-room-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1e3a8a;font-size:13px;font-weight:700}.roster-room-chip button{border:0;background:transparent;color:#64748b;cursor:pointer;font-size:15px;line-height:1;padding:0}.roster-room-chip button:hover{color:#dc2626}
@media(max-width:700px){.roster-form-grid{grid-template-columns:1fr}.roster-form-grid .roster-wide{grid-column:auto}}
.pub-pill{font-size:11px;font-weight:600;padding:4px 10px;border-radius:999px;border:none;}
.pub-pill.pub-yes{background:rgba(22,163,74,.12);color:var(--green);}
.pub-pill.pub-no{background:rgba(217,119,6,.12);color:var(--amber);}
.detail-row td{background:var(--grid);padding:14px 16px;}
.detail-block{font-size:12.5px;line-height:1.8;margin-bottom:10px;}
.detail-block b{color:var(--indigo);}
.dfd-review-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-top:12px;}
.dfd-review-card{background:#fff;border:1px solid #BFDBFE;border-radius:14px;padding:14px;}
.dfd-review-card h4{font-family:'Prompt',sans-serif;margin:0;color:var(--blue-dark);font-size:14px;}
.dfd-review-meta{font-size:12px;color:var(--sub);margin:4px 0 10px;}
.dfd-review-card svg{width:100%;height:auto;border:1px solid var(--line);border-radius:9px;background:#F8FAFC;display:block;}
.dfd-score-input{width:78px;padding:7px 8px;border:1.5px solid #BFDBFE;border-radius:8px;font-family:inherit;text-align:center;font-weight:700;}
.integrity-review{background:#FFF7ED;border:1px solid #FED7AA;border-radius:12px;padding:12px 14px;margin-bottom:14px;}
.integrity-review.ok{background:#F0FDF4;border-color:#BBF7D0;}
.integrity-review h4{margin:0 0 7px;font-family:'Prompt',sans-serif;font-size:13px;color:#9A3412;}
.integrity-review.ok h4{color:#166534;}
.integrity-summary{font-size:12.5px;line-height:1.7;color:#475569;}
.integrity-events{margin:8px 0 0;padding-left:18px;font-size:12px;color:#64748B;line-height:1.65;}
.password-dialog{border:1px solid #BFDBFE;border-radius:20px;padding:0;width:min(440px,calc(100% - 32px));background:var(--surface);box-shadow:0 24px 60px -20px rgba(15,23,42,.4);overflow:hidden;}
.password-dialog::backdrop{background:rgba(15,23,42,.42);}
.password-dialog form{padding:26px;background:linear-gradient(145deg,#FFFFFF,#F8FBFF);}
.password-dialog h3{margin:0 0 6px;font-size:18px;}
.password-dialog p{margin:0 0 18px;color:var(--sub);font-size:13px;line-height:1.6;}
.password-dialog .field{margin-bottom:15px;}
.password-dialog .field label{color:#475569;font-size:12.5px;margin-bottom:7px;}
.password-dialog .field input[type=password]{width:100%;padding:12px 14px;border:1.5px solid #CBD5E1;border-radius:11px;background:#fff;color:var(--ink);font-family:inherit;font-size:14px;box-shadow:inset 0 1px 2px rgba(15,23,42,.03);transition:border-color .15s,box-shadow .15s,background .15s;}
.password-dialog .field input[type=password]::placeholder{color:#94A3B8;}
.password-dialog .field input[type=password]:focus{outline:none;border-color:var(--blue);background:#FDFEFF;box-shadow:0 0 0 4px rgba(37,99,235,.12);}
.password-dialog .editor-actions{margin-top:20px;padding-top:16px;border-top:1px solid #E2E8F0;}
.password-error{color:var(--red);font-size:12.5px;margin:-4px 0 12px;min-height:18px;}
@media(max-width:700px){.schedule-time-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}@media(max-width:560px){.lv-grid{grid-template-columns:1fr;}.lv-card{min-height:0;}.deadline-card{min-width:0;width:100%;}.schedule-time-grid{grid-template-columns:1fr;}}
.schedule-student-access{margin-top:18px;padding:16px 18px;border:1px solid #dbe5f4;border-radius:16px;background:#f8fbff;box-shadow:0 1px 2px rgba(30,64,175,.04)}.schedule-student-access>label{margin:0 0 4px;font-size:14px;color:#172554}.schedule-student-access>small{margin:10px 2px 0;font-size:12px;line-height:1.55;color:#64748b}.schedule-student-picker{display:flex;align-items:stretch;gap:10px;margin-top:12px}.schedule-student-picker input{width:100%;height:46px;padding:0 15px;border:1px solid #cbd5e1!important;border-radius:12px!important;background:#fff;font-size:14px;outline:none;transition:border-color .18s,box-shadow .18s}.schedule-student-picker input:focus{border-color:#2563eb!important;box-shadow:0 0 0 3px rgba(37,99,235,.12)}.schedule-student-picker .btn.secondary{flex:0 0 auto;min-width:132px;height:46px;padding:0 18px;border:0!important;border-radius:12px!important;background:#2563eb!important;color:#fff!important;font-weight:700;box-shadow:0 5px 12px rgba(37,99,235,.18)}.schedule-student-picker .btn.secondary:hover{background:#1d4ed8!important;transform:translateY(-1px)}.schedule-student-access .chip-row:empty{display:none}.schedule-student-access .chip{margin-top:8px;background:#eaf2ff;border-color:#c7d9ff;color:#1e3a8a}
@media(max-width:640px){.schedule-student-access{padding:14px}.schedule-student-picker{display:grid;grid-template-columns:1fr}.schedule-student-picker .btn.secondary{width:100%}}
.schedule-student-access,.schedule-student-access input,.schedule-student-access button{font-family:inherit}.schedule-student-results{display:grid;gap:6px;margin-top:8px;width:100%}.schedule-student-results:empty{display:none}.schedule-student-result{display:grid;grid-template-columns:120px minmax(0,1fr) 100px;align-items:center;gap:12px;width:100%;min-height:42px;padding:9px 13px;border:1px solid #dbe5f4;border-radius:10px;background:#fff;color:#334155;font-family:inherit;font-size:13px;text-align:left;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}.schedule-student-result:hover,.schedule-student-result:focus{border-color:#93b4f5;background:#eff6ff;outline:none;transform:translateY(-1px)}.schedule-student-result b{font-size:13px;color:#172554}.schedule-student-result span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-student-result em{font-style:normal;color:#64748b;text-align:right}.schedule-student-empty{padding:12px;border:1px dashed #cbd5e1;border-radius:10px;background:#fff;color:#64748b;font-size:13px;text-align:center}
@media(max-width:640px){.schedule-student-result{grid-template-columns:88px minmax(0,1fr)}.schedule-student-result em{grid-column:2;text-align:left;font-size:12px}}
.absence-summary{margin-top:18px;padding:18px;border:1px solid #dbe5f4;border-radius:16px;background:#f8fbff}.absence-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.absence-head h3{margin:0;font-size:17px}.absence-head p{margin:3px 0 0;color:var(--sub);font-size:12.5px}.absence-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:15px 0}.absence-stats>div{padding:12px;border:1px solid #dbe5f4;border-radius:12px;background:#fff;text-align:center}.absence-stats b{display:block;font-size:22px;color:#172554}.absence-stats span{font-size:12px;color:#64748b}.absence-stats .ok b{color:#15803d}.absence-stats .live b{color:#2563eb}.absence-stats .danger b{color:#dc2626}.absence-list{display:grid;gap:6px}.absence-row{display:grid;grid-template-columns:105px 100px minmax(0,1fr) 150px;align-items:center;gap:10px;padding:9px 12px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;font-size:13px}.absence-row em{font-style:normal;color:#64748b;text-align:right}.absence-status{font-weight:700}.status-absent{border-color:#fecaca;background:#fff7f7}.status-absent .absence-status{color:#dc2626}.status-submitted .absence-status{color:#15803d}.status-in_progress .absence-status{color:#2563eb}.status-pending .absence-status{color:#a16207}@media(max-width:650px){.absence-stats{grid-template-columns:repeat(2,1fr)}.absence-row{grid-template-columns:90px 1fr}.absence-row em{grid-column:2;text-align:left}.absence-row>b{grid-column:2;grid-row:1}.absence-status{grid-row:1/3}}
.results-toolbar{display:block}.results-toolbar>div:first-child{margin-bottom:12px}.results-filter-row{display:grid;grid-template-columns:max-content max-content max-content minmax(190px,1fr) max-content max-content max-content;gap:8px;align-items:center;width:100%}.results-filter-row .filter-select{min-width:0}.result-period-group{margin:16px 0;border:1px solid #C7D2FE;border-radius:14px;overflow:hidden;background:var(--surface)}.result-period-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 18px;border:0;background:linear-gradient(135deg,#EEF2FF,#F8FAFC);color:var(--ink);font-family:inherit;text-align:left;cursor:pointer}.result-period-head:hover{background:#E0E7FF}.result-period-head>span:first-child{display:flex;align-items:baseline;gap:12px;min-width:0}.result-period-head b{font:600 15px 'Prompt',sans-serif}.result-period-head small{color:var(--sub);font-size:12px}.result-period-chevron{font-size:22px;line-height:1;transition:transform .18s}.result-period-head.open .result-period-chevron{transform:rotate(180deg)}.result-period-body{padding:12px;background:var(--grid)}.result-period-body.collapsed{display:none}.result-period-body .course-group:last-child{margin-bottom:0}html[data-theme="dark"] .result-period-head{background:linear-gradient(135deg,#1E1B4B,#1E293B)}html[data-theme="dark"] .result-period-head:hover{background:#312E81}@media(max-width:1050px){.results-filter-row{display:flex;overflow-x:auto;padding-bottom:5px}.results-filter-row>*{flex:0 0 auto}.results-filter-row #setFilterSelect{min-width:230px}}@media(max-width:640px){.results-filter-row{flex-wrap:wrap;overflow:visible}.results-filter-row .filter-select{flex:1 1 calc(50% - 8px)}.results-filter-row .btn{flex:1 1 auto}.result-period-head>span:first-child{align-items:flex-start;flex-direction:column;gap:3px}.result-period-head{padding:14px}.result-period-body{padding:8px}}
.library-list-head,.library-row{grid-template-columns:minmax(240px,1.45fr) minmax(170px,.9fr) minmax(155px,.75fr) 125px 210px;gap:16px}.library-scope{min-width:0}.library-scope p{margin:0;color:var(--sub);font-size:11.5px;line-height:1.55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.library-scope b{color:var(--ink);font-size:10.5px;margin-right:4px}@media(max-width:900px){.library-list-head{display:none}.library-row{grid-template-columns:minmax(0,1fr) auto;gap:12px}.library-title{grid-column:1/-1}.library-scope{grid-column:1/-1;padding:8px 10px;border-radius:8px;background:var(--grid)}.library-meta,.library-date{align-self:start}.library-actions{grid-column:1/-1;justify-content:flex-start;padding-top:10px;border-top:1px dashed var(--line)}}@media(max-width:520px){.library-row{grid-template-columns:1fr;padding:15px}.library-title,.library-scope,.library-actions{grid-column:1}.library-meta{flex-direction:row;align-items:center;flex-wrap:wrap}.library-actions .btn{flex:1}.library-date{padding-top:2px}}
