:root{--pri:#0e7490;--pri-d:#155e75;--acc:#0891b2;--ok:#059669;--warn:#d97706;--bad:#dc2626;--bg:#f1f5f9;--tx:#0f172a;--mut:#64748b;--bd:#e2e8f0}
*{margin:0;padding:0;box-sizing:border-box;font-family:"Microsoft JhengHei","Noto Sans TC",sans-serif}body{background:var(--bg);color:var(--tx)}a{color:var(--acc);text-decoration:none}.hide{display:none!important}
header{background:linear-gradient(135deg,var(--pri-d),var(--pri));color:#fff;position:sticky;top:0;z-index:50;box-shadow:0 2px 8px #0002}.hwrap{max-width:1100px;margin:auto;display:flex;align-items:center;gap:14px;padding:10px 16px;flex-wrap:wrap}.logo{font-size:16px;font-weight:700;color:#fff}.logo small{display:block;font-size:10.5px;font-weight:400;opacity:.85}nav{display:flex;gap:2px;flex-wrap:wrap;margin-left:auto}nav a{color:#e0f2fe;padding:8px 13px;border-radius:8px;font-size:14px}nav a:hover,nav a.on{background:#ffffff30;color:#fff}.uinfo{font-size:12px;color:#e0f2fe;text-align:right}.uinfo a{color:#bae6fd}
main{max-width:1100px;margin:auto;padding:20px 16px 48px}.card{background:#fff;border:1px solid var(--bd);border-radius:14px;padding:20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000d}h1,h2{font-size:18px;margin-bottom:12px}h3{font-size:15px;margin-bottom:8px}.mut{color:var(--mut);font-size:13px}.tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:700}.tag.ok{background:#d1fae5;color:var(--ok)}.tag.warn{background:#fef3c7;color:var(--warn)}.tag.bad{background:#fee2e2;color:var(--bad)}.tag.info{background:#e0f2fe;color:var(--acc)}
.btn{display:inline-block;background:var(--pri);color:#fff;border:none;padding:10px 20px;border-radius:10px;font-size:14px;cursor:pointer;font-weight:700}.btn:hover{background:var(--pri-d)}.btn[disabled]{opacity:.55;cursor:not-allowed;background:#94a3b8}.btn.ghost{background:#fff;color:var(--pri);border:1.5px solid var(--pri)}.btn.sm{padding:6px 14px;font-size:13px}.btn.bad{background:var(--bad)}
table{width:100%;border-collapse:collapse;font-size:13.5px}th{background:#f8fafc;text-align:left;padding:9px 12px;border-bottom:2px solid var(--bd);font-size:12.5px;color:var(--mut);white-space:nowrap}td{padding:9px 12px;border-bottom:1px solid var(--bd)}tr:hover td{background:#f8fafc}.twrap{overflow-x:auto}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.fld{margin-bottom:14px}.fld label{display:block;font-size:13px;font-weight:700;margin-bottom:5px}.fld input,.fld textarea,.fld select{width:100%;padding:11px 13px;border:1.5px solid var(--bd);border-radius:10px;font-size:15px;background:#fff}.alert{padding:10px 12px;border-radius:8px;font-size:13.5px;margin-bottom:14px}.alert.bad{background:#fee2e2;color:#7f1d1d}.alert.ok{background:#d1fae5;color:#065f46}.alert.info,.note{background:#f0f9ff;border-left:3px solid var(--acc);padding:10px 12px;font-size:12.5px;color:#0c4a6e}.banner{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b;border-radius:10px;padding:10px 14px;font-size:13px;color:#92400e;margin-bottom:16px}.pbar{height:7px;background:#e2e8f0;border-radius:4px;overflow:hidden}.pbar>div{height:100%;background:var(--acc)}.kpi{text-align:center}.kpi b{font-size:26px;color:var(--pri-d);display:block}.kpi span{font-size:12.5px;color:var(--mut)}
.hero{background:linear-gradient(135deg,#0c4a6e,#0e7490);color:#fff;border:none}.row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.course-cover{height:96px;background:linear-gradient(135deg,#67e8f9,#0e7490);display:flex;align-items:center;justify-content:center;color:#fff;font-size:30px}.aside{width:180px;flex-shrink:0}.aside a{display:block;padding:10px 12px;border-radius:8px;color:var(--tx);font-size:13.5px}.aside a:hover,.aside a.on{background:var(--pri);color:#fff}.admin-layout{display:flex;gap:16px;align-items:flex-start}.admin-content{flex:1;min-width:0}.question{padding:14px 0;border-bottom:1px solid var(--bd)}.question label{display:block;margin:8px 0}.actions{display:flex;gap:8px;flex-wrap:wrap}footer{text-align:center;padding:20px;font-size:12px;color:var(--mut)}
@media(max-width:700px){nav{order:3;width:100%;margin-left:0}.uinfo{margin-left:auto}.admin-layout{display:block}.aside{width:auto;position:static;display:flex;overflow:auto;margin-bottom:12px}.aside a{white-space:nowrap}.g2{grid-template-columns:1fr}}
