:root{
  --bg:#f4f8ff; --panel:#ffffff; --panel2:#eef4ff; --line:#dbe7f5;
  --text:#1e293b; --muted:#64748b; --accent:#2e6be6; --accent2:#ff7a29;
  --warn:#c8791a; --danger:#d63b3b; --radius:12px;
  --mono:ui-monospace,Consolas,"Cascadia Mono","Courier New",monospace;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.6 system-ui,"Microsoft YaHei",sans-serif}
a{color:var(--accent);text-decoration:none}
button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:7px 14px;border-radius:999px}
button:hover{border-color:var(--accent)}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
button.ghost{background:transparent}
button:disabled{opacity:.5;cursor:not-allowed}
input,select,textarea{font:inherit;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:var(--radius-s);padding:8px 10px;width:100%}
textarea{font-family:var(--mono);line-height:1.5}
.row{display:flex;gap:10px;align-items:center}
.row.wrap{flex-wrap:wrap}
.grow{flex:1}
.muted{color:var(--muted)}
.small{font-size:12px}
.hidden{display:none!important}
.center{display:flex;align-items:center;justify-content:center;min-height:100%}

/* 登录 */
.login-card{width:420px;max-width:92vw;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:26px}
.login-card h1{margin:0 0 4px;font-size:22px}
.tabs{display:flex;gap:6px;margin:16px 0}
.tabs button{flex:1}
.tabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}
label{display:block;margin:10px 0 4px;color:var(--muted);font-size:12px}

/* 主体布局 */
.app{display:flex;min-height:100vh}
.side{width:210px;background:var(--panel);border-right:1px solid var(--line);padding:16px 12px;display:flex;flex-direction:column;gap:4px}
.brand{font-weight:700;font-size:16px;margin-bottom:4px}
.brand small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.nav{display:block;padding:9px 12px;border-radius:999px;color:var(--text)}
.nav:hover{background:var(--panel2)}
.nav.on{background:var(--accent);color:#fff}
.side .spacer{flex:1}
.main{flex:1;padding:20px 24px;min-width:0}
h2{margin:0 0 14px;font-size:19px}
h3{margin:18px 0 8px;font-size:15px;color:var(--muted)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px}
.grid{display:grid;gap:12px}
.grid.c2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.grid.c3{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.grid.c4{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.kpi b{display:block;font-size:26px;line-height:1.3}
.kpi span{color:var(--muted);font-size:12px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-weight:500;font-size:12px}
tr:hover td{background:var(--hover-tint)}
.tag{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:12px;color:var(--muted);white-space:nowrap}
.ok{color:var(--accent2)}.bad{color:var(--danger)}.warn{color:var(--warn)}
.pill{padding:2px 9px;border-radius:999px;font-size:12px;border:1px solid var(--line)}
.pill.accepted{background:rgba(47,214,160,.14);color:var(--accent2);border-color:rgba(47,214,160,.35)}
.pill.wrong,.pill.error{background:rgba(255,107,107,.14);color:var(--danger);border-color:rgba(255,107,107,.35)}
.pill.timeout{background:rgba(245,182,74,.14);color:var(--warn);border-color:rgba(245,182,74,.35)}
.editor-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:1100px){.editor-wrap{grid-template-columns:1fr}}
/* 中等窗口：侧边栏只变窄，文字继续显示（之前会 display:none 掉，导致菜单全看不见） */
@media(max-width:900px){.side{width:176px;padding:12px 10px}.side .nav{font-size:13.5px}.side .nav span{display:inline}}
/* 窄屏（手机）：侧栏改成顶部横向栏，文字依然在 */
@media(max-width:620px){.app{flex-direction:column}.side{width:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;border-right:0;border-bottom:1px solid var(--line)}.side .brand{width:100%}.side .spacer{display:none}.side .card{display:none}.side .ghost{width:auto;margin:0}}

pre.out{background:#fffaf6;border:1px solid var(--line);border-radius:var(--radius-s);padding:10px;font-family:var(--mono);font-size:12.5px;white-space:pre-wrap;max-height:320px;overflow:auto;margin:0}
.opt{display:flex;gap:8px;align-items:flex-start;padding:6px 0}
.opt input{width:auto}
.progressbar{height:6px;background:var(--panel2);border-radius:999px;overflow:hidden}
.progressbar>i{display:block;height:100%;background:var(--accent2)}
.toast{position:fixed;right:18px;bottom:18px;background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--accent);padding:10px 14px;border-radius:var(--radius-s);box-shadow:0 8px 24px rgba(120,60,30,.18);z-index:99}

/* ===== v0.6.58 做题页（题库点题 → 看题 → 作答）===== */
/* 列表：窄屏也能点开（题目标题可点 + 表格可横向滚动，「去做」不再被挤没） */
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tablewrap>table{min-width:620px}
a.rowlink{color:var(--accent);font-weight:500}
a.rowlink:hover{text-decoration:underline}
a.btn-mini{display:inline-block;padding:5px 12px;border:1px solid var(--line);border-radius:999px;
  background:var(--panel2);white-space:nowrap;font-size:12.5px;text-decoration:none}
a.btn-mini:hover{border-color:var(--accent)}
#view button.mini{padding:3px 9px;font-size:12px;border-radius:999px}

/* 题面：Markdown 渲染后的排版（标题 / 段落 / 列表 / 行内代码 / 代码块 / 图片 / 引用） */
.cc-stmt{line-height:1.8;word-break:break-word}
.cc-stmt p{margin:8px 0}
.cc-stmt h2,.cc-stmt h3,.cc-stmt h4{color:var(--text);margin:14px 0 6px}
.cc-stmt ul,.cc-stmt ol{margin:8px 0;padding-left:22px}
.cc-stmt li{margin:2px 0}
.cc-stmt code{background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;
  font-family:var(--mono);font-size:12.5px}
.cc-stmt blockquote{margin:8px 0;padding:6px 12px;border-left:3px solid var(--line);color:var(--muted)}
.cc-stmt img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:var(--radius-s);margin:6px 0}

/* 题面 v2（markdown-it + KaTeX）：代码块 / 表格 / 公式 / 教师端左写右看 */
.cc-stmt pre{background:#fffaf6;border:1px solid var(--line);border-radius:var(--radius-s);padding:10px 12px;margin:8px 0;overflow-x:auto}
.cc-stmt pre code{display:block;background:none;border:0;padding:0;white-space:pre;font-size:12.5px;line-height:1.6;font-family:var(--mono)}
.cc-stmt table{border-collapse:collapse;margin:8px 0;display:block;max-width:100%;overflow-x:auto}
.cc-stmt th,.cc-stmt td{border:1px solid var(--line);padding:4px 10px;text-align:left}
.cc-stmt th{background:var(--panel2)}
.cc-stmt hr{border:0;border-top:1px solid var(--line);margin:12px 0}
.cc-stmt h1{font-size:1.35em;margin:14px 0 6px}
.cc-stmt .katex{font-size:1.06em}
.cc-stmt .katex-display{margin:10px 0;overflow-x:auto;overflow-y:hidden;padding:2px 0}
.cc-stmt .katex-error{color:var(--danger)}
.cc-stmt .cc-img-link{color:var(--muted);font-size:12.5px;word-break:break-all}
.cc-md-edit{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:stretch}
.cc-md-edit textarea{min-height:280px}
.cc-md-preview{border:1px solid var(--line);border-radius:var(--radius-s);padding:8px 12px;background:var(--panel2);min-height:280px;max-height:520px;overflow:auto}
@media (max-width:980px){.cc-md-edit{grid-template-columns:1fr}}

/* 作答编辑器：行号 + 代码框（与 /python.html、/cpp.html 同一套体验） */
.cc-editor{display:flex;background:#fffaf6;border:1px solid var(--line);border-radius:var(--radius-s);overflow:hidden}
.cc-gutter{width:50px;box-sizing:border-box;margin:0;padding:10px 8px 10px 0;text-align:right;color:#b08a76;
  font-family:var(--mono);font-size:14px;line-height:1.6;background:#fdf1e9;border-right:1px solid var(--line);
  overflow:hidden;user-select:none;white-space:pre}
#view #editor{flex:1;width:100%;min-height:340px;border:0;border-radius:0;outline:0;resize:vertical;
  padding:10px 12px;font-family:var(--mono);font-size:14px;line-height:1.6;background:#fffaf6;color:#2a1710;tab-size:4}
.cc-sample{border:1px solid var(--line);border-radius:var(--radius-s);padding:10px;margin:8px 0;background:var(--panel2)}
.cc-sample pre.out{background:#fffaf6;max-height:240px}

/* ===== v0.6.62 判题结果体验（编译错误定位 / 逐点结果 / 胜利动画与音效 / 提交记录）===== */
/* CE 用紫色，和 AC 绿 / WA·RE 红 / TLE 橙区分开 */
.pill.ce{background:rgba(176,124,255,.16);color:#7a4ddb;border-color:rgba(176,124,255,.4)}
/* 代码区：出错行高亮（背景条压在那一行上，行号同步变红）*/
.cc-editor{position:relative}
#view .cc-editor #editor{background:transparent}
.cc-hl{display:none;position:absolute;left:51px;right:0;top:0;height:22px;background:rgba(255,107,107,.16);
  border-left:3px solid var(--danger);pointer-events:none;z-index:0}
.cc-gutter .hl{color:#fff;background:rgba(255,107,107,.55);border-radius:3px;padding:0 3px;font-weight:700}
/* 编译错误显著提示条 */
.cc-celine{background:rgba(176,124,255,.10);border:1px solid rgba(176,124,255,.35);border-left:3px solid #7a4ddb;
  border-radius:var(--radius-s);padding:8px 12px;margin-top:8px}
.cc-celine b{color:#7a4ddb}
/* 可展开的原文（编译器输出 / 错误信息）*/
details.cc-raw{margin-top:8px}
details.cc-raw>summary{cursor:pointer;color:var(--muted);font-size:12.5px;padding:4px 0;user-select:none}
details.cc-raw[open]>summary{margin-bottom:4px}
/* 逐测试点卡片 */
.cc-tc .row.wrap{align-items:center;gap:8px}
/* 通过 x/y 进度条 */
.cc-progress{display:inline-block;width:110px;height:6px;margin-left:6px;background:var(--panel2);border-radius:999px;overflow:hidden;vertical-align:middle}
.cc-progress>i{display:block;height:100%;background:var(--accent2)}
/* 胜利动画：全屏 canvas 彩带（不挡点击）*/
canvas.cc-confetti{position:fixed;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:9999}

/* ================= 工作台首页（v0.6.119） ================= */
.dash{display:flex;flex-direction:column;gap:8px}
.dash .hello{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.dash .hello h2{margin:0}
.dtop{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dtop a{display:flex;align-items:center;gap:11px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius);padding:12px 14px;text-decoration:none;color:inherit}
.dtop a:hover{border-color:var(--accent)}
.dtop .ic{font-size:23px;line-height:1}
.dtop b{display:block;font-size:14.5px}
.dtop em{display:block;color:var(--muted);font-size:12px;font-style:normal;margin-top:2px}
.dcols{display:grid;grid-template-columns:252px minmax(0,1fr) 286px;gap:14px;align-items:start}
.dcol{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
/* 左右两列各分两格（2026-10-03：左侧＝每日科技新闻+机构动态，右侧＝排行榜+课程） */
.colwrap{display:flex;flex-direction:column;gap:14px;min-height:0}
.colwrap>.dcol{display:flex;flex-direction:column;min-height:0}
.dcol>h3{margin:0 0 10px;font-size:14px;color:var(--text);display:flex;align-items:center;gap:6px}
.dcol>h3 .sp{flex:1}
.newslist{display:flex;flex-direction:column;gap:11px;max-height:580px;overflow:auto}
.newsitem{border-left:3px solid var(--accent);padding:1px 0 1px 9px}
.newsitem b{display:block;font-size:13px;line-height:1.45;font-weight:600}
.newsitem i{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:3px;font-style:normal}
.newsitem u{display:block;color:#8a6152;font-size:11px;text-decoration:none;margin-top:3px}
.rank-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:9px}
.rank-tabs button{padding:3px 10px;font-size:12px;border:1px solid var(--line);background:var(--panel2);
  color:var(--muted);border-radius:999px;cursor:pointer}
.rank-tabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}
.ranklist{display:flex;flex-direction:column}
.rankrow{display:flex;align-items:center;gap:8px;padding:6px 2px;font-size:13px;border-bottom:1px dashed var(--line)}
.rankrow:last-child{border-bottom:0}
.rankrow .no{width:22px;text-align:center;color:var(--muted);flex:none}
.rankrow .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rankrow .vl{color:var(--muted);font-size:12px;flex:none}
.midsec{margin-bottom:14px}
.midsec:last-child{margin-bottom:0}
.midsec>h3{margin:0 0 8px;font-size:14px;color:var(--text);display:flex;align-items:center;gap:8px}
.midsec>h3 .mut{color:var(--muted);font-weight:400;font-size:12px}
.midsec>h3 .sp{flex:1}
.grid.c3.tight>*{padding:5px 9px}
.grid.c3.tight .ic{font-size:24px}
@media(max-width:1100px){.dcols{grid-template-columns:1fr}.dtop{grid-template-columns:1fr}}

/* ================= 模块授权（v0.6.120） ================= */
.card.tool.locked{opacity:.55;cursor:not-allowed;position:relative}
.card.tool.locked:hover{border-color:var(--line)}
.tag.lock{background:rgba(245,182,74,.16);color:var(--warn);font-size:11px;padding:1px 6px;border-radius:999px;margin-left:4px;font-weight:600}
.nav.off{display:block;padding:9px 12px;border-radius:999px;color:var(--muted);opacity:.5;cursor:not-allowed}
.cc-modal{position:fixed;inset:0;background:rgba(60,24,10,.42);display:flex;align-items:center;justify-content:center;z-index:9998;padding:16px}
.cc-modal-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;max-width:520px;width:100%;max-height:80vh;overflow:auto}
.cc-mods{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px}
.cc-mod{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-s);padding:8px 10px;cursor:pointer}
.cc-mod:hover{border-color:var(--accent)}
.cc-mod input{width:auto}
.cc-mods-wrap{max-height:52vh;overflow:auto;padding-right:4px}
.cc-modgrp{margin-bottom:10px}
.cc-modgrp-h{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.04em;margin:6px 0 6px;border-bottom:1px dashed var(--line);padding-bottom:4px}
.cc-modgrp .cc-mods{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}

/* ================= v0.6.121：去掉左侧菜单，改成顶部横向栏（所有宽度） =================
   金老师 2026-10-03：「左边红框的全部取消，中间区域大了放现在的东西」。
   左侧那一列（aside.side）不再占左边，改为顶部一条横栏；主区因此变成整宽。
   菜单项一个没少（不然别的页就没入口），只是从竖排改横排、可换行。 */
.app{display:flex;flex-direction:column;min-height:100vh}
.side{width:auto;background:var(--panel);border-right:0;border-bottom:1px solid var(--line);
  padding:8px 14px;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:5px;
  position:sticky;top:0;z-index:50}
.side .brand{margin:0 12px 0 0;font-size:15px;line-height:1.2}
.side .brand small{display:none}
.side .nav{padding:6px 11px;border-radius:999px;white-space:nowrap}
.side .spacer{flex:1;min-width:0}
.side .card{margin:0;padding:6px 10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.side .card .small,.side .card .muted{font-size:12px}
.side .ghost{width:auto;padding:6px 12px}
.main{padding:10px 20px}
/* 工作台：左边不再被菜单占掉，主区自动变宽；小屏仍堆成一列 */
@media(max-width:620px){.side{padding:8px 10px}.side .nav{padding:5px 9px;font-size:13px}.main{padding:12px}}

/* ================= v0.6.123：右栏 = 排行榜 + 课程（右下角）；横向栏加小链接 ================= */
.side .nav.mini{font-size:12.5px;color:var(--muted);padding:5px 9px}
.side .nav.mini:hover{color:var(--text)}
.dcol #dash-rank>h3,.dcol #dash-courses>h3{margin:0 0 10px;font-size:14px;color:var(--text);display:flex;align-items:center;gap:6px}
/* 创作工具固定 2 列（auto-fit 在大屏会排成 5 列 2 行，中栅就塌下去、左右不不平） */
.midsec .grid.c3.tight{grid-template-columns:repeat(2,minmax(0,1fr))}

/* ================= v0.6.124：问候语上横栏 / 机构管理下拉 / 创作工具铺满中栏 ================= */
.side .hi{color:var(--muted);font-size:13px;margin:0 10px 0 2px;white-space:nowrap}
/* 机构管理下拉（原生 details，点一下展开） */
.side .drop{position:relative}
.side .drop>summary{cursor:pointer;list-style:none}
.side .drop>summary::-webkit-details-marker{display:none}
.side .drop[open]>summary{background:var(--panel2)}
.side .drop .caret{font-size:11px;margin-left:3px;opacity:.75}
.side .dropmenu{position:absolute;left:0;top:calc(100% + 6px);min-width:190px;background:var(--panel);
  border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:0 10px 26px rgba(120,60,30,.20);z-index:80;
  display:flex;flex-direction:column;gap:2px}
.side .dropmenu .nav{padding:7px 10px;white-space:nowrap}
.side .dropmenu .dropall{margin-top:4px;padding:7px 10px;border-top:1px solid var(--line);color:var(--accent);font-size:13px}
/* 创作工具：图标加大 + 铺满中栏高度（三栏等高拉伸） */
.dcols{align-items:stretch}
.dcols>section{display:flex;flex-direction:column;padding:0}
.dcols>section>.midsec{display:flex;flex-direction:column;flex:1;margin-bottom:0}
@media(max-width:1100px){.dcols>section{padding:0}}
.midsec .grid.c3.tight{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;flex:1;gap:5px}
.grid.c3.tight>a.card,.grid.c3.tight>.card.tool{display:flex;flex-direction:column;justify-content:center}
.midsec .grid.c3.tight .ic{font-size:40px}
@media(max-width:620px){.midsec .grid.c3.tight{grid-template-columns:1fr;grid-auto-rows:auto}}

/* ================= v0.6.125：卡片图标对位 / 右下角课程三入口 / 工作台一屏不超出 ================= */
/* 卡片：图标在左、文字在右（框大了图标跟着大，不再对不上；图标垂直居中） */
.grid.c3.tight>a.card,.grid.c3.tight>.card.tool{display:flex;flex-direction:row;align-items:center;gap:16px;
  text-decoration:none;color:inherit;padding:16px 18px;margin-bottom:0}
.midsec .grid.c3.tight .ic{font-size:40px;line-height:1;flex:none;width:52px;text-align:center}
.grid.c3.tight .ti{font-weight:700;font-size:15.5px;line-height:1.35}
.grid.c3.tight .de{color:var(--muted);font-size:12px;margin-top:2px;line-height:1.35}
/* 右下角课程三个入口（机器人 / 编程大师 / 发明家） */
#dash-courses>h3{display:flex;align-items:center;gap:6px}
.cgroups{display:flex;flex-direction:column;gap:8px}
.cgroup{display:flex;align-items:center;gap:12px;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;text-decoration:none;color:inherit}
.cgroup:hover{border-color:var(--accent)}
.cgroup .ic{font-size:24px;flex:none}
.cgroup b{display:block;font-size:14px}
.cgroup em{display:block;color:var(--muted);font-size:12px;font-style:normal;margin-top:2px}
/* 右下角「课程」＝ 12 个类别小卡（图标 + 名称 + 数量），两列紧凑，不出滚动条（2026-10-03 用户定） */
.catgrid{display:grid;grid-template-columns:1fr 1fr;gap:5px;align-content:start}
.catmini{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:5px;row-gap:1px;align-items:center;
  padding:4px 6px;border-radius:var(--radius-s);background:var(--panel2);border:1px solid var(--line);
  text-decoration:none;color:inherit;transition:border-color .15s,background .15s}
.catmini:hover{border-color:var(--accent);background:var(--hover-tint)}
.catmini .ci{grid-row:1/3;font-size:15px;line-height:1}
.catmini .cn{font-size:12px;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.catmini .cm{grid-column:2;font-size:10.5px;line-height:1.2;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.catmini.soon{opacity:.5}
/* 工作台「一屏不超出」：只在三栏布局（>1100px）且当前是工作台时锁高度；其余页面/窄屏照旧可滚 */
@media(min-width:1101px){
  body.dash-mode{overflow:hidden}
  body.dash-mode .app{height:100vh}
  body.dash-mode .side{flex:none}
  body.dash-mode .main{flex:1;min-height:0;overflow:auto;padding-bottom:6px}
  /* 2026-10-14 金老师：改回“一屏不超出”（内容加高的方案否掉了） */
  body.dash-mode .dash{height:100%;display:flex;flex-direction:column}
  body.dash-mode .dcols{flex:1;min-height:0}
  body.dash-mode .dcols>section{min-height:0;overflow:visible}
  /* 左右两列各自再分两格：上/下各占一半，各自内部滚动 */
  body.dash-mode .colwrap{min-height:0;overflow:hidden}
  body.dash-mode .colwrap>.dcol{flex:1 1 0;min-height:0;overflow:hidden}
  body.dash-mode .newslist{flex:1;max-height:none;min-height:0;overflow:auto}
  body.dash-mode #dash-rank .ranklist{flex:1;min-height:0;overflow:auto}
  body.dash-mode #dash-notice .noticelist{flex:1;min-height:0;overflow:auto}
  body.dash-mode #dash-courses .catgrid{flex:1;min-height:0;overflow:auto}
  body.dash-mode .midsec .grid{min-height:0;overflow:auto}
  /* 2026-10-14 金老师（方案A）：中间工具按钮压矮到 88px（原被拉伸到 132px），空出的高度摊到行距，整块仍与左右两栏等高 */
  body.dash-mode .midsec .grid.c3.tight{grid-auto-rows:88px;align-content:space-between}
}

/* ================= v0.6.128：设计系统统一（配色抬亮 / 品牌渐变 / 按钮·字体·形状一致）= 金老师 2026-10-03「黑色太沉、前后要一致、特别是按钮字体形状颜色」================= */
:root{
  /* 配色：整体抬亮一档，不再是“一片死黑”；主色沿用品牌蓝，加品牌渐变（取自品牌 logo：蓝→紫） */
  --bg:#fff5ef; --panel:#ffffff; --panel2:#ffeade; --line:#f4d2c1;
  --text:#3a1d14; --muted:#8a6152;
  --brand1:#ff7a45; --brand2:#e0396b; --brand3:#8a5cf5;
  --radius:12px; --radius-s:12px;
  --shadow:0 6px 18px rgba(120,60,30,.12);
  --fs-h2:20px; --fs-h3:14.5px; --fs:14px; --fs-s:12.5px;
}
body{background:var(--bg);color:var(--text);font-size:var(--fs)}
h2{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3)}
/* 表单控件与按钮同一套尺寸/形状 */
button,input,select,textarea{border-radius:var(--radius-s)}
button{height:36px;padding:0 16px;font-size:var(--fs);font-weight:600;border:1px solid var(--line);
  background:var(--panel2);color:var(--text);transition:background .15s,border-color .15s,filter .15s}
button:hover{border-color:var(--accent);background:var(--hover-tint)}
button.primary{background:linear-gradient(135deg,var(--brand1),var(--brand2));border-color:transparent;color:#fff}
button.primary:hover{filter:brightness(1.08)}
button.ghost{background:transparent;color:var(--muted);border-color:transparent}
button.ghost:hover{color:var(--text);background:var(--panel2)}
button.mini,.mini{height:28px;padding:0 10px;font-size:var(--fs-s);font-weight:500;border-radius:999px}
input,select,textarea{min-height:36px;border:1px solid var(--line);background:var(--panel);color:var(--text);padding:0 10px;font-size:var(--fs)}
textarea{min-height:auto;padding:8px 10px}
/* 顶栏：logo 放大 + 品牌渐变字 */
.side .brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800;margin-right:8px;line-height:1.15}
.side .brand .logo{width:34px;height:34px;display:block;border-radius:var(--radius-s);flex:none}
.side .brand .bw{display:flex;flex-direction:column}
.side .brand .bw i{font-style:normal;background:linear-gradient(90deg,var(--brand2),var(--brand3));-webkit-background-clip:text;background-clip:text;color:transparent}
.side .brand small{font-size:11px;font-weight:400;color:var(--muted);letter-spacing:.4px;display:block}
/* 顶栏导航：统一形状与选中态（选中用品牌渐变） */
.side .nav{padding:7px 12px;border-radius:var(--radius-s);font-size:13.5px;font-weight:600}
.side .nav:hover{background:var(--panel2)}
.side .nav.on{background:linear-gradient(135deg,var(--brand1),var(--brand2));color:#fff}
.side .dropmenu .nav{font-weight:500}
/* 块标题：三栏里所有小标题长一个样 */
.dcol>h3,.midsec>h3,.dcol #dash-rank>h3,.dcol #dash-courses>h3{font-size:var(--fs-h3);color:var(--text);font-weight:700;
  margin:0 0 10px;display:flex;align-items:center;gap:6px}
/* 卡片：统一圆角/边框/悬浮 */
.card{border-radius:var(--radius);border:1px solid var(--line);background:var(--panel)}
.card.tool{transition:border-color .15s,box-shadow .15s,transform .15s}
.card.tool:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-1px)}
.card.tool.locked{opacity:.5;transform:none;box-shadow:none}
.side .card{padding:6px 10px;border-radius:var(--radius-s)}
/* 创作工具卡片：统一图标尺寸与文字层级 */
.midsec .grid.c3.tight .ic{width:52px;font-size:40px}
.grid.c3.tight .ti{font-size:14.5px;font-weight:700;line-height:1.2}
.grid.c3.tight .de{font-size:var(--fs-s);color:var(--muted)}
/* 课程三入口 / 榜单行：与卡片同一套形状 */
.cgroup{border-radius:var(--radius-s);transition:border-color .15s,background .15s}
.cgroup:hover{background:var(--hover-tint)}
.rankrow{border-bottom:1px dashed var(--line)}
/* 新闻条目统一 */
.newsitem{border-left:3px solid var(--accent)}
/* 2026-10-03：去掉标题后面的小字（跟标题重复），标题也不再加粗 */
.newsitem b{font-weight:500;font-size:13.5px;line-height:1.5}
.newsfoot{flex:none;margin-top:9px;padding-top:8px;border-top:1px dashed var(--line);color:var(--muted);font-size:11.5px}
/* 机构动态（左下格）：与新闻同构，左边条换品牌紫以示区分 */
.noticelist{display:flex;flex-direction:column;gap:11px}
.noticeitem{border-left:3px solid var(--brand3);padding:1px 0 1px 9px}
.noticeitem b{display:block;font-size:13.5px;line-height:1.5;font-weight:500}
.noticeitem i{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:3px;font-style:normal}

/* ================= v0.6.129：创作工具图标重画（SVG）并放大 2 倍 =================
   原来 40px emoji（还重复一个 ⌨）→ 品牌配色 SVG，80×80。 */
.midsec .grid.c3.tight .ic{width:96px;flex:none;text-align:center;line-height:0}
.midsec .grid.c3.tight .ic svg{width:80px;height:80px;display:block;margin:0 auto}

/* 图标钉在每张卡的左侧固定位置（8 张逐个对齐；不再随文字长短上下浮） */
.grid.c3.tight>a.card,.grid.c3.tight>.card.tool{align-items:center}
.midsec .grid.c3.tight .ic{width:96px;flex:none;display:flex;align-items:center;justify-content:center;align-self:center}
.midsec .grid.c3.tight .tx{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
.grid.c3.tight .ti,.grid.c3.tight .de{text-align:left}

/* ================= v0.6.133：丹霞「加深一档」（金老师 2026-10-03 反馈「怎么感觉淡了」）=================
   原因：底色/描边太浅（#fff5ef / #f4d2c1），大片近白 + 细描边 ⇒ 结构看不见、显得淡。
   做法：底色加暖、描边加深一档、主色加饱和；顶栏加底色、标题加品牌竖条、卡片加厚度。 */
:root{
  --bg:#fbe8d9; --panel:#ffffff; --panel2:#ffe0c9; --line:#e9bda3;
  --text:#33180f; --muted:#7d5544;
  --accent:#d94a22; --accent2:#178a55; --warn:#b3671a; --danger:#c03030;
  --brand1:#f2622c; --brand2:#cf2f63; --brand3:#7a4ddb;
  --shadow:0 8px 22px rgba(150,70,30,.14);
  --mono:ui-monospace,Consolas,"Cascadia Mono","Courier New",monospace;
}
/* 顶部一条品牌渐变（固定，不占布局高度）——整页立刻“有颜色” */
.app::before{content:'';position:fixed;top:0;left:0;right:0;height:4px;z-index:99;
  background:linear-gradient(90deg,var(--brand1),var(--brand2) 55%,var(--brand3))}
/* 顶栏与内容区分开 */
.side{background:#fff3e8;border-bottom:2px solid var(--line)}
/* 卡片给点厚度，不再“平贴”在浅底上 */
.card{box-shadow:0 1px 0 rgba(150,70,30,.06)}
.card.tool:hover{box-shadow:var(--shadow)}
/* 块标题左侧加品牌竖条，结构一眼看清 */
.midsec>h3::before,.dcol>h3::before,.dcol #dash-rank>h3::before,.dcol #dash-courses>h3::before{
  content:'';display:inline-block;width:4px;height:15px;border-radius:2px;margin-right:2px;
  background:linear-gradient(180deg,var(--brand1),var(--brand2))}
/* 选中态更实 */
.side .nav.on{box-shadow:0 3px 10px rgba(207,47,99,.28)}
/* 控件边界更清楚 */
input,select,textarea{border-color:var(--line);background:#fffdfb}
/* 排行榜/新闻里的分隔线也提一档，别虚 */
.rankrow{border-bottom:1px dashed var(--line)}
/* 危险操作按钮（删除账号 / 删除题单…）：默认描边红，悬停实心红 */
button.danger-del{border-color:var(--danger);color:var(--danger);background:transparent}
button.danger-del:hover{background:var(--danger);border-color:var(--danger);color:#fff}

/* ============================ 教学看板 · 学情分析（第一批）—— 内联 SVG 图表 ============================
   全部用现有丹霞令牌变量（--panel/--panel2/--text/--muted/--accent/--border），文字均为深色压浅底。 */
.an-svg{display:block;width:100%;height:auto;margin:2px 0 6px}
.an-svg .an-txt{fill:var(--text)}
.an-svg .an-val{fill:var(--muted);font-variant-numeric:tabular-nums}
.an-svg .an-track{fill:var(--panel2);stroke:var(--line);stroke-width:1}
.an-svg .an-bar{fill:var(--accent)}
.an-svg .an-sq-off{fill:var(--panel2);stroke:var(--line);stroke-width:1}
.an-svg .an-sq-on{fill:var(--accent2)}
.an-col{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;background:var(--panel)}
.an-col h4{margin:0 0 6px;font-size:13px}
.an-col ul{margin:0;padding-left:18px;max-height:220px;overflow:auto}
.an-col li{margin:2px 0;font-size:13px}
.an-col-alert{border-left:4px solid var(--danger)}
.an-col-alert h4{color:var(--danger)}
.an-col-ok{border-left:4px solid var(--accent2)}
.an-col-ok h4{color:var(--accent2)}
li.an-alert{color:var(--danger)}
li.an-ok{color:var(--accent2)}

/* ---------- 兑奖商城 / 奖品管理（第二批 v0.6.146） ---------- */
.rw-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));margin-bottom:4px}
.rw-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:6px;text-align:center}
.rw-card .rw-emoji{font-size:34px;line-height:1.1}
.rw-card .rw-name{font-weight:600;color:var(--text)}
.rw-card .rw-desc{min-height:16px;line-height:1.4}
.rw-card .rw-cost{color:var(--text)}
.rw-card .rw-cost b{color:#b83a12;font-size:16px}
.rw-card button{margin-top:auto}
.rw-chk{display:flex;align-items:center;gap:6px;margin:0;color:var(--text);font-size:13px;white-space:nowrap}
.rw-mini-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}
.rw-mini-row:last-child{border-bottom:0}
.rw-mini-e{font-size:18px;line-height:1}

/* 题库页顶部 · 满分题单入口（2026-10-06 金老师要求强化显示） */
.tidan-bar{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0 14px}
.tidan-card{flex:1 1 260px;min-width:220px;display:flex;flex-direction:column;gap:3px;padding:14px 18px;border-radius:14px;
  background:linear-gradient(135deg,var(--accent) 0%,#f0906a 100%);color:#fff;text-decoration:none;
  box-shadow:0 4px 14px rgba(232,86,47,.28);border:1px solid rgba(255,255,255,.28);transition:transform .12s ease,box-shadow .12s ease}
.tidan-card:hover{transform:translateY(-2px);box-shadow:0 9px 22px rgba(232,86,47,.38)}
.tidan-card[data-l="9"]{background:linear-gradient(135deg,var(--accent2) 0%,#4cc38c 100%);box-shadow:0 4px 14px rgba(31,157,99,.28)}
.tidan-card[data-l="9"]:hover{box-shadow:0 9px 22px rgba(31,157,99,.38)}
.tidan-name{font-size:20px;font-weight:800;letter-spacing:.5px;color:#fff}
.tidan-meta{font-size:12px;opacity:.93;color:#fff}
.tidan-go{font-size:12px;font-weight:700;opacity:.97;margin-top:3px;color:#fff}

/* 题库页顶部 · 知识等级三块（NOI 大纲：入门级 / 提高级 / NOI级）—— 2026-10-08 替代原「级别」下拉 */
.lv-bar{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0 2px}
.lv-card{flex:1 1 200px;min-width:160px;height:auto;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:11px 18px;
  border-radius:14px;cursor:pointer;text-align:left;border:1px solid rgba(255,255,255,.28);color:#fff;
  filter:saturate(.62) brightness(1.04);opacity:.85;transition:filter .12s ease,opacity .12s ease,transform .12s ease}
.lv-card:hover{transform:translateY(-2px);filter:saturate(.85);opacity:.95}
.lv-card .lv-name{font-size:18px;font-weight:800;letter-spacing:.5px;color:#fff}
.lv-card .lv-sub{font-size:12px;opacity:.93;color:#fff}
.lv-card[data-lv="入门级"]{background:linear-gradient(135deg,#2f9e44 0%,#69db7c 100%)}
.lv-card[data-lv="提高级"]{background:linear-gradient(135deg,#1c7ed6 0%,#4dabf7 100%)}
.lv-card[data-lv="NOI级"]{background:linear-gradient(135deg,#6741d9 0%,#9775fa 100%)}
.lv-card.active{filter:none;opacity:1;box-shadow:0 4px 14px rgba(0,0,0,.22);outline:2px solid rgba(255,255,255,.85);outline-offset:-3px}
/* GESP 等考：单独给个醒目的橙红渐变，跟前面三块区分开 */
.lv-card#lv-gesp{background:linear-gradient(135deg,#d9480f 0%,#f76707 100%);filter:none;opacity:1;box-shadow:0 5px 16px rgba(217,72,15,.38)}
.lv-card#lv-gesp:hover{filter:saturate(1.05) brightness(1.04);opacity:1}
.lv-card#lv-gesp::after{content:'NEW';position:absolute;top:-7px;right:10px;background:#fff3bf;color:#b35309;font-size:9px;font-weight:800;padding:1px 5px;border-radius:999px;letter-spacing:.5px}
.lv-card#lv-gesp{position:relative}


/* 重标定标签配色（名称 ↔ 颜色 一一对应） */
.tag.cc-chip{cursor:pointer}
.tag.cc-chip:hover{filter:brightness(.94)}
.tag.cc-c-橙{background:#FFF1E0;border-color:#FFB74D;color:#8A4B00}
.tag.cc-c-黄{background:#FFFBE0;border-color:#F2D24B;color:#7A6200}
.tag.cc-c-绿{background:#E8F8EE;border-color:#66BB6A;color:#1B6B2E}
.tag.cc-c-蓝{background:#E6F1FF;border-color:#4D9BFF;color:#0B4FA8}
.tag.cc-c-紫{background:#F1E8FF;border-color:#A16BFF;color:#5B21B6}
.tag.cc-c-黑{background:#EDEDF0;border-color:#555A66;color:#1F2430}


/* 题库表格：固定列宽 + 单行，行高统一（标签永不竖折；长文本走省略号，完整内容在 title 悬浮） */
table.cc-problems{table-layout:fixed}
.cc-problems th,.cc-problems td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.cc-problems .tagline{max-width:none;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.btn-addlist,.btn-mini{white-space:nowrap}
.tablewrap>table{min-width:1040px}


/* 题库：筛选状态条 + 知识分类面板 */
.cc-filterbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;margin-bottom:10px;border:1px solid var(--line);background:var(--panel2);border-radius:var(--radius-s)}
.cc-filterbar .cc-fchip{cursor:pointer;background:var(--panel);border-color:var(--line);color:var(--text)}
.cc-filterbar .cc-fchip:hover{filter:brightness(.95)}
.cc-filterbar button{margin-left:auto;white-space:nowrap}
.cc-kpanel{border:1px solid var(--line);border-radius:var(--radius-s);padding:10px;margin-bottom:10px;background:var(--panel2);max-height:440px;overflow:auto}
.kt-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.kt-head .grow{flex:1}
.cc-kpanel details{margin:2px 0 2px 10px}
.cc-kpanel summary{cursor:pointer;font-size:12.5px;padding:2px 0}
.kt-lv>summary{font-weight:600;font-size:13px}
.kt-items{display:flex;flex-wrap:wrap;gap:5px;padding:6px 0 4px 6px}
.kt-item{font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);background:var(--card);cursor:pointer}
.kt-item:hover{border-color:#4D9BFF;color:#0B4FA8}
.kt-item b{color:#98a2b3;font-weight:600;margin-left:3px}
/* 「CSP-J满分题单 / CSP-S满分题单」入口按钮：强化渲染（糖果渐变 + 白字 + 阴影），比旁边普通链接醒目 */
a.tidan-btn{display:inline-flex;align-items:center;height:34px;padding:0 18px;border-radius:999px;border:0;
  background:linear-gradient(135deg,#ff7a45,#e0396b);color:#fff;font-weight:800;letter-spacing:.5px;font-size:13.5px;
  box-shadow:0 4px 12px rgba(224,57,107,.32);transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}
a.tidan-btn:hover{color:#fff;transform:translateY(-2px);box-shadow:0 8px 18px rgba(224,57,107,.42);filter:brightness(1.05)}
a.tidan-btn[data-l="9"]{background:linear-gradient(135deg,#1f9d63,#4cc38c);box-shadow:0 4px 12px rgba(31,157,99,.32)}
a.tidan-btn[data-l="9"]:hover{box-shadow:0 8px 18px rgba(31,157,99,.42)}
.kt-item.active{border-color:#4D9BFF;background:#eaf3ff;color:#0B4FA8;font-weight:700}
/* ---- 知识点药丸（等级 → 知识点 展开区）：糖果色，每类一色，越大越顺手 ---- */
.lv-panel{margin-top:2px;border-left:4px solid var(--lc,#ef6c33)}
.lv-panel .kt-head b{color:var(--lc,#ef6c33)}
.lv-cat{--kc:#ef6c33;--kb:#fff1e6;--ks:rgba(239,108,51,.30);margin:10px 0 4px}
.lv-cat-name{display:flex;align-items:center;font-size:13px;font-weight:800;color:var(--kc);margin:6px 0 5px}
.lv-cat-name::before{content:'';width:9px;height:9px;border-radius:50%;background:var(--kc);margin-right:7px;box-shadow:0 0 0 3px var(--kb)}
.lv-cat-n{font-weight:600;font-size:11.5px;color:var(--muted);margin-left:8px}
.lv-cat .kt-items{gap:7px}
.lv-cat .kt-item{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:4px 13px;border-radius:999px;
  background:var(--kb);border:1.5px solid var(--kc);color:var(--kc);font-weight:600;font-size:12.5px;
  transition:transform .12s ease,box-shadow .12s ease,background .12s ease,color .12s ease}
.lv-cat .kt-item:hover{background:var(--kc);color:#fff;transform:translateY(-2px);box-shadow:0 6px 14px var(--ks)}
.lv-cat .kt-item.active{background:var(--kc);color:#fff;box-shadow:0 3px 0 var(--ks),0 0 0 2px #fff inset}
.lv-cat .kt-n{background:rgba(255,255,255,.78);color:var(--kc);border-radius:999px;padding:0 7px;font-size:11px;font-weight:700}
.lv-cat .kt-item:hover .kt-n,.lv-cat .kt-item.active .kt-n{background:rgba(255,255,255,.92)}
/* ===== GESP 等考（场次 → 级别 → 整卷 · 题库页第 4 个按钮） ===== */
.gesp-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0}
.gesp-bar>.muted{margin-right:4px}
.gesp-chip{padding:4px 12px;border-radius:999px;border:1.5px solid var(--line,#d8dde5);background:var(--panel,#fff);cursor:pointer;font-size:12.5px;font-weight:600;color:inherit}
.gesp-chip:hover{border-color:#ef6c33;color:#ef6c33}
.gesp-chip.active{background:#ef6c33;border-color:#ef6c33;color:#fff}

/* ===== 登录页 v2（2026-10-14）：星河背景 + 左宣传 / 右登录 ===== */
.login-sky{position:fixed;inset:0;overflow:auto;display:block;background:radial-gradient(1200px 700px at 12% 8%,#16204a 0%,#080d1e 55%,#04060f 100%);}
.login-sky #lg-bg{position:fixed;inset:0;width:100%;height:100%;display:block}
.login-sky .login-wrap{position:relative;min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr;gap:14px;width:min(900px,94vw);margin:0 auto;padding:24px;align-items:center;justify-items:center}
.login-sky .login-promo{border:1px solid rgba(130,170,255,.18);border-radius:16px;background:linear-gradient(165deg,rgba(20,28,56,.58),rgba(8,12,28,.70));backdrop-filter:blur(14px);box-shadow:0 18px 50px rgba(0,0,0,.5);padding:22px;color:#e8eeff;width:100%}
.login-sky .lp-head{display:flex;align-items:center;gap:12px}
.login-sky .lp-logo{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-weight:800;font-size:16px;color:#fff;background:linear-gradient(140deg,#3f7bff,#7d4cff 60%,#16d5c8);flex:none}
.login-sky .lp-name{font-size:19px;font-weight:800;color:#fff}
.login-sky .lp-slogan{font-size:11px;color:#9fb2e6;letter-spacing:3px;margin-top:2px}
.login-sky .lp-org{display:inline-block;margin-top:10px;font-size:11px;color:#bcd0ff;border:1px solid rgba(120,160,255,.28);background:rgba(63,123,255,.08);border-radius:999px;padding:3px 10px}
.login-sky .lp-lead{font-size:14.5px;font-weight:700;color:#dbe8ff;margin:16px 0 10px}
.login-sky .lp-sub{font-size:11.5px;color:#9fb2e6;margin:0 0 10px}
.login-sky .lp-pts{list-style:none;padding:0;margin:0}
.login-sky .lp-pts li{display:flex;gap:9px;align-items:flex-start;font-size:11.5px;color:#c3d2f2;margin-bottom:8px}
.login-sky .lp-pts b{color:#e8eeff}
.login-sky .lp-pts span{width:18px;text-align:center;flex:none}
.login-sky .lp-cta{display:inline-block;margin-top:8px;border:1px solid rgba(120,160,255,.35);color:#cfe0ff;background:rgba(63,123,255,.10);border-radius:999px;padding:6px 14px;font-size:11.5px;text-decoration:none}
.login-sky .login-card{border:1px solid rgba(130,170,255,.18);border-radius:16px;background:linear-gradient(165deg,rgba(20,28,56,.62),rgba(8,12,28,.74));backdrop-filter:blur(14px);box-shadow:0 18px 50px rgba(0,0,0,.5);padding:20px 18px;color:#e8eeff;width:100%}
.login-sky .login-card h1{margin:0;font-size:17px;color:#fff}
.login-sky .login-card .muted.small{color:#9fb2e6}
.login-sky .login-card label{display:block;font-size:10.5px;color:#9fb2e6;margin:9px 0 4px}
.login-sky .login-card input{width:100%;border:1px solid rgba(120,160,255,.22);background:rgba(8,12,26,.62);color:#e8eeff;font-size:12px;padding:9px 10px;border-radius:var(--radius-s);outline:0}
.login-sky .login-card input::placeholder{color:#5f6f9b}
.login-sky .login-tip{margin:10px 0 0;text-align:center}
@media (max-width:620px){.login-sky .login-wrap{grid-template-columns:1fr}.login-sky .login-promo{order:2}}

/* ===== 登录页 v3：画廊 / 数据条 / 灯箱 / 专属账号 ===== */
.login-sky .lp-hero{font-size:30px;font-weight:800;letter-spacing:1px;margin:20px 0 6px;background:linear-gradient(100deg,#ffffff,#bcd0ff 70%,#7d9bff);-webkit-background-clip:text;background-clip:text;color:transparent}
.login-sky .lp-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:2px 0 12px}
.login-sky .lp-shot{height:58px;border-radius:10px;border:1px dashed rgba(130,170,255,.28);background:linear-gradient(140deg,rgba(63,123,255,.10),rgba(125,76,255,.06));display:grid;place-items:center;color:#7f91bd;font-size:10px;overflow:hidden;cursor:pointer}
.login-sky .lp-shot img{width:100%;height:100%;object-fit:cover;display:block}
.login-sky .lp-stats{font-size:11px;color:#8fa3d4;margin:2px 0 6px}
.login-sky .lp-org{display:inline-block;margin:2px 0 6px;font-size:10.5px;color:#bcd0ff;border:1px solid rgba(120,160,255,.28);background:rgba(63,123,255,.08);border-radius:999px;padding:3px 10px}
.login-sky .lp-lb{position:fixed;inset:0;z-index:99;background:rgba(3,6,14,.86);display:grid;place-items:center;cursor:zoom-out}
.login-sky .lp-lb img{max-width:88vw;max-height:84vh;border-radius:12px;box-shadow:0 24px 60px rgba(0,0,0,.6)}

/* ================= v0.6.189 主界面：九宫格工具卡 + 「蔚蓝」整体色调（2026-10-16 金老师）=================
   .cc-home = codeView 主界面根（整页底色/网格）；.cc-tools = 9 张工具卡（3×3 九宫格）的外框。
   只作用于主界面，其他页面 / 其他视图不受影响。色调比 v0.6.188 加深一档（反馈「太淡」）。 */
.cc-home{border-radius:14px;background:
  linear-gradient(rgba(46,107,230,.07) 1px,transparent 1px) 0 0/26px 26px,
  linear-gradient(90deg,rgba(46,107,230,.07) 1px,transparent 1px) 0 0/26px 26px,
  radial-gradient(900px 320px at 6% -12%,rgba(29,78,216,.18),transparent 62%),
  radial-gradient(720px 300px at 98% -10%,rgba(245,166,35,.20),transparent 62%),
  linear-gradient(180deg,#dbe8ff 0%,#cfe0fb 55%,#e4efff 100%)}
.cc-home .dcol{border-color:#bcd3f2;box-shadow:0 12px 28px -24px rgba(30,90,180,.7)}
.cc-tools{border-radius:14px;padding:12px;border:1px solid #b6d0f2;
  background:linear-gradient(180deg,#ffffff,#eaf3ff);
  box-shadow:0 14px 32px -26px rgba(20,70,150,.7)}
/* 九宫格：固定 3 列，9 张正好 3×3 */
/* 九宫格居中不分散：固定列宽 212px + justify-content:center */
.cc-tools .grid.c3.tight{display:grid;grid-template-columns:repeat(3,212px);gap:40px 20px;justify-content:center}
/* 工作台「锁高」模式：原来的 .midsec .grid{overflow:auto} + grid-auto-rows:88px 会把加高的卡片压出内部滚动条。
   这里覆盖掉：行高交给卡片自身 min-height，网格不再自己滚。 */
/* 工作台锁高模式：9 张卡不再贴顶，改成在整个中间区域里垂直居中（2026-10-16 金老师） */
body.dash-mode .dcols>section{align-self:stretch;display:flex;flex-direction:column;min-height:0}
body.dash-mode .cc-tools{flex:1;display:flex;flex-direction:column;min-height:0;margin-bottom:0}
body.dash-mode .cc-tools .grid.c3.tight{flex:1;grid-auto-rows:auto;overflow:visible;align-content:center}
.cc-tools .grid.c3.tight>*{min-height:128px;padding:14px;border-radius:14px;
  border:1px solid color-mix(in srgb,var(--tc,#b6d0f2) 34%,#ffffff);background:#fff;position:relative;overflow:hidden;
  box-shadow:0 12px 26px -20px rgba(20,70,150,.85);
  transition:transform .18s,box-shadow .18s,border-color .18s}
.cc-tools .grid.c3.tight>*::after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
  background:var(--tc,#1d4ed8)}
.cc-tools .grid.c3.tight>*:hover{transform:translateY(-3px);border-color:var(--tc,#1d4ed8);
  box-shadow:0 16px 34px -18px color-mix(in srgb,var(--tc,#1d4ed8) 55%,transparent)}
.cc-tools .grid.c3.tight .ti{color:var(--tc,#0e2a55);font-size:16.5px;font-weight:600;letter-spacing:.3px;line-height:1.3}
.cc-tools .grid.c3.tight .de{color:#56718f;font-size:12.5px;line-height:1.5}
.cc-tools .grid.c3.tight .tag.lock{background:rgba(245,166,35,.16);color:#b06d0a}
.cc-tools .card.tool.locked:hover{border-color:#b6d0f2}
@media(max-width:980px){.cc-tools .grid.c3.tight{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:660px){.cc-tools .grid.c3.tight{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:440px){.cc-tools .grid.c3.tight{grid-template-columns:1fr}}

