/* =========================================================
   课程表 · 晶阵（Schedule Lattice）
   ---------------------------------------------------------
   主题变量与左右栏骨架全部来自 wiki.css + topic.css，
   这一页只负责把「周课表」翻译成晶体语言：

   - 整张表没有卡片底、没有圆角，只有 1px 晶棱分割线；
   - 一节课 = 贴在晶格上的一片薄片：左缘一道科目色的棱，
     悬停时棱亮起来、底棱扫过一道暖光（跟知识库的晶片同源）；
   - 「今天」那一列仍用红框整列圈住，红框颜色跟四时辰走。
   ========================================================= */

/* ---------- 今天 / 归属的语义色（跟四时辰走） ---------- */
:root{--today:#d92d2d;--own:#1f9d55;--both:#c8901a}
html[data-time="dawn"]{--today:#c92b2b}
html[data-time="dusk"],html[data-time="night"]{
  --today:#ff8a8a;--own:#46c481;--both:#ffd166}

/* ---------- 科目色（深底提亮，沿用旧课表的对照关系） ---------- */
.s-java{--sc:#3b6ef5}.s-py{--sc:#0e9d8c}.s-qa{--sc:#8b5cf6}
.s-web{--sc:#e0700c}.s-sql{--sc:#17a05e}.s-oth{--sc:#8b87a0}
html[data-time="dusk"] .s-java,html[data-time="night"] .s-java{--sc:#8fb0ff}
html[data-time="dusk"] .s-py,html[data-time="night"] .s-py{--sc:#5cd3c2}
html[data-time="dusk"] .s-qa,html[data-time="night"] .s-qa{--sc:#bda2ff}
html[data-time="dusk"] .s-web,html[data-time="night"] .s-web{--sc:#ffab5e}
html[data-time="dusk"] .s-sql,html[data-time="night"] .s-sql{--sc:#57d597}

/* ---------- 左栏补充：教学平台入口 + 图例 ---------- */
.rail-act{display:inline-flex;align-items:center;gap:7px;margin-top:22px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;
  color:var(--accent);text-decoration:none;transition:color .2s}
.rail-act .ar{transition:transform .25s}
.rail-act:hover{color:var(--warm)}
.rail-act:hover .ar{transform:translateX(3px)}

.lg{margin:26px 0 0;padding:22px 0 0;list-style:none;border-top:1px solid var(--line)}
.lg li{display:flex;align-items:center;gap:10px;padding:5px 0;
  font-size:12px;color:var(--muted)}
.lg i{flex:0 0 auto;width:7px;height:7px;transform:rotate(45deg);
  background:var(--sc);opacity:.85}
.lg-note{margin:14px 0 0;font-size:11px;line-height:1.9;color:var(--tx-fig)}
.lg-note b{display:inline-block;min-width:14px;text-align:center;
  font-size:9.5px;font-weight:700;padding:0 3px;margin-right:2px;
  border:1px solid var(--line);color:var(--tx-fig)}
.lg-note b.mine{border-color:var(--own);color:var(--own)}
.lg-note b.both{border-color:var(--both);color:var(--both)}

/* ---------- 周表：一张只有分割线的晶格 ---------- */
.wk{width:100%;border-collapse:collapse;table-layout:fixed;
  --slot-h:104px;border:1px solid var(--line)}
.wk th{padding:11px 6px 9px;font-size:13px;font-weight:400;letter-spacing:.14em;
  color:var(--tx-fig);text-align:center;white-space:nowrap;vertical-align:bottom;
  border-bottom:1px solid var(--line)}
.wk th+th{border-left:1px solid var(--line)}
.wk th.wk-today{color:var(--warm)}
.wk th .hd-n{display:block;margin-top:3px;font-family:var(--mono);font-size:9.5px;
  font-weight:400;letter-spacing:.02em;color:var(--tx-fig);opacity:.85}
.wk-flag{display:inline-block;margin-left:5px;padding:0 4px;
  font-size:9.5px;font-weight:700;letter-spacing:.06em;
  background:var(--today);color:#fff;vertical-align:1px}

.wk td{padding:0;vertical-align:top;border-top:1px solid var(--line)}
.wk td+td{border-left:1px solid var(--line)}

/* 时段列：上午 / 下午 / 晚上 */
.wk .wk-per{vertical-align:middle}
.wk .wk-per .per-tx{display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:5px;padding:14px 0}
.wk .wk-per .per-tx b{font-size:12.5px;font-weight:700;letter-spacing:.2em;
  color:var(--ink2,var(--ink));line-height:1;opacity:.9}
.wk .wk-per .per-tx i{font-style:normal;font-family:var(--mono);font-size:9px;
  letter-spacing:.06em;color:var(--tx-fig);line-height:1;opacity:.8}

/* 今天那一列：整列红框（位置由 JS 算，见 drawTodayRing） */
.wk-wrap{position:relative}
.wk-ring{position:absolute;display:none;pointer-events:none;z-index:3;
  border:1.5px solid var(--today);opacity:.9}

/* 一大节里均分成两小节，五天对齐成规整的格子阵 */
.wk-box{display:flex;flex-direction:column;
  min-height:calc(var(--slot-h) * var(--slots,2))}
.wk-slot{flex:1 1 auto;display:flex;flex-direction:column;min-height:var(--slot-h)}
.wk-slot+.wk-slot{border-top:1px solid var(--line)}

/* ---------- 一节课：一片晶片 ---------- */
.wk-cls{position:relative;flex:1 1 0;display:flex;flex-direction:column;gap:3px;
  justify-content:center;
  width:100%;padding:11px 12px 11px 16px;color:var(--ink);
  text-decoration:none;transition:background .22s ease;
  animation:sheetIn .5s cubic-bezier(.2,.7,.3,1) both;
  animation-delay:calc(var(--i,0) * 22ms)}
/* 左缘：科目色的棱 */
.wk-cls::before{content:'';position:absolute;left:0;top:12px;bottom:12px;width:2px;
  background:var(--sc);opacity:.28;transform:scaleY(.7);transform-origin:center;
  transition:opacity .22s,transform .24s}
/* 悬停：底棱一道暖光从左向右扫过（跟知识库晶片同一道光） */
.wk-cls::after{content:'';position:absolute;left:2px;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,var(--warm),transparent 46%);
  transform:scaleX(0);transform-origin:left;opacity:0;
  transition:transform .55s cubic-bezier(.2,.7,.3,1),opacity .3s}
.wk-cls:hover{background:linear-gradient(90deg,
  color-mix(in srgb,var(--sc) 9%,transparent),transparent 82%)}
.wk-cls:hover::before{opacity:1;transform:scaleY(1)}
.wk-cls:hover::after{transform:scaleX(1);opacity:.8}

.wk-cls .k{display:flex;align-items:baseline;gap:8px;
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;
  color:var(--muted);line-height:1.3}
.wk-cls .k .tm{margin-left:auto;font-size:9px;font-weight:600;letter-spacing:0;
  color:var(--tx-fig);white-space:nowrap;opacity:.9}
.wk-cls .n{display:flex;align-items:baseline;gap:5px;font-size:16px;
  font-weight:400;line-height:1.4;letter-spacing:.01em;
  white-space:nowrap;overflow:hidden}
.wk-cls .n .room{font-weight:600;color:var(--ink2,var(--ink))}
.wk-cls .n .dot{color:var(--muted);opacity:.85}
.wk-cls .n .tag{margin-left:auto;font-family:var(--mono);font-size:9px;
  font-weight:600;letter-spacing:.04em;color:var(--tx-fig);
  border:1px solid var(--line);padding:0 3px;line-height:1.7}
.wk-cls.multi .n{font-size:14.5px}
/* 字重跟底色：浅底加粗，深底用细 */
html[data-time="day"] .wk-cls .n,html[data-time="dawn"] .wk-cls .n{font-weight:600}

/* 我的课：绿色薄雾 + 绿棱；同段合上：暖黄；别人的：棱几乎隐形 */
.wk-cls.is-own{background:color-mix(in srgb,var(--own) 11%,transparent)}
.wk-cls.is-own::before{background:var(--own);opacity:.75}
.wk-cls.is-own:hover{background:color-mix(in srgb,var(--own) 18%,transparent)}
.wk-cls.is-own .k{color:color-mix(in srgb,var(--own) 72%,var(--ink))}
.wk-cls.is-own .n .tag{border-color:var(--own);color:var(--own);font-weight:700}

.wk-cls.is-both{background:color-mix(in srgb,var(--both) 10%,transparent)}
.wk-cls.is-both::before{background:var(--both);opacity:.7}
.wk-cls.is-both:hover{background:color-mix(in srgb,var(--both) 17%,transparent)}
.wk-cls.is-both .k{color:color-mix(in srgb,var(--both) 66%,var(--ink));
  flex-wrap:wrap;row-gap:2px}
.wk-cls .k .tm{flex:none}
/* 同段合上的格子里，节次位置已经由表格说明，标签让位给科目名 */
.wk-cls.is-both .k .tm{display:none}
.wk-cls.is-both .n{font-size:14.5px}
.wk-cls.is-both .n .tag{border-color:color-mix(in srgb,var(--both) 55%,var(--line));
  color:color-mix(in srgb,var(--both) 70%,var(--ink));font-weight:700}

.wk-cls.is-other::before{opacity:.14}
.wk-cls.is-other .k{color:var(--tx-fig)}
.wk-cls.is-other .n{color:var(--muted);font-size:14.5px}

/* ---------- 手机：按天晶片卡 ---------- */
.wk-days{display:none}
.wk-day-card{border:1px solid var(--line);margin-bottom:14px;overflow:hidden}
.wk-day-card>h3{margin:0;padding:11px 14px;font-size:13.5px;font-weight:400;
  letter-spacing:.16em;color:var(--tx-fig);display:flex;align-items:center;gap:10px;
  border-bottom:1px solid var(--line)}
.wk-day-card>h3 .cnt{margin-left:auto;font-family:var(--mono);font-size:10.5px;
  font-weight:400;letter-spacing:.04em;color:var(--tx-fig)}
.wk-day-card.today{border-color:var(--today)}
.wk-day-card.today>h3{color:var(--warm)}
.wk-day-card.today>h3::after{content:'今天';font-size:9px;font-weight:700;
  letter-spacing:.1em;padding:1px 5px;background:var(--today);color:#fff}
.wk-row{position:relative;display:flex;align-items:center;gap:12px;
  padding:12px 12px 12px 17px;color:var(--ink);text-decoration:none;
  border-top:1px solid var(--line);transition:background .2s}
.wk-row:first-of-type{border-top:0}
.wk-row::before{content:'';position:absolute;left:0;top:11px;bottom:11px;width:2px;
  background:var(--sc);opacity:.3;transition:opacity .2s}
.wk-row:hover{background:linear-gradient(90deg,
  color-mix(in srgb,var(--sc) 9%,transparent),transparent 82%)}
.wk-row:hover::before{opacity:1}
.wk-row.is-own{background:color-mix(in srgb,var(--own) 11%,transparent)}
.wk-row.is-own::before{background:var(--own);opacity:.75}
.wk-row.is-own .b .k{color:color-mix(in srgb,var(--own) 72%,var(--ink))}
.wk-row.is-own .b .n .tag{border-color:var(--own);color:var(--own);font-weight:700}
.wk-row.is-both{background:color-mix(in srgb,var(--both) 10%,transparent);
  align-items:flex-start}
.wk-row.is-both::before{background:var(--both);opacity:.7}
.wk-row.is-both .b .k{color:color-mix(in srgb,var(--both) 66%,var(--ink))}
.wk-row.is-both .b .n{font-size:14px}
.wk-row.is-other::before{opacity:.14}
.wk-row.is-other .b .k{color:var(--tx-fig)}
.wk-row.is-other .b .n{color:var(--muted);font-size:14px}
.wk-row .t{flex:none;width:52px;font-size:10px;color:var(--tx-fig);line-height:1.5}
.wk-row .t b{display:block;font-family:var(--mono);font-size:12.5px;font-weight:700;
  color:var(--ink2,var(--ink));letter-spacing:.02em}
.wk-row .b{flex:1;min-width:0}
.wk-row .b .k{display:flex;align-items:center;gap:5px;font-family:var(--mono);
  font-size:10px;font-weight:700;letter-spacing:.1em;color:var(--sc)}
.wk-row .b .n{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  font-size:15px;font-weight:400;line-height:1.4}
.wk-row .b .n .tag{font-family:var(--mono);font-size:9px;font-weight:600;
  color:var(--tx-fig);border:1px solid var(--line);padding:0 3px}
.wk-row .b .n .room{font-weight:600;color:var(--ink2,var(--ink))}
.wk-row .b .n .dot{color:var(--muted);opacity:.85}
.wk-row .ar{flex:none;font-size:12px;color:var(--tx-sm);opacity:.7}
html[data-time="day"] .wk-row .b .n,
html[data-time="dawn"] .wk-row .b .n{font-weight:600}
.wk-off{padding:18px;text-align:center;color:var(--tx-fig);font-size:12px;
  letter-spacing:.22em}

/* ---------- 窄屏 ---------- */
@media (max-width:900px){
  .wk-wrap{display:none}
  .wk-days{display:block}
  .feed{padding-top:26px}
  /* 图例排两列，别占掉半屏 */
  .lg{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;padding-top:18px;margin-top:22px}
  .lg-note{margin-top:12px;grid-column:1 / -1}
  .rail-act{margin-top:16px}
  .feed-head .r{font-size:9.5px;letter-spacing:.06em;white-space:normal;text-align:right}
}
