/* 【知识工作者®】智能教学工作台 —— 品牌设计系统
   移动优先 · 8px 基线 · WCAG 2.2 AA · 深色主题 · 金×紫品牌色 */
:root{
  /* 色阶 */
  --bg-0:#0E0C16; --bg-1:#16131F; --bg-2:#1E1A2B; --bg-3:#272236;
  --line:#322B48; --line-soft:#292340;
  --ink-0:#F4F2FA; --ink-1:#C9C5DA; --ink-2:#8E89A6;
  --gold-300:#F5CD6E; --gold-400:#E8B23A; --gold-500:#C9952A; --gold-900:#4A3810;
  --purple-300:#A68FFF; --purple-400:#7C5CFF; --purple-500:#5B3EE0; --purple-900:#241A55;
  --ok:#3ECF8E; --warn:#F5A524; --danger:#F0564A; --info:#4AA8F0;
  /* 字体刻度（8px 基线） */
  --fs-xs:12px; --fs-sm:13px; --fs-md:15px; --fs-lg:18px; --fs-xl:22px; --fs-2xl:28px; --fs-3xl:36px;
  /* 间距 */
  --sp-1:8px; --sp-2:16px; --sp-3:24px; --sp-4:32px; --sp-5:40px;
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:24px;
  --shadow-1:0 2px 10px rgba(0,0,0,.35);
  --shadow-2:0 8px 32px rgba(0,0,0,.45);
  --glow-gold:0 0 18px rgba(232,178,58,.35);
  --font:"Microsoft YaHei","PingFang SC","Source Han Sans SC",system-ui,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg-0);color:var(--ink-0);font-family:var(--font);font-size:var(--fs-md);line-height:1.7;min-height:100vh}
::selection{background:var(--purple-500);color:#fff}
a{color:var(--purple-300);text-decoration:none}
a:hover{color:var(--gold-300)}
button{font-family:var(--font);cursor:pointer}
input,select,textarea{font-family:var(--font);font-size:var(--fs-md);color:var(--ink-0);
  background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--purple-400);outline-offset:1px;border-color:var(--purple-400)}
input[type=checkbox],input[type=radio]{width:auto;padding:0;accent-color:var(--gold-400);flex:none;vertical-align:middle}
:focus-visible{outline:2px solid var(--gold-400);outline-offset:2px}
h1{font-size:var(--fs-2xl);line-height:1.3}
h2{font-size:var(--fs-xl);line-height:1.35}
h3{font-size:var(--fs-lg)}
small{font-size:var(--fs-xs);color:var(--ink-2)}

/* ---------- 布局 ---------- */
.wrap{max-width:1200px;margin:0 auto;padding:var(--sp-2)}
@media(min-width:768px){.wrap{padding:var(--sp-3)}}
.grid{display:grid;gap:var(--sp-2)}
.grid.cards{grid-template-columns:1fr}
@media(min-width:576px){.grid.cards{grid-template-columns:repeat(2,1fr)}}
@media(min-width:992px){.grid.cards{grid-template-columns:repeat(3,1fr)}}
.grid.cols-2{grid-template-columns:1fr}
@media(min-width:992px){.grid.cols-2{grid-template-columns:1fr 1fr}}

/* ---------- 组件 ---------- */
.card{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-3);
  box-shadow:var(--shadow-1);transition:transform .25s,border-color .25s,box-shadow .25s}
.card.hover:hover{transform:translateY(-3px);border-color:var(--purple-500);box-shadow:var(--shadow-2)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--r-sm);
  padding:11px 20px;font-size:var(--fs-md);font-weight:600;color:var(--ink-0);background:var(--bg-3);
  transition:transform .2s,box-shadow .2s,background .2s;min-height:44px}
.btn:hover{transform:scale(1.04)}
.btn:active{transform:scale(.96)}
.btn.gold{background:linear-gradient(135deg,var(--gold-400),var(--gold-500));color:#241A05;box-shadow:var(--glow-gold)}
.btn.purple{background:linear-gradient(135deg,var(--purple-400),var(--purple-500));color:#fff}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink-1)}
.btn.ghost:hover{border-color:var(--gold-400);color:var(--gold-300)}
.btn.danger{background:transparent;border:1px solid var(--danger);color:var(--danger)}
.btn.sm{padding:6px 12px;min-height:36px;font-size:var(--fs-sm)}
.btn.block{width:100%}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;
  background:var(--bg-3);border:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink-1)}
.chip.gold{background:var(--gold-900);border-color:var(--gold-500);color:var(--gold-300)}
.chip.purple{background:var(--purple-900);border-color:var(--purple-500);color:var(--purple-300)}
.tag-ok{color:var(--ok)}.tag-warn{color:var(--warn)}.tag-danger{color:var(--danger)}

.kpi{background:linear-gradient(160deg,var(--bg-2),var(--bg-1));border:1px solid var(--line);
  border-radius:var(--r-md);padding:var(--sp-2);text-align:center;position:relative;overflow:hidden}
.kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--gold-400),var(--purple-400))}
.kpi b{display:block;font-size:var(--fs-2xl);color:var(--gold-300);font-variant-numeric:tabular-nums}
.kpi span{font-size:var(--fs-xs);color:var(--ink-2)}

.table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.table th{text-align:left;padding:10px 12px;color:var(--ink-2);font-weight:600;border-bottom:1px solid var(--line);white-space:nowrap}
.table td{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
.table tr:hover td{background:rgba(124,92,255,.06)}

.tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line);padding-bottom:0;scrollbar-width:none}
.tab{padding:10px 16px;background:none;border:none;color:var(--ink-2);font-size:var(--fs-md);
  border-bottom:2px solid transparent;white-space:nowrap;transition:color .2s}
.tab:hover{color:var(--ink-0)}
.tab.on{color:var(--gold-300);border-bottom-color:var(--gold-400);font-weight:600}

.meter{height:8px;background:var(--bg-3);border-radius:4px;overflow:hidden}
.meter i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--gold-400),var(--purple-400));transition:width .6s ease}

.field{margin-bottom:var(--sp-2)}
.field label{display:block;font-size:var(--fs-sm);color:var(--ink-1);margin-bottom:6px}
.field .hint{font-size:var(--fs-xs);color:var(--ink-2);margin-top:4px}

.modal-mask{position:fixed;inset:0;background:rgba(8,6,14,.7);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;padding:var(--sp-2);z-index:100;animation:fade .2s}
.modal{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-lg);
  width:100%;max-width:640px;max-height:88vh;overflow:auto;padding:var(--sp-3);box-shadow:var(--shadow-2);animation:pop .25s}
.toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:var(--bg-3);
  border:1px solid var(--gold-500);color:var(--gold-300);padding:10px 22px;border-radius:999px;
  font-size:var(--fs-sm);box-shadow:var(--shadow-2);z-index:200;animation:pop .25s}

/* 顶部品牌栏 */
.topbar{display:flex;align-items:center;gap:12px;padding:12px var(--sp-2);
  background:rgba(22,19,31,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50}
.topbar .logo{height:34px;width:auto;max-width:38vw;object-fit:contain;aspect-ratio:925/337;
  flex-shrink:0;filter:drop-shadow(0 0 8px rgba(232,178,58,.4))}
.logo-fallback{display:inline-flex;align-items:center;height:34px;padding:0 10px;border-radius:8px;
  background:linear-gradient(135deg,#C0242B,#8E1A20);color:#fff;font-weight:800;letter-spacing:2px;
  font-size:14px;box-shadow:0 0 12px rgba(192,36,43,.45);white-space:nowrap}
.topbar .brand-name{font-weight:700;font-size:var(--fs-md);letter-spacing:1px}
.topbar .brand-name em{font-style:normal;color:var(--gold-400)}
.topbar nav{margin-left:auto;display:flex;gap:4px}
@media(max-width:599px){
  .topbar .brand-name{display:none}
  .topbar{justify-content:space-between}
  .topbar nav{margin-left:0}
}

/* 空态 */
.empty{text-align:center;padding:var(--sp-5) var(--sp-3);color:var(--ink-2)}
.empty .icon{font-size:40px;margin-bottom:var(--sp-1);opacity:.6}

/* 骨架 */
.skeleton{background:linear-gradient(90deg,var(--bg-2) 25%,var(--bg-3) 50%,var(--bg-2) 75%);
  background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--r-sm);min-height:16px}

@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}

/* 反馈星级 */
.stars{display:flex;gap:6px}
.stars button{background:none;border:none;font-size:28px;color:var(--line);transition:transform .15s,color .15s;padding:2px}
.stars button.on{color:var(--gold-400);text-shadow:0 0 12px rgba(232,178,58,.6)}
.stars button:hover{transform:scale(1.2)}

/* 打印 */
@media print{.topbar,.no-print{display:none!important}body{background:#fff;color:#000}}
