/* ==========================================================================
   练琴
   灯下是一张抄谱纸（今天的琴房单）：顶上五条横线，大字写几点、几号琴房，下面是今天的单元和两小时怎么分；
   手边是本周和要问老师的事；三张桌垫是三首曲子的分句，每首一条小节地图；
   再往下是怎么练、练琴记录、整个计划的时间线和研究依据。
   曲目颜色只用在小节地图、单元编号和一颗小圆点上，不做色条。
   ========================================================================== */

.piano-page {
  max-width: 1180px;
}

/* —— 曲目的小标记、单元编号 —— */
.pc-mark {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--ink-2);
  font: 500 13px/20px var(--font);
  white-space: nowrap;
}
.pc-mark::before,
.pc-dot {
  content: '';
  display: inline-block;
  width: 7px;
  height: 7px;
  flex: none;
  border-radius: 50%;
  background: var(--c);
}
.u-tag {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 7px;
  border: 0;
  border-radius: var(--r-xs);
  background: none;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 55%, transparent);
  color: var(--ink);
  font: 600 12px/22px var(--font-num);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  transition: background-color var(--d), box-shadow var(--d);
}
.u-tag:hover {
  background: color-mix(in srgb, var(--c) 12%, transparent);
}
.u-tag.doing {
  background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--c) 26%, transparent) 0 3px, transparent 3px 6px);
}
.u-tag.done {
  background: var(--c);
  box-shadow: none;
  color: #fff;
}

/* —— 灯下：琴房单 —— */
.pk-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(300px, 1fr);
  gap: 28px;
  align-items: start;
}
.room-sheet {
  position: relative;
  padding: 18px 34px 22px;
  box-shadow: var(--shadow-3);
  transform: rotate(-0.35deg);
}
/* 抄谱纸：顶上五条细线 */
.staff {
  display: block;
  width: 100%;
  height: 26px;
  margin-bottom: 18px;
  overflow: visible;
}
.staff line {
  stroke: var(--paper-line);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}
.room-off {
  display: grid;
  gap: 2px;
  margin-bottom: 18px;
  padding: 10px 14px;
  border-radius: var(--r-md);
  background: var(--hover);
  color: var(--ink-2);
  font: var(--t-small);
}
.room-off b {
  color: var(--ink);
  font: var(--t-item);
}
.room-kicker {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 12px;
  color: var(--ink-2);
  font: var(--t-small);
}
.room-kicker b {
  color: var(--accent-ink, var(--accent));
  font-weight: 600;
  letter-spacing: 0.06em;
}
.room-sheet.is-live .room-kicker b::before {
  content: '';
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 6px;
  border-radius: 50%;
  background: currentColor;
  vertical-align: 1px;
  animation: live-breathe 1.6s var(--ease) infinite;
}
@keyframes live-breathe {
  50% {
    opacity: 0.35;
  }
}
.room-title {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 18px;
  margin-top: 6px;
}
.room-title > .num {
  font: 300 40px/48px var(--font-num);
  letter-spacing: -0.01em;
}
.room-no {
  font: 400 22px/30px var(--font-kai);
}
.room-no b {
  font: 500 24px/30px var(--font-num);
}
.room-trip {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 20px;
  margin-top: 6px;
  color: var(--ink-2);
  font: var(--t-small);
}
.room-trip > span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.room-trip svg {
  color: var(--ink-3);
}
.room-trip em {
  margin-left: 6px;
  color: var(--accent-ink, var(--accent));
  font-style: normal;
  font-weight: 600;
}
.room-clash {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-top: 10px;
  padding: 8px 12px;
  border-radius: var(--r-md);
  background: var(--warn-soft);
  color: var(--ink);
  font: var(--t-small);
}
.room-clash svg {
  flex: none;
  margin-top: 3px;
  color: var(--accent-ink, var(--warn));
}
.room-clash b {
  font-weight: 600;
}
.room-what {
  margin-top: 12px;
  color: var(--ink-2);
  font: var(--t-body);
}
.room-label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
  color: var(--ink-3);
  font: 400 12px/18px var(--font);
  letter-spacing: 0.1em;
}
.room-label .num {
  letter-spacing: 0;
}
.room-units {
  margin-top: 20px;
}
.t-unit {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 9px 0;
  border-top: 0.5px solid var(--line);
}
.t-unit .check {
  margin-top: 1px;
}
.t-unit-main {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  text-align: left;
}
.t-unit-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
}
.t-unit-head b {
  color: color-mix(in srgb, var(--c) 82%, var(--ink));
  font: 600 16px/22px var(--font-num);
}
.t-unit-bars {
  color: var(--ink-2);
  font: var(--t-small);
}
.t-unit-head em {
  padding: 0 6px;
  border-radius: var(--r-xs);
  background: var(--accent-soft);
  color: var(--accent-ink, var(--accent));
  font: 500 11px/18px var(--font);
  font-style: normal;
}
.t-unit-what {
  color: var(--ink-2);
  font: var(--t-small);
}
.t-unit.done .t-unit-what,
.t-unit.done .t-unit-bars {
  color: var(--ink-3);
}
.t-unit-main:hover .t-unit-what {
  color: var(--ink);
}
.room-none {
  padding: 10px 0 2px;
  border-top: 0.5px solid var(--line);
  color: var(--ink-2);
  font: var(--t-small);
}
.room-plan {
  margin-top: 20px;
}
/* 两小时怎么分：一条尺子 */
.slices {
  position: relative;
}
.slice-bar {
  position: relative;
  display: flex;
  gap: 2px;
  height: 32px;
}
.slice {
  display: grid;
  place-items: center;
  min-width: 0;
  overflow: hidden;
  border-radius: 6px;
  background: color-mix(in srgb, var(--paper-ink) 7%, transparent);
  color: var(--ink-2);
  font: 500 11px/14px var(--font);
  white-space: nowrap;
}
.slice b {
  overflow: hidden;
  text-overflow: clip;
  padding: 0 4px;
  font-weight: 500;
}
.slice.off {
  background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--paper-ink) 9%, transparent) 0 2px, transparent 2px 5px);
}
.slice.past {
  opacity: 0.5;
}
.slice.now {
  background: color-mix(in srgb, var(--accent-ink, var(--accent)) 22%, transparent);
  color: var(--paper-ink);
}
.slice-now {
  position: absolute;
  top: -4px;
  bottom: -4px;
  width: 2px;
  margin-left: -1px;
  border-radius: 1px;
  background: var(--accent-ink, var(--accent));
}
.slice-ticks {
  position: relative;
  height: 18px;
  margin-top: 4px;
  color: var(--ink-3);
  font: 400 11px/18px var(--font-num);
}
.slice-ticks span {
  position: absolute;
  transform: translateX(-50%);
}
.slice-ticks span:first-child {
  transform: none;
}
.slice-ticks span:last-child {
  transform: translateX(-100%);
}
.slice-say {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 6px;
  margin-top: 6px;
  color: var(--ink-2);
  font: var(--t-small);
}
.slice-say b {
  color: var(--ink);
}
.slice-say .num {
  margin-left: auto;
  color: var(--accent-ink, var(--accent));
}
.live-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent-ink, var(--accent));
  align-self: center;
  animation: live-breathe 1.6s var(--ease) infinite;
}
/* 手机：竖着的一列 */
.slice-list {
  display: grid;
  padding: 0;
  list-style: none;
}
.slice-list li {
  display: grid;
  grid-template-columns: 46px auto minmax(0, 1fr);
  align-items: baseline;
  gap: 2px 10px;
  padding: 6px 0;
  border-top: 0.5px solid var(--line);
  color: var(--ink-2);
  font: var(--t-small);
}
.slice-list li .num {
  color: var(--ink-3);
  font-size: 12px;
}
.slice-list li b {
  color: var(--ink);
  font-weight: 500;
}
.slice-list li small {
  color: var(--ink-3);
  font: var(--t-caption);
}
.slice-list li.off b {
  color: var(--ink-3);
  font-weight: 400;
}
.slice-list li.past {
  opacity: 0.5;
}
.slice-list li.now {
  margin: 0 -10px;
  padding: 6px 10px;
  border-radius: var(--r-sm);
  border-top-color: transparent;
  background: color-mix(in srgb, var(--accent-ink, var(--accent)) 14%, transparent);
}
.room-tech {
  display: grid;
  gap: 2px;
  margin-top: 18px;
  color: var(--ink-2);
  font: var(--t-small);
}
.room-tech b {
  color: var(--ink);
  font-weight: 600;
}
.room-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 0.5px solid var(--line);
}
.room-week {
  color: var(--ink-3);
  font: var(--t-caption);
}

/* —— 手边：本周、问老师 —— */
.pk-side {
  display: grid;
  gap: 20px;
  min-width: 0;
}
.pk-week-rows {
  display: grid;
  gap: 10px;
}
.pk-week-row {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr);
  align-items: start;
  gap: 10px;
}
.pk-week-row .pc-mark {
  padding-top: 1px;
}
.pk-week-units {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  min-width: 0;
}
.pk-extra {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--ink-2);
  font: var(--t-small);
}
.pk-backlog {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  margin-top: 12px;
  color: var(--ink-3);
  font: var(--t-caption);
}
.pk-check,
.pk-cp {
  margin-top: 14px;
  color: var(--ink-2);
  font: var(--t-small);
}
.pk-check b {
  margin-right: 8px;
  color: var(--accent);
  font-weight: 600;
}
.pk-cp {
  margin-top: 8px;
  padding-top: 10px;
  border-top: 0.5px solid var(--line);
  color: var(--ink-3);
}
.pk-cp .num {
  color: var(--ink);
  font-weight: 600;
}
.pk-asks .goal {
  padding: 6px 0;
}
.ask-ans {
  display: block;
  margin-top: 2px;
  color: var(--ok);
  font: var(--t-caption);
  text-decoration: none;
}

/* —— 三首 —— */
.pk-legend {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--ink-3);
  font: var(--t-caption);
}
.pk-legend .lg {
  width: 14px;
  height: 8px;
  margin-left: 8px;
  border-radius: 2px;
  background: var(--accent);
}
.pk-legend .lg.doing {
  background: repeating-linear-gradient(135deg, var(--accent) 0 2px, transparent 2px 4px);
}
.pk-legend .lg.now {
  background: none;
  box-shadow: inset 0 0 0 1.5px var(--ink-2);
}
.pieces {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: start;
}
.piece {
  display: grid;
  min-width: 0;
  padding: 20px 20px 16px;
}
.piece-kicker {
  display: flex;
  align-items: center;
  gap: 7px;
  color: var(--ink-3);
  font: var(--t-caption);
  letter-spacing: 0.06em;
}
.piece-head h3 {
  margin-top: 4px;
  font: 400 19px/27px var(--font-kai);
}
.piece-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 12px;
  margin-top: 2px;
  color: var(--ink-2);
  font: var(--t-small);
}
.piece-due {
  margin-top: 4px;
  color: var(--ink-3);
  font: var(--t-caption);
}
.piece-due b {
  margin-right: 6px;
  color: var(--ink-2);
  font-weight: 500;
}
.piece-prog {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 0.5px solid var(--line);
}
.piece-count {
  display: flex;
  align-items: baseline;
  gap: 4px;
  margin-bottom: 8px;
  color: var(--ink-3);
  font: var(--t-small);
}
.piece-count b {
  color: var(--ink);
  font: 300 28px/30px var(--font-num);
}
.piece-count em {
  margin-left: 10px;
  color: var(--ink-2);
  font-style: normal;
}
.piece-goal {
  margin-top: 10px;
  color: var(--ink-2);
  font: var(--t-caption);
}
/* 小节地图 */
.barmap-secs {
  display: flex;
  gap: 2px;
  margin-bottom: 4px;
}
.barmap-secs span {
  display: flex;
  align-items: baseline;
  gap: 4px;
  min-width: 0;
  overflow: hidden;
  padding-left: 1px;
  border-left: 1px solid var(--line-2);
  white-space: nowrap;
}
.barmap-secs b {
  padding-left: 4px;
  color: var(--ink-2);
  font: 500 11px/14px var(--font);
}
.barmap-secs small {
  color: var(--ink-3);
  font: 400 10px/14px var(--font-num);
}
.barmap-cells {
  display: flex;
  gap: 2px;
  height: 16px;
}
.bm-cell {
  min-width: 3px;
  padding: 0;
  border: 0;
  border-radius: 3px;
  background: var(--hover);
  box-shadow: inset 0 0 0 0.5px var(--line-2);
  transition: transform var(--d-fast) var(--ease);
}
.bm-cell:hover {
  transform: scaleY(1.3);
}
.bm-cell.doing {
  background: repeating-linear-gradient(135deg, var(--c) 0 2px, transparent 2px 5px);
  box-shadow: inset 0 0 0 0.5px var(--c);
}
.bm-cell.done {
  background: var(--c);
  box-shadow: none;
}
.bm-cell.now {
  box-shadow: inset 0 0 0 1.5px var(--ink-2);
}
.bm-cell.done.now {
  box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--ink) 70%, transparent);
}
.piece-units {
  margin-top: 14px;
}
.unit-group-head {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 34px;
  padding: 0 2px;
  border: 0;
  border-top: 0.5px solid var(--line);
  background: none;
  color: var(--ink-2);
  font: var(--t-small);
  text-align: left;
}
.unit-group-head b {
  min-width: 2.2em;
  color: var(--ink);
  font: 400 15px/22px var(--font-kai);
}
.unit-group-head small {
  overflow: hidden;
  color: var(--ink-3);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.unit-group-head svg {
  flex: none;
  color: var(--ink-3);
  transition: transform var(--d) var(--ease);
}
.unit-group-head[aria-expanded='false'] svg {
  transform: rotate(-90deg);
}
.unit-group-head:hover {
  color: var(--ink);
}
.unit-list {
  padding-bottom: 6px;
}
.unit-row {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  padding: 7px 0;
}
.unit-row + .unit-row {
  border-top: 0.5px dashed var(--line);
}
.unit-row .check {
  margin-top: -1px;
}
.unit-main {
  display: grid;
  gap: 1px;
  min-width: 0;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  text-align: left;
}
.unit-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.unit-head b {
  color: color-mix(in srgb, var(--c) 80%, var(--ink));
  font: 600 13px/20px var(--font-num);
}
.unit-bars {
  color: var(--ink-2);
  font: 400 12px/20px var(--font-num);
}
.unit-week {
  color: var(--ink-3);
  font: var(--t-caption);
  white-space: nowrap;
}
.unit-week.now {
  color: var(--accent);
  font-weight: 600;
}
.unit-what {
  display: -webkit-box;
  overflow: hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  color: var(--ink-2);
  font: 400 12.5px/19px var(--font);
}
.unit-main:hover .unit-what {
  color: var(--ink);
}
.unit-row.done .unit-what {
  color: var(--ink-3);
}
.piece-note {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 0.5px solid var(--line);
  color: var(--ink-3);
  font: var(--t-caption);
}

/* —— 怎么练 —— */
.pk-how {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  align-items: start;
}
.pk-how > .stack {
  display: grid;
  gap: 20px;
  min-width: 0;
}
.flow {
  display: grid;
  gap: 10px;
  padding: 0;
  list-style: none;
}
.flow li {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 2px 10px;
  color: var(--ink-2);
  font: var(--t-small);
}
.flow-n {
  grid-row: span 2;
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  box-shadow: inset 0 0 0 1px var(--line-2);
  color: var(--ink-2);
  font: 500 12px/1 var(--font-num);
}
.flow li b {
  display: flex;
  align-items: baseline;
  gap: 8px;
  color: var(--ink);
  font: var(--t-item);
  font-size: 15px;
}
.flow li b small {
  color: var(--ink-3);
  font: var(--t-caption);
}
.pass {
  margin-top: 14px;
  padding: 10px 12px;
  border-radius: var(--r-md);
  background: var(--accent-soft);
  color: var(--ink-2);
  font: var(--t-small);
}
.pass b {
  margin-right: 8px;
  color: var(--accent);
  font-weight: 600;
}
.rules {
  display: grid;
  gap: 6px;
  margin-top: 12px;
  padding-left: 1.1em;
  color: var(--ink-2);
  font: var(--t-small);
}
.tech-days {
  display: grid;
}
.tech-day {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 1px 10px;
  padding: 8px 0;
  border-top: 0.5px solid var(--line);
}
.tech-day:first-child {
  border-top: 0;
  padding-top: 0;
}
.tech-w {
  grid-row: span 3;
  color: var(--ink-3);
  font: var(--t-caption);
  padding-top: 2px;
}
.tech-day b {
  color: var(--ink);
  font: 500 14px/21px var(--font);
}
.tech-what {
  color: var(--ink-2);
  font: var(--t-small);
}
.tech-day small {
  color: var(--ink-3);
  font: var(--t-caption);
}
.tech-day.today {
  margin: 0 -10px;
  padding: 8px 10px;
  border-radius: var(--r-md);
  border-top-color: transparent;
  background: var(--accent-soft);
}
.tech-day.today .tech-w {
  color: var(--accent);
  font-weight: 600;
}
.tech-day.today + .tech-day {
  border-top-color: transparent;
}
.tech-stop {
  margin-top: 10px;
  color: var(--ink-3);
  font: var(--t-caption);
}
.tech-stop b {
  margin-right: 6px;
  color: var(--danger);
  font-weight: 600;
}
.prep {
  display: grid;
  gap: 7px;
  padding-left: 1.3em;
  color: var(--ink-2);
  font: var(--t-small);
}
.prep b {
  margin-right: 8px;
  color: var(--ink);
  font-weight: 500;
}
.plog {
  padding: 10px 0;
  border-top: 0.5px solid var(--line);
}
.plog-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 8px;
}
.plog-head b {
  color: var(--ink);
  font: 500 13px/20px var(--font);
}
.plog-head small {
  color: var(--ink-3);
  font: var(--t-caption);
}
.plog-units {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
}
.plog-body {
  display: grid;
  gap: 2px;
  margin-top: 6px;
}
.plog-body div {
  display: grid;
  grid-template-columns: 4.5em minmax(0, 1fr);
  gap: 8px;
  font: var(--t-small);
}
.plog-body dt {
  color: var(--ink-3);
}
.plog-body dd {
  color: var(--ink-2);
}

/* —— 计划时间线 —— */
.road {
  display: grid;
  grid-template-columns: repeat(11, minmax(96px, 1fr));
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
  padding-bottom: 4px;
}
.road::-webkit-scrollbar {
  display: none;
}
.road-wk {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  padding: 10px 9px 10px;
  border-radius: var(--r-md);
  background: color-mix(in srgb, var(--mat) 70%, transparent);
  box-shadow: inset 0 0 0 0.5px var(--line);
}
.road-wk.now {
  --ink: var(--paper-ink);
  --ink-2: var(--paper-ink-2);
  --ink-3: var(--paper-ink-2);
  --line: var(--paper-line);
  --line-2: var(--paper-line);
  background: var(--paper);
  box-shadow: var(--shadow-2);
  color: var(--paper-ink);
}
.road-wk.past {
  opacity: 0.55;
}
.road-wk.keep {
  box-shadow: inset 0 0 0 1px var(--line-2);
  background: none;
}
.road-n {
  display: grid;
  gap: 0;
}
.road-n b {
  color: var(--ink);
  font: 500 13px/18px var(--font);
}
.road-wk.now .road-n b {
  color: var(--accent-ink, var(--accent));
}
.road-n span {
  color: var(--ink-3);
  font: 400 11px/16px var(--font-num);
}
.road-units {
  display: grid;
  gap: 4px;
}
.road-line {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
}
.road-line .u-tag {
  height: 19px;
  padding: 0 5px;
  font-size: 11px;
  line-height: 19px;
}
.road-line .pk-extra {
  font: var(--t-caption);
}
.road-check {
  margin-top: auto;
  color: var(--ink-3);
  font: 400 11.5px/17px var(--font);
}
.road-cp {
  display: block;
  color: var(--accent);
  font-weight: 600;
}
.after {
  margin-top: 18px;
}
.after-row {
  display: flex;
  gap: 6px;
}
.after-ph {
  display: grid;
  align-content: start;
  gap: 3px;
  flex-basis: 0;
  min-width: 0;
  padding: 10px 12px;
  border-radius: var(--r-md);
  background: color-mix(in srgb, var(--mat) 70%, transparent);
  box-shadow: inset 0 0 0 0.5px var(--line);
}
.after-ph b {
  color: var(--ink);
  font: 400 15px/21px var(--font-kai);
}
.after-ph small {
  color: var(--ink-3);
  font: 400 11px/16px var(--font-num);
}
.after-ph span {
  color: var(--ink-2);
  font: var(--t-caption);
}
.after-ph em {
  color: var(--accent);
  font: var(--t-caption);
  font-style: normal;
}
.after-ph.now {
  box-shadow: inset 0 0 0 1.5px var(--accent);
}
.after-ph.past {
  opacity: 0.55;
}
.key-dates {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin-top: 16px;
  color: var(--ink-2);
  font: var(--t-small);
  text-shadow: var(--desk-text-shadow);
}
.kd {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
}
.kd b {
  color: var(--ink);
  font-weight: 600;
}
.kd small {
  color: var(--ink-3);
  font: var(--t-caption);
}
.kd.cp b {
  color: var(--accent);
}
.kd.past {
  opacity: 0.5;
}

/* —— 研究依据 —— */
.pk-methods-head {
  width: auto;
  padding-right: 12px;
}
.methods {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 14px;
  align-items: start;
}
.method {
  display: grid;
  gap: 6px;
  padding: 14px 16px 14px;
  border-radius: var(--r-lg);
}
.method > b {
  font: 400 16px/23px var(--font-kai);
}
.method p {
  color: var(--ink-2);
  font: var(--t-small);
}
.method-how span {
  margin-right: 8px;
  color: var(--accent);
  font-weight: 600;
}
.method-src {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
}
.method-src a {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  color: var(--ink-3);
  font: var(--t-caption);
}
.method-src a:hover {
  color: var(--accent);
}
.method.fuses ul {
  display: grid;
  gap: 6px;
  padding-left: 1.1em;
  color: var(--ink-2);
  font: var(--t-small);
}
.method.fuses ul + ul {
  margin-top: 4px;
}
.method.fuses li b {
  margin-right: 6px;
  color: var(--ink);
}

/* —— 手机：今天那一栏下面的三首小结 —— */
.pk-sum {
  display: grid;
  gap: 8px;
  margin-top: 20px;
}
.pk-sum-item {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 52px;
  padding: 8px 14px;
  border: 0;
  border-radius: var(--r-lg);
  background: var(--mat);
  box-shadow: var(--shadow-1), inset 0 0 0 0.5px var(--mat-line);
  color: var(--mat-ink);
  text-align: left;
}
.pk-sum-item b {
  display: block;
  font: 400 16px/22px var(--font-kai);
}
.pk-sum-item small {
  color: var(--mat-ink-3);
  font: var(--t-caption);
}
.pk-sum-ring {
  flex: none;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: conic-gradient(var(--c) var(--p), var(--mat-line) 0);
  -webkit-mask: radial-gradient(circle, transparent 10px, #000 10.5px);
  mask: radial-gradient(circle, transparent 10px, #000 10.5px);
}

/* —— 弹层 —— */
.unit-sheet {
  display: grid;
  gap: 16px;
}
.unit-sheet-kicker {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 14px;
  color: var(--ink-3);
  font: var(--t-small);
}
.unit-sheet-block {
  display: grid;
  gap: 4px;
}
.unit-sheet-block b {
  color: var(--ink-3);
  font: 400 12px/18px var(--font);
  letter-spacing: 0.1em;
}
.unit-sheet-block p {
  color: var(--ink);
  font: var(--t-body);
}
.unit-sheet-block.how p {
  padding: 10px 12px;
  border-radius: var(--r-md);
  background: color-mix(in srgb, var(--c) 10%, var(--panel-2));
}
.unit-pick {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.u-pick {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  height: 32px;
  padding: 0 10px;
  border: 0;
  border-radius: var(--r-sm);
  background: var(--panel-2);
  box-shadow: inset 0 0 0 0.5px var(--line-2);
  color: var(--ink);
  font: 600 13px/32px var(--font-num);
}
.u-pick small {
  color: var(--ink-3);
  font: 400 11px/1 var(--font-num);
}
.u-pick.on {
  background: color-mix(in srgb, var(--c) 18%, var(--panel-2));
  box-shadow: inset 0 0 0 1.5px var(--c);
}

/* —— 导师面板开着、窗口窄一些 —— */
@container main (max-width: 1000px) {
  .pk-hero {
    grid-template-columns: minmax(0, 1.35fr) minmax(260px, 1fr);
    gap: 22px;
  }
  .room-sheet {
    padding: 16px 26px 20px;
  }
  .pieces,
  .pk-how {
    gap: 16px;
  }
  .piece {
    padding: 18px 16px 14px;
  }
  .methods {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@container main (max-width: 860px) {
  /* 三首一首一行：标题和小节地图并排，单元清单两列 */
  .pieces {
    grid-template-columns: minmax(0, 1fr);
  }
  .pieces .piece {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    column-gap: 28px;
  }
  .pieces .piece-head {
    grid-column: 1;
    grid-row: 1;
  }
  .pieces .piece-prog {
    grid-column: 2;
    grid-row: 1;
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
  }
  .pieces .piece-units {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 24px;
    align-items: start;
  }
  .pieces .piece-note {
    grid-column: 1 / -1;
  }
  .pk-how {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
  .pk-how > .pk-logs {
    grid-column: 1 / -1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .room-sheet.is-live .room-kicker b::before,
  .live-dot {
    animation: none;
  }
}
