:root{--orange: #E8650A;--orange-d: #C9540A;--orange-soft: #FFF1E8;--bg: #F5F7FA;--surface: #FFFFFF;--green: #16A34A;--green-soft: #E8F6EE;--amber: #F59E0B;--amber-soft: #FEF3E2;--red: #E0533D;--red-soft: #FCEBE7;--purple: #7C3AED;--purple-soft: #F1EAFE;--text: #1F2937;--text-soft: #6B7280;--text-faint: #9CA3AF;--border: #E8EBF0;--dark: #0F4C5C;--radius: 18px;--radius-sm: 12px;--shadow-sm: 0 1px 3px rgba(31, 41, 55, .06), 0 1px 2px rgba(31, 41, 55, .04);--shadow: 0 6px 20px rgba(31, 41, 55, .08);--font-ui: "Plus Jakarta Sans", "Noto Sans TC", system-ui, sans-serif;--font-tc: "Noto Sans TC", "Plus Jakarta Sans", system-ui, sans-serif}html,body{margin:0;padding:0}body{font-family:var(--font-tc);background:var(--bg);color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}.admin-shell{display:flex;min-height:100vh;background:var(--bg)}.sidebar{width:240px;flex:0 0 auto;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:22px 16px;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:10px;font-family:var(--font-ui);font-weight:800;font-size:17px;color:var(--text);padding:4px 8px 22px}.sidebar-brand .logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--orange),#FF8A3D);display:grid;place-items:center;color:#fff;font-size:18px;box-shadow:0 4px 10px #e8650a59}.sidebar-brand small{display:block;font-family:var(--font-tc);font-weight:500;font-size:11.5px;color:var(--text-faint)}.sidebar-nav{display:flex;flex-direction:column;gap:4px;flex:1}.sidebar-nav-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:11px;font-family:var(--font-ui);font-weight:600;font-size:14px;color:var(--text-soft);cursor:pointer;text-decoration:none;border:0;background:transparent;text-align:left;width:100%;transition:.15s}.sidebar-nav-item:hover{background:var(--bg);color:var(--text)}.sidebar-nav-item.active{background:var(--orange-soft);color:var(--orange-d)}.sidebar-nav-item .ic{width:22px;text-align:center;font-size:16px}.sidebar-footer{border-top:1px solid var(--border);padding-top:14px;margin-top:12px;display:flex;flex-direction:column;gap:8px}.sidebar-user{display:flex;align-items:center;gap:10px;padding:8px 10px}.sidebar-user .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#ffd0a8,#ffb877);flex:0 0 auto}.sidebar-user .info{min-width:0;flex:1}.sidebar-user .info b{display:block;font-family:var(--font-ui);font-size:12.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user .info .role{font-size:10.5px;font-weight:700;margin-top:2px}.sidebar-user .info .role.admin{color:var(--orange-d)}.sidebar-user .info .role.readonly{color:var(--text-soft)}.sidebar-logout{border:0;background:var(--bg);color:var(--text-soft);font-family:var(--font-ui);font-weight:600;font-size:12.5px;padding:9px 12px;border-radius:10px;cursor:pointer;text-align:center}.sidebar-logout:hover{background:#eceef3;color:var(--text)}.main{flex:1;min-width:0}.web-pad{padding:30px 36px 40px}.web-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:16px;flex-wrap:wrap}.web-head h1{font-family:var(--font-ui);font-size:23px;font-weight:800;letter-spacing:-.4px;margin:0;color:var(--text)}.web-head p{color:var(--text-soft);font-size:13.5px;margin:4px 0 0}.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-ui);font-weight:700;font-size:12.5px;padding:5px 11px;border-radius:999px}.badge.safe{background:var(--green-soft);color:var(--green)}.badge.warn{background:var(--amber-soft);color:#b45309}.badge.danger{background:var(--red-soft);color:#b23a26}.badge.ai{background:var(--purple-soft);color:var(--purple)}.badge.neutral{background:var(--bg);color:var(--text-soft)}.label{font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:.4px}.h-title{font-family:var(--font-ui);font-weight:800;letter-spacing:-.4px}.muted{color:var(--text-soft)}.faint{color:var(--text-faint)}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.kpi .v{font-family:var(--font-ui);font-weight:800;font-size:28px;letter-spacing:-.5px;color:var(--text)}.kpi .k{font-size:12.5px;color:var(--text-faint);font-weight:600}.kpi .d{font-size:12px;font-weight:700;margin-top:6px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px}table.tbl{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}table.tbl th{text-align:left;font-family:var(--font-ui);font-size:12px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.4px;padding:13px 18px;background:#fafbfc;border-bottom:1px solid var(--border)}table.tbl td{padding:14px 18px;font-size:13.5px;border-bottom:1px solid var(--border);color:var(--text)}table.tbl tr:last-child td{border-bottom:0}.btn{font-family:var(--font-ui);font-weight:700;font-size:15px;border:0;border-radius:14px;padding:15px 20px;cursor:pointer;transition:.15s}.btn-primary{background:var(--orange);color:#fff;box-shadow:0 8px 18px #e8650a52}.btn-primary:hover{background:var(--orange-d)}.btn-ghost{background:var(--surface);color:var(--text);border:1.5px solid var(--border)}.btn-sm{padding:10px 16px;font-size:13px;border-radius:11px}.seg{display:flex;gap:8px}.seg .chip{text-align:center;padding:9px 14px;border-radius:11px;font-family:var(--font-ui);font-weight:600;font-size:13px;background:var(--surface);border:1.5px solid var(--border);color:var(--text-soft);cursor:pointer}.seg .chip.on{border-color:var(--orange);background:var(--orange-soft);color:var(--orange-d)}.search-input{width:280px;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;font-family:var(--font-tc);font-size:13.5px;background:var(--surface);outline:none;color:var(--text)}.search-input:focus{border-color:var(--orange)}.no-permission{margin:60px auto;max-width:480px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:40px 32px;text-align:center;box-shadow:var(--shadow-sm)}.no-permission .ic{font-size:48px;margin-bottom:12px}.no-permission h2{font-family:var(--font-ui);font-size:18px;font-weight:800;color:var(--text);margin:0 0 6px}.no-permission p{color:var(--text-soft);font-size:13.5px;margin:0}
