/* Atlas 題目管理：沿用 design.css 的 CIS 色票與字型，後台密度較高，考試正文維持 Arial。 */
@font-face{font-family:'Noto Sans TC';src:url('noto-sans-tc-regular.otf')}
@font-face{font-family:'Noto Sans TC';src:url('noto-sans-tc-bold.otf');font-weight:700;font-display:swap}
@font-face{font-family:Poppins;src:url('poppins-regular.ttf')}
@font-face{font-family:Poppins;src:url('poppins-medium.ttf');font-weight:500}
@font-face{font-family:Poppins;src:url('poppins-bold.ttf');font-weight:700}
:root{--ink:#031440;--space:#5343fe;--space-hover:#1e00b9;--tint:#eeedff;--pale:#d7e2f4;--ground:#f4f7fc;--muted:#55607a;--faint:#8b94a8;--warn:#c8481c;--warn-tint:#fff0ea;--ok:#0a7a52;--ok-tint:#e5f6ef;--info:#0b78ad;--info-tint:#e4f5fd;--err:#c0263c;--err-tint:#fdecef;--radius:10px;--side:248px}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--ground);color:var(--ink);font:14px/1.6 'Noto Sans TC',sans-serif;padding-bottom:44px}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,p{margin:0}
a{color:var(--space)}a:hover{color:var(--space-hover)}
:focus-visible{outline:3px solid #18b6ff;outline-offset:2px}
.en{font-family:Poppins,sans-serif}
.mono{font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.muted{color:var(--muted)}.small{font-size:12px}
.qa-link{background:none;border:0;padding:0;color:var(--space);cursor:pointer;text-decoration:underline;text-underline-offset:2px}

/* 外框 */
.qa-shell{display:grid;grid-template-columns:var(--side) minmax(0,1fr);min-height:calc(100dvh - 44px)}
.qa-side{background:#fff;border-right:1px solid var(--pale);padding:18px 12px 24px;display:flex;flex-direction:column;gap:16px;position:sticky;top:0;height:calc(100dvh - 44px);overflow-y:auto}
.qa-logo{display:flex;align-items:center;gap:10px;padding:0 8px;color:var(--ink);text-decoration:none}
.qa-logo img{width:88px;height:auto;display:block}
.qa-logo span{font-size:12px;color:var(--muted);border-left:1px solid var(--pale);padding-left:10px}
.qa-space{border:1px solid var(--pale);border-radius:var(--radius);padding:10px 12px;background:var(--ground)}
.qa-space strong{display:block;font:700 18px/1.3 Poppins,sans-serif}
.qa-space small{color:var(--muted);font-size:12px;display:block}
.qa-space-switch{display:grid;grid-template-columns:1fr 1fr;background:var(--ground);border:1px solid var(--pale);border-radius:var(--radius);padding:3px;gap:3px}
.qa-space-switch a{display:flex;align-items:center;justify-content:center;min-height:34px;border-radius:7px;text-decoration:none;color:var(--muted);font:500 13px Poppins,sans-serif}
.qa-space-switch a[aria-current=true]{background:#fff;color:var(--ink);box-shadow:0 0 0 1px var(--pale)}
.qa-space-role{font-size:12px;color:var(--muted);padding:0 8px;margin-top:-8px}
.qa-nav{display:flex;flex-direction:column;gap:2px}
.qa-nav a{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px;padding:6px 10px;border-radius:8px;color:var(--ink);text-decoration:none}
.qa-nav a:hover{background:var(--ground);color:var(--ink)}
.qa-nav a[aria-current=page]{background:var(--tint);color:var(--space)}
.qa-count{font:500 11px Poppins,sans-serif;min-width:20px;text-align:center;padding:0 6px;border-radius:10px;background:var(--pale);color:var(--ink)}
.qa-count.hot{background:var(--space);color:#fff}
.qa-tree-label{font-size:12px;color:var(--muted);padding:0 10px;margin-bottom:4px}
.qa-tree details{border-radius:8px}
.qa-tree summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:34px;padding:4px 10px;border-radius:8px;cursor:pointer}
.qa-tree summary::-webkit-details-marker{display:none}
.qa-tree summary:hover{background:var(--ground)}
.qa-tree summary .chev{width:7px;height:7px;border-right:1.5px solid var(--faint);border-bottom:1.5px solid var(--faint);transform:rotate(-45deg);margin-right:8px;flex:none;transition:transform .12s}
.qa-tree details[open] summary .chev{transform:rotate(45deg)}
.qa-tree summary>span:first-child{display:flex;align-items:center}
.qa-tree summary a{color:inherit;text-decoration:none}
.qa-tree ul{list-style:none;margin:0 0 4px;padding:0 0 0 22px}
.qa-tree li a{display:flex;justify-content:space-between;gap:8px;padding:4px 8px;border-radius:6px;font:12px/1.45 Poppins,'Noto Sans TC',sans-serif;color:var(--muted);text-decoration:none}
.qa-tree li a:hover{background:var(--ground);color:var(--ink)}
.qa-tree li a[aria-current=page]{background:var(--tint);color:var(--space)}
.qa-tree li a b{font-weight:500;flex:none}
.qa-side-bottom{margin-top:auto;display:flex;flex-direction:column;gap:8px}
.qa-side-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px;border-top:1px solid var(--pale);font-size:12px;color:var(--muted)}
.qa-side-foot strong{display:block;color:var(--ink);font-size:14px;font-weight:400}

.qa-main{padding:26px 32px 48px;min-width:0;max-width:1320px}
.qa-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px;flex-wrap:wrap}
.qa-head h1{font-size:24px;line-height:1.35;font-weight:700}
.qa-crumb{font-size:12px;color:var(--muted);margin-bottom:4px}
.qa-crumb a{color:var(--muted)}
.qa-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* 按鈕與表單 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 16px;border-radius:var(--radius);border:1px solid var(--pale);background:#fff;color:var(--ink);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background-color .15s,border-color .15s}
.btn:hover{border-color:var(--space);color:var(--ink)}
.btn.primary{background:var(--space);border-color:var(--space);color:#fff}
.btn.primary:hover{background:var(--space-hover);border-color:var(--space-hover);color:#fff}
.btn.danger{color:var(--err);border-color:#f0c3ca}
.btn.danger:hover{background:var(--err-tint);border-color:var(--err);color:var(--err)}
.btn.small{min-height:32px;padding:0 10px;font-size:13px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.on-ok{background:var(--ok-tint);border-color:var(--ok);color:var(--ok)}
.btn.on-warn{background:var(--warn-tint);border-color:var(--warn);color:var(--warn)}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field>span,.field-label{font-size:12px;color:var(--muted)}
input[type=text],input[type=search],input[type=number],input[type=url],select,textarea{width:100%;min-height:40px;padding:8px 10px;background:#fff;border:1px solid var(--pale);border-radius:8px}
input:focus,select:focus,textarea:focus{border-color:var(--space);outline:0;box-shadow:0 0 0 3px var(--tint)}
textarea{resize:vertical;min-height:72px;line-height:1.6}
textarea.exam,input.exam{font-family:Arial,sans-serif}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.check{display:flex;align-items:flex-start;gap:8px;cursor:pointer}
.check input{margin:4px 0 0;width:16px;height:16px;accent-color:var(--space);flex:none}

/* 卡片與表格 */
.card{background:#fff;border:1px solid var(--pale);border-radius:14px;padding:18px 20px}
.card+.card{margin-top:14px}
.card>h2,.card-title{font-size:16px;font-weight:700;margin-bottom:12px}
.card-sub{color:var(--muted);font-size:12px;margin:-8px 0 12px}
.table-wrap{background:#fff;border:1px solid var(--pale);border-radius:14px;overflow-x:auto}
table.qa{width:100%;border-collapse:collapse;min-width:720px}
table.qa th{font-family:Poppins,sans-serif;font-size:12px;font-weight:700;color:var(--muted);text-align:left;padding:10px 14px;border-bottom:1px solid var(--pale);white-space:nowrap}
table.qa td{padding:11px 14px;border-bottom:1px solid #eef2f9;vertical-align:middle}
table.qa tr:last-child td{border-bottom:0}
table.qa tbody tr.row-link{cursor:pointer}
table.qa tbody tr.row-link:hover{background:#fafbff}
table.qa td a.title{color:var(--ink);text-decoration:none;font-family:Poppins,'Noto Sans TC',sans-serif}
table.qa td a.title:hover{color:var(--space)}
td.num,th.num{text-align:right;font-family:Poppins,sans-serif}
table.qa.center-nums th.num,table.qa.center-nums td.num{text-align:center}
td.zero{color:var(--err)}
td.low{color:var(--warn)}
select.err-tag{width:130px;flex:none;font-size:12px}
td.dim{color:var(--faint)}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:1px 8px;border-radius:20px;white-space:nowrap;background:#edf0f5;color:var(--muted)}
.badge::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.badge.plain::before{display:none}
.badge.blue{background:var(--info-tint);color:var(--info)}
.badge.warn{background:var(--warn-tint);color:var(--warn)}
.badge.purple{background:var(--tint);color:var(--space)}
.badge.green{background:var(--ok-tint);color:var(--ok)}
.chip{display:inline-block;font:11px/1.5 Poppins,sans-serif;padding:1px 7px;border-radius:5px;background:var(--ground);border:1px solid var(--pale);color:var(--muted);white-space:nowrap}
.chip.hot{background:var(--warn-tint);border-color:#f6cdbd;color:var(--warn)}

/* 總覽 */
.todo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-bottom:16px}
.todo{display:block;background:#fff;border:1px solid var(--pale);border-radius:14px;padding:14px 18px;color:var(--ink);text-decoration:none}
.todo:hover{border-color:var(--space);color:var(--ink)}
.todo b{display:block;font:700 28px/1.2 Poppins,sans-serif}
.todo small{color:var(--muted);font-size:13px}
.section-title{font-size:16px;font-weight:700;margin:22px 0 4px}
.section-sub{color:var(--muted);font-size:12px;margin-bottom:10px}
.level-cell{display:inline-block;min-width:26px;text-align:center}
tr.skill-row td{background:var(--ground);font-size:12px;color:var(--muted);padding:6px 14px}

/* 篩選 */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.filters input[type=search]{flex:1 1 220px;min-width:180px}
.filters select{flex:0 1 150px}
.empty{padding:36px;text-align:center;color:var(--muted)}

/* 題組內容 */
.banner{display:flex;gap:10px;padding:10px 14px;border-radius:10px;margin-bottom:14px;font-size:13px;border:1px solid}
.banner.warn{background:var(--warn-tint);border-color:#f6cdbd;color:#8a3413}
.banner.info{background:var(--tint);border-color:var(--space-soft,#d6d3ff);color:var(--space-hover)}
.banner.err{background:var(--err-tint);border-color:#f0c3ca;color:#8a1b2c}
.banner b{font-weight:700}
.meta-row{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12px;color:var(--muted);margin-top:6px;align-items:center}
.split{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.rail{position:sticky;top:16px;display:flex;flex-direction:column;gap:12px}
.rail .card{padding:14px 16px;margin:0}
.rail h3{font-size:14px;font-weight:700;margin-bottom:8px}
.q-card{background:#fff;border:1px solid var(--pale);border-radius:14px;margin-bottom:12px;overflow:hidden}
.q-card.changed{border-left:3px solid var(--warn)}
.q-head{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid #eef2f9;flex-wrap:wrap}
.q-head strong{font-weight:700;margin-right:2px}
.q-head .spacer{margin-left:auto}
.q-body{padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.opt-row{display:flex;align-items:center;gap:8px}
.opt-row input[type=radio]{width:16px;height:16px;accent-color:var(--space);flex:none}
.opt-row .letter{font:500 12px Poppins,sans-serif;width:16px;color:var(--muted);flex:none}
.opt-list{display:flex;flex-direction:column;gap:6px}
.fixed-row{display:flex;gap:16px;flex-wrap:wrap}

/* 學生預覽：考試正文 Arial */
.student{font:15px/1.65 Arial,sans-serif;color:#10183a}
.student-passage{white-space:pre-wrap;background:#fbfcff;border:1px solid #e7edf7;border-radius:10px;padding:12px 14px;font:15px/1.7 Arial,sans-serif;color:#10183a}
.blank{display:inline-block;border-bottom:1px dashed var(--space);background:var(--ground);color:transparent;padding:0 2px;letter-spacing:1px;font-family:Arial}
.student .opt{display:flex;gap:8px;padding:5px 8px;border-radius:6px}
.student .opt.correct{background:var(--ok-tint)}
.student .opt.correct::after{content:'正解';font:11px 'Noto Sans TC';color:var(--ok);margin-left:auto;flex:none;align-self:center}
.student .opt i{font-style:normal;color:var(--muted);flex:none}
.chunks{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.chunks span{border:1px solid var(--pale);padding:2px 10px;border-radius:6px;background:#fff}
.media-note{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);background:var(--ground);border-radius:8px;padding:6px 10px;word-break:break-all}
.key{border-top:1px dashed var(--pale);padding-top:10px;font-size:13px;color:var(--muted)}
.key b{color:var(--ink);font-weight:400}
.diff{font-size:12px;background:var(--warn-tint);border-radius:8px;padding:8px 10px;color:#8a3413}
.diff del{color:var(--err)}
.decision{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.decision input{flex:1 1 200px}

.chk-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;font-size:13px}
.chk-list li{display:flex;gap:7px}
.chk-list li::before{content:'';flex:none;width:8px;height:8px;margin-top:6px;border-radius:50%;background:var(--ok)}
.chk-list li.error::before{background:var(--err)}
.chk-list li.warn::before{background:#e0a100}
.stack{display:flex;flex-direction:column;gap:8px}
.reason{font-size:12px;color:var(--warn)}
.progress{display:inline-flex;gap:3px;align-items:center;font:12px Poppins,sans-serif;color:var(--muted)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--pale);margin-bottom:14px}
.tabs a{padding:8px 14px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a[aria-current=page]{color:var(--space);border-color:var(--space)}
.kv{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 14px;font-size:13px;margin:0}
.kv dt{color:var(--muted)}.kv dd{margin:0;min-width:0;word-break:break-word}
pre.payload{background:#0b1433;color:#dfe6ff;border-radius:10px;padding:12px;max-height:260px;overflow:auto;font:12px/1.5 ui-monospace,Menlo,monospace;white-space:pre-wrap;word-break:break-all;margin:0}
.tagpick{display:flex;flex-wrap:wrap;gap:6px}
.tagpick label{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:2px 9px;border:1px solid var(--pale);border-radius:14px;cursor:pointer;min-height:28px}
.tagpick label:has(input:checked){background:var(--tint);border-color:var(--space);color:var(--space)}
.tagpick input{accent-color:var(--space);margin:0}

/* 對話框、提示、示範列 */
.qa-dialog{border:1px solid var(--pale);border-radius:18px;padding:24px;width:min(92vw,560px);max-height:88dvh;color:var(--ink);box-shadow:0 20px 80px #03144030}
.qa-dialog.wide{width:min(94vw,760px)}
.qa-dialog::backdrop{background:#03144066}
.qa-dialog h2{font-size:20px;margin-bottom:8px}
.qa-dialog p{color:var(--muted);margin-bottom:12px;font-size:13px}
.dlg-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;flex-wrap:wrap}
.qa-toast{position:fixed;z-index:50;bottom:60px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:10px;max-width:min(90vw,620px);font-size:13px}
.qa-toast.err{background:var(--err)}
.qa-demo-bar{position:fixed;z-index:40;bottom:0;left:0;right:0;height:44px;display:flex;align-items:center;gap:12px;padding:0 16px;background:#f9fbff;border-top:1px solid var(--pale);font-size:12px;color:var(--muted)}
.qa-demo-tag{background:var(--tint);color:var(--space);border-radius:5px;padding:2px 7px;white-space:nowrap}
.qa-demo-bar label{display:flex;align-items:center;gap:6px;white-space:nowrap}
.qa-demo-bar select{min-height:30px;padding:2px 6px;font-size:12px;width:auto;max-width:280px}
.qa-demo-note{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.denied{max-width:480px;margin:12vh auto;text-align:center}
.denied h1{font-size:22px;margin-bottom:8px}.denied p{color:var(--muted);margin-bottom:16px}

@media(max-width:1100px){.split{grid-template-columns:1fr}.rail{position:static}}
@media(max-width:860px){
  .qa-shell{grid-template-columns:1fr}
  .qa-side{position:static;height:auto;border-right:0;border-bottom:1px solid var(--pale)}
  .qa-tree{display:none}
  .qa-nav{flex-direction:row;overflow-x:auto}.qa-nav a{white-space:nowrap}
  .qa-side-bottom{margin-top:0}
  .qa-main{padding:18px 16px 40px}
  .grid2,.grid3{grid-template-columns:1fr}
  .qa-demo-note{display:none}
  .qa-demo-tag{display:none}
  .qa-demo-bar{justify-content:space-between}
  .qa-demo-bar select{max-width:190px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Drive 題目 */
.ai-chip { margin-top: 4px; display: inline-block; }
.passage-img { display: block; max-width: 100%; max-height: 520px; height: auto; border: 1px solid var(--pale); border-radius: 6px; }
.passage-title { font-family: Arial, sans-serif; font-weight: 700; }
.student-passage, .student > div:first-child { white-space: pre-line; }
.prewrap { white-space: pre-line; }
.fold { margin-top: 6px; }
.fold summary { cursor: pointer; }
.fold-body { white-space: pre-line; padding: 6px 0 2px 16px; }
.blank-notes { flex: 1; min-width: 0; display: grid; gap: 6px; }
.blank-notes .fold textarea { margin-top: 6px; }
.opt-row textarea { flex: 1; min-width: 0; }

/* 考試切換：位置固定保留，沒有權限或尚未開放的考試顯示停用 */
.qa-space-switch .off{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);opacity:.6;cursor:not-allowed;line-height:1.2;text-align:center}
.qa-space-switch .off small{font:400 10px 'Noto Sans TC',sans-serif}
.qa-space-label{font-size:12px;color:var(--muted);margin-top:-8px;padding:0 4px}

/* 登入頁：版面與用色沿用 tq（dashboard/static/accounts.css） */
.auth-screen{min-height:calc(100dvh - 44px);display:grid;grid-template-columns:minmax(360px,.95fr) minmax(420px,1.05fr);background:#f6f8fc}
.auth-brand{background:var(--ink);color:#fff;padding:clamp(36px,6vw,96px);display:flex;flex-direction:column;justify-content:space-between;gap:70px;position:relative;overflow:hidden}
.auth-brand::after{content:'';position:absolute;width:480px;height:480px;border:85px solid var(--space);border-radius:50%;right:-280px;bottom:-220px;opacity:.45;pointer-events:none}
.auth-brand>img{width:176px;max-width:70%}
.auth-eyebrow{display:block;font:700 9px Poppins,sans-serif;letter-spacing:2.1px;color:var(--space-hover)}
.auth-brand .auth-eyebrow{color:#9be0f7;font-size:11px;letter-spacing:.18em}
.auth-brand h1{color:#fff;font-size:clamp(30px,3.2vw,48px);font-weight:700;line-height:1.5;margin:22px 0;letter-spacing:.01em}
.auth-brand p{color:var(--pale);line-height:1.8;margin:0}
.auth-brand-foot{color:#b8b8fe;font-size:12px;position:relative;z-index:1}
.auth-entry{display:flex;justify-content:center;align-items:center;padding:44px 32px}
.auth-card{width:100%;max-width:430px}
.auth-card h2{font-size:30px;font-weight:700;margin:15px 0 12px}
.auth-desc{color:var(--muted);line-height:1.8;margin:0 0 28px}
.auth-error{margin-bottom:20px;padding:10px 14px;border-radius:9px;background:var(--err-tint);color:var(--err);font-size:13px}
#auth-form>label{display:block;font-size:13px;font-weight:700;margin:19px 0 9px}
#auth-email,#auth-password,#auth-current,#auth-new,#auth-confirm{width:100%;min-height:47px;border:1px solid #c0c4cf;border-radius:9px;background:#fff;padding:11px 13px;color:var(--ink);font:inherit}
#auth-email:focus,#auth-password:focus,#auth-current:focus,#auth-new:focus,#auth-confirm:focus{border-color:var(--space);outline:3px solid #f1f0ff}
.auth-mobile-logo{display:none;width:130px;margin-bottom:30px}
.auth-remember{margin-top:22px;padding:14px 16px;border:1px solid #e7eef8;background:#f3f6fb;border-radius:10px}
.auth-remember-choice{display:flex;align-items:center;gap:10px;min-height:36px;cursor:pointer;font-size:14px}
.auth-remember-choice input{width:18px;height:18px;flex-shrink:0;accent-color:var(--space)}
.auth-remember-choice>span{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.auth-remember-period{color:var(--space-hover);background:#f1f0ff;border-radius:5px;padding:3px 7px;font-size:11px}
.auth-remember p{font-size:12px;color:var(--muted);line-height:1.8;margin:7px 0 0}
.auth-submit{width:100%;min-height:47px;margin-top:28px}
.auth-footnote{margin:30px 0 0;font-size:12px;color:var(--muted)}
.auth-demo{margin-top:14px;font-size:12px;color:var(--muted)}
.auth-demo summary{cursor:pointer}
.auth-demo-users{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px;margin-top:10px}
.auth-demo-users .btn{flex-direction:column;align-items:flex-start;gap:0;height:auto;padding:6px 10px;white-space:normal;text-align:left}
.auth-demo-users small{color:var(--muted);font-size:11px}
.qa-signed-out .qa-demo-bar label,.qa-signed-out #qa-reset{display:none}
@media(max-width:860px){.auth-screen{grid-template-columns:1fr}.auth-brand{display:none}.auth-entry{padding:36px 24px}.auth-mobile-logo{display:block}.auth-card h2{font-size:27px}}
.auth-brand>div,.auth-brand>img{position:relative;z-index:1}

/* 側欄：深藍風格，色值沿用 tq（dashboard/static/styles.css .sidebar） */
.qa-side{--side-text:#d7e2f4;--side-muted:#adb9d0;--side-line:#3a4a6f;--side-soft:#1c2d56;--side-hover:rgba(255,255,255,.08);background:var(--ink);border-right:0;color:var(--side-text)}
.qa-side :focus-visible{outline:2px solid #9be0f7;outline-offset:2px}
.qa-side .qa-logo{color:#fff}
.qa-side .qa-logo span{color:var(--side-muted);border-left-color:var(--side-line)}
.qa-side .qa-space,.qa-side .qa-space-switch{background:var(--side-soft);border-color:var(--side-line)}
.qa-side .qa-space strong{color:#fff}
.qa-side .qa-space small,.qa-side .qa-space-role,.qa-side .qa-space-label,.qa-side .qa-tree-label{color:var(--side-muted)}
.qa-side .qa-space-switch a{color:var(--side-text)}
.qa-side .qa-space-switch a[aria-current=true]{background:#fff;color:var(--ink);box-shadow:none}
.qa-side .qa-space-switch .off{color:var(--side-muted);opacity:1}
.qa-side .qa-nav a{color:var(--side-text)}
.qa-side .qa-nav a:hover{background:var(--side-hover);color:#fff}
.qa-side .qa-nav a[aria-current=page]{background:var(--space);color:#fff}
.qa-side .qa-count{background:var(--side-soft);color:#fff}
.qa-side .qa-count.hot{background:var(--space);color:#fff}
.qa-side .qa-nav a[aria-current=page] .qa-count{background:#fff;color:var(--space)}
.qa-side .qa-tree summary:hover,.qa-side .qa-tree li a:hover{background:var(--side-hover);color:#fff}
.qa-side .qa-tree summary .chev{border-color:var(--side-muted)}
.qa-side .qa-tree li a{color:var(--side-muted)}
.qa-side .qa-tree li a[aria-current=page]{background:var(--space);color:#fff}
.qa-side .qa-side-foot{border-top-color:var(--side-line);color:var(--side-muted)}
.qa-side .qa-side-foot strong{color:#fff}
.qa-side #qa-logout{background:transparent;border-color:var(--side-line);color:#fff}
.qa-side #qa-logout:hover{background:var(--side-hover);color:#fff}
.qa-settings summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px;padding:6px 10px;border-radius:8px;cursor:pointer;color:var(--side-text)}
.qa-settings summary::-webkit-details-marker{display:none}
.qa-settings summary:hover{background:var(--side-hover);color:#fff}
.qa-settings .chev{width:7px;height:7px;border-right:1.5px solid var(--side-muted);border-bottom:1.5px solid var(--side-muted);transform:rotate(-45deg);flex:none;transition:transform .12s}
.qa-settings[open] .chev{transform:rotate(45deg)}
.qa-settings .qa-nav{flex-direction:column;overflow:visible;padding:2px 0 0 12px}

/* 審核區塊：壓底色，判定按鈕加重，已選時實心 */
.q-body .decision{margin:2px -16px -14px;padding:12px 16px;background:var(--tint);border-top:1px solid #d9d6ff;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.decision-label{font-size:13px;font-weight:700;color:var(--ink);margin-right:4px}
.q-body .decision input{flex:1 1 200px;min-width:0;background:#fff}
.q-body .decision .btn{min-height:40px;padding:0 18px;font-size:14px;font-weight:700;border-width:1.5px}
.q-body .decision .ok-btn{background:#fff;border-color:var(--ok);color:var(--ok)}
.q-body .decision .ok-btn:hover{background:var(--ok-tint);border-color:var(--ok);color:var(--ok)}
.q-body .decision .warn-btn{background:#fff;border-color:var(--warn);color:var(--warn)}
.q-body .decision .warn-btn:hover{background:var(--warn-tint);border-color:var(--warn);color:var(--warn)}
.q-body .decision .ok-btn.on-ok,.q-body .decision .ok-btn.on-ok:hover{background:var(--ok);border-color:var(--ok);color:#fff}
.q-body .decision .warn-btn.on-warn,.q-body .decision .warn-btn.on-warn:hover{background:var(--warn);border-color:var(--warn);color:#fff}
.rail .review-card{background:var(--tint);border-color:#d9d6ff}
.rail .review-card .btn:not(.primary){background:#fff;border-color:var(--space);color:var(--space);font-weight:700}
.rail .review-card .btn:not(.primary):hover{background:#fff;border-color:var(--space-hover);color:var(--space-hover)}
.rail .review-card .btn.primary{min-height:44px;font-weight:700}
.rail .review-card .btn{font-weight:700}
.rail .review-card .kv dt{color:var(--muted)}

/* 側欄審核流程：依步驟排序，以直線串接 */
.qa-steps{gap:0}
.qa-side .qa-steps a{position:relative;justify-content:flex-start;gap:10px}
.qa-steps a>i{position:relative;z-index:1;width:20px;height:20px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;background:var(--side-soft);border:1px solid var(--side-line);color:var(--side-text);font:500 11px Poppins,sans-serif}
.qa-steps a:not(:last-child)::after{content:'';position:absolute;left:19.5px;top:calc(50% + 10px);height:calc(100% - 20px);width:1px;background:var(--side-line)}
.qa-steps a>span:first-of-type{flex:1;min-width:0}
.qa-side .qa-steps a[aria-current=page]>i{background:#fff;border-color:#fff;color:var(--space)}
.qa-side .qa-steps .qa-count.zero{background:transparent;color:var(--side-muted)}
@media(max-width:860px){.qa-steps a:not(:last-child)::after{display:none}.qa-steps a{flex:none}.qa-side .qa-steps a{gap:6px}}

/* 審核流程頁的科目切換 */
.skill-tabs{overflow-x:auto;margin-bottom:12px}
.skill-tabs a{display:flex;align-items:center;gap:6px;white-space:nowrap;flex:none}
.skill-tabs a[aria-current=page]{font-weight:700}
.tab-count{font:500 11px Poppins,sans-serif;min-width:20px;padding:0 6px;border-radius:10px;text-align:center;background:var(--pale);color:var(--ink)}
.skill-tabs a[aria-current=page] .tab-count{background:var(--space);color:#fff}

.qa-crumb a.qa-back{display:inline-flex;align-items:center;gap:6px;min-height:32px;font-size:14px;font-weight:700;color:var(--space);text-decoration:none}
.qa-crumb a.qa-back:hover{color:var(--space-hover);text-decoration:underline}

/* 審核流程頁的題型切換（選定科目後出現） */
.type-tabs{display:flex;gap:6px;overflow-x:auto;margin-bottom:16px;padding-bottom:2px}
.type-tabs a{display:flex;align-items:center;gap:6px;flex:none;white-space:nowrap;min-height:34px;padding:0 12px;border:1px solid var(--pale);border-radius:8px;background:#fff;color:var(--muted);font:13px Poppins,'Noto Sans TC',sans-serif;text-decoration:none}
.type-tabs a b{font-weight:700;color:var(--ink)}
.type-tabs a:hover{border-color:var(--space);color:var(--space)}
.type-tabs a[aria-current=page]{background:var(--space);border-color:var(--space);color:#fff}
.type-tabs a[aria-current=page] b{color:#fff}
.type-tabs a[aria-current=page] .tab-count{background:#fff;color:var(--space)}
/* 第三層難度頁籤：外觀與第二層題型相同 */
.type-tabs:has(+ .level-tabs){margin-bottom:8px}
.level-tabs{display:flex;gap:6px;overflow-x:auto;margin-bottom:16px;padding-bottom:2px}
.level-tabs a{display:flex;align-items:center;gap:6px;flex:none;white-space:nowrap;min-height:34px;padding:0 12px;border:1px solid var(--pale);border-radius:8px;background:#fff;color:var(--muted);font:13px Poppins,'Noto Sans TC',sans-serif;text-decoration:none}
.level-tabs a:hover{border-color:var(--space);color:var(--space)}
.level-tabs a[aria-current=page]{background:var(--space);border-color:var(--space);color:#fff}
.level-tabs a[aria-current=page] .tab-count{background:#fff;color:var(--space)}
/* 權限對話框：托福、雅思各一區 */
.grant-exam{border:1px solid var(--pale);border-radius:10px;padding:12px 14px}
.grant-toggle{display:flex;align-items:center;gap:8px;font-weight:700;cursor:pointer}
.grant-toggle input{accent-color:var(--space);margin:0}
.grant-body{margin-top:12px}
.grant-body[hidden]{display:none}
