:root{
  --xsy-bg:#f4f6fb; --xsy-card:#ffffff; --xsy-border:#e5e9f2;
  --xsy-text:#1a2233; --xsy-text2:#5a6478; --xsy-text3:#98a2b8;
  --xsy-primary:#3d5afe; --xsy-primary-d:#2f45d6; --xsy-primary-t:#eef1ff;
  --xsy-green:#16a34a; --xsy-green-t:#e8f7ee;
  --xsy-amber:#d97706; --xsy-amber-t:#fdf3e3;
  --xsy-purple:#7c3aed; --xsy-purple-t:#f3eefe;
  --xsy-mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
  --xsy-radius:14px;
  --xsy-shadow:0 1px 2px rgba(26,34,51,.05),0 4px 16px rgba(26,34,51,.05);
}
body{background:var(--xsy-bg);color:var(--xsy-text);
 /*font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;*/
font-size:15px;line-height:1.6}
a{color:inherit}
a:hover{text-decoration:none}

/* ---------- 顶栏 ---------- */
.xsy-header{background:var(--xsy-card);border-bottom:1px solid var(--xsy-border);position:sticky;top:0;z-index:1030}
.xsy-wrap{max-width:1160px;margin:0 auto;padding:0 24px}
.xsy-nav{display:flex;align-items:center;gap:24px;height:64px}
.xsy-logo{display:flex;align-items:center;gap:10px;margin-right:8px}
.xsy-logo-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#3d5afe,#00bcd4);display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--xsy-mono);font-weight:700;font-size:14px;flex:none}
.xsy-logo b{font-size:17px;line-height:1.2;display:block}
.xsy-logo small{display:block;font-size:10px;color:var(--xsy-text3);letter-spacing:.12em}
.xsy-menu{display:flex;align-items:center;gap:1px;flex-wrap:wrap}
.xsy-menu a{padding:8px 8px;border-radius:10px;color:var(--xsy-text2);font-size:14.5px;transition:.15s}
.xsy-menu a:hover{background:#f0f2f8;color:var(--xsy-text)}
.xsy-menu a.on{color:var(--xsy-primary);background:var(--xsy-primary-t);font-weight:600}

/* 导航下拉菜单 */
.xsy-menu .xsy-drop{position:relative;display:flex;align-items:center}
.xsy-drop::before{content:"";position:absolute;left:0;right:0;top:100%;height:12px}
.xsy-drop > a::after{content:"";display:inline-block;width:0;height:0;margin-left:2px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;vertical-align:middle;opacity:.55}
.xsy-drop-menu{position:absolute;top:calc(100% + 10px);left:0;min-width:130px;background:var(--xsy-card);border:1px solid var(--xsy-border);border-radius:12px;box-shadow:0 8px 24px rgba(26,34,51,.12);padding:6px;display:none;z-index:1040}
.xsy-drop:hover .xsy-drop-menu{display:block}
.xsy-drop-menu a{display:block;padding:8px 14px;border-radius:8px;color:var(--xsy-text2);font-size:14px;white-space:nowrap}
.xsy-drop-menu a:hover{background:#f0f2f8;color:var(--xsy-primary)}
.xsy-search{margin-left:auto;flex:none;display:flex;align-items:center;gap:8px;border:1px solid var(--xsy-border);border-radius:10px;padding:7px 12px;background:#fafbfe;color:var(--xsy-text3)}
.xsy-search input{border:none;outline:none;background:transparent;font-size:13.5px;width:100px;color:var(--xsy-text)}
.xsy-auth{display:flex;gap:8px;align-items:center;flex:none}
.xsy-btn{padding:8px 16px;border-radius:10px;font-size:14px;transition:.15s;display:inline-block;white-space:nowrap}
.xsy-btn.ghost{border:1px solid var(--xsy-border);color:var(--xsy-text)}
.xsy-btn.ghost:hover{border-color:var(--xsy-text3)}
.xsy-btn.solid{background:var(--xsy-primary);color:#fff}
.xsy-btn.solid:hover{background:var(--xsy-primary-d)}

/* ---------- 横幅 ---------- */
.xsy-hero{margin:28px 0 20px;background:linear-gradient(120deg,#141b34 0%,#1d2b6b 55%,#0e7490 130%);border-radius:20px;color:#fff;padding:44px 48px;position:relative;overflow:hidden}
.xsy-hero::after{content:"</>";position:absolute;right:36px;top:-30px;font-family:var(--xsy-mono);font-size:170px;font-weight:700;color:rgba(255,255,255,.06);letter-spacing:-.05em;pointer-events:none}
.xsy-hero .tag{display:inline-block;font-size:12.5px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);padding:4px 12px;border-radius:999px;margin-bottom:14px}
.xsy-hero h1{font-size:32px;font-weight:700;margin:0;letter-spacing:.01em}
.xsy-hero p{margin:10px 0 0;color:rgba(255,255,255,.78);max-width:560px;font-size:15px}
.xsy-hero .cta{margin-top:22px;display:flex;gap:12px}
.xsy-btn.big{padding:11px 24px;font-size:14.5px}
.xsy-btn.white{background:#fff;color:var(--xsy-text)}
.xsy-btn.line{border:1px solid rgba(255,255,255,.45);color:#fff}
.xsy-btn.line:hover{background:rgba(255,255,255,.1)}

/* ---------- 统计 ---------- */
.xsy-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.xsy-stat{background:var(--xsy-card);border:1px solid var(--xsy-border);border-radius:var(--xsy-radius);padding:18px 22px;display:flex;align-items:center;gap:14px;box-shadow:var(--xsy-shadow)}
.xsy-stat .ic{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex:none}
.xsy-stat .ic svg{width:22px;height:22px}
.xsy-stat b{font-size:22px;display:block;line-height:1.2}
.xsy-stat span{font-size:12.5px;color:var(--xsy-text3)}

/* ---------- 主区 ---------- */
.xsy-main{display:grid;grid-template-columns:1fr 320px;gap:24px;align-items:start;padding-bottom:8px}
.xsy-card{background:var(--xsy-card);border:1px solid var(--xsy-border);border-radius:var(--xsy-radius);box-shadow:var(--xsy-shadow);overflow:hidden}
.xsy-card-h{display:flex;align-items:center;gap:14px;padding:16px 22px;border-bottom:1px solid var(--xsy-border)}
.xsy-card-h h2{font-size:16.5px;font-weight:600;margin:0}
.xsy-card-h .more{margin-left:auto;font-size:13px;color:var(--xsy-text3)}
.xsy-card-h .more:hover{color:var(--xsy-primary)}
.xsy-seg{display:flex;background:#f0f2f8;border-radius:10px;padding:3px;gap:2px}
.xsy-seg button{padding:6px 16px;border-radius:8px;font-size:13.5px;color:var(--xsy-text2);transition:.15s}
.xsy-seg button.on{background:#fff;color:var(--xsy-text);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* 新闻 */
.xsy-news-item{display:flex;align-items:center;gap:14px;padding:15px 22px;border-bottom:1px solid var(--xsy-border);transition:.15s;cursor:pointer}
.xsy-news-item:last-child{border-bottom:none}
.xsy-news-item:hover{background:#f8faff}
.xsy-news-item.top{background:linear-gradient(90deg,var(--xsy-green-t),transparent 70%)}
.xsy-badge{font-size:12px;padding:3px 10px;border-radius:6px;flex:none;font-weight:500}
.xsy-b-green{background:var(--xsy-green-t);color:var(--xsy-green)}
.xsy-b-amber{background:var(--xsy-amber-t);color:var(--xsy-amber)}
.xsy-b-blue{background:var(--xsy-primary-t);color:var(--xsy-primary)}
.xsy-b-gray{background:#f0f2f8;color:var(--xsy-text2)}
.xsy-b-purple{background:var(--xsy-purple-t);color:var(--xsy-purple)}
.xsy-news-item .t{flex:1;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xsy-news-item time{font-size:12.5px;color:var(--xsy-text3);flex:none}

/* 题目表 */
.xsy-ptable{width:100%;border-collapse:collapse;font-size:14px}
.xsy-ptable th{font-size:12.5px;font-weight:500;color:var(--xsy-text3);text-align:left;padding:12px 22px;border-bottom:1px solid var(--xsy-border);background:#fafbfe}
.xsy-ptable td{padding:13px 22px;border-bottom:1px solid var(--xsy-border)}
.xsy-ptable tbody tr{transition:.15s}
.xsy-ptable tbody tr:hover{background:#f8faff}
.xsy-ptable tbody tr:last-child td{border-bottom:none}
.xsy-pid{font-family:var(--xsy-mono);color:var(--xsy-text3);font-size:13px}
.xsy-ptable .title{font-weight:500}
.xsy-acbar{height:5px;border-radius:5px;background:#edf0f7;overflow:hidden;width:80px}
.xsy-acbar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#22c55e,#16a34a)}
.xsy-pct{font-size:12.5px;color:var(--xsy-text3)}

/* 侧栏 */
.xsy-side{display:flex;flex-direction:column;gap:20px}
.xsy-cal{padding:18px 20px}
.xsy-cal-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.xsy-cal-h b{font-size:15px}
.xsy-cal-h span{font-size:11.5px;background:var(--xsy-primary-t);color:var(--xsy-primary);padding:3px 10px;border-radius:999px}
.xsy-cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center;font-size:12.5px}
.xsy-cal-g .dow{color:var(--xsy-text3);font-size:11.5px;padding-bottom:4px}
.xsy-cal-g .today{background:var(--xsy-primary);color:#fff;border-radius:8px;font-weight:600}
.xsy-book{display:flex;gap:12px;padding:12px 20px;border-bottom:1px solid var(--xsy-border);align-items:center;transition:.15s}
.xsy-book:last-of-type{border-bottom:none}
.xsy-book:hover{background:#f8faff}
.xsy-cover{width:34px;height:44px;border-radius:5px;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-family:var(--xsy-mono);font-weight:700}
.xsy-book b{font-size:13.5px;display:block}
.xsy-book span{font-size:12px;color:var(--xsy-text3)}
.xsy-qk{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.xsy-qk a{background:var(--xsy-card);border:1px solid var(--xsy-border);border-radius:var(--xsy-radius);padding:14px 6px;display:flex;flex-direction:column;align-items:center;gap:8px;font-size:12.5px;color:var(--xsy-text2);transition:.15s;box-shadow:var(--xsy-shadow)}
.xsy-qk a:hover{border-color:var(--xsy-primary);color:var(--xsy-primary);transform:translateY(-2px)}
.xsy-qk svg{width:20px;height:20px}

/* 弹窗（新闻详情） */
.xsy-modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.5);display:none;align-items:center;justify-content:center;z-index:2000;padding:20px}
.xsy-modal-mask.show{display:flex}
.xsy-modal{background:#fff;border-radius:16px;max-width:680px;width:100%;max-height:80vh;overflow:auto;padding:28px 32px;position:relative}
.xsy-modal h3{margin:0 40px 6px 0;font-size:19px}
.xsy-modal .meta{font-size:12.5px;color:var(--xsy-text3);margin-bottom:14px}
.xsy-modal .body{font-size:14.5px;line-height:1.8;word-break:break-word}
.xsy-modal .x{position:absolute;top:14px;right:16px;font-size:22px;color:var(--xsy-text3);cursor:pointer;border:none;background:none;line-height:1}
.xsy-modal .x:hover{color:var(--xsy-text)}

/* 页脚 */
.xsy-footer{margin-top:36px;border-top:1px solid var(--xsy-border);background:var(--xsy-card);padding:28px 0;text-align:center;color:var(--xsy-text3);font-size:13px;line-height:2}
.xsy-footer a:hover{color:var(--xsy-primary)}

@media(max-width:1000px){
  .xsy-search{display:none}
}
@media(max-width:900px){
  .xsy-main{grid-template-columns:1fr}
  .xsy-stats{grid-template-columns:repeat(2,1fr)}
  .xsy-menu{display:none}
  .xsy-hero{padding:32px 26px}
  .xsy-hero h1{font-size:24px}
}

/* ================= 洛谷 / CF 风格组件 ================= */

/* 难度配色（洛谷风格） */
.xsy-d-beg {color:#fe4c61;background:rgba(254,76,97,.12)}
.xsy-d-pj  {color:#f39c11;background:rgba(243,156,17,.13)}
.xsy-d-up  {color:#52c41a;background:rgba(82,196,26,.13)}
.xsy-d-prov{color:#3498db;background:rgba(52,152,219,.13)}
.xsy-d-noi {color:#9d3dcf;background:rgba(157,61,207,.12)}
.xsy-d-none{color:#7a8699;background:#eef1f6}

/* 评测结果短标签（CF 风格） */
.xsy-v-ac    {color:#16a34a;background:#e8f7ee}
.xsy-v-bad   {color:#dc2626;background:#fdecec}
.xsy-v-warn  {color:#d97706;background:#fdf3e3}
.xsy-v-purple{color:#7c3aed;background:#f3eefe}
.xsy-v-wait  {color:#64748b;background:#f1f5f9}

/* 题目表 AC 标记 */
.xsy-acmark{color:#16a34a;font-weight:700;font-size:15px}

/* 最近评测动态（CF recent actions） */
.xsy-feed{display:flex;align-items:center;gap:10px;padding:10px 20px;border-bottom:1px solid var(--xsy-border);font-size:13px}
.xsy-feed:last-child{border-bottom:none}
.xsy-feed:hover{background:#f8faff}
.xsy-feed .u{font-weight:600;flex:none;max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--xsy-text)}
.xsy-feed .vb{font-family:var(--xsy-mono);font-size:11px;padding:2px 8px;border-radius:5px;flex:none;font-weight:700}
.xsy-feed .p{flex:1;color:var(--xsy-text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xsy-feed .p:hover{color:var(--xsy-primary)}
.xsy-feed .tm{font-size:11.5px;color:var(--xsy-text3);flex:none}

/* 比赛倒计时（CF 风格） */
.xsy-cd-title{text-align:center;font-size:14px;font-weight:600;padding:6px 20px 0}
.xsy-cd-title a:hover{color:var(--xsy-primary)}
.xsy-cd-num{font-family:var(--xsy-mono);font-size:28px;font-weight:700;letter-spacing:.04em;text-align:center;color:var(--xsy-text);padding-top:10px}
.xsy-cd-label{text-align:center;font-size:12px;color:var(--xsy-text3);padding:4px 0 16px}
.xsy-cd-empty{text-align:center;font-size:13px;color:var(--xsy-text3);padding:6px 0 20px}

/* Hero 个人进度（洛谷风格） */
.xsy-hi{margin-top:14px;font-size:14px;color:rgba(255,255,255,.9)}
.xsy-hi b{color:#fff;font-weight:700}
.xsy-hpbar{margin-top:8px;height:6px;border-radius:6px;background:rgba(255,255,255,.18);max-width:300px;overflow:hidden}
.xsy-hpbar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#4ade80,#22c55e);transition:width .6s ease}

/* ---------- 课程页（practiceset / practice） ---------- */
.xsy-pagehead{padding:26px 30px;margin:28px 0 20px;background:linear-gradient(120deg,#141b34 0%,#1d2b6b 55%,#0e7490 130%);border-radius:20px;color:#fff;border:none;box-shadow:var(--xsy-shadow)}
.xsy-pagehead h2{font-size:24px;font-weight:700;margin:0;letter-spacing:.01em}
.xsy-pagehead p{margin:8px 0 0;color:rgba(255,255,255,.78);font-size:14.5px;max-width:640px}
.xsy-pagehead .xsy-meta{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:16px;font-size:13px;color:rgba(255,255,255,.85)}
.xsy-pagehead .xsy-meta .k{color:rgba(255,255,255,.55)}
.xsy-pagehead .xsy-meta b{color:#fff;font-weight:600;font-family:var(--xsy-mono)}
.xsy-pagehead .xsy-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.xsy-pagehead .xsy-btns .xsy-btn.ghost{border-color:rgba(255,255,255,.38);color:#fff;background:rgba(255,255,255,.07)}
.xsy-pagehead .xsy-btns .xsy-btn.ghost:hover{background:rgba(255,255,255,.16)}
.xsy-pagehead .xsy-btns .xsy-btn.solid{background:#fff;color:var(--xsy-text);border:1px solid transparent}
.xsy-pagehead .xsy-btns .xsy-btn.solid:hover{background:#eef1ff;color:var(--xsy-primary)}
.xsy-v-begin{color:#3498db;background:rgba(52,152,219,.13)}
.xsy-clock{font-family:var(--xsy-mono);font-size:12.5px;color:var(--xsy-text3);margin-left:auto;white-space:nowrap}
.xsy-pcount{font-size:12.5px;color:var(--xsy-text3);margin-left:auto;white-space:nowrap}
.xsy-pager{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;margin:22px 0 8px}
.xsy-pager a{min-width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--xsy-border);border-radius:9px;font-size:13.5px;color:var(--xsy-text2);background:var(--xsy-card);transition:.15s;padding:0 10px}
.xsy-pager a:hover{border-color:var(--xsy-primary);color:var(--xsy-primary)}
.xsy-pager a.on{background:var(--xsy-primary);border-color:var(--xsy-primary);color:#fff;font-weight:600}
.xsy-ptable .xsy-src{font-size:12.5px;color:var(--xsy-text2)}
/* ---------- 状态页（status / conteststatus） ---------- */
.xsy-filter{padding:18px 22px;margin-bottom:20px;position:relative;z-index:100;overflow:visible}
.xsy-filter-form{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-end}
.xsy-filter-form label{font-size:13px;color:var(--xsy-text2);display:flex;align-items:center;gap:8px;margin:0;white-space:nowrap}
.xsy-filter-form input[type=text],.xsy-filter-form select{height:36px;border:1px solid var(--xsy-border);border-radius:9px;padding:0 10px;font-size:13.5px;background:#fafbfe;color:var(--xsy-text);outline:none}
.xsy-filter-form input[type=text]:focus,.xsy-filter-form select:focus{border-color:var(--xsy-primary);background:#fff}
.xsy-filter-form .xsy-btn{padding:7px 18px}
.xsy-ptable .red{color:#dc2626}
.xsy-ptable .green{color:#16a34a}
.xsy-ptable .blue{color:#3498db}
.xsy-ptable a[class^="xsy-v"]{display:inline-block;padding:2px 9px;border-radius:6px;font-size:12.5px;font-weight:600;font-family:var(--xsy-mono)}

/* ---- 课程列表：课次/状态列不换行 ---- */
.xsy-ptable td.xsy-pid,
.xsy-ptable td.nowrap { white-space: nowrap; }

/* ---- 题目详情页 ---- */
.xsy-problem-body { font-size: 16px; line-height: 35px; color: var(--xsy-text); word-break: break-word; padding: 2px 18px 10px; }
.xsy-problem-body img { max-width: 100%; }
.xsy-sub { font-size: 16px; font-weight: 700; color: var(--xsy-head); margin: 22px 0 6px; border-left: 3px solid var(--xsy-primary,#1d4ed8); padding-left: 10px; }
.xsy-pre { background: #f6f8fa; border: 1px solid #e3e8f0; border-radius: 10px; padding: 14px 16px; font-family: Consolas,'Courier New',monospace; font-size: 14px; line-height: 1.7; overflow: auto; white-space: pre-wrap; word-break: break-all; margin: 8px 0 18px; }

/* ---- 题库页：标签 / 难度 / 状态点（洛谷风格） ---- */
.xsy-tag{display:inline-block;padding:2px 10px;margin:2px 3px 2px 0;background:#eef2f9;color:#4a6cf7;border-radius:20px;font-size:12px;line-height:1.6;text-decoration:none;white-space:nowrap;}
.xsy-tag:hover{background:#4a6cf7;color:#fff;}
.xsy-tag-on{background:#4a6cf7;color:#fff;}
.xsy-diff{display:inline-block;min-width:56px;padding:2px 10px;border-radius:6px;font-size:12px;color:#fff;text-align:center;font-weight:600;line-height:1.6;}
.xsy-diff.d0{background:#bfbfbf;}
.xsy-diff.d1{background:#fe4c61;}
.xsy-diff.d2{background:#f39c11;}
.xsy-diff.d3{background:#ffc116;}
.xsy-diff.d4{background:#52c41a;}
.xsy-diff.d5{background:#13c2c2;}
.xsy-diff.d6{background:#13c2c2;}
.xsy-diff.d7{background:#3498db;}
.xsy-diff.d8{background:#9d3dcf;}
.xsy-diff.d9{background:#9d3dcf;}
.xsy-diff.d10{background:#9d3dcf;}
.xsy-diff.d11{background:#13c2c2;}
.xsy-dot{display:inline-block;width:22px;height:22px;line-height:22px;border-radius:50%;text-align:center;font-size:12px;font-weight:700;}
.xsy-dot.ac{background:#d8f5e4;color:#16a34a;}
.xsy-dot.na{background:#fde2e0;color:#dc2626;}
.xsy-dot{background:#eef2f9;color:#c0c4cc;}

/* ---- 题库筛选弹窗（洛谷风格） ---- */
.xsy-sel{position:relative;display:inline-block;}
.xsy-caret{display:inline-block;margin-left:6px;border:4px solid transparent;border-top-color:currentColor;vertical-align:2px;}
.xsy-panel{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:1000;background:#fff;border:1px solid #e3e8f0;border-radius:12px;box-shadow:0 8px 30px rgba(15,23,42,.12);min-width:280px;overflow:hidden;}
.xsy-panel-wide{min-width:520px;}
.xsy-panel-body{max-height:320px;overflow:auto;padding:12px 14px;}
.xsy-pgroup{font-size:13px;font-weight:700;color:var(--xsy-head);margin:12px 0 6px;border-bottom:1px solid #eef2f9;padding-bottom:4px;}
.xsy-pgroup:first-child{margin-top:0;}
.xsy-opt{display:inline-block;margin:3px 6px 3px 0;padding:3px 10px;background:#f5f7fc;border:1px solid #eef2f9;border-radius:8px;font-size:13px;cursor:pointer;user-select:none;}
.xsy-opt input{margin-right:4px;vertical-align:-1px;}
.xsy-opt:has(input:checked){background:#eaf0ff;border-color:#4a6cf7;color:#4a6cf7;}
.xsy-panel-foot{padding:8px 14px;border-top:1px solid #eef2f9;display:flex;gap:8px;}
.xsy-filters{margin-top:10px;padding-top:10px;border-top:1px dashed #e3e8f0;font-size:13px;color:var(--xsy-text2);}

/* ---- 标签弹窗：洛谷 toggle-tag 样式 ---- */
.xsy-panel-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #eef2f9;background:#fafbfe;}
.xsy-panel-title{font-size:15px;font-weight:700;color:var(--xsy-head);}
.xsy-panel-close{cursor:pointer;color:#999;font-size:18px;line-height:1;padding:0 4px;}
.xsy-panel-close:hover{color:#e74c3c;}
.xsy-tag-search{padding:10px 14px 4px;}
.xsy-tag-search input{width:100%;padding:6px 10px;border:1px solid #e3e8f0;border-radius:6px;font-size:13px;outline:none;box-sizing:border-box;}
.xsy-tag-search input:focus{border-color:#4a6cf7;}
.xsy-tag-selected{display:none;margin:8px 14px 4px;padding:8px 10px;background:#fafbfe;border:1px dashed #d3dcee;border-radius:8px;font-size:13px;}
.xsy-tag-selected-title{display:block;color:#666;margin-bottom:6px;font-size:13px;}
.xsy-tag-block{margin-bottom:10px;}
.xsy-tag-opt{display:inline-block;background:#e8e8e8;border:1px solid #bfbfbf;color:#575757;border-radius:2px;padding:0 7px;margin:0 14px 14px 0;font-size:14px;line-height:1.9;cursor:pointer;user-select:none;}
.xsy-tag-opt:hover{border-color:#666;}
.xsy-tag-opt.on{background:#2949b4;border-color:#313995;color:#fff;}
.xsy-tag-opt .x{margin-left:5px;color:inherit;font-size:12px;font-weight:700;}
.xsy-pgroup-wrap{margin-bottom:2px;}

/* ---- 课程页完成进度条 ---- */
.xsy-progress{position:relative;height:4px;background:#eef2f9;border-radius:2px;overflow:visible;margin:2px 22px 14px;}
.xsy-progress i{display:block;height:100%;background:linear-gradient(90deg,#4a6cf7,#0e7490);border-radius:2px;transition:width .4s;}
.xsy-progress b{position:absolute;right:0;top:-15px;font-size:12px;color:var(--xsy-text2);font-weight:600;}

/* ---- 提交代码页 ---- */
.xsy-langrow{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:14px;}
.xsy-langrow label{font-size:14px;color:var(--xsy-text2);display:flex;align-items:center;gap:8px;}
.xsy-langrow select{padding:6px 10px;border:1px solid #e3e8f0;border-radius:8px;font-size:14px;outline:none;background:#fff;color:var(--xsy-head);}
.xsy-langrow select:focus{border-color:#4a6cf7;}
.xsy-codearea{width:100%;height:600px;font-family:Consolas,Menlo,monospace;font-size:14px;line-height:1.5;padding:12px 14px;border:1px solid #e3e8f0;border-radius:10px;background:#f8fafc;color:#1f2937;outline:none;box-sizing:border-box;resize:vertical;}
.xsy-codearea:focus{border-color:#4a6cf7;background:#fff;}
.xsy-btns input.xsy-btn{margin-right:0;}

/* ---- 评测详情页（reinfo） ---- */
.xsy-tip{margin:0 0 14px;font-size:13px;color:var(--xsy-text2);}
.xsy-tc-head{cursor:pointer;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;}
.xsy-tc-head .xsy-meta{margin:0;}
.xsy-tc-body{display:none;padding:4px 22px 16px;border-top:1px dashed #eef2f9;}
.xsy-tc-body.open{display:block;}
.xsy-tc-body h4{margin:12px 0 6px;font-size:13px;color:var(--xsy-text2);font-weight:600;}
.xsy-tc-body pre{background:#f8fafc;border:1px solid #eef2f9;border-radius:8px;padding:10px 12px;font-family:Consolas,Menlo,monospace;font-size:13px;overflow:auto;white-space:pre-wrap;word-break:break-all;}
#errtxt{background:#fff7f5;border:1px solid #fde2e0;border-radius:8px;padding:10px 12px;font-family:Consolas,Menlo,monospace;font-size:13px;overflow:auto;white-space:pre-wrap;word-break:break-all;}
#errexp{margin-top:12px;font-size:13px;color:var(--xsy-text2);}

/* ---- 编译错误页（ceinfo）源码容器 ---- */
#source{width:100%;min-height:300px;font-size:13px;border-radius:8px;}

/* ---- 首页外网OJ近期比赛 ---- */
.xsy-oj-srcs{display:flex;gap:10px;font-size:12px;color:var(--xsy-text2);align-items:center;flex-wrap:wrap;}
.xsy-oj-srcs span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;}
.xsy-oj-srcs .dot{width:8px;height:8px;border-radius:50%;background:#cbd5e1;display:inline-block;flex:none;}
.xsy-oj-srcs .dot.ok{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.15);}
.xsy-oj-srcs .dot.bad{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.15);}
.xsy-oj-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:2px 22px 8px;}
.xsy-oj-tabs button{border:1px solid #e3e8f0;background:#fff;color:var(--xsy-text2);border-radius:999px;padding:4px 13px;font-size:12px;cursor:pointer;transition:all .15s;}
.xsy-oj-tabs button:hover{border-color:var(--xsy-primary);color:var(--xsy-primary);}
.xsy-oj-tabs button.on{background:var(--xsy-primary);color:#fff;border-color:var(--xsy-primary);}
.xsy-oj-group{padding:2px 22px;}
.xsy-oj-group h3{font-size:13px;color:var(--xsy-text2);margin:10px 0 4px;font-weight:600;display:flex;align-items:center;gap:6px;}
.xsy-oj-group h3 .cnt{background:#eef2f9;color:var(--xsy-text2);border-radius:999px;padding:0 8px;font-size:11px;font-weight:600;}
.xsy-oj-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px dashed #eef2f9;font-size:13px;}
.xsy-oj-group h3 + .xsy-oj-row{border-top:0;}
.xsy-oj-row .pt{width:9px;height:9px;border-radius:3px;flex:none;}
.xsy-oj-row .nm{flex:1;min-width:0;color:var(--xsy-head);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.xsy-oj-row .nm a{color:inherit;text-decoration:none;}
.xsy-oj-row .nm a:hover{color:var(--xsy-primary);}
.xsy-oj-row .tm{color:var(--xsy-text3);font-size:12px;white-space:nowrap;flex:none;}
.xsy-oj-row .live{color:#ef4444;font-size:12px;font-weight:600;flex:none;}
.xsy-oj-empty{padding:6px 0 8px;font-size:12px;color:var(--xsy-text3);}
.xsy-oj-foot{padding:12px 22px 14px;font-size:12px;color:var(--xsy-text3);border-top:1px solid #eef2f9;}

/* ---- 比赛列表 TAB（contestset） ---- */
.xsy-oj-tabs a{border:1px solid #e3e8f0;background:#fff;color:var(--xsy-text2);border-radius:999px;padding:4px 13px;font-size:12px;cursor:pointer;transition:all .15s;text-decoration:none;display:inline-block;}
.xsy-oj-tabs a:hover{border-color:var(--xsy-primary);color:var(--xsy-primary);}
.xsy-oj-tabs a.on{background:var(--xsy-primary);color:#fff;border-color:var(--xsy-primary);}
.xsy-filter .xsy-filter-form{margin-top:12px;}

/* ---- 登录页（loginpage） ---- */
.xsy-login-wrap{display:flex;justify-content:center;padding:48px 16px 64px;}
.xsy-login-card{width:100%;max-width:420px;border-radius:16px;overflow:visible;}
.xsy-login-head{background:linear-gradient(120deg,#141b34,#1d2b6b,#0e7490);padding:28px 32px;color:#fff;}
.xsy-login-head h2{margin:0 0 6px;font-size:22px;font-weight:600;}
.xsy-login-head p{margin:0;font-size:13px;opacity:.85;}
.xsy-login-form{padding:26px 32px 30px;display:flex;flex-direction:column;gap:16px;}
.xsy-login-row label{font-size:13px;color:var(--xsy-text2);margin-bottom:6px;display:block;font-weight:500;}
.xsy-login-row input{width:100%;padding:9px 12px;border:1px solid #e3e8f0;border-radius:10px;font-size:14px;outline:none;box-sizing:border-box;background:#f8fafc;transition:all .15s;}
.xsy-login-row input:focus{border-color:var(--xsy-primary);background:#fff;box-shadow:0 0 0 3px rgba(74,108,247,.12);}
.xsy-login-vcode .vcode-line{display:flex;align-items:center;gap:10px;}
.xsy-login-vcode .vcode-line input{width:130px;flex:none;}
.xsy-login-vcode img{height:36px;border-radius:8px;border:1px solid #e3e8f0;cursor:pointer;background:#fff;}
.xsy-login-vcode .tip{font-size:12px;color:var(--xsy-text3);}
.xsy-login-form .xsy-btn.block{width:100%;padding:11px 0;font-size:15px;border-radius:10px;}
.xsy-login-links{margin-top:4px;display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--xsy-text3);}
.xsy-login-links a{color:var(--xsy-primary);text-decoration:none;}
.xsy-login-links a:hover{text-decoration:underline;}

/* ---- 注册页（registerpage） ---- */
.xsy-register-card{max-width:780px;}
.xsy-reg-notice{padding:16px 32px 0;font-size:12.5px;color:var(--xsy-text2);}
.xsy-reg-notice p{margin:0 0 4px;}
.xsy-reg-notice a{color:var(--xsy-primary);text-decoration:none;}
.xsy-reg-notice img{border-radius:12px;border:1px solid #e3e8f0;margin-top:6px;}
.xsy-reg-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 26px;padding:22px 32px 30px;}
.xsy-reg-row{display:flex;flex-direction:column;gap:6px;min-width:0;}
.xsy-reg-row.full{grid-column:1 / -1;}
.xsy-reg-row label{font-size:13px;color:var(--xsy-text2);font-weight:500;}
.xsy-reg-row input[type=text],.xsy-reg-row input[type=password],.xsy-reg-row select{width:100%;padding:9px 12px;border:1px solid #e3e8f0;border-radius:10px;font-size:13.5px;outline:none;box-sizing:border-box;background:#f8fafc;transition:all .15s;}
.xsy-reg-row input:focus,.xsy-reg-row select:focus{border-color:var(--xsy-primary);background:#fff;box-shadow:0 0 0 3px rgba(74,108,247,.12);}
.xsy-reg-row input[readonly]{background:#eef2f9;color:var(--xsy-text3);}
.xsy-reg-row .tip{font-size:12px;color:var(--xsy-text3);}
.xsy-reg-row .radios{display:flex;gap:16px;flex-wrap:wrap;align-items:center;padding-top:2px;}
.xsy-reg-row .radios label{display:inline-flex;align-items:center;gap:5px;font-size:13.5px;color:var(--xsy-head);cursor:pointer;}
.xsy-reg-row .radios input{accent-color:var(--xsy-primary);}
.xsy-reg-form .vcode-line{display:flex;align-items:center;gap:10px;}
.xsy-reg-form .vcode-line input{width:150px;flex:none;}
.xsy-reg-form .vcode-line img{height:36px;border-radius:8px;border:1px solid #e3e8f0;cursor:pointer;background:#fff;}
.xsy-reg-actions{display:flex;gap:12px;justify-content:center;padding-top:6px;}
.xsy-reg-actions .xsy-btn{padding:10px 34px;border-radius:10px;font-size:14.5px;}

/* ---- 错误提示页（error） ---- */
.xsy-error-wrap{display:flex;justify-content:center;padding:64px 16px 80px;}
.xsy-error-card{width:100%;max-width:520px;padding:44px 40px;text-align:center;border-radius:16px;}
.xsy-error-icon{width:64px;height:64px;margin:0 auto 18px;border-radius:50%;background:#fde8e8;color:#ef4444;font-size:34px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;}
.xsy-error-msg{font-size:15px;color:var(--xsy-head);line-height:1.7;word-break:break-word;}
.xsy-error-msg h2{margin:0 0 8px;font-size:18px;color:#dc2626;}
.xsy-error-msg form{margin-top:14px;display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;}
.xsy-error-msg form input[type=password]{padding:7px 10px;border:1px solid #e3e8f0;border-radius:8px;font-size:14px;outline:none;}
.xsy-error-msg form input[type=submit]{padding:7px 16px;border:0;border-radius:8px;background:var(--xsy-primary);color:#fff;font-size:14px;cursor:pointer;}
.xsy-error-card .xsy-btns{margin-top:26px;justify-content:center;}

/* ---- 查看源码页（showsource） ---- */
.xsy-source-body{padding:6px 22px 22px;overflow:auto;}
.xsy-source-body .syntaxhighlighter{width:100% !important;font-size:13px !important;border-radius:8px;overflow:auto;}
.xsy-source-body pre, .xsy-source-body .syntaxhighlighter pre{white-space:pre-wrap;word-break:break-all;}

/* ---- 用户信息页（userinfo） ---- */
.xsy-userinfo-table{width:100%;border-collapse:collapse;font-size:13.5px;}
.xsy-userinfo-table td{border-bottom:1px solid #eef1f6;padding:9px 14px;}
.xsy-userinfo-table tr:last-child td{border-bottom:0;}
.xsy-userinfo-table td:first-child{width:130px;color:var(--xsy-text2);font-weight:500;}
.xsy-userinfo-table a{color:var(--xsy-primary);text-decoration:none;}
.xsy-userinfo-table a:hover{text-decoration:underline;}
.xsy-userinfo-table #submission{border-radius:8px;border:1px solid #eef1f6;margin-top:6px;background:#fff;}

/* ---- 站内信（mailad） ---- */
.xsy-mail-wrap .xsy-pagehead{max-width:none;}
.xsy-mail-layout{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start;}
.xsy-mail-side{display:flex;flex-direction:column;gap:16px;min-width:0;}
.xsy-mail-main{display:flex;flex-direction:column;gap:16px;min-width:0;}
.xsy-mail-list{padding:0;overflow:hidden;}
.xsy-mail-title{padding:13px 18px;font-size:14px;font-weight:600;color:var(--xsy-head);cursor:pointer;border-bottom:1px solid #eef1f6;display:flex;align-items:center;justify-content:space-between;user-select:none;}
.xsy-mail-title:after{content:"▾";font-size:11px;color:var(--xsy-text3);transition:transform .2s;}
.xsy-mail-title.act:after{transform:rotate(180deg);}
.xsy-mail-list .con{display:none;padding:10px 14px;}
.xsy-mail-list .con.act{display:block;}
.xsy-mail-list .xsy-ptable{font-size:12.5px;}
.xsy-mail-list .xsy-ptable th,.xsy-mail-list .xsy-ptable td{padding:6px 8px;}
.xsy-mail-ops{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px;}
.xsy-mail-ops form{margin:0;}
.xsy-mail-meta{font-size:13px;color:var(--xsy-text2);margin:0 0 10px;}
.xsy-mail-content{font-size:14px;line-height:1.8;color:var(--xsy-head);word-break:break-word;}
.xsy-mail-form{display:flex;flex-direction:column;gap:12px;}
.xsy-mail-form label{font-size:13px;color:var(--xsy-text2);font-weight:500;}
.xsy-mail-form textarea,.xsy-mail-form input[type=text]{width:100%;padding:8px 10px;border:1px solid #e3e8f0;border-radius:8px;font-size:13.5px;outline:none;box-sizing:border-box;font-family:inherit;}
.xsy-mail-form textarea:focus,.xsy-mail-form input[type=text]:focus{border-color:var(--xsy-primary);}
.xsy-mail-form .kindeditor{width:100%;}
.xsy-form-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.xsy-form-row select{padding:7px 10px;border:1px solid #e3e8f0;border-radius:8px;font-size:13.5px;outline:none;}
.xsy-reply-item{border:1px solid #eef1f6;border-radius:10px;margin-bottom:10px;overflow:hidden;}
.xsy-reply-head{display:flex;justify-content:space-between;gap:10px;padding:8px 14px;background:#f8fafc;font-size:12.5px;color:var(--xsy-text2);flex-wrap:wrap;}
.xsy-reply-head a{color:var(--xsy-primary);text-decoration:none;}
.xsy-reply-content{padding:10px 14px;font-size:13.5px;line-height:1.7;color:var(--xsy-head);word-break:break-word;}
.xsy-mail-body{padding:16px 20px 20px;}
.xsy-mail-body .xsy-card-h{background:transparent;}

/* ---- 帮助中心（faqs） ---- */
.xsy-faq{overflow:visible;}
.xsy-faq-body{padding:18px 24px 24px;}
.xsy-faq-item{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px;}
.xsy-faq-item .q,.xsy-faq-item .a{flex:none;width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff;margin-top:1px;}
.xsy-faq-item .q{background:#16a34a;}
.xsy-faq-item .a{background:#dc2626;}
.xsy-faq-item .a{color:var(--xsy-head);background:none;width:auto;font-weight:400;}
.xsy-faq-item .a b{color:var(--xsy-head);}
.xsy-faq-item a{color:var(--xsy-primary);text-decoration:none;}
.xsy-faq-table{border-collapse:collapse;width:100%;margin:8px 0 12px;font-size:13.5px;}
.xsy-faq-table td{border:1px solid #e3e8f0;padding:8px 12px;vertical-align:top;line-height:1.7;}
.xsy-faq-table td:first-child{width:90px;font-weight:600;color:var(--xsy-text2);white-space:nowrap;}
.xsy-faq-table code,.xsy-faq-note code,.xsy-faq-ul code{background:#eef2fb;color:#3341c0;padding:1px 5px;border-radius:5px;font-size:12.5px;}
.xsy-faq-table pre{background:#f6f8fc;padding:8px 12px;border-radius:8px;margin:6px 0;font-size:12.5px;color:#475069;}
.xsy-faq-note{font-size:13.5px;color:var(--xsy-head);line-height:1.8;margin:10px 0;}
.xsy-faq .warn{font-size:12.5px;color:#dc2626;}
.xsy-faq h4{font-size:14px;margin:16px 0 6px;color:var(--xsy-head);}
.xsy-code{background:#1e2330;color:#c9d4f2;padding:12px 16px;border-radius:10px;font-size:13px;line-height:1.6;overflow:auto;font-family:Consolas,'Courier New',monospace;}
.xsy-faq-ul{padding-left:44px;margin:6px 0 0;}
.xsy-faq-ul li{font-size:13.5px;line-height:1.9;color:var(--xsy-head);}
.xsy-faq-ul li b{color:#475069;}
.xsy-faq-foot{margin-top:16px;padding-top:14px;border-top:1px solid #eef1f6;font-size:14px;color:var(--xsy-head);}
.xsy-faq-foot a{color:var(--xsy-primary);text-decoration:none;}