*{box-sizing:border-box}body{margin:0;font-family:"Noto Sans TC","Microsoft JhengHei",Arial,sans-serif;background:#f4f7fb;color:#1f2937}.container{max-width:1100px;margin:32px auto;padding:0 16px}.narrow{max-width:560px}.card{background:#fff;border-radius:16px;padding:24px;box-shadow:0 8px 24px rgba(15,23,42,.08);margin-bottom:18px}h1{font-size:28px;margin:0 0 18px;color:#0f172a}h2{font-size:20px;margin:0 0 14px}.muted{color:#64748b}.success{background:#ecfdf5;color:#047857;padding:12px;border-radius:10px}.error{background:#fef2f2;color:#b91c1c;padding:12px;border-radius:10px}.warning{background:#fffbeb;color:#92400e;padding:12px;border-radius:10px}.btn,button{display:inline-block;border:0;background:#2563eb;color:#fff;padding:9px 14px;border-radius:10px;text-decoration:none;cursor:pointer;font-size:15px;margin:2px}.btn:hover,button:hover{background:#1d4ed8}.secondary{background:#64748b}.secondary:hover{background:#475569}.danger{background:#dc2626}.danger:hover{background:#b91c1c}.green{background:#059669}.green:hover{background:#047857}input,select{width:100%;padding:10px;border:1px solid #cbd5e1;border-radius:10px;font-size:15px;background:#fff}.form-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px}.form-row.two{grid-template-columns:repeat(2,1fr)}label{display:block;font-weight:700;margin-bottom:6px}.topbar{background:#0f172a;color:#fff;padding:0}.topbar-inner{max-width:1100px;margin:0 auto;padding:14px 16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}.topbar a{color:#fff;text-decoration:none;font-weight:700;white-space:nowrap}.topbar a:hover{text-decoration:underline}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{border-bottom:1px solid #e2e8f0;padding:10px;text-align:left;white-space:nowrap}th{background:#eaf2ff;color:#0f172a}.actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.pager{margin-top:12px}.copy-code{font-weight:700;letter-spacing:1px;color:#0f172a}@media(max-width:760px){.form-row,.form-row.two{grid-template-columns:1fr}h1{font-size:23px}.container{margin:18px auto}th,td{font-size:14px}}


/* 前台登入頁：接近進步獎／校內成績系統的簡潔登入風格 */
.front-login-page{background:#eef3f8;min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:34px 12px}.login-shell{width:100%;max-width:720px;text-align:center}.front-title{font-size:30px;font-weight:800;color:#1e3a5f;margin:12px 0 26px}.login-card{background:#fff;border-radius:18px;box-shadow:0 10px 28px rgba(30,58,95,.12);padding:28px 30px;margin:0 auto;max-width:520px;text-align:left;border:1px solid #e5edf5}.login-card h2{text-align:center;font-size:22px;margin:0 0 24px;color:#334155}.login-card input{height:44px;border-radius:12px;border:1px solid #cbd5e1}.mt-16{margin-top:16px}.captcha-box{margin:14px auto 8px;display:flex;justify-content:center;gap:14px;font-size:25px;font-weight:800;letter-spacing:2px;color:#334155;background:#f8fafc;border:1px dashed #94a3b8;border-radius:14px;padding:14px 18px;user-select:none}.captcha-box span{display:inline-block;min-width:18px;text-align:center}.captcha-actions{text-align:center;margin:6px 0}.captcha-actions a{color:#2563eb;text-decoration:none;font-weight:700}.captcha-actions a:hover{text-decoration:underline}.small{font-size:14px;text-align:center}.login-btn{display:block;width:100%;height:46px;margin-top:16px;border-radius:12px;font-size:17px;font-weight:700}@media(max-width:760px){.front-title{font-size:23px}.login-card{padding:22px 18px}.captcha-box{gap:9px;font-size:22px}}


.admin-menu-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:16px}.admin-menu-card{display:block;background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:18px;text-decoration:none;color:#0f172a}.admin-menu-card:hover{background:#eef6ff;border-color:#93c5fd}.admin-menu-card strong{display:block;font-size:18px;margin-bottom:6px}.admin-menu-card span{display:block;color:#64748b;font-size:14px;line-height:1.5}@media(max-width:900px){.admin-menu-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.admin-menu-grid{grid-template-columns:1fr}.topbar-inner{justify-content:flex-start}}
