@import "./tokens.css?v=44d50c75";

                   
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html {
  overflow-x: hidden;
  overscroll-behavior-x: none;
}
body {
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font);
  font-size: var(--text);
  line-height: 1.55;
  overflow-x: hidden;
  overscroll-behavior-x: none;
  transition: background-color var(--motion) ease, color var(--motion) ease;
}
html[data-skin="board"] body,
body.board {
  transition: none;
}
a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
button, input, textarea, select {
  font: inherit;
  color: inherit;
}
:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
[hidden] { display: none !important; }

                           
.app-frame {
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
}
                                      
                                                   
.app-frame-inline {
  min-height: 0;
  flex: none;
  display: block;
}
.app-topbar {
  border-bottom: 1px solid var(--line);
  background: var(--surface);
  position: sticky;
  top: 0;
  z-index: 8;
}
.app-topbar-inner {
  display: grid;
  grid-template-columns: minmax(140px, 1fr) auto minmax(140px, 1fr);
  align-items: center;
  gap: 12px;
  min-height: var(--header);
  /* 顶栏 1400（学科网首页 roof 同款），比正文 1200 略宽以保证 11 个入口单行居中 */
  max-width: var(--width-topnav);
  margin: 0 auto;
  padding: 8px 28px;
}
.top-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  justify-self: start;
  color: var(--ink);
  font-weight: 650;
  font-size: 14px;
  text-decoration: none;
}
.top-brand:hover { text-decoration: none; color: var(--ink); }
.logo-mark {
  width: 40px;
  height: 40px;
  border-radius: 8px;
  object-fit: cover;
  background: var(--primary-soft);
  flex: none;
}
.logo-text {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
  min-width: 0;
}
.logo-name {
  font-size: 17px;
  font-weight: 700;
  color: var(--color-primary);
  white-space: nowrap;
}
.logo-sub {
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--color-primary);
  opacity: 0.72;
  white-space: nowrap;
}
.top-nav {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
  justify-self: center;
}
.top-nav a {
  color: var(--ink);
  text-decoration: none;
  padding: 7px 12px;
  border-radius: 6px;
  font-size: 14px;
  white-space: nowrap;
  transition: background-color var(--motion) ease, color var(--motion) ease;
}
.top-nav a:hover { background: var(--bg); text-decoration: none; }
.top-nav a.on {
  background: var(--primary-soft);
  color: var(--primary);
  font-weight: 600;
}
.top-actions {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: nowrap;
  white-space: nowrap;
}
.top-actions [data-save-site],
.top-actions [data-logout] {
  flex: 0 0 auto;
  white-space: nowrap;
  writing-mode: horizontal-tb;
}
.top-settings {
  color: var(--muted);
  text-decoration: none;
  padding: 7px 10px;
  border-radius: 6px;
  font-size: 14px;
  white-space: nowrap;
}
.top-settings:hover { background: var(--bg); color: var(--ink); text-decoration: none; }
.top-settings.on {
  background: var(--primary-soft);
  color: var(--primary);
  font-weight: 600;
}
.app-main { min-width: 0; display: flex; flex-direction: column; flex: 1; }
.app-pagehead {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  max-width: var(--width-content); /* 与正文统一 1200 */
  margin: 0 auto;
  padding: 16px 28px 0;
  width: 100%;
}
.head-title { font-size: 15px; font-weight: 650; }
.head-kicker { font-size: var(--text-xs); }
.head-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
  margin-left: auto;
}
.draft-save-status {
  min-width: 76px;
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}
.draft-save-status.is-ok { color: var(--ok, #16803c); }
.draft-save-status.is-error { color: var(--danger, var(--color-error)); }
.app-content {
  padding: 12px 24px 64px;
  max-width: var(--width-content);
  margin: 0 auto;
  width: 100%;
}

                                       
.pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 22px 0 4px;
  flex-wrap: wrap;
}
.pager:empty { display: none; }
.pg-btn {
  appearance: none;
  min-width: 36px;
  height: 36px;
  padding: 0 12px;
  border: 1px solid var(--color-border, #e3e3e3);
  border-radius: 8px;
  background: var(--color-surface, #fff);
  color: var(--color-text-primary, #222);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.pg-btn:hover:not(:disabled):not(.on) { border-color: var(--color-primary, var(--color-primary)); color: var(--color-primary, var(--color-primary)); }
.pg-btn.on {
  background: var(--color-primary, var(--color-primary));
  border-color: var(--color-primary, var(--color-primary));
  color: #fff;
  font-weight: 600;
}
.pg-btn:disabled { opacity: .45; cursor: default; }
.pg-info { font-size: 13px; color: var(--color-muted, #8a8a8a); margin-left: 4px; }
.pg-ellipsis { color: var(--color-muted, #8a8a8a); padding: 0 2px; }
.space-teacher .wrap { max-width: none; margin: 0; padding: 0; }
.space-teacher .wrap > .top > div:first-child { display: none; }
.space-teacher .wrap > .top { justify-content: flex-end; margin-bottom: 12px; }
body.classroom-page .app-pagehead { display: none; }
body.classroom-page .wrap > .top { display: none; }
body.classroom-page .app-content { padding-top: 16px; padding-bottom: 48px; }
body.courseware-page .app-pagehead { display: none; }
body.courseware-page .wrap > .top { display: none; }
body.courseware-page .app-content {
  max-width: none;
  padding: 0;
}
body.courseware-page.cw-has-project {
  overflow: hidden;
}
body.courseware-page.cw-has-project .app-frame {
  height: 100dvh;
  overflow: hidden;
}
body.courseware-page.cw-has-project .app-topbar {
  position: relative;
  flex: none;
}
body.courseware-page.cw-has-project .app-topbar-inner {
  max-width: none;
}
body.courseware-page.cw-has-project .app-main,
body.courseware-page.cw-has-project .app-content,
body.courseware-page.cw-has-project .wrap.page {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
body.classroom-page .phase-rail {
  gap: 12px;
  margin: 0 0 22px;
}
body.classroom-page .phase-rail li {
  min-height: 112px;
  padding: 16px 18px 18px;
}
body.classroom-page .phase-rail li b { font-size: 13px; }
body.classroom-page .phase-rail li span {
  font-size: 20px;
  margin: 8px 0 6px;
}
body.classroom-page .phase-rail li em { font-size: 13px; }

.wrap { max-width: var(--width-content); margin: 0 auto; padding: 28px 24px 64px; }
.page-head, .top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 20px;
}
.auth-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 8px;
}
.auth-brand img {
  width: 40px;
  height: 40px;
  border-radius: 8px;
  object-fit: cover;
}
.auth-brand .brand { margin: 0; font-size: 17px; font-weight: 800; line-height: 1.2; color: var(--color-primary); }
.auth-brand .brand-sub { margin: 2px 0 0; font-size: 11px; font-weight: 500; letter-spacing: 0.04em; line-height: 1.35; color: var(--color-primary); opacity: 0.72; }
.timeline { display: flex; flex-direction: column; gap: 12px; }
.tl-item { padding-left: 14px; border-left: 2px solid var(--line); }
.sub, .muted { color: var(--muted); font-size: var(--text-sm); }

                        
.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 16px 18px;
  box-shadow: var(--shadow);
}
.section { margin-bottom: 28px; }
.grid { display: grid; gap: 16px; }
.grid.two { grid-template-columns: 1.2fr 0.8fr; }
.grid.three { grid-template-columns: repeat(3, 1fr); }
.benches { grid-template-columns: repeat(4, 1fr); }
.row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }

label { display: block; font-size: var(--text-xs); color: var(--muted); margin: 12px 0 6px; }
input, textarea, select {
  width: 100%;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--r-sm);
  padding: 9px 11px;
}
textarea {
  min-height: 2.6em;
  max-height: 28rem;
  resize: vertical;
  field-sizing: content;
  overflow-y: auto;
}

.btn {
  appearance: none;
  border: 0;
  background: var(--color-primary);
  color: var(--color-primary-foreground);
  padding: 8px 14px;
  border-radius: var(--r-sm);
  cursor: pointer;
  font-weight: 600;
  font-size: 14px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background-color var(--motion) ease, color var(--motion) ease, border-color var(--motion) ease, box-shadow var(--motion) ease;
}
.btn:hover { background: var(--color-primary-hover); text-decoration: none; }
.btn:active { background: var(--color-primary-active); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn.ghost {
  background: transparent;
  color: var(--ink);
  border: 1px solid var(--line);
}
.btn.ghost:hover { background: var(--color-surface-hover); }
.btn.ghost:active { background: var(--color-surface-active); }
.btn.ok { background: var(--ok); color: #fff; }
.btn.ok:hover { filter: brightness(0.96); }
a.btn { color: var(--color-primary-foreground); }
a.btn.ghost { color: var(--ink); }

.pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 2px 8px;
  font-size: var(--text-xs);
  color: var(--muted);
  background: var(--surface);
}
#shellStatus:empty { display: none; }
.err { color: var(--danger); font-size: 13px; }
.oktext { color: var(--ok); }
.empty {
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: var(--r);
  padding: 28px 16px;
  text-align: center;
}

.qrbox { text-align: center; }
.qrbox img, .qrbox canvas { width: 168px; height: 168px; }
.codebig {
  font-size: var(--display);
  letter-spacing: 0.16em;
  margin: 8px 0 0;
  font-weight: 650;
}
.count {
  font-size: var(--display);
  line-height: 1.1;
  font-weight: 650;
}
.names { display: flex; flex-wrap: wrap; gap: 8px; }
.namechip {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 4px 10px;
  font-size: 13px;
}
.literacy-checks {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 18px;
  margin: 4px 0 10px;
}
.literacy-check {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  border-radius: 0;
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
}
.literacy-check input {
  width: 15px;
  height: 15px;
  margin: 0;
  accent-color: var(--primary);
}

                                    
.issue-gen-actions { align-items: center; gap: 8px; flex-wrap: wrap; }
.issue-rationale {
  margin: 4px 0 0;
  color: var(--ink);
  font-size: 13px;
}
.issue-gen-progress {
  margin: 10px 0 14px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: var(--bg);
}
.issue-gen-progress-title {
  font-size: 14px;
  font-weight: 650;
  margin-bottom: 8px;
}
.issue-gen-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 6px;
}
.issue-gen-steps li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--muted);
}
.issue-gen-steps li::before {
  content: "○";
  width: 1.1em;
  text-align: center;
  color: var(--muted);
}
.issue-gen-steps li.is-done { color: var(--ink); }
.issue-gen-steps li.is-done::before { content: "✓"; color: var(--ok, #16803c); }
.issue-gen-steps li.is-doing { color: var(--primary); font-weight: 650; }
.issue-gen-steps li.is-doing::before { content: "●"; color: var(--primary); }
.issue-gen-steps li.is-fail { color: #c53030; }
.issue-gen-steps li.is-fail::before { content: "!"; color: #c53030; }

.quote {
  font-size: 14px;
  margin: 10px 0;
  padding-left: 12px;
  border-left: 2px solid var(--primary);
}
.table { width: 100%; border-collapse: collapse; font-size: 14px; }
.table th, .table td { border-bottom: 1px solid var(--line); text-align: left; padding: 8px 6px; vertical-align: top; }
.low { color: var(--warn); }

.camps { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.camp {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 14px;
}
.camp h3 { margin: 0 0 8px; font-size: 15px; }

.palace {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.tile {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 0;
  overflow: hidden;
}
.tile summary {
  list-style: none;
  cursor: pointer;
  padding: 12px 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.tile summary::-webkit-details-marker { display: none; }
.tile .who { font-weight: 650; }
.tile .meta { color: var(--muted); font-size: 12px; }
.tile .detail {
  padding: 0 14px 16px;
  border-top: 1px dashed var(--line);
  font-size: 14px;
  line-height: 1.65;
}
.badge {
  display: inline-block;
  border-radius: var(--r-sm);
  padding: 1px 8px;
  font-size: 12px;
  color: #fff;
}
.badge.pre { background: var(--color-neutral); }
.badge.uni { background: var(--color-warning); }
.badge.multi { background: var(--color-success); }
.badge.rel { background: var(--chart-3); }
.badge.ext { background: var(--color-text-primary); }

.preset-list { display: grid; gap: 8px; max-height: 420px; overflow: auto; }
.preset {
  text-align: left;
  width: 100%;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  cursor: pointer;
}
.preset.active { border-color: var(--primary); background: var(--primary-soft); }

.steps {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 0;
  margin: 0 0 18px;
  list-style: none;
}
.steps li {
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 6px 10px;
  font-size: 13px;
  color: var(--muted);
  cursor: default;
}
.steps li.on {
  background: var(--color-primary-soft);
  color: var(--color-primary);
  border-color: var(--color-primary-border);
  box-shadow: inset 3px 0 0 var(--color-primary);
}
.steps li.done { border-color: var(--ok); color: var(--ok); }
.with-tip {
  display: flex;
  align-items: center;
  gap: 8px;
}
.info-tip {
  position: relative;
  display: inline-flex;
  flex: none;
}
.info-tip-icon {
  appearance: none;
  width: 18px;
  height: 18px;
  border-radius: 8px;
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 12px;
  font-weight: 650;
  font-style: normal;
  line-height: 1;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: help;
  background: var(--bg);
}
.info-tip-pop {
  display: none;
  position: absolute;
  left: 0;
  top: calc(100% + 8px);
  width: min(360px, 70vw);
  padding: 12px 14px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
  color: var(--muted);
  font-size: 13px;
  font-weight: 400;
  line-height: 1.6;
  z-index: 12;
}
.info-tip:hover .info-tip-pop,
.info-tip:focus-within .info-tip-pop {
  display: block;
}
.candidate {
  text-align: left;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--r);
  padding: 14px;
  cursor: pointer;
}
.candidate.picked, .candidate.on { border-color: var(--primary); background: var(--primary-soft); }
.btn.small { padding: 6px 12px; font-size: 13px; }

                                        
.issue-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 8px 0 12px;
}
@media (max-width: 800px) {
  .issue-grid { grid-template-columns: 1fr; }
}
.recs-heading { margin: 18px 0 6px; font-size: 18px; }
#recs .rec-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
  min-height: 132px;
  padding: 14px 16px;
  cursor: pointer;
}
#recs .rec-card:hover { border-color: var(--color-primary-border); box-shadow: 0 4px 14px color-mix(in srgb, var(--color-primary) 12%, transparent); }
#recs .rec-card:focus-visible {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}
#recs .candidate-copy { min-width: 0; }
#recs .candidate-meta { margin: 0 0 7px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
#recs .selected-pill { color: var(--primary); border-color: var(--primary); background: var(--primary-soft); }
#recs .candidate-title { display: block; font-size: 18px; line-height: 1.4; }
#recs .candidate-copy .sub { margin: 6px 0 0; }
#recs .candidate-why {
  margin: 6px 0 0;
  line-height: 1.5;
}
#recs .rec-core,
#recs .rec-path,
#recs .candidate-why {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: var(--muted);
}
#recs .rec-core b,
#recs .rec-path b,
#recs .candidate-why b {
  display: block;
  margin-bottom: 2px;
  color: var(--text);
  font-size: 12px;
  font-weight: 650;
}
#recs .rec-use { flex: none; white-space: nowrap; }
#recs .rec-use-col { display: grid; gap: 8px; align-content: center; }
#recs .rec-card-custom { border-style: dashed; }
.rec-empty { grid-column: 1 / -1; margin: 0; padding: 20px; color: var(--muted); text-align: center; border: 1px dashed var(--line); border-radius: var(--r); }
.recommendation-filters .btn.active {
  background: var(--color-primary);
  color: var(--color-primary-foreground);
  border-color: var(--color-primary);
}
.recommendation-filters .btn.active:hover { background: var(--color-primary-hover); }
.recommendation-type-note { margin: 6px 0 0; font-size: 12px; }
.rec-shelf { margin: 0 0 8px; }
.rec-shelf-stage {
  overflow: hidden;
}
.rec-shelf.is-collapsed .rec-shelf-stage { display: none; }
.rec-shelf.is-collapsed .rec-picked { display: flex; }
.step-lead { font-size:15px; margin:0 0 16px; }
.recommendation-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:8px; }
.recommendation-head h3 { margin:0 0 4px; }
.compact-selected,
.selected-issue-card.compact-selected {
  margin-top: 10px;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.selected-issue-card.compact-selected.picked {
  padding: 14px 16px;
  border: 1px solid var(--primary);
  border-radius: var(--r);
  background: var(--primary-soft);
}
.compact-selected .issue-why { margin: 8px 0 0; max-width: 52rem; line-height: 1.55; }
.compact-selected .selected-change { margin-left: auto; font-size: 12px; padding: 4px 10px; border: 0; background: transparent; color: var(--primary); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.compact-selected .selected-issue-heading { margin-bottom: 4px; }
.selected-issue-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.selected-issue-heading h3 { margin:2px 0 10px; }.eyebrow { color:var(--primary); font-size:12px; font-weight:650; }
.selected-state { color:var(--muted); font-size:12px; }
.compact-selected #mainIssue {
  border: none;
  background: transparent;
  padding: 0;
  min-height: 0;
  border-radius: 0;
  box-shadow: none;
  font-size: 18px;
  font-weight: 650;
  line-height: 1.45;
  width: 100%;
}
.compact-selected #mainIssue:focus { outline: none; box-shadow: none; }
.compact-selected.picked .selected-actions { margin-top: 12px; }
.issue-status:not(:empty) { display: block; margin-top: 4px; }
.selected-actions { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:10px; }
.modal-open { overflow:hidden; }
.advanced-design { position:fixed; inset:0; z-index:80; }
.advanced-backdrop { position:absolute; inset:0; background:rgba(15,23,42,.42); backdrop-filter:blur(2px); }
.advanced-panel { position:absolute; top:0; right:0; width:min(680px, 100%); height:100%; overflow:auto; padding:28px 30px 36px; background:var(--surface); box-shadow:-12px 0 30px rgba(15,23,42,.16); animation:slide-in-right .22s ease both; }
.advanced-panel-head { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; margin-bottom:8px; }.advanced-panel-head h3 { margin:3px 0 0; font-size:22px; }
.modal-close { width:34px; height:34px; border:1px solid var(--line); border-radius:8px; background:var(--surface); color:var(--muted); font-size:24px; line-height:1; cursor:pointer; }
.issue-picker-overlay {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 6vh 16px;
  overflow: auto;
}
.issue-picker-overlay[hidden] { display: none; }
.issue-picker-panel {
  position: relative;
  z-index: 1;
  width: min(1100px, 100%);
  max-height: min(88vh, calc(100vh - 12vh));
  overflow: auto;
  margin: 0 auto;
  padding: 24px 28px 28px;
  background: var(--surface);
  border-radius: 8px;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.2);
  animation: dialog-in 0.18s ease-out both;
}
.issue-picker-panel .recommendation-head { margin-top: 4px; }
.issue-picker-panel #selectedIssueTab {
  margin-top: 14px;
  padding: 14px 16px 16px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--bg);
}
.issue-picker-panel-schemes { width: min(1040px, 100%); }
@keyframes slide-in-right { from { transform:translateX(20px); opacity:.5; } to { transform:none; opacity:1; } }
.recommendation-more {
  grid-column: 1 / -1;
  justify-self: center;
  position: relative;
  z-index: 3;
  cursor: pointer;
  margin: 4px 0 8px;
}

.step-lead { font-size:15px; margin:0 0 16px; }
.recommendation-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:8px; }
.recommendation-head h3 { margin:0 0 4px; }
                               
.design-route { display:flex; gap:8px; margin:18px 0; padding:5px; background:var(--bg); border-radius:8px; width:max-content; max-width:100%; overflow:auto; }
.route-tab { border:0; background:transparent; color:var(--muted); padding:9px 14px; border-radius:8px; cursor:pointer; white-space:nowrap; }
.route-tab.on { background:var(--surface); color:var(--primary); box-shadow:0 1px 4px rgba(31,41,55,.1); font-weight:650; }
.design-brief { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; margin:16px 0 22px; }
.design-brief > div { padding:12px 14px; border:1px solid var(--line); background:var(--bg); border-radius:var(--r-sm); min-width:0; }
.design-brief span, .relation-node span { display:block; color:var(--muted); font-size:12px; margin-bottom:4px; }
.design-brief b { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.context-workbench, .issue-from-context, .selected-issue-card { border:1px solid var(--line); border-radius:var(--r); padding:18px; margin:16px 0; background:var(--surface); }
.section-heading { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.section-heading h3 { margin:0 0 4px; }
.context-fields { display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:12px; margin:16px 0; }
.context-fields label { margin:0; }
.context-actions { margin-top:12px; justify-content:flex-end; }
.health-card { margin-top:14px; padding:14px; background:var(--primary-soft); border:1px solid color-mix(in srgb, var(--primary) 25%, var(--line)); border-radius:var(--r-sm); }
.health-head { display:flex; justify-content:space-between; align-items:center; color:var(--primary); }
.health-dims { display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; margin:12px 0; }
.health-dims div { display:flex; justify-content:space-between; gap:8px; font-size:12px; padding:6px 8px; background:var(--surface); border-radius:6px; }
.health-card p { margin:8px 0 0; font-size:13px; }
.context-suggestions { margin-top:12px; padding:12px 14px; border:1px dashed var(--primary); border-radius:var(--r-sm); background:var(--primary-soft); }
.context-suggestions p { margin:4px 0; }
.suggestion-chips { display:flex; gap:6px; flex-wrap:wrap; margin:8px 0; }
.suggestion-chips span { font-size:12px; padding:5px 9px; border-radius:8px; background:var(--surface); color:var(--muted); }
.context-guide { margin-top:8px; padding:9px 12px; border-radius:8px; background:var(--bg); color:var(--muted); font-size:12px; }
.context-preview { display:flex; align-items:center; gap:12px; margin-top:10px; padding:16px; border:1px dashed var(--primary); border-radius:8px; background:var(--primary-soft); }
.context-preview .preview-icon { display:grid; place-items:center; width:40px; height:40px; border-radius:9px; background:var(--surface); color:var(--primary); font-size:24px; }
.context-preview b { display:block; }.context-preview p { margin:3px 0 0; color:var(--muted); font-size:12px; }
.context-picker { margin-top:12px; padding:14px; border:1px solid var(--line); border-radius:8px; background:var(--bg); }
.picker-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }.picker-close { border:0; background:transparent; color:var(--muted); cursor:pointer; }
.picker-list { display:grid; gap:8px; margin-top:10px; max-height:280px; overflow:auto; }.picker-item { text-align:left; border:1px solid var(--line); background:var(--surface); border-radius:8px; padding:10px 12px; cursor:pointer; }.picker-item:hover { border-color:var(--primary); }.picker-item b { display:block; margin:6px 0 3px; }.picker-item p { margin:0; color:var(--muted); font-size:12px; line-height:1.5; }
.context-issue-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:12px; margin:14px 0; }
.context-issue-card { position:relative; min-height:150px; padding:18px 18px 14px 48px; }
.context-issue-card b { display:block; font-size:17px; line-height:1.5; }
.context-issue-card .issue-letter { position:absolute; left:16px; top:18px; width:24px; height:24px; display:grid; place-items:center; border-radius:8px; background:var(--primary-soft); color:var(--primary); font-weight:700; }
.context-issue-card .candidate-meta { margin:10px 0 4px; display:flex; gap:6px; flex-wrap:wrap; }
.score-pill { font-size:12px; padding:3px 8px; border-radius:8px; background:#ecfdf5; color:#047857; }
.text-action { background:none; border:0; color:var(--primary); cursor:pointer; padding:4px 0; }
.issue-profile { margin:8px 0 0; }
.issue-profile:empty { display: none; }
.profile-tags { display:flex; flex-wrap:wrap; gap:6px; }
.profile-tags span { border:1px solid var(--line); border-radius:8px; padding:4px 9px; font-size:12px; color:var(--muted); background:var(--bg); }
.rec-scores {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.rec-scores span + span::before { content: " · "; color: color-mix(in srgb, var(--muted) 65%, transparent); }
#recs .rec-scores { margin-top: 2px; }

.sub-architecture-shelf { margin: 18px 0 8px; }
.sub-architecture-shelf .shelf-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px; margin-bottom: 8px; }
.sub-architecture-shelf .shelf-head h3 { margin: 0; font-size: 17px; }
.sub-architecture-shelf .shelf-hint { margin: 0; flex: 1 1 100%; }
.horizontal-shelf {
  display: flex;
  flex-direction: row;
  gap: 12px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 4px 2px 12px;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}
.horizontal-shelf .rec-card {
  flex: 0 0 min(300px, 78vw);
  scroll-snap-align: start;
  margin: 0;
}
.split-issue-workflow { margin-top: 6px; }
.shelf-head-split {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px 16px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.shelf-head-split h3 { margin: 0; }
.logic-path-select {
  flex: 1 1 240px;
  max-width: min(520px, 100%);
  min-width: 200px;
  margin-left: auto;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  font-size: 14px;
}
.split-issue-diagnosis-row { margin: 0 0 8px; }
.split-issue-adopt-row { margin-top: 10px; justify-content: flex-end; gap: 8px; }
.arch-diagnosis-panel .arch-diagnosis-checklist { list-style: none; margin: 12px 0 0; padding: 0; }
.arch-diagnosis-panel .arch-diagnosis-checklist li { padding: 8px 0; border-bottom: 1px solid var(--line); display: flex; gap: 10px; align-items: baseline; }
.arch-diagnosis-panel .arch-diagnosis-checklist li:last-child { border-bottom: 0; }
.subissue-shelf { margin: 0; }
.split-issue-bundle {
  display: block;
  width: 100%;
  max-width: 100%;
  padding: 14px 16px 12px;
  cursor: default;
}
.split-issue-bundle.preview { opacity: 0.96; border-style: dashed; }
.split-issue-bundle.compact-adopted { background: transparent; border: 0; box-shadow: none; padding: 4px 0 0; }
.issue-tree-bundle { padding-top: 2px; }
.issue-tree {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(0, 1.2fr);
  align-items: center;
  column-gap: 40px;
}
.issue-tree-board .issue-tree {
  margin-top: 0;
}
.issue-tree-main {
  position: relative;
  z-index: 1;
  align-self: center;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 10px;
  height: auto;
  min-height: 0;
  padding: 14px 16px;
  border: 1px solid var(--primary);
  border-radius: var(--r);
  background: var(--primary-soft);
}
.issue-tree-main::after {
  content: "";
  position: absolute;
  left: 100%;
  top: 50%;
  width: 20px;
  height: 2px;
  background: var(--primary);
}
.issue-tree.is-editing {
  align-items: start;
}
.issue-tree.is-editing .issue-tree-main {
  align-self: start;
}
.issue-tree.is-editing .issue-tree-main::after {
  top: 14px;
}
.issue-tree-main-q {
  display: block;
  font-size: 18px;
  font-weight: 650;
  line-height: 1.45;
}
.issue-tree-why {
  margin: 0;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.issue-tree-main .selected-change {
  align-self: flex-start;
  margin-left: 0;
  padding: 0;
}
.issue-tree-main.issue-tree-empty,
.issue-tree-pick-subs {
  align-items: center;
  justify-content: center;
  min-height: 168px;
  border-style: dashed;
  background: var(--surface);
  color: var(--muted);
  cursor: pointer;
  box-shadow: none;
}
.issue-tree-main.issue-tree-empty {
  width: 100%;
  text-align: center;
  gap: 6px;
}
.issue-tree-main.issue-tree-empty:hover,
.issue-tree-pick-subs:hover {
  border-color: var(--primary);
  color: var(--primary);
  background: var(--primary-soft);
}
.issue-tree-plus {
  display: block;
  font-size: 32px;
  line-height: 1;
  font-weight: 400;
  color: var(--primary);
}
.issue-tree-empty-label {
  font-size: 14px;
  font-weight: 650;
}
.issue-tree-empty-subs {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 168px;
}
.issue-tree-pick-subs {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  padding: 18px;
  border: 1px dashed var(--line);
  border-radius: var(--r);
  background: var(--surface);
  color: var(--muted);
  font: inherit;
  text-align: center;
}
.issue-tree-pick-subs .issue-tree-empty-label { color: inherit; }
.issue-tree.is-empty-main .issue-tree-main::after,
.issue-tree.is-empty-subs .issue-tree-main::after {
  opacity: 0.45;
}
.issue-tree-right { min-width: 0; }
.issue-tree-fork { position: relative; }
.issue-tree-fork .split-issue-row {
  position: relative;
  padding: 10px 0;
}
.issue-tree-fork .split-issue-row:first-child { padding-top: 0; }
.issue-tree-fork .split-issue-row:last-child { padding-bottom: 0; }
.issue-tree-fork .split-issue-row::before,
.issue-tree-fork .split-issue-row::after {
  content: "";
  position: absolute;
  background: var(--primary);
}
.issue-tree-fork .split-issue-row::before {
  left: -20px;
  top: 14px;
  width: 20px;
  height: 2px;
}
.issue-tree-fork .split-issue-row::after {
  left: -20px;
  width: 2px;
}
.issue-tree-fork .split-issue-row:first-child::after {
  top: 14px;
  bottom: 0;
}
.issue-tree-fork .split-issue-row:not(:first-child):not(:last-child)::after {
  top: 0;
  bottom: 0;
}
.issue-tree-fork .split-issue-row:last-child:not(:first-child)::after {
  top: 0;
  height: 14px;
}
.issue-tree-fork .split-issue-row:only-child::after {
  display: none;
}
.split-edit-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}
@media (max-width: 760px) {
  .issue-tree {
    grid-template-columns: 1fr;
    column-gap: 0;
    row-gap: 12px;
  }
  .issue-tree-main::after,
  .issue-tree-fork .split-issue-row::before,
  .issue-tree-fork .split-issue-row::after {
    display: none;
  }
}
.issue-tree-board { display: flex; flex-direction: column; gap: 8px; }
.issue-tree-toolbar {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(0, 1.2fr);
  column-gap: 40px;
  align-items: start;
}
.issue-tree-left-label {
  display: block;
  padding-top: 2px;
}
.issue-tree-foot { align-items: start; }
.issue-tree-foot .split-issue-add-row {
  margin-top: 2px;
}
.issue-tree-right-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.issue-tree-right-head > div:not(.split-issue-summary-actions) {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.issue-tree-right-head b {
  font-size: 15px;
  line-height: 1.4;
}
.core-problem-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 2px 0 10px;
  border-bottom: 1px solid var(--line);
}
.core-problem-main {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.core-problem-main b {
  font-size: 15px;
  line-height: 1.5;
}
.core-problem-empty {
  color: var(--color-text-tertiary);
  font-weight: 400;
}
.core-problem-src {
  font-size: 12px;
  color: var(--color-text-tertiary);
}
.core-problem-warn {
  font-size: 12px;
  color: var(--color-warning, var(--color-warning));
}
.core-problem-edit {
  width: 100%;
  min-height: 60px;
  resize: vertical;
}
@media (max-width: 760px) {
  .issue-tree-toolbar { grid-template-columns: 1fr; }
  .issue-tree-toolbar > div:empty,
  .issue-tree-foot .issue-tree-left-label { display: none; }
}
.split-issue-summary-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding: 0 0 10px; border-bottom:1px solid var(--line); }
.split-issue-summary-head > div:not(.split-issue-summary-actions) { display:flex; flex-direction:column; gap:4px; }
.split-issue-summary-head > .split-issue-summary-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}
.split-issue-q-compact { font-size: 0.98rem; }
.split-issue-stage {
  display: block;
  margin: 0 0 4px;
  font-size: 13px;
  font-weight: 650;
  letter-spacing: 0.02em;
  color: var(--muted);
}
.split-issue-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.split-issue-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  padding: 12px 0;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 85%, transparent);
}
.split-issue-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  gap: 4px;
  align-items: center;
  align-self: start;
  padding-top: 2px;
}
.split-issue-icon-btn {
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--muted);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}
.split-issue-icon-btn:hover:not(:disabled) {
  border-color: var(--primary);
  color: var(--primary);
  background: var(--primary-soft);
}
.split-issue-icon-btn:disabled { opacity: 0.35; cursor: default; }
.split-issue-icon-btn.danger:hover:not(:disabled) {
  border-color: #c53030;
  color: #c53030;
  background: #fff5f5;
}
.split-issue-row.is-editing { background: color-mix(in srgb, var(--primary-soft) 40%, transparent); margin: 0 -8px; padding-left: 8px; padding-right: 8px; border-radius: 8px; }
.split-edit-field { display: block; margin: 0 0 8px; }
.split-edit-field:last-child { margin-bottom: 0; }
.split-edit-field span { display: block; margin-bottom: 4px; }
.split-edit-input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  font: inherit;
  background: var(--surface);
}
.split-issue-add-row { margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--line); }
.split-issue-row:last-child { border-bottom: 0; padding-bottom: 0; }
.split-issue-row:first-child { padding-top: 0; }
.split-issue-num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 700;
  color: var(--primary);
  background: var(--primary-soft);
  flex: none;
}
.split-issue-q {
  display: block;
  font-size: 16px;
  line-height: 1.45;
  font-weight: 650;
  margin: 0 0 4px;
}
.split-issue-note { margin: 0; line-height: 1.5; }
.horizontal-shelf::-webkit-scrollbar { height: 6px; }
.horizontal-shelf::-webkit-scrollbar-thumb { background: #d4dbe3; border-radius: 8px; }
.relation-map { border:1px solid var(--line); border-radius:var(--r); padding:18px; margin:18px 0; background: var(--color-surface) }
.relation-map h3 { margin:0 0 14px; font-size:16px; }
.relation-toggle { margin-top:16px; padding:7px 0; border:0; background:transparent; color:var(--primary); cursor:pointer; font-size:13px; }
.relation-grid { display:grid; grid-template-columns:1fr 1.15fr; gap:10px; position:relative; }
.relation-node { padding:13px; border:1px solid var(--line); border-radius:8px; background:var(--surface); min-height:65px; }
.relation-node.issue { border-color:color-mix(in srgb, var(--primary) 45%, var(--line)); background:var(--primary-soft); }
.relation-node b { display:block; line-height:1.45; }
.issue-library-fold { margin-top:18px; }
.issue-library-fold summary { cursor:pointer; color:var(--primary); font-weight:650; }
@media (max-width: 800px) { .design-brief, .context-fields, .context-issue-grid, .health-dims { grid-template-columns:1fr; } .section-heading { flex-direction:column; } .relation-grid { grid-template-columns:1fr; } }

                                                                                           
.advanced-design .context-workbench { margin-top:14px; border:0; padding:0; }

@media (max-width: 640px) {
  #recs .rec-card { grid-template-columns: 1fr; gap: 10px; }
  #recs .rec-use { justify-self: end; }
}
.chain-item {
  border-left: 2px solid var(--primary);
  padding: 14px 16px 14px 18px;
  margin: 10px 0;
  border-top:1px solid var(--line); border-right:1px solid var(--line); border-bottom:1px solid var(--line); border-radius:0 var(--r-sm) var(--r-sm) 0; background:var(--surface);
}
.chain-item-head { display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.chain-index { width:30px; height:30px; display:grid; place-items:center; border-radius:8px; background:var(--primary-soft); color:var(--primary); font-weight:700; }
.chain-role { display:block; margin-top:3px; color:var(--muted); font-size:12px; }
.chain-field { display:grid; grid-template-columns:110px 1fr; align-items:center; gap:10px; margin:8px 0; }
.chain-field > span { color:var(--muted); font-size:13px; }
.chain-field input { margin:0; }
.path-step-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 12px;
}
.path-step-head + #pathStatus { min-height: 1.4em; margin: -4px 0 10px; }
.path-step-head .sub { margin: 0; }
.path-anchor {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 20px;
  margin-bottom: 10px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: var(--bg);
}
.path-anchor-row { min-width: 0; }
.path-anchor .path-kicker { font-size: 11px; color: var(--muted); margin: 0 0 2px; }
.path-anchor h3 { margin: 0; font-size: 15px; line-height: 1.35; }
.path-anchor .sub { margin: 4px 0 0; font-size: 12px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.path-anchor .path-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.path-anchor .path-tags span,
.path-card .path-tags span {
  font-size: 11px;
  padding: 1px 7px;
  border-radius: 6px;
  background: var(--primary-soft);
  color: var(--primary);
}
.path-analysis {
  border: 1px dashed var(--line);
  border-radius: var(--r-sm);
  padding: 8px 12px;
  margin-bottom: 10px;
}
.path-analysis summary { cursor: pointer; font-size: 13px; color: var(--muted); }
.path-analysis[open] summary { margin-bottom: 8px; color: var(--text); }
.path-analysis h3 { margin: 0 0 8px; font-size: 14px; }
.path-analysis ol { margin: 0; padding-left: 18px; color: var(--text); }
.path-analysis p { margin: 4px 0; font-size: 13px; }
.path-rail { display: grid; gap: 8px; }
.path-card {
  position: relative;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  background: var(--surface);
}
.path-card-head { display: flex; gap: 10px; align-items: center; }
.path-card-head .chain-index { flex: none; width: 26px; height: 26px; font-size: 12px; }
.path-card-main { flex: 1; min-width: 0; }
.path-card-line { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.path-card-line b { font-size: 13px; }
.path-issue { margin: 2px 0 0; font-size: 15px; line-height: 1.4; }
.path-card .contrib { font-size: 12px; color: var(--muted); }
.path-card-actions { display: flex; flex-wrap: wrap; gap: 4px; margin-left: auto; }
.path-card-actions .btn.small { padding: 4px 8px; font-size: 12px; }
.path-card .path-chain { display: none; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); }
.path-card.is-open .path-chain { display: block; }
.path-card .path-chain[hidden] { display: none; }
@media (max-width: 860px) {
  .path-anchor { grid-template-columns: 1fr; }
  .path-step-head { flex-direction: column; }
}
.path-q {
  display: grid;
  grid-template-columns: 88px 1fr;
  gap: 8px;
  align-items: start;
  margin: 8px 0;
}
.path-q .role {
  font-size: 12px;
  color: var(--primary);
  padding-top: 8px;
}
.path-empty {
  padding: 28px 16px;
  text-align: center;
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: var(--r-sm);
}
.issue-architecture { margin-top: 20px; padding-top: 8px; border-top: 1px solid var(--border, var(--color-secondary)); }
.arch-rail { display: flex; flex-direction: column; gap: 6px; margin: 12px 0; }
.arch-card { display: flex; gap: 12px; padding: 12px 14px; border-radius: 8px; border: 1px solid var(--border, var(--color-secondary)); background: var(--surface-2, #f6f7f9); }
.arch-kicker { margin: 0 0 4px; font-size: 12px; color: var(--muted); }
.arch-issue { margin: 0 0 6px; font-weight: 600; }
.arch-understand { margin: 0; }
.arch-arrow { text-align: center; color: var(--muted); font-size: 13px; }
.arch-tension { margin: 0 0 10px; font-size: 14px; line-height: 1.5; }
.issue-package-picker { margin:0 0 14px; padding:12px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); }
.issue-package-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:9px; }
.issue-package { display:grid; gap:4px; text-align:left; border:1px solid var(--border,var(--color-secondary)); background:var(--surface-2,#f6f7f9); border-radius:9px; padding:10px; cursor:pointer; font:inherit; }
.issue-package.recommended { border-color:var(--primary); }
.issue-package span,.issue-package small { color:var(--muted); font-size:12px; }
.issue-package b { color:var(--text,#1f2937); }
.logic-picker { margin:16px 0; }
.logic-option-list, .pedagogy-admin-list { display:grid; gap:8px; max-height:min(70vh,520px); overflow:auto; }
.pedagogy-admin-item { display:grid; gap:4px; text-align:left; padding:10px 12px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); cursor:pointer; }
.pedagogy-admin-item:hover { border-color:var(--primary); }
.pedagogy-admin-item b { font-size:14px; }
.context-block-head-row { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
.context-block-head-row h4 { margin:0; }
.context-pack-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-top:10px; }
.logic-option, .context-pack-card { display:grid; gap:7px; padding:13px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); }
.logic-option.selected, .context-pack-card.selected { border-color:var(--primary); box-shadow:0 0 0 2px rgba(180,35,77,.1); }
.context-arch-page { display:grid; gap:18px; }
.context-block { display:grid; gap:10px; }
.context-block h4 { margin:0; font-size:14px; font-weight:650; }
.context-block-issue { padding:12px 14px; border-radius:8px; background:var(--bg); border:1px solid var(--line); }
.context-issue-line { margin:0; font-size:14px; line-height:1.5; }
.context-issue-line b { color:var(--muted); font-weight:600; margin-right:6px; }
.context-filter-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 18px; align-items:start; position:relative; z-index:3; }
.choice-dd.is-open { z-index:50; }
.choice-select, .choice-dd-trigger { width:100%; min-height:38px; padding:8px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); font:inherit; font-size:14px; color:inherit; }
.choice-select { appearance:auto; }
.choice-select-hint { margin:6px 0 0; }
.choice-dd { position:relative; }
.choice-dd-trigger { display:flex; align-items:center; justify-content:space-between; gap:8px; text-align:left; cursor:pointer; }
.choice-dd-trigger::after { content:"▾"; color:var(--muted); font-size:12px; }
.choice-dd.is-open .choice-dd-trigger { border-color:var(--primary); }
.choice-dd-panel { position:absolute; z-index:40; left:0; right:0; top:calc(100% + 4px); width:100%; box-sizing:border-box; display:grid; gap:2px; padding:8px; border:1px solid var(--line); border-radius:8px; background:var(--surface); box-shadow:0 10px 24px rgba(20,16,16,.08); max-height:260px; overflow:auto; }
.choice-dd-item { display:flex; align-items:center; gap:8px; width:100%; margin:0; padding:6px 8px; border-radius:6px; font-size:13px; color:inherit; cursor:pointer; box-sizing:border-box; }
.choice-dd-item:hover { background:var(--bg); }
.choice-dd-item input[type="checkbox"] { width:auto; min-width:16px; height:auto; margin:0; padding:0; flex:0 0 auto; border:0; background:none; accent-color:var(--primary); }
.choice-dd-clear { margin-top:4px; padding:6px 8px; border:0; background:transparent; color:var(--muted); text-align:left; font:inherit; font-size:13px; cursor:pointer; }
.choice-dd-clear:hover { color:var(--primary); }
.context-mode-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.context-mode-card { text-align:left; display:grid; gap:6px; padding:12px 14px; border:1px solid var(--line); border-radius:8px; background:var(--surface); cursor:pointer; }
.context-mode-card.on { border-color:var(--primary); box-shadow:0 0 0 2px rgba(180,35,77,.08); }
.context-mode-card-top { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.context-mode-card-desc { font-size:13px; color:var(--muted); line-height:1.45; }
.pill.rec { background:rgba(180,35,77,.1); color:var(--primary); font-size:11px; }
.context-pref-grid { display:grid; gap:12px; }
.pref-chip-row { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.pref-chip { font-size:12px; padding:5px 10px; border-radius:6px; border:1px solid var(--line); background:var(--surface); cursor:pointer; }
.pref-chip.on { border-color:var(--primary); background:rgba(180,35,77,.06); color:var(--primary); }
.context-pack-compact { display:grid; gap:8px; }
.context-pack-tags { margin:0; font-size:12px; color:var(--muted); }
.context-pack-quote { margin:0; padding:8px 10px; border-left:3px solid var(--line); font-size:13px; color:var(--muted); line-height:1.45; }
.context-pack-actions { gap:8px; flex-wrap:wrap; }
.context-pack-card.is-expanded { grid-column:1 / -1; }
.context-arch-summary { padding:12px 14px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.summary-head { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.context-summary-dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 16px; margin:0; }
.context-summary-dl div { display:grid; gap:2px; }
.context-summary-dl dt { font-size:12px; color:var(--muted); margin:0; }
.context-summary-dl dd { margin:0; font-size:14px; line-height:1.4; }
.context-tension-line { margin:8px 0 0; font-size:14px; line-height:1.5; }
.context-map-flow { display:grid; gap:4px; margin-top:8px; }
.context-map-mother { padding:10px 12px; border-radius:8px; background:var(--bg); border:1px solid var(--line); }
.context-map-mother span { display:block; font-size:12px; color:var(--muted); margin-bottom:4px; }
.context-map-arrow { text-align:center; color:var(--muted); font-size:13px; line-height:1; }
.context-map-node { display:grid; grid-template-columns:36px 1fr; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.context-map-node p { margin:4px 0; font-size:13px; line-height:1.45; }
.context-map-node small { display:block; color:var(--muted); font-size:12px; }
.context-map-node em { display:block; font-style:normal; font-size:12px; color:var(--primary); margin-top:4px; }
.context-pack-details summary { cursor:pointer; font-weight:600; font-size:14px; }
.context-arch-field .field-label { display:block; font-size:13px; font-weight:600; margin-bottom:6px; }
.context-node-editor { display:grid; gap:8px; margin:8px 0; }
.context-node-row { display:grid; grid-template-columns:36px 1fr 1.2fr 1fr auto; gap:8px; align-items:center; }
.context-node-row input, .context-node-row select { font-size:13px; padding:6px 8px; }
.context-arch-modal-panel { max-width:640px; }
.match-context-panel { width:min(1080px, 100%); max-height:90vh; overflow:auto; display:grid; align-content:start; }
.match-context-top { display:grid; gap:16px; margin:8px 0 18px; }
.match-field { display:grid; gap:6px; margin:0; }
.match-field > span { font-size:13px; font-weight:600; }
.match-pack-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:10px; }
.match-case-list { display:grid; gap:6px; }
.match-case-row { display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:10px; align-items:center; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.match-case-row.selected { border-color:var(--primary); box-shadow:0 0 0 2px rgba(180,35,77,.08); }
.match-case-row-copy { min-width:0; display:grid; gap:2px; }
.match-case-row-copy b { font-size:14px; line-height:1.35; color:var(--ink); }
.match-case-row-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.match-context-body { min-height:280px; }
.match-context-split { display:grid; grid-template-columns:minmax(220px, 280px) minmax(0, 1fr); gap:16px; align-items:start; }
.match-sub-list { display:grid; align-content:start; gap:6px; }
.match-sub-item { display:grid; grid-template-columns:36px 1fr; gap:8px; width:100%; text-align:left; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); cursor:pointer; }
.match-sub-item.on { border-color:var(--primary); box-shadow:0 0 0 2px rgba(180,35,77,.08); }
.match-sub-item b { display:block; font-size:14px; }
.match-sub-item em { display:block; font-style:normal; font-size:13px; color:var(--muted); line-height:1.4; margin-top:2px; }
.match-sub-item small { display:block; margin-top:4px; color:var(--primary); font-size:12px; }
.match-sub-cases h4 { margin:0 0 10px; font-size:14px; }
.match-context-foot { justify-content:flex-end; margin-top:18px; }
.match-context-status { margin:4px 0 0; }
#contextPackDetailModal { z-index: 90; }
.pack-detail-panel { width:min(760px, 100%); max-height:90vh; overflow:auto; display:grid; align-content:start; }
.pack-detail-body { display:grid; gap:16px; }
.pack-detail-block { display:grid; gap:6px; padding:12px 14px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.pack-detail-block h4 { margin:0; font-size:14px; }
.pack-detail-block p { margin:0; font-size:14px; line-height:1.6; }
.pack-detail-seg { display:grid; gap:6px; padding:12px 14px; border:1px solid var(--line); border-radius:8px; background:var(--bg); }
.pack-detail-seg header { display:flex; gap:8px; align-items:baseline; }
.pack-detail-seg header b { font-size:15px; }
.pack-detail-seg p { margin:0; font-size:14px; line-height:1.65; }
.pack-detail-meta { margin:0; font-size:12px; color:var(--muted); line-height:1.5; }
.context-pack-blurb { margin:0; font-size:13px; line-height:1.5; color:var(--text); }
@media (max-width:900px) {
  .match-context-split { grid-template-columns:1fr; }
}
.context-step-label { font-size:11px; font-weight:700; letter-spacing:.06em; color:var(--primary); }
.context-block-muted { opacity:.72; }
.optional-tag { font-size:11px; font-weight:500; color:var(--muted); margin-left:6px; }
.expansion-logic-list { display:grid; gap:10px; }
.expansion-logic-card { text-align:left; display:grid; gap:6px; padding:12px 14px; border:1px solid var(--line); border-radius:8px; background:var(--surface); cursor:pointer; }
.expansion-logic-card.on { border-color:var(--primary); box-shadow:0 0 0 2px rgba(180,35,77,.08); }
.expansion-logic-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.expansion-path { margin:0; font-size:14px; font-weight:600; line-height:1.45; }
.expansion-rationale { margin:0; }
.pref-chip-clear.on { border-style:dashed; }
.context-arch-detail-panel { margin-top:16px; padding:16px; border:2px solid var(--primary); border-radius:8px; background:var(--bg); grid-column:1 / -1; }
.context-arch-detail-head { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:12px; }
.context-detail-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 16px; margin:0 0 14px; }
.context-detail-meta div { display:grid; gap:2px; }
.context-detail-meta dt { font-size:12px; color:var(--muted); margin:0; }
.context-detail-meta dd { margin:0; font-size:14px; line-height:1.4; }
.context-arch-checks ul { margin:8px 0 0; padding-left:18px; font-size:13px; line-height:1.55; }
.context-sub-map { margin:6px 0 0; font-size:13px; color:var(--primary); line-height:1.45; }
.context-supplements ul { margin:8px 0 0; padding-left:18px; font-size:13px; }
.context-shared-logic { margin:0 0 10px; padding:8px 10px; background:var(--surface); border-radius:8px; font-size:13px; }
.context-multi-grid { display:grid; gap:6px; }
.context-multi-item { display:grid; grid-template-columns:36px 1fr; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.context-block-confirmed { padding-top:8px; border-top:1px dashed var(--line); }
.builtin-scheme-shelf { margin:0 0 14px; }
.builtin-scheme-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.builtin-scheme-card { display:grid; gap:8px; padding:14px; border:1px solid var(--line); border-radius:8px; background:var(--surface); text-align:left; cursor:pointer; }
.builtin-scheme-card.on { border-color:var(--primary); box-shadow:0 0 0 2px rgba(180,35,77,.08); }
.builtin-scheme-card.adopted { background:rgba(180,35,77,.04); }
.scheme-evidence-detail { margin-top:4px; padding-top:4px; border-top:1px solid var(--line); font-size:12px; }
.scheme-evidence-detail summary { cursor:pointer; color:var(--primary); }
.scheme-evidence-detail ul { margin:6px 0 0; padding-left:18px; display:grid; gap:4px; }
.scheme-evidence-detail li { display:grid; gap:2px; }
.scheme-evidence-detail li span { color:var(--muted); }
.scheme-evidence-detail li small { color:var(--primary); }
.scheme-head { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.scheme-head b { font-size:14px; }
.scheme-logic { margin:0; font-size:15px; font-weight:650; line-height:1.4; }
.scheme-summary { margin:0; font-size:13px; line-height:1.45; color:var(--muted); }
.scheme-subs-preview { margin:0; padding:0; list-style:none; display:grid; gap:6px; font-size:13px; line-height:1.4; }
.scheme-subs-preview li { display:grid; gap:2px; margin:0; padding:6px 8px; border-radius:8px; background:color-mix(in srgb, var(--line) 28%, transparent); }
.scheme-sub-stage { font-weight:650; color:var(--ink, #1a1a1a); }
.scheme-sub-hint { color:var(--muted); }
@media (max-width:900px) { .builtin-scheme-grid { grid-template-columns:1fr; } }
@media (max-width:900px) {
  .context-filter-row, .context-mode-cards, .context-pack-list { grid-template-columns:1fr; }
  .context-summary-dl, .context-detail-meta { grid-template-columns:1fr; }
  .context-node-row { grid-template-columns:1fr; }
}
.logic-option-head, .context-pack-head { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.context-pack-head b { color:#111; font-weight:700; line-height:1.45; }
.logic-option-head small { color:var(--muted); }
.logic-path, .context-storyline { margin:0; color:var(--primary); font-weight:650; }
.logic-option ol { margin:0; padding-left:20px; display:grid; gap:5px; line-height:1.45; }
.logic-objectives, .context-pack-meta, .context-map-mini { display:flex; flex-wrap:wrap; gap:5px; }
.context-pack-meta, .context-map-mini { color:var(--muted); font-size:12px; line-height:1.4; }
.context-map-mini span { padding:4px 7px; border-radius:6px; background:var(--surface-2,#f6f7f9); }
#designActivityPanel #pathDiagnoseBtn { display:none !important; }
.activity-head-actions { display:flex; align-items:center; gap:8px; }
.activity-head-actions .btn { white-space:nowrap; }
.activity-dd { position:relative; }
.activity-dd-menu, .activity-mini-menu { position:absolute; right:0; top:calc(100% + 4px); z-index:20; min-width:200px; display:grid; padding:6px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); box-shadow:0 8px 24px rgba(17,24,39,.08); }
.activity-dd-menu button, .activity-mini-menu button { text-align:left; border:0; background:transparent; padding:8px 10px; border-radius:7px; cursor:pointer; font-size:13px; }
.activity-dd-menu button:hover, .activity-mini-menu button:hover { background:var(--color-surface-hover,#f3f4f6); }
.activity-workbench { display:grid; grid-template-columns:minmax(0,1fr) 210px; gap:16px; align-items:start; }
.activity-workbench-main { min-width:0; }
.course-brief { display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; align-items:flex-start; margin:0 0 10px; padding:12px 14px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); }
.course-brief b { display:block; margin:2px 0 4px; font-size:16px; line-height:1.4; }
.brief-subs { margin:6px 0 0; font-size:13px; color:var(--ink); line-height:1.5; }
.console-inline { margin:0 0 8px; font-size:13px; color:var(--muted); }
.time-axis { margin:0 0 12px; }
.time-axis-scale { display:flex; justify-content:space-between; font-size:11px; color:var(--muted); margin-bottom:4px; }
.time-axis-bar { display:flex; gap:3px; min-height:52px; }
.time-axis-bar button { flex:1; min-width:0; display:grid; gap:1px; place-content:center; padding:6px 4px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#f8fafc; color:var(--ink); cursor:pointer; font:inherit; }
.time-axis-bar .time-seg { flex:1; min-width:0; display:grid; gap:1px; place-content:center; padding:6px 4px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#f8fafc; color:var(--ink); cursor:default; font:inherit; }
.time-axis-bar button span, .time-axis-bar .time-seg span { font-size:11px; color:var(--muted); }
.time-axis-bar button em, .time-axis-bar .time-seg em { font-style:normal; font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.time-axis-bar button b, .time-axis-bar .time-seg b { font-size:12px; }
.time-axis-bar button.on, .time-axis-bar .time-seg.on { border-color:var(--primary); background:var(--primary-soft,#fce7ed); color:var(--primary); }
.time-axis.is-over .time-axis-bar button.on, .time-axis.is-over .time-axis-bar .time-seg.on { border-color:var(--color-error,var(--color-error)); }
.activity-jump-wrap { display:none; font-size:12px; color:var(--muted); }
.activity-jump-wrap select { margin-left:6px; }
.aw-tabs { display:flex; gap:6px; margin:0 0 14px; overflow:auto; }
.aw-tabs button { border:0; background:transparent; color:var(--muted); padding:8px 12px; border-radius:8px; cursor:pointer; white-space:nowrap; font:inherit; }
.aw-tabs button.on { background:#fff; color:var(--ink); box-shadow:0 1px 3px rgba(17,24,39,.08); font-weight:650; }
.activity-workspace { border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); padding:16px; }
.aw-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; margin-bottom:12px; }
.aw-tools, .aw-more { display:flex; gap:6px; position:relative; flex-wrap:wrap; justify-content:flex-end; }
.material-chips { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 14px; }
.material-chips button { border:1px solid var(--border,var(--color-secondary)); background:#fff; border-radius:6px; padding:4px 10px; font-size:12px; cursor:pointer; }
.follow-hints { margin:0 0 14px; }
.follow-hints ul { margin:6px 0 0; padding-left:18px; font-size:13px; line-height:1.5; color:#4b5563; }
.step-compact { margin:0 0 14px; padding-left:18px; font-size:13px; line-height:1.7; }
.teacher-script { margin:8px 0 0; padding:8px 10px; border-left:3px solid var(--color-text-tertiary); background:#f7f7f5; font-size:13px; line-height:1.55; }
.cognition-bar { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:0 0 12px; }
.cognition-bar > div { padding:10px 12px; border-radius:8px; background:#f3f4f6; }
.cognition-bar > div:first-child { background:var(--color-success-soft); }
.cognition-bar span { display:block; font-size:11px; font-weight:700; color:var(--muted); margin-bottom:4px; }
.cognition-bar p { margin:0; font-size:13px; line-height:1.5; }
.text-action { border:0; background:none; color:inherit; cursor:pointer; font:inherit; font-weight:650; text-align:left; padding:0; }
.response-table { width:100%; border-collapse:collapse; font-size:13px; margin:0 0 12px; }
.response-table th, .response-table td { border:1px solid var(--border,var(--color-secondary)); padding:8px 10px; text-align:left; vertical-align:top; }
.response-table th { background:#f8fafc; color:var(--muted); font-weight:650; }
.response-table tr { cursor:pointer; }
.response-table small { display:block; margin-top:6px; color:var(--muted); }
.pro-fold { margin:8px 0; padding:8px 10px; background:#f8fafc; border-radius:8px; }
.pro-fold summary { cursor:pointer; font-size:13px; font-weight:650; }
.activity-workspace .analysis-grid section { background:#f8fafc; }
.rail-title { font-size:12px; font-weight:700; color:var(--muted); padding:4px 8px 8px; }
.activity-rail .rail-item small { display:block; margin-top:2px; color:var(--muted); font-weight:400; }
.status-dot.is-now { color:var(--primary); }
.diag-board { display:grid; gap:12px; }
.diag-summary { font-size:14px; }
.diag-cards { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.diag-card { display:grid; gap:4px; text-align:left; padding:10px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; cursor:pointer; }
.diag-card.on { box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 20%, transparent); }
.diag-card.is-ok { border-left:3px solid var(--color-success,var(--color-success)); }
.diag-card.is-warn { border-left:3px solid var(--color-warning,var(--color-warning)); }
.diag-card.is-bad { border-left:3px solid var(--color-error,var(--color-error)); }
.diag-detail { padding:12px 14px; border-radius:8px; background:#f8fafc; }
.opt-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:12px 0; }
.aw-modal { position:fixed; inset:0; z-index:50; display:grid; place-items:center; padding:24px; }
.aw-modal-backdrop { position:absolute; inset:0; background:rgba(17,24,39,.4); }
.aw-modal-sheet { position:relative; z-index:1; width:min(720px,100%); max-height:min(86vh,820px); overflow:auto; display:grid; gap:10px; padding:16px; border-radius:8px; background:var(--surface,#fff); }
.aw-modal-split { display:grid; grid-template-columns:minmax(0,1.4fr) 200px; gap:12px; }
.aw-drawer-backdrop { position:fixed; inset:0; z-index:45; background:rgba(17,24,39,.18); }
.aw-drawer { position:fixed; top:0; right:0; z-index:46; width:min(380px,100%); height:100%; overflow:auto; padding:16px; background:#fff; box-shadow:-8px 0 24px rgba(17,24,39,.08); display:grid; gap:10px; align-content:start; }
.aw-drawer-head { display:flex; justify-content:space-between; align-items:center; }
.aw-drawer label { display:grid; gap:4px; font-size:12px; color:var(--muted); }
.rehearsal-sheet { width:min(680px,100%); }
.rehearse-time { margin:0; color:var(--muted); font-size:13px; }
.rehearse-task { font-size:18px; line-height:1.5; font-weight:650; }
.rehearse-mat { background:#f8fafc; border-radius:8px; padding:10px; }
.chain-toolbar { display:flex; gap:6px; margin:0 0 10px; }
.activity-rail { position:sticky; top:84px; display:grid; gap:4px; padding:8px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); }
.rail-item { display:flex; justify-content:space-between; gap:8px; align-items:flex-start; text-align:left; border:0; background:transparent; padding:8px; border-radius:8px; cursor:pointer; font-size:12px; line-height:1.35; color:var(--ink); }
.rail-item.on { background:var(--primary-soft,#fce7ed); color:var(--primary); }
.rail-item i { font-style:normal; flex:none; }
.structure-strip { display:grid; gap:8px; margin:4px 0 12px; padding:14px 16px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); }
.structure-main b { display:block; margin:2px 0 6px; font-size:18px; line-height:1.4; }
.structure-case { color:var(--muted); font-size:13px; }
.structure-subs { margin:8px 0 0; padding-left:18px; display:grid; gap:4px; }
.structure-subs li + li { color:var(--ink); }
.structure-story { margin:0; color:var(--muted); font-size:12px; line-height:1.5; }
.classroom-console { margin:0 0 14px; padding:14px 16px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); }
.console-title { font-weight:700; margin-bottom:10px; }
.console-metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(108px,1fr)); gap:8px; }
.console-metrics div { display:grid; gap:2px; padding:8px 10px; border-radius:8px; background:var(--surface-2,#f6f7f9); }
.console-metrics b { font-size:18px; }
.console-metrics span { font-size:12px; color:var(--muted); }
.console-flags { display:flex; flex-wrap:wrap; gap:8px 14px; margin:10px 0; font-size:13px; color:var(--muted); }
.time-band { display:flex; overflow:hidden; border-radius:8px; min-height:28px; background:var(--color-primary-soft,var(--color-ai-soft)); }
.time-band span { display:grid; place-items:center; font-size:11px; padding:0 6px; border-right:1px solid #fff; color:var(--color-primary,#4338ca); white-space:nowrap; }
.time-band.is-over { background:var(--color-error-soft,var(--color-error-soft)); }
.time-band.is-over span { color:var(--color-error,var(--color-error)); }
.time-warn { margin:8px 0 0; color:var(--color-error,var(--color-error)); font-size:13px; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.activity-chain-head { display:flex; flex-wrap:wrap; gap:8px 18px; align-items:center; padding:8px 0; margin:4px 0 12px; }
.activity-chain-list { display:grid; gap:16px; }
.activity-card { border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); overflow:visible; }
.activity-card.is-open { box-shadow:0 1px 2px rgba(17,24,39,.04); }
.activity-collapsed { display:flex; gap:12px; width:100%; text-align:left; border:0; background:transparent; padding:14px 16px; cursor:pointer; }
.activity-collapsed:hover { background:var(--color-surface-hover,#f3f4f6); }
.collapsed-task { margin:4px 0; font-weight:650; line-height:1.45; }
.collapsed-meta, .collapsed-stage { margin:0; font-size:13px; color:var(--muted); }
.activity-exec-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; padding:16px 16px 8px; }
.activity-title-row { display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; }
.activity-title-row b { font-size:18px; }
.chain-index { display:grid; place-items:center; min-width:32px; height:32px; border-radius:9px; background:#f3f4f6; color:#374151; font-weight:700; font-size:13px; }
.activity-workspace .chain-index, .rail-item.on .chain-index { background:var(--primary-soft,#fce7ed); color:var(--primary); }
.activity-kicker { margin:6px 0 0; display:flex; gap:10px; color:var(--muted); font-size:13px; }
.activity-serves { margin:4px 0 0; font-size:13px; }
.activity-head-tools { display:grid; gap:8px; justify-items:end; }
.activity-toolbar, .activity-mini-wrap { display:flex; gap:6px; position:relative; flex-wrap:wrap; justify-content:flex-end; }
.btn.mini { padding:3px 8px; font-size:12px; }
.btn.ghost.on { background:var(--primary-soft,#fce7ed); color:var(--primary); }
.task-hero { margin:0 0 14px; padding:14px 16px; border-radius:8px; background:var(--primary-soft,#fce7ed); }
.task-hero h4 { margin:4px 0 8px; font-size:20px; line-height:1.4; }
.task-hero p { margin:0; color:var(--color-text-secondary,var(--color-neutral)); }
.section-kicker { font-size:12px; font-weight:700; color:var(--muted); margin:0 0 8px; display:flex; gap:8px; align-items:center; }
.material-deck-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:10px; margin:0 0 16px; }
.material-card { display:grid; gap:6px; padding:10px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; min-width:0; }
.material-card-type { font-size:11px; color:var(--muted); font-weight:650; }
.material-card b { font-size:14px; }
.material-card p, .material-card blockquote { margin:0; font-size:13px; line-height:1.45; color:var(--ink); }
.material-card .material-face { white-space:pre-wrap; max-height:220px; overflow:auto; }
.material-stale { margin:0; font-size:12px; line-height:1.45; color:#92400e; background:#fffbeb; padding:8px 10px; border-radius:8px; }
.material-source-badge { margin-left:8px; font-size:11px; font-weight:700; color:#9a3412; background:#ffedd5; border-radius:6px; padding:1px 7px; }
.know-hit { border:0; background:transparent; color:inherit; font:inherit; cursor:pointer; text-decoration:underline; text-underline-offset:3px; }
.know-landing-list { list-style:none; margin:0 0 10px; padding:8px 12px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; display:grid; gap:6px; }
.know-landing-list li { font-size:13px; display:flex; flex-wrap:wrap; gap:6px 12px; }
.know-landing-list span { color:var(--muted); }
.evidence-pack-note { margin:0 0 10px; font-size:13px; color:#9a3412; }
.cognition-start { margin:0 0 8px; font-size:13px; color:var(--muted); }
.material-card blockquote { padding-left:8px; border-left:3px solid var(--color-primary-muted,var(--color-ai-border)); }
.material-card-visual { border-radius:8px; overflow:hidden; background:#fff; min-height:86px; display:grid; place-items:center; }
.material-thumb-svg { width:100%; height:92px; display:block; }
.material-type-mark { font-size:12px; color:var(--muted); }
.material-mini-table { width:100%; border-collapse:collapse; font-size:11px; }
.material-mini-table th, .material-mini-table td { border:1px solid var(--border,var(--color-secondary)); padding:4px 6px; }
.material-card-actions { display:flex; flex-wrap:wrap; gap:4px; }
.material-preview-layer { position:fixed; inset:0; z-index:40; display:grid; place-items:center; padding:24px; }
.material-preview-backdrop { position:absolute; inset:0; background:rgba(17,24,39,.35); }
.material-preview-sheet { position:relative; z-index:1; width:min(560px,100%); display:grid; gap:10px; padding:16px; border-radius:8px; background:var(--surface,#fff); }
.material-preview-head { display:flex; justify-content:space-between; align-items:center; }
.material-preview-visual { background:var(--surface-2,#f6f7f9); border-radius:8px; padding:10px; }
.step-axis { list-style:none; margin:0 0 16px; padding:0; display:grid; gap:0; }
.step-axis li { display:grid; grid-template-columns:28px 1fr; gap:10px; padding:0 0 14px; position:relative; }
.step-axis li:before { content:""; position:absolute; left:13px; top:22px; bottom:0; width:2px; background:var(--color-primary-muted,var(--color-ai-border)); }
.step-axis li:last-child:before { display:none; }
.step-index { display:grid; place-items:center; width:28px; height:28px; border-radius:8px; background:var(--color-secondary); color:#111827; font-size:12px; font-weight:700; position:relative; z-index:1; }
.step-axis b { font-size:13px; }
.step-axis p { margin:4px 0 0; line-height:1.5; }
.qa-board { margin:0 16px 16px; display:grid; gap:8px; }
.qa-pair { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.qa-student, .qa-teacher { padding:10px 12px; border-radius:8px; background:var(--surface-2,#f6f7f9); }
.qa-teacher { background:#f5f3ff; }
.qa-pair span { display:block; font-size:11px; font-weight:650; color:var(--muted); margin-bottom:4px; }
.qa-pair p { margin:0; line-height:1.5; }
.activity-output-box, .stage-box, .gap-box { margin:0 0 12px; padding:12px 14px; border-radius:8px; }
.activity-output-box { background:var(--surface-2,#f6f7f9); }
.stage-box { background:var(--color-success-soft,var(--color-success-soft)); }
.stage-box p { margin:6px 0 0; font-weight:650; line-height:1.55; }
.gap-box { border:1px dashed var(--color-primary-border,#a5b4fc); background:var(--color-info-soft,var(--color-info-soft)); }
.gap-next { margin-top:8px; font-size:13px; }
.knowledge-tag { margin:0 0 12px; font-size:12px; color:var(--muted); }
.analysis-toggle { margin:0 16px 14px; }
.activity-analysis { padding:12px 16px 16px; border-top:1px dashed var(--border,var(--color-secondary)); background:#f8fafc; }
.analysis-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-bottom:12px; }
.analysis-grid section { padding:10px 12px; border-radius:8px; background:#fff; }
.analysis-grid h5 { margin:0 0 8px; font-size:13px; }
.analysis-grid p, .analysis-extra { margin:0 0 6px; font-size:13px; line-height:1.5; }
.analysis-grid b, .analysis-extra b { display:block; font-size:11px; color:var(--muted); }
.eval-points { margin:0; padding-left:18px; }
.status-dot { font-size:12px; font-weight:700; }
.status-dot.is-ok { color:var(--color-success,var(--color-success)); }
.status-dot.is-warn { color:var(--color-warning,var(--color-warning)); }
.status-dot.is-bad { color:var(--color-error,var(--color-error)); }
.cognition-chain { list-style:none; margin:0; padding:0; display:grid; gap:0; }
.cognition-chain li { display:grid; gap:0; }
.cognition-node { display:grid; grid-template-columns:36px minmax(0,1fr); gap:12px; text-align:left; width:100%; border:1px solid var(--border,var(--color-secondary)); background:var(--surface,#fff); border-radius:8px; padding:14px; cursor:pointer; }
.cognition-node em { display:block; color:var(--color-primary,#4338ca); font-style:normal; font-size:12px; font-weight:700; }
.cognition-node b { display:block; margin:2px 0 6px; font-size:16px; }
.cognition-task { margin:0; font-weight:650; }
.cognition-stage { margin:6px 0 0; color:var(--muted); font-size:13px; }
.cognition-gap { margin:0 auto; padding:10px 14px; max-width:520px; text-align:center; }
.cognition-gap span { font-size:12px; font-weight:700; color:var(--color-primary,#4338ca); }
.cognition-gap p { margin:4px 0 8px; font-size:13px; }
.activity-diagnosis { display:grid; gap:10px; margin:0 0 16px; }
.activity-diagnosis-group { padding:12px 14px; border-radius:8px; background:var(--surface-2,#f6f7f9); }
.activity-diagnosis-group.is-ok { border-left:3px solid var(--color-success,var(--color-success)); }
.activity-diagnosis-group.is-warn { border-left:3px solid var(--color-warning,var(--color-warning)); }
.activity-diagnosis-group.is-bad { border-left:3px solid var(--color-error,var(--color-error)); }
.activity-diagnosis-group p { margin:6px 0; font-size:13px; }
.activity-prose { display:grid; gap:8px; margin-bottom:12px; }
.activity-prose p { margin:0; line-height:1.5; }
.activity-prose b { display:block; margin-bottom:2px; font-size:12px; color:var(--muted); }
.legal-evidence-map { width:100%; border-collapse:collapse; margin:8px 0 12px; font-size:13px; background:var(--surface,#fff); }
.legal-evidence-map th, .legal-evidence-map td { border:1px solid var(--border,var(--color-secondary)); padding:6px 8px; text-align:left; vertical-align:top; }
.legal-evidence-map th { color:var(--muted); font-weight:650; background:var(--surface-2,#f6f7f9); }
.thinking-process { display:flex; flex-wrap:wrap; gap:0; margin:8px 16px 12px; padding:10px 12px; background:var(--surface,#fff); border:1px solid var(--border,var(--color-secondary)); border-radius:8px; }
.thinking-process-item { display:flex; flex-direction:column; gap:4px; min-width:108px; max-width:200px; padding-right:14px; margin-right:10px; margin-bottom:8px; border-right:1px dashed var(--border,var(--color-secondary)); }
.thinking-process-item:last-child { border-right:none; margin-right:0; }
.thinking-process-item em { font-size:11px; color:var(--muted); font-style:normal; font-weight:650; }
.thinking-process-item span { font-size:13px; line-height:1.45; }
.intl-split { margin:6px 16px 12px; padding-left:18px; }
.intl-split li { margin:4px 0; }
.intl-split .pill { margin-right:8px; }
.intl-split-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:10px; margin:8px 16px 12px; }
.intl-split-grid > div { background:var(--surface,#fff); border:1px solid var(--border,var(--color-secondary)); border-radius:8px; padding:10px 12px; }
.intl-split-grid em { display:block; font-style:normal; font-size:11px; font-weight:650; color:var(--muted); margin-bottom:6px; }
.intl-split-grid ul { margin:0; padding-left:18px; }
.activity-edit-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.activity-edit-grid label { display:grid; gap:4px; font-size:12px; color:var(--muted); }
.activity-edit-grid input, .activity-edit-grid textarea { width:100%; box-sizing:border-box; }
.response-preview { margin-top:12px; display:grid; gap:6px; }
.response-preview > div { padding:7px 9px; border-radius:7px; background:var(--surface,#fff); }
.response-preview span { color:var(--primary); font-size:12px; font-weight:650; }
.response-preview p { margin:3px 0; }
.response-preview small { color:var(--muted); }
.activity-empty { padding:18px; text-align:center; background:var(--surface,#fff); border:1px dashed var(--border,var(--color-secondary)); border-radius:9px; }
@media (max-width:980px) {
  .activity-workbench { grid-template-columns:1fr; }
  .activity-rail { display:none; }
  .activity-jump-wrap { display:flex; align-items:center; }
  .material-deck-grid, .qa-pair, .analysis-grid, .diag-cards, .cognition-bar, .aw-modal-split, .opt-grid { grid-template-columns:1fr; }
  .aw-drawer { width:100%; }
}
@media (max-width:700px) { .activity-edit-grid { grid-template-columns:1fr; } .activity-exec-head { flex-direction:column; } }
@media (max-width:900px) { .logic-option-list, .context-pack-list { grid-template-columns:1fr; } }
.arch-diagnosis { margin:10px 0; padding:9px 11px; border-radius:8px; background:var(--surface-2,#f6f7f9); font-size:13px; }
.arch-diagnosis span { color:var(--muted); margin-left:10px; }
@media (max-width:700px) { .issue-package-list { grid-template-columns:1fr; } .arch-diagnosis span { display:block; margin:6px 0 0; line-height:1.5; } }
.material-pack-list { margin: 8px 0 0; padding-left: 18px; }
.material-pack-list li { margin-bottom: 10px; }
.complete-grid { display: grid; gap: 12px; }
.complete-block h4 { margin: 0 0 6px; font-size: 14px; }
.complete-block p { margin: 2px 0; font-size: 13px; }
.experience-table { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 14px; }
.experience-table th, .experience-table td { border-bottom: 1px solid var(--border, var(--color-secondary)); padding: 8px 6px; text-align: left; }
.path-phases { margin: 10px 0; display: grid; gap: 6px; }
.path-phase summary { cursor: pointer; font-size: 13px; }
.context-layers { margin: 10px 0 14px; padding: 12px 14px; border-radius: 8px; background: var(--surface-2, #f6f7f9); border: 1px solid var(--border, var(--color-secondary)); }
.context-layers dl { margin: 0; display: grid; gap: 8px; }
.context-layers dt { font-size: 12px; color: var(--muted); margin: 0; }
.context-layers dd { margin: 0 0 4px; font-size: 14px; line-height: 1.45; }
.design-tabs { display:flex; gap:6px; margin:18px 0 14px; padding:4px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface-2,#f6f7f9); overflow:auto; }
.design-tab { border:0; background:transparent; color:var(--muted); padding:9px 14px; border-radius:8px; cursor:pointer; white-space:nowrap; font:inherit; }
.design-tab.on { background:var(--surface,#fff); color:var(--primary); box-shadow:0 1px 4px rgba(31,41,55,.1); font-weight:650; }
.design-tab::after { content:"→"; margin-left:10px; color:var(--muted); font-weight:400; }
.design-tab:last-child::after { content:""; margin-left:0; }
.design-tab-panel { margin:10px 0 18px; padding:14px 16px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface-2,#f6f7f9); }
.tab-panel-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.tab-panel-head h3 { margin:0 0 4px; }
.design-tab-summary { margin-top:12px; }
.tab-summary-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.tab-summary-grid div { display:grid; gap:4px; padding:10px 12px; border-radius:8px; background:var(--surface,#fff); border:1px solid var(--border,var(--color-secondary)); }
.tab-summary-grid span { color:var(--muted); font-size:12px; }
.cognition-rail { display:grid; gap:8px; }
.cognition-rail .cognition-node { display:grid; grid-template-columns:28px 150px 1fr; gap:10px; align-items:center; padding:9px 10px; background:var(--surface,#fff); border:1px solid var(--border,var(--color-secondary)); border-radius:9px; }
.cognition-rail .cognition-node i { width:24px; height:24px; display:grid; place-items:center; border-radius:8px; background:var(--primary-soft,#fce7ed); color:var(--primary); font-style:normal; font-weight:700; }
.cognition-rail .cognition-node span { color:var(--muted); font-size:13px; }
.context-mode-picker { display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin:14px 0 10px; }
.context-mode-picker > span { color:var(--muted); font-size:13px; margin-right:3px; }
.context-mode { border:1px solid var(--border,var(--color-secondary)); background:var(--surface,#fff); border-radius:8px; padding:7px 10px; color:var(--muted); cursor:pointer; font:inherit; }
.context-mode.on { border-color:var(--primary); color:var(--primary); background:var(--primary-soft,#fce7ed); font-weight:650; }
.context-type-chips { display:flex; flex-wrap:wrap; gap:7px; margin:6px 0 12px; }
.context-type-chips label { border:1px solid var(--border,var(--color-secondary)); background:var(--surface,#fff); border-radius:6px; padding:5px 9px; font-size:12px; color:var(--muted); cursor:pointer; }
.context-type-chips input { margin-right:4px; accent-color:var(--primary); }
.context-recommendation { margin:10px 0 0; }
.subissue-design-list { display:grid; gap:12px; margin-top:12px; }
.subissue-design-card { background:var(--surface,#fff); border:1px solid var(--border,var(--color-secondary)); border-radius:8px; padding:12px; }
.subissue-design-head { display:flex; align-items:flex-start; gap:10px; }
.subissue-design-head > div { flex:1; min-width:0; }
.subissue-design-head p { margin:4px 0 0; line-height:1.45; }
.subissue-design-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:12px; }
.subissue-design-grid label { display:grid; gap:5px; }
.subissue-design-grid label > span, .subissue-materials > span { color:var(--muted); font-size:12px; }
.subissue-design-grid textarea, .subissue-design-grid select { width:100%; box-sizing:border-box; }
.subissue-design-grid small { color:var(--muted); line-height:1.4; }
.subissue-materials { padding:8px 10px; border-radius:8px; background:var(--surface-2,#f6f7f9); }
.subissue-materials p { margin:5px 0 0; }
.slice-match { display:grid; gap:4px; font-size:12px; color:var(--muted); }
.slice-match select { font:inherit; padding:5px 6px; border:1px solid var(--border,var(--color-secondary)); border-radius:6px; background:var(--surface,#fff); }
.cognition-chain { display:grid; gap:8px; }
.cognition-origin, .closure-node { padding:10px 12px; border-radius:9px; background:var(--surface,#fff); border:1px solid var(--border,var(--color-secondary)); display:grid; gap:4px; }
.cognition-origin span, .closure-node span, .closure-node em { color:var(--muted); font-size:13px; line-height:1.45; font-style:normal; }
.cognition-node > div { display:grid; gap:3px; }
.cognition-node small { color:var(--primary); font-size:12px; }
.closure-chain { display:grid; justify-items:stretch; gap:4px; }
.closure-node.main { border-color:var(--primary); background:var(--primary-soft,#fce7ed); }
.closure-arrow { text-align:center; color:var(--muted); font-size:16px; }
.context-timeline { margin-top:14px; }
.timeline-line { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.timeline-item { display:grid; gap:5px; padding:11px; border-left:3px solid var(--primary); background:var(--surface,#fff); border-radius:8px; }
.timeline-item i { color:var(--primary); font-style:normal; font-weight:700; }
.timeline-item span,.timeline-item small { color:var(--muted); line-height:1.45; }
@media (max-width:700px) { .timeline-line { grid-template-columns:1fr; } }
@media (max-width:700px) { .tab-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .subissue-design-grid { grid-template-columns:1fr; } .cognition-node { grid-template-columns:28px 1fr; } .cognition-node span { grid-column:2; } .tab-panel-head { align-items:flex-start; flex-direction:column; } }
.path-review { margin: 12px 0 16px; padding: 12px 14px; border-left: 3px solid var(--accent, #2563eb); background: var(--surface-2, #f6f7f9); border-radius: 0 8px 8px 0; }
.path-review p { margin: 6px 0; font-size: 14px; line-height: 1.5; }
.path-obstacle { margin: 4px 0 0; font-size: 13px; color: var(--muted); }
.path-diag .score-row { display: flex; flex-wrap: wrap; gap: 10px 16px; margin: 10px 0 16px; }
.path-diag .score-row div { min-width: 88px; }
.path-diag .score-row b { display: block; font-size: 18px; }
.path-diag .score-row span { font-size: 12px; color: var(--muted); }
.path-warn { color: var(--warn); margin: 6px 0; }
.path-cover { display: grid; gap: 4px; font-size: 13px; }
.think-graph {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  margin: 8px 0;
  font-size: 14px;
}
.think-graph .chain { font-weight: 650; }
.fivestep p { margin: 6px 0; }
.research { margin-top: 8px; font-size: 13px; color: var(--muted); }
.fit-shallow { color: var(--warn); }
.fit-match { color: var(--ok); }
.eval-block h3 { font-size: 14px; margin: 14px 0 6px; }

               
.continue-card {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}
.recent-card {
  position: relative;
  padding-right: 40px;
}
#list.recent-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
}
#list.recent-grid .recent-card {
  height: 100%;
  display: flex;
  flex-direction: column;
}
#list.recent-grid .recent-card > .row {
  margin-top: auto !important;
  padding-top: 10px;
}
.class-empty {
  max-width: 520px;
  padding: 28px 4px 80px;
}
.class-empty h1 { font-size: 22px; margin: 12px 0 8px; font-weight: 650; }
.trash-btn {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 32px;
  height: 32px;
  border: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.trash-btn:hover { background: var(--bg); color: var(--danger); }
.tile .ai-eval {
  border: 0;
  padding: 8px 0 0;
  background: transparent;
}
.metric {
  font-size: 13px;
  color: var(--muted);
}
.metric b { display: block; color: var(--ink); font-size: 20px; font-weight: 650; margin-bottom: 2px; }
.login-card { max-width: 420px; }

                     
                                    
body.design-page .app-topbar { display: block; }
.design-layout:not([hidden]) {
  display: grid;
  grid-template-columns: 208px minmax(0, 1fr);
  gap: 0 16px;
  align-items: start;
}
.design-side { min-width: 0; }
/* 左侧六步导航：竖排文字项，1px 右分隔线；窄屏退化为顶部横向滚动条 */
.design-stepper {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 2px;
  margin: 0;
  min-width: 0;
  border-right: 1px solid var(--color-border, #e3dccd);
  padding: 0 12px 24px 0;
}
.design-stepper .stepper-item { flex: none; }
.stepper-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  border: 0;
  border-radius: var(--radius-control, 6px);
  background: none;
  cursor: pointer;
  font: inherit;
  font-size: 15px;
  color: var(--color-text-secondary);
  white-space: nowrap;
  text-align: left;
}
@media (max-width: 900px) {
  .design-layout:not([hidden]) { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .design-stepper {
    flex-direction: row;
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    border-right: 0;
    border-bottom: 1px solid var(--color-border, #e3dccd);
    padding: 0 0 8px;
  }
  .design-stepper::-webkit-scrollbar { display: none; }
  .design-stepper .stepper-item { width: auto; }
}
.stepper-item:hover { color: var(--color-text-primary); background: rgba(0,0,0,.04); }
.stepper-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 8px;
  border: 1px solid var(--color-border-strong, #d9d2c2);
  background: var(--color-surface, #fff);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--color-text-secondary);
  flex: none;
}
.stepper-item.on { color: var(--color-primary); font-weight: 650; }
.stepper-item.on .stepper-num { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.stepper-item.done { color: var(--color-text-primary); }
.stepper-item.done .stepper-num { border-color: var(--color-primary); color: var(--color-primary); }
.stepper-link { flex: 1 1 14px; min-width: 14px; height: 1px; background: var(--color-border, #e3dccd); }
.design-tabs[hidden] { display: none !important; }
.design-main { min-width: 0; }
.design-page .app-pagehead,
.design-page .app-content {
  /* 内容宽度与顶部导航同宽（取消 1200px 限宽），左右仅留与导航一致的内边距。 */
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  padding-left: 24px;
  padding-right: 24px;
  width: 100%;
}
.design-page .app-pagehead { padding-top: 12px; padding-bottom: 0; }
.design-page .app-content { padding-top: 8px; padding-bottom: 20px; flex: 1; }
.design-page .design-layout { max-width: none; align-items: start; }
.design-page .design-main { max-width: none; width: 100%; min-height: 0; }
.design-page .content-location { max-width: none; }
.design-page .step-panel {
  height: fit-content;
  min-height: 0;
  padding: 18px 20px 16px;
}
.design-page .step-panel h2 { margin: 0 0 6px; font-size: 22px; }
.step-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 12px;
}
/* 左侧标题列：宽度不足时操作按钮换行到下一行，标题列本身不被压缩到逐字换行 */
.step-head-row > div:first-child {
  flex: 1 1 0;
  min-width: min(100%, 280px);
}
.step-head-row h2 { margin: 0; }
.step-head-row .btn {
  flex: none;
  white-space: nowrap;
}
.btn-accent {
  background: #0f766e;
  border-color: #0f766e;
  color: #fff;
}
.btn-accent:hover {
  filter: brightness(1.05);
  color: #fff;
}
.rec-shelf.is-recs-folded .rec-shelf-stage { display: none; }
.rec-fold-toggle { margin: 4px 0 10px; }
.design-page .step-panel .step-lead,
.design-page .step-panel > .sub { margin: 0 0 10px; }
.design-page #err:empty,
.design-page #ok:empty { display: none; }
.design-page .step-panel > :last-child { margin-bottom: 0; }
.design-page .step-panel[data-step="1"] { padding: 22px 24px 18px; }
.design-page .step-panel[data-step="1"] h2,
.design-page .step-panel[data-step="1"] h3 {
  font-family: "Heiti SC", "STHeiti", "SimHei", "Source Han Sans SC", "Noto Sans SC", "PingFang SC", sans-serif;
  font-weight: 700;
}
.design-page .step-panel[data-step="1"] h2 { font-size: 22px; margin-top: 0; letter-spacing: 0; }
.design-page .step-panel[data-step="1"] .step-lead { font-size: 13px; margin-bottom: 14px; }
.design-page .step-panel[data-step="1"] label { font-size: 16px; margin-top: 20px; }
.design-page .step-panel[data-step="1"] select,
.design-page .step-panel[data-step="1"] input { min-height: 56px; padding: 12px 14px; font-size: 18px; }
.design-page .step-panel[data-step="2"] textarea {
  font-size: 17px;
  line-height: 1.75;
  padding: 14px 16px;
}
.location-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 10px 16px;
  margin-top: 14px;
}
.location-field {
  display: grid;
  gap: 6px;
  margin: 0 !important;
  font-size: 13px !important;
  color: var(--muted);
  font-weight: 600;
}
.location-field .opt {
  font-weight: 500;
  font-style: normal;
  color: #9aa3af;
}
.location-field select,
.location-field input {
  min-height: 44px !important;
  padding: 8px 12px !important;
  font-size: 15px !important;
  width: 100%;
}
.location-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 8px;
  min-height: 28px;
}
.location-meta #contentHint { margin: 0; flex: 1; min-width: 0; }
.chapter-nav {
  margin: 0;
  flex: none;
}
.chapter-nav > summary {
  cursor: pointer;
  list-style: none;
  color: var(--primary);
  font-size: 13px;
  font-weight: 650;
  white-space: nowrap;
}
.chapter-nav > summary::-webkit-details-marker { display: none; }
.chapter-nav[open] {
  flex: 1 1 100%;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 8px 12px 12px;
  background: var(--bg);
}
.chapter-nav #textbookNavigation { margin-top: 8px; max-height: 320px; overflow: auto; }
.content-location-heading { display: flex; align-items: center; gap: 8px; }
.content-location-heading h3 { margin: 0; font-size: 15px; }
.content-guidance-tip { align-self: center; }
.content-guidance-popover {
  left: 0;
  top: calc(100% + 10px);
  width: min(440px, calc(100vw - 48px));
  padding: 16px 18px;
  color: var(--ink);
  text-align: left;
}
.content-guidance-pop-title { display: block; color: var(--ink); font-size: 15px; margin-bottom: 6px; }
.content-guidance-pop-copy { margin: 0 0 12px; color: var(--muted); line-height: 1.6; }
.content-guidance-pop-row { margin: 8px 0 0; display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 10px; align-items: start; line-height: 1.55; }
.content-guidance-pop-row b { color: var(--ink); font-size: 13px; }
.content-guidance-pop-row span { color: var(--muted); }
.content-guidance-popover .guidance-note { margin: 12px 0 0; padding-top: 10px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; line-height: 1.5; }
.content-guidance-tip.is-open .info-tip-pop { display: block; }
.content-location { max-width: 980px; }
.content-location > .sub { margin-top: 4px; }
.book-shelf {
  margin: 16px 0 8px;
  max-width: min(1120px, 100%);
}
.book-shelf-stage {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) 36px;
  align-items: center;
  gap: 8px;
  max-height: 280px;
  opacity: 1;
  overflow: hidden;
  transition: max-height 0.32s ease, opacity 0.22s ease, margin 0.32s ease;
}
.book-shelf-track {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  padding: 10px 6px 16px;
  cursor: grab;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.book-shelf-track:active { cursor: grabbing; }
.book-shelf-track::-webkit-scrollbar { height: 6px; }
.book-shelf-track::-webkit-scrollbar-thumb {
  background: #d4dbe3;
  border-radius: 8px;
}
.book-shelf-nav {
  width: 36px;
  height: 36px;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 8px;
  color: var(--ink);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 1px 4px rgba(15, 23, 42, 0.06);
}
.book-shelf-nav:hover { background: var(--bg); }
.book-cover {
  flex: 0 0 132px;
  width: 132px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  scroll-snap-align: start;
  text-align: left;
  color: var(--ink);
}
.book-cover img {
  display: block;
  width: 132px;
  height: 186px;
  object-fit: cover;
  object-position: top;
  border-radius: 3px 8px 8px 3px;
  box-shadow: 2px 8px 18px rgba(15, 23, 42, 0.16);
  background: #f3f4f6;
  pointer-events: none;
  user-select: none;
}
.book-cover span {
  display: block;
  margin-top: 8px;
  font-size: 12px;
  line-height: 1.35;
  color: var(--muted);
}
.book-cover b { display: block; color: var(--ink); font-size: 13px; font-weight: 650; }
.book-cover.on img {
  outline: 3px solid var(--color-primary);
  outline-offset: 3px;
  box-shadow: 2px 10px 20px color-mix(in srgb, var(--color-primary) 28%, transparent);
}
.book-cover.on span { color: var(--primary); }
                                
.book-context-bar {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  text-align: left;
  border: 0;
  background: transparent;
  border-radius: 0;
  padding: 2px 0 4px;
  color: var(--ink);
  min-height: 0;
  margin: 0 0 16px;
}
.book-context-bar[hidden] { display: none; }
.book-context-title,
.book-picked-copy b {
  display: inline;
  font-size: 15px;
  font-weight: 650;
  color: var(--ink);
}
.book-picked-copy {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.4;
}
.book-picked-change {
  color: var(--primary);
  font-size: 13px;
  font-weight: 650;
  white-space: nowrap;
  border: 0;
  background: none;
  padding: 0;
  cursor: pointer;
}
.range-block { margin-top: 4px; }
.range-block-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.range-block-head h3,
.design-result-label {
  margin: 0;
  font-size: 15px;
  font-weight: 650;
}
.design-result { margin-top: 22px; }
.design-result-card {
  position: relative;
  margin-top: 8px;
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--surface);
}
.design-result-card .scope-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 12px;
  font-weight: 650;
  margin-bottom: 8px;
}
.design-result-card .scope-title {
  font-size: 19px;
  font-weight: 700;
  line-height: 1.35;
  margin: 0 0 4px;
}
.design-result-card .scope-path {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 13px;
}
.design-result-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.coverage-link {
  border: 0;
  background: none;
  padding: 0;
  color: var(--primary);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}
.coverage-pop {
  position: absolute;
  left: 18px;
  bottom: 48px;
  z-index: 4;
  min-width: 240px;
  max-width: 360px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: var(--surface);
  box-shadow: var(--shadow);
}
.coverage-pop-title {
  font-size: 12px;
  font-weight: 650;
  color: var(--muted);
  margin-bottom: 6px;
}
.coverage-pop ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 4px;
  font-size: 13px;
}
.focus-light {
  margin-top: 20px;
  padding: 0;
  border: 0;
  background: transparent;
}
.focus-light-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}
.focus-light-label {
  font-size: 14px;
  font-weight: 650;
}
.focus-light-actions { display: flex; gap: 8px; }
.focus-light .focus-current {
  font-size: 14px;
  font-weight: 500;
  color: var(--muted);
  margin: 0 0 4px;
}
.focus-light.is-set .focus-current {
  font-size: 15px;
  font-weight: 650;
  color: var(--ink);
}
.focus-light .focus-lead,
.focus-light .focus-align {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
}
.ref-entry {
  width: 100%;
  margin-top: 22px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: baseline;
  gap: 10px;
  padding: 10px 0;
  border: 0;
  border-top: 1px solid var(--line);
  background: transparent;
  cursor: pointer;
  text-align: left;
  color: var(--ink);
}
.ref-entry-title { font-size: 14px; font-weight: 650; }
.ref-entry-copy { font-size: 13px; color: var(--muted); }
.ref-entry-arrow { color: var(--muted); font-size: 18px; line-height: 1; }
.ref-drawer {
  position: fixed;
  inset: 0;
  z-index: 40;
}
.ref-drawer[hidden] { display: none !important; }
.ref-drawer-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.28);
}
.ref-drawer-panel {
  position: absolute;
  top: 0;
  right: 0;
  width: min(520px, 94vw);
  height: 100%;
  background: var(--surface);
  border-left: 1px solid var(--line);
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  padding: 18px 20px;
}
.ref-drawer-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.ref-drawer-head h3 { margin: 0 0 4px; font-size: 18px; }
.ref-drawer-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
}
.ref-drawer-tab {
  border: 0;
  background: var(--bg);
  border-radius: 6px;
  padding: 6px 12px;
  cursor: pointer;
  font-size: 13px;
}
.ref-drawer-tab.on {
  background: var(--primary-soft);
  color: var(--primary);
  font-weight: 650;
}
.ref-drawer-body {
  overflow: auto;
  flex: 1;
  min-height: 0;
}
.ref-drawer-body h4 {
  margin: 12px 0 6px;
  font-size: 13px;
  color: var(--muted);
}
.ref-pre {
  margin: 0;
  white-space: pre-line;
  font-family: inherit;
  font-size: 13px;
  line-height: 1.55;
  color: var(--ink);
}

                                                  
.scope-eyebrow {
  font-size: 12px;
  font-weight: 650;
  color: var(--muted);
}
.scope-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 12px;
  font-weight: 650;
}
.scope-title {
  font-size: 17px;
  font-weight: 700;
  line-height: 1.4;
  margin: 0 0 6px;
}
.scope-path, .scope-children, .focus-lead, .focus-align {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}
.scope-actions { margin-top: 10px; display: flex; gap: 8px; flex-wrap: wrap; }
.focus-current {
  font-size: 15px;
  font-weight: 650;
  margin: 4px 0 8px;
}
.focus-align.is-high { color: var(--ok, #16803c); }
.focus-align.is-related { color: var(--primary); }
.focus-align.is-weak { color: #b7791f; }
.focus-align.is-off_scope { color: #c53030; }
.scope-picker-panel, .focus-picker-panel { max-width: 920px; width: min(920px, 94vw); }
.scope-picker-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(220px, 0.8fr);
  gap: 16px;
  margin-top: 12px;
  min-height: 360px;
}
.scope-tree {
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  background: var(--surface);
  padding: 10px;
  overflow: auto;
  max-height: 52vh;
}
.scope-tree details { margin: 2px 0; }
.scope-tree summary {
  cursor: pointer;
  list-style: none;
  padding: 6px 8px;
  border-radius: 6px;
  font-size: 14px;
}
.scope-tree summary::-webkit-details-marker { display: none; }
.scope-tree summary:hover, .scope-tree .scope-node:hover { background: var(--bg); }
.scope-tree .scope-node {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  background: transparent;
  padding: 6px 8px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 14px;
  color: var(--ink);
}
.scope-tree .scope-node.on, .scope-tree summary.on {
  background: var(--primary-soft);
  color: var(--primary);
  font-weight: 650;
}
.scope-tree .scope-branch { margin-left: 14px; border-left: 1px solid var(--line); padding-left: 8px; }
.scope-preview {
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 14px;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.scope-preview .btn { margin-top: auto; }
.focus-tabs { display: flex; gap: 8px; margin: 12px 0; }
.focus-tab {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 6px;
  padding: 6px 12px;
  cursor: pointer;
  font-size: 13px;
}
.focus-tab.on {
  background: var(--primary-soft);
  color: var(--primary);
  border-color: transparent;
  font-weight: 650;
}
.focus-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.focus-chip {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 6px;
  padding: 6px 12px;
  cursor: pointer;
  font-size: 13px;
}
.focus-chip.on {
  background: var(--primary-soft);
  color: var(--primary);
  border-color: transparent;
  font-weight: 650;
}
@media (max-width: 900px) {
  .scope-picker-layout { grid-template-columns: 1fr; }
}
.ai-dock {
  position: sticky;
  top: calc(var(--header) + 24px);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 14px;
}
.ai-dock h3 { margin: 0 0 8px; font-size: 14px; }
.sticky-actions {
  position: relative;
  z-index: 2;
  display: flex;
  gap: 8px;
  align-items: center;
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
  margin-top: 14px;
}

                       
.cockpit {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) 320px;
  gap: 18px;
}
.cockpit-meta { display: flex; gap: 18px; flex-wrap: wrap; margin: 8px 0 16px; }
.live-dot {
  width: 8px; height: 8px; border-radius: 8px;
  background: var(--ok); display: inline-block; margin-right: 6px;
}
.control-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 0;
}

                   
.space-student { background: var(--bg); }
.wx-banner {
  background: #16a34a;
  color: #fff;
  font-size: 13px;
  padding: 8px 12px;
  text-align: center;
}
.student-page {
  min-height: 100dvh;
  max-width: 480px;
  margin: 0 auto;
  padding: 28px 18px 40px;
}
.student-page .pill { width: fit-content; }
.landing {
  min-height: 70dvh;
  flex-direction: column;
  justify-content: center;
}
.landing:not([hidden]) { display: flex; }
.landing .task-hint { color: var(--muted); margin: 18px 0 28px; }
.prompt {
  background: var(--surface);
  border-radius: var(--r);
  padding: 14px;
  border: 1px solid var(--line);
  margin: 12px 0 16px;
}
.counter { text-align: right; color: var(--muted); font-size: 13px; margin-top: 6px; }
.hint-fold { margin: 12px 0; }
.hint-fold summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 13px;
}
.analyzing { padding: 8px 0; }
.analyzing li { color: var(--muted); margin: 6px 0; list-style: none; }
.analyzing li.done { color: var(--ok); }

                        
body.board, .space-board {
  min-height: 100dvh;
  padding: 28px 36px;
  background: var(--color-background);
  color: var(--color-text-primary);
}
.pres-shell { max-width: 1680px; margin: 0 auto; }
.board-top, .pres-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-bottom: 20px;
  gap: 16px;
}
.space-board .brand { font-size: 22px; }
.space-board .count { font-size: 32px; color: var(--color-text-primary); }
.space-board .camp {
  background: var(--color-surface);
  border-color: var(--color-border);
  color: var(--color-text-primary);
  min-height: auto;
}
.space-board .quote { border-left-color: var(--color-primary); }
.space-board .muted { color: var(--color-text-secondary); }
.pres-stage {
  display: grid;
  grid-template-columns: 1.4fr 0.9fr;
  gap: 16px;
  min-height: 420px;
  align-items: start;
}
.pres-grid { margin-top: 16px; }
.insight {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--r);
  padding: 18px;
}
.insight h3 { margin: 0 0 10px; font-size: 14px; color: var(--color-ai-primary); font-weight: 650; }
.insight.insight-compact {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
}
.insight.insight-compact .ai-agent { margin: 0; }
.insight.insight-compact .insight-body { display: none; }

.beat-rail {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  list-style: none;
  padding: 0;
  margin: 0 0 16px;
}
.beat-rail li {
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 6px 10px;
  font-size: 12px;
  color: var(--muted);
}
.beat-rail li span { display: block; font-size: 11px; }
.beat-rail li.on { background: var(--color-primary); color: var(--color-primary-foreground); border-color: var(--color-primary); }
.phase-rail {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  list-style: none;
  padding: 0;
  margin: 0 0 18px;
  width: 100%;
}
.phase-rail li {
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 10px 12px;
  background: var(--surface);
  min-height: 74px;
}
.phase-rail li b {
  display: block;
  font-size: 12px;
  color: var(--muted);
  font-weight: 650;
}
.phase-rail li span {
  display: block;
  font-size: 15px;
  font-weight: 650;
  margin: 2px 0 2px;
  white-space: nowrap;
}
.phase-rail li em {
  display: block;
  font-style: normal;
  font-size: 12px;
  color: var(--muted);
}
.phase-rail li.done { border-color: color-mix(in srgb, var(--primary) 35%, var(--line)); }
.phase-rail li.on {
  background: var(--color-primary-soft);
  border-color: var(--color-primary-border);
  color: var(--color-primary);
  box-shadow: inset 0 -3px 0 var(--color-primary);
}
.phase-rail li.on b,
.phase-rail li.on em { color: var(--color-text-secondary); }
.eval-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 12px 0;
  padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--primary) 45%, var(--line));
  background: var(--primary-soft);
  border-radius: var(--r);
}
.eval-banner p { margin: 4px 0 0; color: var(--muted); font-size: 13px; }
.eval-banner .btn { flex: none; white-space: nowrap; }
.pill.wait {
  color: var(--primary);
  border-color: color-mix(in srgb, var(--primary) 40%, var(--line));
  background: var(--primary-soft);
}
.eval-pipe {
  list-style: none;
  padding: 12px 0 0;
  margin: 8px 0 0;
  border-top: 1px solid var(--line);
}
.eval-pipe li {
  display: flex;
  gap: 8px;
  font-size: 13px;
  color: var(--muted);
  padding: 4px 0;
}
.eval-pipe li span { width: 1.1em; flex: none; }
.eval-pipe li.done { color: var(--ok); }
.eval-pipe li.running { color: var(--ink); font-weight: 650; }
.eval-pipe li.error { color: var(--danger); }
.bars { display: grid; gap: 10px; }
.bar-meta { display: flex; justify-content: space-between; font-size: 14px; margin-bottom: 4px; }
.bar-track {
  height: 8px;
  background: var(--bg);
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--line);
}
.bar-track i {
  display: block;
  height: 100%;
  background: var(--primary);
}
.space-board .bar-track { background: var(--color-background); border-color: var(--color-border); }
.decision {
  border-top: 1px solid var(--line);
  margin-top: 12px;
  padding-top: 12px;
}
.gap-graph .chain { font-weight: 650; font-size: 16px; }
.auth-card { max-width: 420px; margin: 48px auto; }
.observer-page { max-width: 880px; margin: 0 auto; padding: 28px 20px 64px; }
.observer-tag { font-size: 12px; color: var(--muted); }
.layers { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(280px, 340px); gap: 18px; }
.follow-edit { width: 100%; min-height: 72px; margin: 8px 0; }
.more-tools { margin-top: 16px; }
.qr-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.qr-pair .qrbox { padding: 12px; }

.linkish {
  appearance: none;
  border: 0;
  background: none;
  color: var(--primary);
  font: inherit;
  font-weight: 650;
  cursor: pointer;
  padding: 0;
}
/* 确认/提示弹窗是全局浮层，必须盖在页面自身浮层之上：
   作业本抽屉 72、题目筛选 80、试卷预览 900、打印预览 950、评价弹窗 9999 等都在它下面 */
.ui-dialog-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(15, 23, 42, 0.42);
  backdrop-filter: blur(3px);
}
.ui-dialog {
  width: min(480px, calc(100vw - 32px));
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: 0 24px 70px rgba(15, 23, 42, 0.24);
  padding: 24px;
  animation: dialog-in .18s ease-out both;
}
.ui-dialog[data-kind="prompt"] { width: min(560px, calc(100vw - 32px)); }
.ui-dialog-body { display: block; min-width: 0; }
.ui-dialog-mark {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 17px;
  font-weight: 750;
}
.ui-dialog[data-kind="confirm"] .ui-dialog-mark { background: var(--warn-bg); color: var(--warn); }
.ui-dialog[data-kind="confirm"] [data-dialog-confirm] { background: var(--danger); }
#uiDialogTitle { margin: 2px 0 8px; font-size: 19px; line-height: 1.35; }
#uiDialogMessage { margin: 0; color: var(--muted); font-size: 15px; line-height: 1.7; white-space: pre-wrap; }
.ui-dialog textarea {
  grid-column: 1 / -1;
  width: 100%;
  min-height: 104px;
  margin-top: 14px;
  resize: vertical;
}
.ui-dialog-options { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.ui-dialog-option {
  display: flex; flex-direction: column; gap: 2px; align-items: flex-start; text-align: left;
  width: 100%; padding: 12px 16px; border: 1px solid var(--color-border); border-radius: 6px;
  background: var(--color-surface, #fff); cursor: pointer;
  font-size: 15px; font-weight: 650; color: var(--color-text-primary, #111827);
}
.ui-dialog-option small { font-size: 13px; font-weight: 400; color: var(--color-text-tertiary, var(--color-neutral)); }
.ui-dialog-option:hover { border-color: var(--color-primary, var(--color-primary)); }
.ui-dialog-option.is-primary { border-color: var(--color-primary, var(--color-primary)); background: var(--primary-soft); }
.ui-dialog-option:focus-visible { outline: 2px solid var(--color-primary, var(--color-primary)); outline-offset: 1px; }
.ui-dialog-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; }
.ui-dialog-actions .btn { min-width: 76px; }
body.ui-dialog-open { overflow: hidden; }
@keyframes dialog-in {
  from { opacity: 0; transform: translateY(8px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.auth-overlay {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(10px);
  display: grid;
  place-items: center;
  padding: 24px;
}
                                                                                       
.auth-overlay[hidden] { display: none !important; }
.auth-dialog {
  position: relative;
  width: min(420px, 100%);
}
.auth-close {
  position: absolute;
  right: 12px;
  top: 12px;
  z-index: 2;
  border: 0;
  background: transparent;
  font-size: 22px;
  cursor: pointer;
  color: var(--muted);
}
.flip-card-container { perspective: 1600px; }
.flip-card-inner {
  position: relative;
  min-height: 580px;
  height: min(720px, calc(100vh - 8rem));
  transition: transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1);
  transform-style: preserve-3d;
  -webkit-transform-style: preserve-3d;
}
.flip-card-inner.flipped { transform: rotateY(180deg); }
.flip-face {
  position: absolute;
  inset: 0;
  border: 1px solid rgba(255,255,255,0.6);
  background: rgba(255,255,255,0.92);
  border-radius: 8px;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  box-shadow: 0 28px 90px rgba(17, 24, 39, 0.18);
                                                                                 
                                                              
}
.flip-scroll {
  height: 100%;
  overflow: auto;
  padding: 28px 24px;
}
.flip-front { transform: rotateY(0deg); }
.flip-back { transform: rotateY(180deg); }
                                                                                      
                                                        
                   
.flip-card-inner:not(.flipped) .flip-back,
.flip-card-inner.flipped .flip-front { pointer-events: none; }
.flip-face h1 { margin: 0 0 8px; font-size: 28px; letter-spacing: -0.03em; }
.flip-face label { display: block; margin: 12px 0 6px; font-size: 13px; font-weight: 600; color: #334155; }
.flip-face input:not([type=checkbox]) {
  width: 100%;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
  background: #fff;
  padding: 12px 16px;
}
.flip-face input:not([type=checkbox]):focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 4px var(--color-primary-soft);
}
.auth-tabs {
  display: flex;
  gap: 4px;
  background: #f1f5f9;
  border-radius: 8px;
  padding: 4px;
  margin: 16px 0 8px;
}
.auth-tabs button {
  flex: 1;
  border: 0;
  background: transparent;
  border-radius: 8px;
  padding: 10px 8px;
  font-size: 13px;
  color: var(--muted);
  cursor: pointer;
}
.auth-tabs button.on {
  background: #fff;
  color: var(--primary);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
  font-weight: 650;
}
.pw-wrap { position: relative; }
.pw-wrap input { padding-right: 44px; }
.pw-toggle {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  border: 0;
  background: none;
  color: #94a3b8;
  cursor: pointer;
  padding: 4px;
  display: inline-flex;
}
.pw-toggle:hover { color: #334155; }
.auth-remember {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 14px 0 0;
  font-size: 13px;
  color: var(--muted);
  font-weight: 500;
}
.auth-remember input[type="checkbox"] {
  width: 16px;
  height: 16px;
  margin: 0;
  flex: none;
  accent-color: var(--primary);
}
.auth-submit {
  width: 100%;
  margin-top: 16px;
  background: var(--color-primary);
  color: var(--color-primary-foreground);
  border: 0;
}
.auth-submit:hover { background: var(--color-primary-hover); }
body.auth-open { overflow: hidden; }

                  
.code-row { display: flex; gap: 8px; align-items: stretch; }
.code-row input { flex: 1; letter-spacing: 4px; }
.code-btn { flex: none; white-space: nowrap; padding: 0 14px; }
.code-btn:disabled { opacity: 0.6; cursor: not-allowed; }
.auth-foot { margin: 12px 0 0; text-align: center; font-size: 13px; }
.auth-dialog .hint { margin: 8px 0 0; font-size: 12px; color: var(--muted); line-height: 1.6; }
.auth-dialog .hint.ok { color: #15803d; }
.auth-dialog .err.ok { color: #15803d; }
.auth-tabs button { white-space: nowrap; }

.ai-agent {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 12px;
}
.ai-core {
  --sz: 36px;
  width: var(--sz);
  height: var(--sz);
  position: relative;
  flex: none;
  border-radius: 8px;
}
.ai-agent[data-size="sm"] .ai-core { --sz: 32px; }
.ai-agent[data-size="md"] .ai-core { --sz: 36px; }
.ai-agent[data-size="lg"] .ai-core { --sz: 48px; }
.ai-agent[data-size="pres"] .ai-core { --sz: 80px; }
.space-board .ai-core { --sz: 80px; }
.space-student .ai-core { --sz: 32px; }
.ai-ring,
.ai-dot {
  position: absolute;
  border-radius: 8px;
  pointer-events: none;
}
.ai-ring {
  inset: 16%;
  border: 1.5px solid var(--ai-secondary);
  opacity: 0.7;
}
.ai-ring-outer {
  inset: 0;
  opacity: 0.4;
}
.ai-dot {
  inset: 34%;
  background: var(--ai-primary);
  opacity: 0.92;
  animation: ai-idle-breathe 1.25s ease-in-out infinite;
}
.ai-agent.listening .ai-ring-outer {
  animation: ai-listen-expand 2.2s ease-in-out infinite;
}
.ai-agent.understanding .ai-core {
  animation: ai-understand 800ms ease;
}
.ai-agent.analyzing .ai-dot,
.ai-agent.evaluating .ai-dot {
  animation: ai-analyze-pulse 1.1s ease-in-out infinite;
}
.ai-agent.insight .ai-dot {
  animation: ai-insight-flash 700ms ease;
  transform: scale(1.12);
  opacity: 1;
}
.ai-agent.speaking .ai-dot {
  animation: ai-idle-breathe 1.05s ease-in-out infinite;
}
.ai-agent.speaking .ai-ring-outer {
  transform: scale(calc(1 + var(--ai-amp, 0) * 0.08));
}
.ai-agent.completed .ai-dot {
  animation: ai-complete 500ms ease;
  opacity: 0.55;
}
.ai-agent.warning .ai-dot {
  background: var(--warn);
  animation: ai-warn-flash 600ms ease 1;
}
.ai-kicker { margin: 0; font-size: 11px; color: var(--muted); letter-spacing: 0.04em; }
.ai-line { margin: 0; font-weight: 650; }
.ai-voice-btn {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  border: 1px solid var(--ai-border);
  background: var(--ai-soft);
  color: var(--ai-primary);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  margin-top: 8px;
}
.ai-voice-btn.playing { background: var(--ai-primary); color: #fff; }
.ai-eval, .ai-insight, .ai-wow {
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 16px;
  background: var(--surface);
}
.eval-card {
  display: grid;
  gap: 12px;
  margin-top: 8px;
}
.eval-sec h4 {
  margin: 0 0 4px;
  font-size: 12px;
  font-weight: 650;
  color: var(--muted);
  letter-spacing: 0.02em;
}
.eval-sec p {
  margin: 0;
  font-size: 14px;
  line-height: 1.7;
}
.eval-dims {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.eval-dims span {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 2px 8px;
  font-size: 12px;
  color: var(--muted);
}
.ai-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 12px 0;
}
.ai-stats div {
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  padding: 10px 12px;
}
.ai-stats b { display: block; font-size: 22px; }
.ai-stats span { color: var(--muted); font-size: 12px; }
.ai-action { font-weight: 650; margin: 10px 0 0; }
.dim-bars { display: grid; gap: 8px; }
.dim-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  animation: fade-up 0.35s ease both;
  animation-delay: calc(var(--d, 0) * 120ms);
}
.dim-row > span:first-child {
  white-space: nowrap;
}
.dim-dots { display: flex; gap: 4px; }
.dim-dots i {
  width: 10px;
  height: 10px;
  border-radius: 8px;
  background: var(--line);
  display: block;
}
.dim-dots i.on { background: var(--primary); }
.solo-track {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  list-style: none;
  padding: 0;
  margin: 8px 0 0;
}
.solo-track li {
  font-size: 12px;
  color: var(--muted);
  padding: 4px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.solo-track li.on { background: var(--color-primary); color: var(--color-primary-foreground); border-color: var(--color-primary); }
.solo-track li.done { color: var(--ink); }
.cluster { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.cluster-card {
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 12px;
  animation: fade-up 0.4s ease both;
  animation-delay: calc(var(--d, 0) * 80ms);
}
.cluster-card h3 { margin: 0 0 6px; font-size: 14px; }
.ai-wow {
  border: 1px solid var(--line);
  border-radius: var(--r);
  padding: 16px;
  background: var(--surface);
  animation: fade-up 0.25s ease both;
}
.eval-reveal .eval-layer {
  animation: fade-up 0.22s ease both;
  animation-delay: calc(var(--d, 0) * 140ms);
}
.insight .ai-agent { margin-bottom: 8px; }
@keyframes ai-idle-breathe {
  50% { transform: scale(1.06); opacity: 0.72; }
}
@keyframes ai-listen-expand {
  0%, 100% { transform: scale(1); opacity: 0.35; }
  50% { transform: scale(1.12); opacity: 0.55; }
}
@keyframes ai-understand {
  0% { transform: scale(1); }
  35% { transform: scale(0.92); }
  100% { transform: scale(1); }
}
@keyframes ai-analyze-pulse {
  50% { transform: scale(1.08); opacity: 0.8; }
}
@keyframes ai-insight-flash {
  0% { transform: scale(0.86); opacity: 0.5; }
  55% { transform: scale(1.16); opacity: 1; }
  100% { transform: scale(1.08); opacity: 1; }
}
@keyframes ai-complete {
  0% { transform: scale(1.1); opacity: 1; }
  60% { transform: scale(0.96); }
  100% { transform: scale(1); opacity: 0.55; }
}
@keyframes ai-warn-flash {
  0%, 100% { opacity: 0.92; }
  40% { opacity: 0.35; }
}
@keyframes fade-up {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .flip-card-inner, .ai-core, .ai-dot, .ai-ring, .ai-ring-outer, .dim-row, .cluster-card, .ai-wow, .eval-layer, .pyramid-col { animation: none; transition: none; }
}

.cog-chain { font-weight: 650; letter-spacing: 0.02em; }
.pyramid {
  display: grid;
  gap: 8px;
  margin: 16px 0 8px;
}
.pyramid-col {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--r);
  padding: 12px 16px;
  text-align: center;
  animation: fade-up 0.35s ease both;
}
.pyramid-col b { display: block; }
.pyramid-col span { color: var(--muted); font-size: 12px; }
.pyramid-top { margin-inline: 18%; }
.pyramid-mid { margin-inline: 8%; }
.expr-row { border-top: 1px solid var(--line); padding: 10px 0; }
.expr-row:first-child { border-top: 0; }

@media (max-width: 1100px) {
  .layers, .qr-pair { grid-template-columns: 1fr; }
  .eval-banner { flex-direction: column; align-items: stretch; }
}
@media (max-width: 760px) { .phase-rail { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .phase-rail { grid-template-columns: 1fr; } }

                           
.ds-swatch {
  height: 48px;
  border-radius: var(--r-sm);
  border: 1px solid var(--line);
}
.ds-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }

@media (max-width: 1100px) {
  .design-layout, .cockpit, .pres-stage { grid-template-columns: 1fr; }
  .design-page .app-topbar-inner,
  .design-page .app-content,
  .design-page .app-pagehead { padding-left: 16px; padding-right: 16px; }
  .design-page .design-main { max-width: none; }
  .content-location { max-width: none; }
  .location-meta { flex-wrap: wrap; }
  .book-cover { flex-basis: 112px; width: 112px; }
  .book-cover img { width: 112px; height: 158px; }
  .textbook-context-grid { grid-template-columns: 1fr; }
  .ai-dock { position: static; }
}
@media (max-width: 800px) {
  .app-topbar-inner {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "brand actions"
      "nav nav";
    padding: 8px 12px;
    gap: 8px;
  }
  .top-brand { grid-area: brand; min-width: 0; }
  /* 导航第二行：10 个入口在窄屏整组横向滚动（单行），不换行撑高、不把右侧标签挤出裁切 */
  .top-nav {
    grid-area: nav;
    justify-self: stretch;
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  .top-nav::-webkit-scrollbar { display: none; }
  .top-nav a { flex: 0 0 auto; }
  .top-actions { grid-area: actions; gap: 6px; min-width: 0; }
  /* design 页对顶栏/内容单独写了 28px 内边距，窄屏要覆盖回来，否则可用宽度被进一步挤占 */
  body.design-page .app-topbar-inner,
  .design-page .app-pagehead,
  .design-page .app-content { padding-left: 16px; padding-right: 16px; }
  /* 页面内工具条（标题 + 状态 pill + 操作按钮）允许换行，避免右侧按钮被挤出 */
  .page-head, .top { flex-wrap: wrap; }
  .grid.two, .grid.three, .benches { grid-template-columns: 1fr; }
  .location-grid { grid-template-columns: 1fr; }
  #list.recent-grid { grid-template-columns: 1fr; }
  .brand { font-size: 20px; }
  .count { font-size: 28px; }
  .space-board { padding: 16px; }
  .app-content, .app-pagehead { padding-left: 16px; padding-right: 16px; }
}
@media (max-width: 480px) {
  body.design-page .app-topbar-inner,
  .design-page .app-pagehead,
  .design-page .app-content { padding-left: 12px; padding-right: 12px; }
}
/* 极窄屏（手机竖屏）：收掉副标题、模型状态文字与账号名，只留 logo 与头像，保证右侧账号不被裁切 */
@media (max-width: 480px) {
  .logo-mark { width: 32px; height: 32px; }
  .logo-sub { display: none; }
  .app-topbar .top-user-name { display: none; }
  .app-topbar .top-user-caret { display: none; }
  .app-topbar .top-user-chip { padding: 2px; }
  .app-topbar #shellStatus { display: none; }
}

.nav-lesson {
  margin-bottom: 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  padding: 12px;
  background: var(--color-surface);
}
.nav-lesson.selected {
  border-color: var(--color-primary-border);
  background: var(--color-primary-soft);
}
.nav-lesson > summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--color-text-primary);
  list-style: none;
  display: flex;
  align-items: center;
  gap: 8px;
  user-select: none;
}
.nav-lesson.selected > summary { color: var(--color-primary); }
.nav-lesson .nav-now { font-size: 11px; color: var(--color-primary); margin-left: auto; font-weight: 500; }
.nav-topics { margin-top: 12px; padding-left: 20px; }
.nav-topic {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  margin: 8px 0;
  padding: 10px;
  text-align: left;
  border: 0;
  border-left: 3px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-background);
  color: var(--color-text-primary);
  cursor: pointer;
  transition: background-color var(--motion) ease, border-color var(--motion) ease, color var(--motion) ease;
}
.nav-topic:hover { background: var(--color-surface-hover); }
.nav-topic.selected {
  background: var(--color-primary-soft);
  border-left-color: var(--color-primary);
  color: var(--color-primary);
  font-weight: 600;
}
.nav-topic .nav-hint { font-size: 11px; color: var(--color-text-tertiary); margin-left: auto; }
.nav-topic.selected .nav-hint { color: var(--color-primary); }

.appearance-block { margin: 24px 0 8px; }
.appearance-row { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 16px; }
.swatch {
  appearance: none;
  min-width: 72px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text-primary);
  border-radius: 8px;
  padding: 8px 10px;
  cursor: pointer;
  font-size: 13px;
}
.swatch.on {
  border-color: var(--color-primary);
  background: var(--color-primary-soft);
  color: var(--color-primary);
  box-shadow: inset 0 0 0 1px var(--color-primary-border);
}
.swatch i {
  display: block;
  width: 18px;
  height: 18px;
  border-radius: 8px;
  margin: 0 auto 4px;
  background: var(--swatch, var(--color-primary));
}

.synth-workbench { display:grid; gap:12px; }
.synth-hero {
  display:grid; gap:12px; padding:16px 18px;
  border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff);
}
.synth-hero-top { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.synth-hero-title { min-width:0; flex:1; display:grid; gap:6px; }
.synth-hero-title h3 { margin:0; font-size:18px; line-height:1.4; font-weight:700; }
.synth-hero-meta { margin:0; font-size:13px; color:var(--muted,var(--color-neutral)); }
.synth-hero-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:flex-end; flex:none; }
.synth-hero-tools { display:flex; flex-wrap:wrap; gap:6px; }
.synth-chips {
  display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:0; list-style:none;
}
.synth-chips li {
  display:inline-flex; align-items:baseline; gap:4px;
  padding:4px 10px; border-radius:6px; background:var(--surface-2,#f6f7f9);
  font-size:12px; color:var(--muted,var(--color-neutral));
}
.synth-chips li b { font-size:13px; color:var(--ink,#111); }
.synth-chips li.is-warn { background:var(--color-warning-soft); color:#b54708; }
.synth-chips li.is-warn b { color:#b54708; }
.synth-chip-score { font-weight:650; }
.synth-chip-score.is-good { background:#ecfdf3; color:#027a48; }
.synth-chip-score.is-good b { color:#027a48; }
.synth-chip-score.is-ok { background:var(--color-warning-soft); color:#b54708; }
.synth-chip-score.is-ok b { color:#b54708; }
.synth-chip-score.is-low { background:#fef3f2; color:var(--color-error); }
.synth-chip-score.is-low b { color:var(--color-error); }
.synth-chip-route { max-width:100%; }
.synth-panel { min-width:0; }
.synth-status { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; padding:14px 16px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:var(--surface,#fff); }
.synth-status-actions { display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; }

            
.asset-modal-sheet { width:min(640px,100%); }
.asset-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-top:8px; }
.asset-card {
  display:grid; gap:6px; text-align:left; padding:14px 12px; border:1px solid var(--border,var(--color-secondary));
  border-radius:8px; background:var(--surface-2,#f8f9fb); cursor:pointer; color:inherit;
}
.asset-card:hover { border-color:var(--accent,#8B1A1A); background:#fff; }
.asset-card:disabled { opacity:.55; cursor:not-allowed; }
.asset-card b { font-size:16px; }
.asset-card span { font-size:13px; color:var(--muted,var(--color-neutral)); }
.asset-card em { font-style:normal; font-size:12px; color:var(--accent,#8B1A1A); }
.asset-progress { display:grid; gap:10px; }
.asset-progress-msg { margin:0; font-size:14px; }
.asset-progress-bar {
  height:10px; border-radius:6px; background:var(--surface-2,#eee); overflow:hidden;
}
.asset-progress-bar > i {
  display:block; height:100%; width:0; background:var(--accent,#8B1A1A); border-radius:6px;
  transition:width .25s ease;
}
.asset-progress-steps {
  display:flex; flex-wrap:wrap; gap:8px 14px; margin:0; padding:0; list-style:none; font-size:12px; color:var(--muted,var(--color-neutral));
}
.asset-progress-steps li.is-done { color:#166534; }
.asset-progress-steps li.is-doing { color:var(--accent,#8B1A1A); font-weight:600; }
.asset-progress-steps li.is-fail { color:var(--color-error); }
@media (max-width:720px) {
  .asset-cards { grid-template-columns:1fr; }
  .synth-hero-top { flex-direction:column; }
  .synth-hero-actions { width:100%; justify-content:stretch; }
  .synth-hero-tools { flex:1; }
}
.synth-pill { display:inline-flex; align-items:center; padding:3px 10px; border-radius:6px; font-size:12px; font-weight:700; }
.synth-pill.is-complete { background:#ecfdf3; color:#027a48; }
.synth-pill.is-almost { background:var(--color-warning-soft); color:#b54708; }
.synth-pill.is-incomplete { background:#fef3f2; color:var(--color-error); }
.synth-hero-badges { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.synth-score {
  display:inline-flex; align-items:baseline; gap:5px;
  padding:6px 12px 6px 10px; border-radius:6px; border:1px solid transparent; cursor:pointer;
  font:inherit; line-height:1; color:inherit;
}
.synth-score b { font-size:26px; font-weight:800; letter-spacing:-0.03em; }
.synth-score span { font-size:12px; font-weight:700; opacity:.9; }
.synth-score.is-good { background:#ecfdf3; color:#027a48; border-color:#abefc6; }
.synth-score.is-ok { background:var(--color-warning-soft); color:#b54708; border-color:#f9dbaf; }
.synth-score.is-low { background:#fef3f2; color:var(--color-error); border-color:#fecdca; }
.synth-score.is-muted { background:var(--surface-2,#f3f4f6); color:var(--muted,var(--color-neutral)); }
button.synth-score:hover { filter:brightness(0.97); }
.synth-diag-scoreline { display:flex; flex-wrap:wrap; gap:10px; align-items:center; min-width:0; }
.synth-diag-scoreline .synth-score { cursor:default; }
.synth-diag-scoreline .sub { margin:0; }
.synth-metrics { margin:8px 0 0; font-size:14px; line-height:1.5; }
.synth-warn { margin:8px 0 0; color:#b54708; font-size:13px; line-height:1.5; }
.synth-error { margin:0; padding:10px 12px; border-radius:8px; background:#fef3f2; color:var(--color-error); font-size:13px; }
.synth-overview { display:grid; grid-template-columns:1.2fr 1fr 1.3fr; gap:10px; }
.synth-overview > div { padding:12px 14px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; }
.synth-overview span { display:block; font-size:11px; font-weight:700; color:var(--muted); margin-bottom:6px; }
.synth-overview b { font-size:15px; line-height:1.45; }
.synth-tabs { display:flex; gap:4px; overflow:auto; padding:4px; border-radius:8px; background:var(--surface-2,#f3f4f6); }
.synth-tabs button { border:0; background:transparent; color:var(--muted); padding:8px 12px; border-radius:8px; cursor:pointer; white-space:nowrap; font:inherit; }
.synth-tabs button.on { background:#fff; color:var(--ink); box-shadow:0 1px 2px rgba(17,24,39,.08); font-weight:650; }
.synth-closure, .synth-recall, .synth-panorama, .synth-diagnosis { display:grid; gap:10px; }
.synth-timeline {
  margin:0; padding:0; list-style:none; display:grid; gap:0;
  border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; overflow:hidden;
}
.synth-timeline > li {
  display:grid; gap:6px; padding:14px 16px 14px 18px;
  border-bottom:1px solid var(--border,#eef0f3);
  border-left:3px solid transparent;
}
.synth-timeline > li:last-child { border-bottom:0; }
.synth-timeline > li.is-main { border-left-color:var(--primary,#8B1A1A); background:color-mix(in srgb, var(--primary,#8B1A1A) 6%, #fff); }
.synth-tl-label { font-size:12px; font-weight:700; color:var(--muted,var(--color-neutral)); }
.synth-timeline b { font-size:15px; line-height:1.4; }
.synth-timeline p { margin:0; font-size:14px; line-height:1.55; }
.synth-tl-links { display:flex; flex-wrap:wrap; gap:8px; }
.synth-accept-inline textarea {
  width:100%; border-radius:8px; border:1px solid var(--border,var(--color-secondary));
  padding:8px 10px; font:inherit; resize:vertical; box-sizing:border-box;
}
.synth-pano-head { display:flex; justify-content:space-between; align-items:center; }
.synth-node { padding:14px 16px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; display:grid; gap:6px; }
.synth-node.is-main { border-color:var(--primary); background:var(--primary-soft,#fce7ed); }
.synth-node span, .synth-node em { font-size:12px; font-weight:700; color:var(--muted); font-style:normal; }
.synth-node b { font-size:16px; line-height:1.4; }
.synth-node p { margin:0; font-size:14px; line-height:1.55; }
.synth-node p em { margin-right:8px; }
.synth-node-head { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.synth-arrow { text-align:center; color:var(--muted); }
.synth-outcomes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; padding:12px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; }
.synth-outcomes h4 { grid-column:1 / -1; margin:0; }
.synth-outcomes span { display:block; font-size:12px; font-weight:700; color:var(--muted); margin-bottom:4px; }
.synth-outcomes p { margin:0; font-size:13px; line-height:1.5; }
.synth-card { padding:14px 16px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; display:grid; gap:8px; }
.synth-card h4 { margin:0; }
.synth-task { margin:0; font-size:16px; font-weight:650; line-height:1.5; }
.synth-scaffolds { margin:0; padding-left:18px; display:grid; gap:8px; }
.synth-scaffolds span { display:block; color:var(--muted); }
.synth-split { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.synth-beats { margin:0; padding-left:18px; display:grid; gap:8px; }
.synth-beats p { margin:4px 0 0; font-size:13px; line-height:1.5; }
.synth-act-list { display:grid; gap:8px; }
.synth-act { display:grid; grid-template-columns:32px 1fr; gap:10px; text-align:left; padding:12px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; cursor:pointer; font:inherit; color:inherit; }
.synth-act:hover { border-color:var(--primary); }
.synth-act i { display:grid; place-items:center; width:32px; height:32px; border-radius:9px; background:var(--primary-soft,#fce7ed); color:var(--primary); font-style:normal; font-weight:700; }
.synth-act span { display:block; color:var(--muted); font-size:12px; }
.synth-act p { margin:4px 0 0; font-size:13px; line-height:1.45; }
.synth-tree { margin:8px 0 0; padding-left:18px; display:grid; gap:8px; }
.synth-tree ul { margin:6px 0 0; padding-left:16px; }
.synth-tree-main { margin:0 0 4px; font-weight:700; }
.synth-diag-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.synth-diag-card { text-align:left; padding:12px; border:1px solid var(--border,var(--color-secondary)); border-radius:8px; background:#fff; cursor:pointer; font:inherit; display:grid; gap:4px; }
.synth-diag-card.on { box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 20%, transparent); }
.synth-diag-card.is-good { border-left:3px solid var(--color-success); }
.synth-diag-card.is-improvable { border-left:3px solid var(--color-warning); }
.synth-diag-card.is-gap { border-left:3px solid var(--color-error); }
.synth-diag-card span { font-size:12px; color:var(--muted); }
.synth-diag-card p { margin:0; font-size:13px; line-height:1.45; }
.synth-diag-head { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.synth-diag-actions { display:flex; flex-wrap:wrap; gap:6px; flex:none; }
.synth-landings { margin:0; padding:0; list-style:none; display:grid; gap:8px; }
.synth-landings li { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.synth-landings i { font-style:normal; width:18px; color:var(--color-text-tertiary); }
.synth-landings i.is-on { color:#027a48; }
.synth-problems { margin:0; padding:0; list-style:none; display:grid; gap:10px; }
.synth-problems li { display:grid; gap:4px; }
.synth-detect { margin:0; padding-left:18px; display:grid; gap:4px; }
@media (max-width:900px) {
  .synth-status, .synth-split, .synth-overview, .synth-outcomes, .synth-diag-cards { grid-template-columns:1fr; }
  .synth-status { flex-direction:column; }
}

                        
                         
.goal-modules { display: grid; gap: 12px; }
.gm {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  padding: 14px 18px;
}
.gm.is-overall {
  background: var(--color-primary-soft);
  border-color: var(--color-primary-border);
}
.gm-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.gm-num {
  width: 24px; height: 24px; border-radius: 8px; flex: none;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700;
  background: var(--color-surface-hover);
  color: var(--color-text-secondary);
}
.gm.is-overall .gm-num { background: var(--color-primary); color: #fff; }
.gm-head h3 { margin: 0; font-size: 15px; font-weight: 700; color: var(--color-text-primary); }
.gm-role { font-size: 12px; color: var(--color-text-tertiary); }
.gm-body { min-width: 0; }
.gm-body > p { margin: 0; font-size: 14px; line-height: 1.7; color: var(--color-text-primary); }
.gm-body > p + p { margin-top: 6px; }
.gm > .btn { margin-top: 10px; }

.goal-head-actions { display:flex; gap:8px; flex:none; align-items:flex-start; }
.goal-summary-card,
.goal-evidence-card,
.goal-thinking-card {
  border: 1px solid var(--color-secondary);
  border-radius: 8px;
  padding: 14px 16px;
  margin: 0 0 14px;
  background: #fff;
}
.goal-summary-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}
.goal-summary-head h3,
.goal-evidence-card h3,
.goal-thinking-card h3 {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 700;
  color: #374151;
}
.goal-comp-badge {
  font-size: 12px;
  color: #374151;
  background: #f3f4f6;
  border-radius: 6px;
  padding: 4px 10px;
  white-space: nowrap;
}
.goal-comp-badge:empty { display: none; }
.goal-triple { display: grid; gap: 14px; }
.goal-triple-row {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 12px;
  align-items: start;
}
.goal-k {
  font-size: 13px;
  font-weight: 700;
  color: var(--color-neutral);
  padding-top: 2px;
  line-height: 1.4;
  letter-spacing: 0.02em;
}
.goal-triple-body { min-width: 0; }
.goal-triple-body > p,
.goal-triple-row p {
  margin: 0;
  font-size: 14px;
  line-height: 1.65;
  color: var(--color-text-primary);
}
.goal-knowledge-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 6px;
}
.goal-knowledge-list li {
  position: relative;
  padding-left: 14px;
  font-size: 14px;
  line-height: 1.55;
  color: #111827;
}
.goal-knowledge-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 5px;
  height: 5px;
  border-radius: 8px;
  background: #374151;
}
.goal-understanding-note {
  margin: 8px 0 0;
  font-size: 13px;
  color: #4b5563;
  line-height: 1.55;
}
.goal-fallback-hint {
  margin: 6px 0 0;
  font-size: 12px;
  color: var(--color-text-tertiary);
}
.goal-relations {
  margin: 8px 0 0;
  font-size: 12px;
  color: var(--color-neutral);
  line-height: 1.5;
}
.goal-relations span {
  display: inline-block;
  margin-right: 6px;
  font-weight: 600;
  color: #374151;
}
.goal-thinking-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.goal-thinking-tags span {
  font-size: 12px;
  color: #374151;
  background: #f3f4f6;
  border: 1px solid var(--color-secondary);
  border-radius: 6px;
  padding: 2px 8px;
}
.goal-literacy-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 10px;
}
.goal-literacy-item {
  display: grid;
  grid-template-columns: auto auto 1fr;
  gap: 6px 8px;
  align-items: start;
}
.goal-literacy-item.is-related {
  grid-template-columns: auto auto;
  align-items: center;
}
.goal-literacy-tag {
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  color: #374151;
  background: #f3f4f6;
  border: 1px solid var(--color-secondary);
  border-radius: 6px;
  padding: 2px 8px;
  line-height: 1.4;
}
.goal-literacy-role {
  font-size: 11px;
  color: var(--color-text-tertiary);
  padding-top: 3px;
}
.goal-literacy-item > p {
  grid-column: 1 / -1;
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: #111827;
}
.goal-literacy-item > p.sub {
  color: var(--color-text-tertiary);
  font-size: 12px;
}
.goal-evidence-list {
  margin: 8px 0 12px;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}
.goal-evidence-list li {
  position: relative;
  padding-left: 22px;
  font-size: 14px;
  line-height: 1.55;
  color: #1f2937;
}
.goal-evidence-list li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: #111827;
  font-weight: 700;
}
.goal-thinking-chain {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: #1f2937;
}
.goal-next-hint { margin: 4px 0 0; color: var(--color-text-tertiary); }
.goal-opt-status { margin: 0 0 8px; color: var(--color-neutral); }
.goal-opt-steps {
  margin: 0 0 12px;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  font-size: 12px;
  color: var(--color-text-tertiary);
}
.goal-opt-steps li.is-done { color: #059669; }
.goal-opt-steps li.is-doing { color: #2563eb; font-weight: 600; }
.goal-opt-steps li.is-fail { color: var(--color-error); }

.goal-edit-drawer[hidden],
.goal-rubric-modal[hidden] { display: none !important; }
.goal-edit-drawer,
.goal-rubric-modal {
  position: fixed;
  inset: 0;
  z-index: 80;
}
.goal-edit-backdrop,
.goal-rubric-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.35);
}
.goal-edit-panel {
  position: absolute;
  top: 0;
  right: 0;
  width: min(440px, 100%);
  height: 100%;
  background: #fff;
  box-shadow: -8px 0 28px rgba(15, 23, 42, 0.12);
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
}
.goal-edit-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex: none;
  padding: 16px 18px 10px;
}
.goal-edit-head h3 { margin: 0; font-size: 18px; }
.goal-edit-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  flex: none;
  padding: 0 18px 12px;
}
.goal-edit-tab {
  border: 1px solid var(--color-secondary);
  background: #f9fafb;
  border-radius: 8px;
  padding: 6px 10px;
  font-size: 13px;
  cursor: pointer;
}
.goal-edit-tab.on {
  background: #f3e8ff;
  border-color: #c4b5fd;
  color: #5b21b6;
  font-weight: 600;
}
.goal-edit-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
                                                 
  padding: 16px 18px 24px;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.goal-edit-body [data-goal-pane] {
  display: flex;
  flex-direction: column;
  gap: 18px;
  margin: 0;
  padding: 0;
  min-width: 0;
}
.goal-edit-body .goal-edit-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0;
  padding: 0;
  min-width: 0;
}
.goal-edit-body .goal-edit-field > span,
.goal-edit-body .goal-edit-field > .goal-edit-label {
  display: block;
  margin: 0;
  padding: 0;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
  color: #4b5563;
}
                                                     
.goal-edit-body label {
  margin: 0 !important;
}
.goal-edit-body textarea,
.goal-edit-body select {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--color-secondary);
  border-radius: 8px;
  padding: 10px 12px;
  font: inherit;
  font-size: 14px;
  line-height: 1.55;
                                                    
  field-sizing: fixed !important;
  max-height: none;
  resize: vertical;
  overflow-y: auto;
}
.goal-edit-body textarea[rows="2"] { min-height: 4.5em; }
.goal-edit-body textarea[rows="3"] { min-height: 6em; }
.goal-edit-body textarea[rows="4"] { min-height: 7.5em; }
.goal-edit-body textarea[rows="5"] { min-height: 9em; }
.goal-edit-body textarea[rows="8"] { min-height: 12em; }
.goal-edit-body .sub {
  margin: 0;
  font-size: 13px;
  color: var(--color-neutral);
}
.goal-ops-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
  gap: 10px 14px;
}
.goal-ops-grid label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: 14px;
  line-height: 1.4;
  color: var(--color-text-primary, #374151);
  cursor: pointer;
}
.goal-ops-grid input[type="checkbox"] {
  flex: none;
  width: 16px;
  height: 16px;
  margin: 0;
  accent-color: var(--color-brand, var(--color-primary));
}
.goal-edit-checks {
  font-size: 12px;
  color: var(--color-error);
  min-height: 1.2em;
  margin: 0;
}
.goal-edit-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex: none;
  padding: 12px 18px 16px;
  border-top: 1px solid #f3f4f6;
  background: #fff;
}
.goal-rubric-panel {
  position: absolute;
  left: 50%;
  top: 12%;
  transform: translateX(-50%);
  width: min(560px, calc(100% - 32px));
  background: #fff;
  border-radius: 8px;
  padding: 18px 20px;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.18);
  max-height: 76vh;
  overflow: auto;
}
.goal-rubric-map {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 12px;
}
.goal-rubric-map li {
  border: 1px solid var(--color-secondary);
  border-radius: 8px;
  padding: 10px 12px;
}
.goal-rubric-map b { display: block; margin-bottom: 6px; font-size: 14px; }
.goal-rubric-map span { font-size: 13px; color: #4b5563; line-height: 1.5; }
.goal-rubric-warn { color: var(--color-error); font-size: 13px; margin: 8px 0 0; }

                                               
.reply-panel { margin-top: 18px; display: flex; flex-direction: column; gap: 12px; }
.reply-bar { display: flex; align-items: center; justify-content: space-between; }
.rv-tabs { display: inline-flex; background: rgba(255,255,255,.04); border: 1px solid var(--color-border); border-radius: 8px; padding: 3px; gap: 2px; }
.rv-tab { appearance: none; border: 0; background: transparent; color: var(--color-text-secondary); font-size: 15px; font-weight: 600; padding: 7px 16px; border-radius: 8px; cursor: pointer; }
.rv-tab:hover { color: var(--color-text-primary); }
.rv-tab.rv-on { background: var(--color-primary); color: #fff; }

.reply-stats { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 8px; padding: 12px 16px; }
.rs-title { font-size: 15px; color: var(--color-text-secondary); white-space: nowrap; }
.rs-title b { color: var(--color-text-primary); font-size: 18px; }
.rs-bar { flex: 1; min-width: 160px; height: 10px; border-radius: 6px; background: rgba(255,255,255,.05); display: flex; overflow: hidden; }
.rs-seg { height: 100%; display: block; }
.rs-good { background: #34d399; } .rs-mid { background: #60a5fa; } .rs-weak { background: #fbbf24; }
.rs-legend { display: flex; gap: 14px; font-size: 14px; color: var(--color-text-secondary); }
.rdot { display: inline-block; width: 9px; height: 9px; border-radius: 8px; margin-right: 5px; }
.rdot.rs-good { background: #34d399; } .rdot.rs-mid { background: #60a5fa; } .rdot.rs-weak { background: #fbbf24; }

.rv-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px,1fr)); gap: 14px; }
.rc { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 8px; padding: 16px; border-left-width: 4px; }
.rc-good { border-left-color: #34d399; } .rc-mid { border-left-color: #60a5fa; } .rc-weak { border-left-color: #fbbf24; }
.rc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; gap: 8px; }
.rc-name { font-size: 17px; font-weight: 700; color: var(--color-text-primary); }
.rc-text { margin: 0; font-size: 17px; line-height: 1.6; color: var(--color-text-primary); }
.rc-tag { font-size: 13px; font-weight: 600; padding: 3px 10px; border-radius: 8px; white-space: nowrap; }
.tag-good { background: rgba(52,211,153,.15); color: #34d399; }
.tag-mid { background: rgba(96,165,250,.15); color: #60a5fa; }
.tag-weak { background: rgba(251,191,36,.15); color: #fbbf24; }

.rv-list { display: flex; flex-direction: column; gap: 10px; }
.rl { display: grid; grid-template-columns: 200px 1fr; gap: 16px; align-items: center; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 8px; padding: 14px 18px; border-left-width: 4px; }
.rl-good { border-left-color: #34d399; } .rl-mid { border-left-color: #60a5fa; } .rl-weak { border-left-color: #fbbf24; }
.rl-side { display: flex; flex-direction: column; gap: 8px; }
.rl-name { font-size: 17px; font-weight: 700; color: var(--color-text-primary); }
.rl-score { font-size: 13px; color: var(--color-text-secondary); }
.rl-text { margin: 0; font-size: 17px; line-height: 1.6; color: var(--color-text-primary); }

.rv-round { position: relative; height: 480px; border: 1px solid var(--color-border); border-radius: 8px; overflow: hidden; }
.rt-table { position: absolute; left: 50%; top: 50%; width: 130px; height: 130px; transform: translate(-50%,-50%); border-radius: 8px; border: 2px solid var(--color-border); background: rgba(255,255,255,.03); }
.rt-card { position: absolute; transform: translate(-50%,-50%); width: 152px; min-height: 74px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 8px; padding: 9px 11px; display: flex; flex-direction: column; gap: 4px; border-top-width: 3px; }
.rt-good { border-top-color: #34d399; } .rt-mid { border-top-color: #60a5fa; } .rt-weak { border-top-color: #fbbf24; }
.rt-name { font-size: 14px; font-weight: 700; color: var(--color-text-primary); }
.rt-text { font-size: 13px; line-height: 1.45; color: var(--color-text-secondary); }
.rt-center { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); text-align: center; z-index: 2; pointer-events: none; }
.rtc-num { font-size: 30px; font-weight: 800; color: var(--color-text-primary); line-height: 1; }
.rtc-label { font-size: 13px; color: var(--color-text-secondary); margin-top: 4px; }

.rv-empty { text-align: center; padding: 40px; color: var(--color-text-secondary); }
.rv-empty h3 { color: var(--color-text-primary); margin: 0 0 8px; }

.pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 4px; }
.pg-info { font-size: 14px; color: var(--color-text-secondary); }
.pg-nums { display: flex; align-items: center; gap: 5px; }
.pg-btn { appearance: none; border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-primary); font-size: 14px; min-width: 38px; height: 38px; padding: 0 10px; border-radius: 9px; cursor: pointer; }
.pg-btn:hover:not(.pg-disabled):not(.on) { border-color: var(--color-primary); color: var(--color-primary); }
.pg-active { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.pg-disabled { opacity: .4; cursor: not-allowed; }
.pg-gap { color: var(--color-text-secondary); padding: 0 3px; }

                 
.space-board #prompt { font-size: 19px; line-height: 1.55; color: var(--color-text-primary); max-width: 920px; }
.space-board .pres-head { margin-bottom: 24px; }
@media (max-width: 820px) {
  .rl { grid-template-columns: 1fr; gap: 8px; }
  .rv-round { height: 560px; }
  .rt-card { width: 128px; }
}

                                             
.question-box{
  display:flex;gap:16px;align-items:flex-start;border:2px solid var(--color-primary);
  background:color-mix(in srgb,var(--color-primary) 10%,var(--surface));
  border-radius:8px;padding:16px 20px;margin:6px 0 18px
}
.qb-label{flex:none;background:var(--color-primary);color:#fff;font-weight:700;font-size:15px;
  line-height:1.6;padding:2px 14px;border-radius:9px} .qb-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}
.qb-text{margin:0;font-size:22px;line-height:1.5;font-weight:600;color:var(--color-text-primary)}
.qb-material{font-size:15px;line-height:1.55;color:var(--muted);white-space:pre-wrap}
.qb-images{
  display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center;
  width:100%;margin:0
}
.qb-images .qb-image,
.qb-image{
  display:block;max-width:min(100%,360px);max-height:200px;width:auto;height:auto;
  object-fit:contain;border-radius:8px;margin:0;border:1px solid var(--line);background:#fff
}
.board-action-btn{height:44px;padding:0 18px;border:none;border-radius:8px;cursor:pointer;
  background:var(--color-primary);color:#fff;font-size:15px;font-weight:600;white-space:nowrap}
.board-action-btn:hover{filter:brightness(1.06)}
.board-action-btn:disabled{opacity:.6;cursor:wait}
.rc-foot{display:flex;justify-content:flex-end;margin-top:10px}
.rc-foot-list{margin-top:6px}
.rc-ai-btn{border:1px solid var(--color-primary);background:transparent;color:var(--color-primary);
  font-size:13px;font-weight:600;padding:6px 14px;border-radius:9px;cursor:pointer}
.rc-ai-btn:hover{background:color-mix(in srgb,var(--color-primary) 12%,transparent)}
.rt-card{cursor:pointer}
.eval-modal-mask{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  background:rgba(8,10,16,.55);backdrop-filter:blur(3px);padding:24px}
.eval-modal{position:relative;width:min(960px,94vw);max-height:90vh;overflow:auto;background:var(--surface);
  border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 70px rgba(0,0,0,.4);padding:22px 24px}
.em-close{position:absolute;right:16px;top:16px;width:36px;height:36px;border-radius:9px;border:1px solid var(--line);
  background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center}
.em-close svg{width:18px;height:18px;stroke:var(--ink);fill:none;stroke-width:2;stroke-linecap:round}
.em-close:hover{background:var(--color-surface-hover)}
.em-grid{display:grid;grid-template-columns:1fr 210px;gap:20px;align-items:stretch}
.em-main{display:flex;flex-direction:column;gap:16px;min-width:0}
.em-sec-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.em-kicker{font-size:13px;font-weight:700;color:#fff;background:var(--color-primary);padding:3px 12px;border-radius:8px} .em-who{font-size:14px;color:var(--muted)}
.em-answer{background:color-mix(in srgb,var(--color-primary) 6%,transparent);
  border:1px solid var(--line);border-radius:8px;padding:14px 16px}
.em-answer-text{margin:0;font-size:18px;line-height:1.6;color:var(--color-text-primary)}
.em-eval{border:1px solid var(--line);border-radius:8px;padding:14px 16px}
.em-eval .em-sec-head{justify-content:space-between}
.em-speak{width:38px;height:38px;border-radius:9px;border:1px solid var(--line);background:transparent;
  cursor:pointer;display:flex;align-items:center;justify-content:center;margin-left:auto}
.em-speak svg{width:19px;height:19px;stroke:var(--color-primary);fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.em-speak svg path:first-child{fill:color-mix(in srgb,var(--color-primary) 18%,transparent)}
.em-speak:hover{background:var(--color-surface-hover)}
.em-eval-text{font-size:15px;line-height:1.6;color:var(--color-text-primary)}
.eme-score{font-size:16px;font-weight:700;color:var(--color-primary);margin-bottom:8px}
.eme-row{display:flex;gap:12px;padding:6px 0;border-top:1px dashed var(--line)}
.eme-k{flex:none;width:64px;color:var(--muted);font-size:14px}
.eme-v{flex:1;color:var(--color-text-primary);font-size:15px}
.em-aside{display:flex;align-items:flex-end;justify-content:center;
  background:color-mix(in srgb,var(--color-primary) 7%,transparent);border-radius:8px;padding:8px;min-height:240px}
.em-slot{width:100%;max-width:200px;align-self:flex-end}
.em-bottom{display:flex;align-items:center;gap:16px;margin-top:18px;justify-content:space-between}
.em-followup-q{flex:1;display:flex;gap:10px;align-items:center;font-size:15px;
  color:var(--color-text-primary);min-height:24px}
.em-fq-label{flex:none;background:var(--color-primary-soft);color:var(--color-primary);font-size:12px;
  font-weight:700;padding:2px 10px;border-radius:7px} .em-followup-btn{flex:none;border:none;background:var(--color-primary);color:#fff;font-size:15px;font-weight:600;
  padding:10px 24px;border-radius:8px;cursor:pointer}
.em-followup-btn:hover{filter:brightness(1.06)}
.em-followup-btn:disabled{opacity:.6;cursor:wait}
.em-loading{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:14px}
.em-spinner{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--color-primary);
  border-radius:8px;animation:em-spin .8s linear infinite;flex:none}
@keyframes em-spin{to{transform:rotate(360deg)}}
.em-error{color:var(--color-error);font-size:14px}
@media (max-width:900px){
  .em-grid{grid-template-columns:1fr}
  .em-aside{min-height:150px;order:-1}
  .em-slot{max-width:120px}
  .qb-text{font-size:18px}
}

                          
/* ===== 大屏互动：展示工具栏 / 卡片墙媒体 / 逐个展示 / 作品放大查看 ===== */
.rv-tools{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.rv-icon-btn{appearance:none;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);
  width:38px;height:38px;border-radius:9px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}
.rv-icon-btn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.rv-icon-btn:hover{color:var(--color-text-primary);border-color:var(--color-primary)}
.rv-icon-btn.rv-icon-on{background:var(--color-primary);border-color:var(--color-primary);color:#fff}
.rv-filter{height:38px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);
  border-radius:9px;padding:0 12px;font-size:14px;min-width:160px;outline:none}
.rv-filter:focus{border-color:var(--color-primary)}
.rv-reveal-btn{height:38px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);
  border-radius:9px;padding:0 14px;font-size:14px;font-weight:600;cursor:pointer}
.rv-reveal-btn.rv-on{background:var(--color-success-soft);border-color:var(--color-success);color:var(--color-success)}
.rv-more{display:flex;gap:8px;flex-wrap:wrap;padding:12px 2px 2px}
.rv-more button{appearance:none;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);
  height:40px;border-radius:9px;padding:0 14px;font-size:14px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.rv-more button:hover{border-color:var(--color-primary);color:var(--color-primary)}
.rv-more button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* 卡片墙媒体（图片） */
.rc-media,.rl-media,.ob-media{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.rc-media-img{max-width:100%;max-height:160px;width:auto;height:auto;object-fit:contain;border-radius:8px;
  border:1px solid var(--color-border);background:#fff;cursor:zoom-in}
.rl-media .rc-media-img{max-height:120px}
/* 长文本摘要 + 展开 */
.rc-text.clamp{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.rc-expand{appearance:none;border:0;background:transparent;color:var(--color-primary);font-size:13px;font-weight:600;
  cursor:pointer;padding:2px 0;margin-top:2px}

/* 逐个展示 */
.rv-one{display:flex;justify-content:center;padding:8px 0}
.ob-card{width:min(760px,92%);background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;
  padding:28px 32px;border-top:4px solid var(--color-primary)}
.ob-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:10px}
.ob-name{font-size:22px;font-weight:800;color:var(--color-text-primary)}
.ob-media .rc-media-img{max-height:260px}
.ob-card .rc-text{font-size:22px;line-height:1.7}

/* 未公布 / 收题中 / 预览 等状态 */
.rv-unpublished{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--color-text-secondary)}
.rv-unpublished .ai-ring{width:46px;height:46px;border:4px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:em-spin .9s linear infinite}
.rv-unpublished h3{color:var(--color-text-primary);margin:0}
.rv-unpublished p{max-width:440px;line-height:1.6;margin:0}
.rv-collecting{display:flex;flex-direction:column;align-items:center;gap:12px}
.rv-collect-core{position:relative;width:54px;height:54px;display:inline-flex;align-items:center;justify-content:center}
.ai-ring{width:40px;height:40px;border:4px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:em-spin .9s linear infinite}
.ai-ring-outer{position:absolute;width:54px;height:54px;border:3px solid transparent;border-top-color:var(--color-primary-soft);border-radius:50%;animation:em-spin 1.6s linear infinite reverse}
.ai-dot{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--color-primary)}
.rv-collapsed-hint{padding:14px 18px;border:1px dashed var(--color-border);border-radius:10px;color:var(--color-text-secondary);font-size:14px}
.reply-panel.rp-preview{outline:2px dashed var(--color-primary-soft);outline-offset:4px}

/* 作品沉浸式放大查看 */
.wv-mask{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  background:rgba(8,10,16,.78);backdrop-filter:blur(4px);padding:28px}
.wv-stage{width:min(1040px,96vw);max-height:94vh;display:flex;flex-direction:column;background:var(--color-surface);
  border:1px solid var(--color-border);border-radius:18px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.45)}
.wv-top{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:1px solid var(--color-border)}
.wv-who{display:flex;align-items:baseline;gap:12px}
.wv-name{font-size:20px;font-weight:800;color:var(--color-text-primary)}
.wv-meta{font-size:14px;color:var(--color-text-secondary)}
.wv-top-actions{display:flex;align-items:center;gap:10px}
.wv-pill{appearance:none;border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary);
  font-size:13px;font-weight:600;padding:7px 14px;border-radius:999px;cursor:pointer}
.wv-pill.on{background:var(--color-success-soft);border-color:var(--color-success);color:var(--color-success)}
.wv-x{width:36px;height:36px;border:1px solid var(--color-border);border-radius:9px;background:transparent;cursor:pointer;
  font-size:22px;line-height:1;color:var(--color-text-secondary)}
.wv-x:hover{background:var(--color-surface-hover);color:var(--color-text-primary)}
.wv-body{flex:1;overflow:auto;padding:24px 28px;display:flex;align-items:center;justify-content:center;min-height:200px}
.wv-zoomable{transform-origin:center center;transition:transform .12s ease;max-width:100%}
.wv-media-wrap{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;align-items:center}
.wv-media-img{max-width:min(560px,80%);max-height:62vh;width:auto;height:auto;object-fit:contain;border-radius:12px;border:1px solid var(--color-border);background:#fff}
.wv-text{font-size:28px;line-height:1.7;color:var(--color-text-primary);max-width:820px;white-space:pre-wrap}
.wv-zoom{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px;border-top:1px solid var(--color-border)}
.wv-zbtn{appearance:none;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);
  height:36px;min-width:36px;padding:0 12px;border-radius:8px;font-size:14px;cursor:pointer}
.wv-zbtn:hover{border-color:var(--color-primary);color:var(--color-primary)}
.wv-zlabel{font-size:14px;color:var(--color-text-secondary);min-width:48px;text-align:center}
.wv-actions{display:flex;flex-wrap:wrap;gap:10px;padding:12px 22px;border-top:1px solid var(--color-border)}
.wv-act{appearance:none;border:1px solid var(--color-primary);background:transparent;color:var(--color-primary);
  height:42px;padding:0 18px;border-radius:9px;font-size:15px;font-weight:600;cursor:pointer}
.wv-act:hover{background:color-mix(in srgb,var(--color-primary) 12%,transparent)}
.wv-act:disabled{opacity:.6;cursor:wait}
.wv-note{display:flex;flex-direction:column;gap:10px;padding:14px 22px;border-top:1px solid var(--color-border)}
.wv-note-input{width:100%;min-height:74px;resize:vertical;border:1px solid var(--color-border);border-radius:10px;
  background:var(--color-background);color:var(--color-text-primary);font-size:15px;line-height:1.6;padding:10px 12px;outline:none}
.wv-note-input:focus{border-color:var(--color-primary)}
.wv-note-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}
.wv-check{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--color-text-secondary);cursor:pointer}
.wv-check input{width:16px;height:16px}
.wv-follow-box{padding:0 22px 20px;font-size:15px;color:var(--color-text-primary);line-height:1.6}
.wv-follow-q{display:flex;gap:10px;align-items:flex-start;background:var(--color-primary-soft);border:1px solid var(--color-border);
  border-radius:10px;padding:12px 14px}
.wv-fq-label{flex:none;background:var(--color-primary);color:#fff;font-size:12px;font-weight:700;padding:2px 10px;border-radius:7px}
@media (max-width:820px){
  .rv-filter{min-width:120px}
  .ob-card{padding:20px}
  .wv-text{font-size:22px}
}

.id-picker{border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-top:14px;
  background:color-mix(in srgb,var(--color-primary) 5%,var(--surface))}
.id-picker-label{margin:0 0 10px;font-size:14px;font-weight:600;color:var(--color-text-primary)}
.id-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.id-seg-item{position:relative;display:block;cursor:pointer}
.id-seg-item input{position:absolute;opacity:0;inset:0;cursor:pointer;margin:0}
.id-seg-item span{display:flex;align-items:center;justify-content:center;height:40px;border:1px solid var(--line);
  border-radius:8px;font-size:14px;color:var(--color-text-secondary);background:var(--surface)}
.id-seg-item input:checked + span{border-color:var(--color-primary);background:var(--color-primary);color:#fff;font-weight:600}
#studentSelect,#groupSelect{width:100%;margin-top:10px;height:44px;border:1px solid var(--line);border-radius:8px;
  padding:0 12px;font-size:15px;background:var(--surface);color:var(--color-text-primary)}
.id-note{margin:10px 0 0;font-size:13px;color:var(--color-text-secondary)}

                          
.class-pick-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 4px;
  padding:10px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.cpb-label{font-size:14px;font-weight:600;color:var(--color-text-primary)}
#classPick{height:40px;border:1px solid var(--line);border-radius:9px;padding:0 12px;font-size:14px;
  background:var(--surface);color:var(--color-text-primary);min-width:200px}
.cpb-hint{font-size:13px;color:var(--color-text-secondary)}

                         
.interactive-hold{padding:8px 0}
.interactive-hold h1{font-size:30px;margin:12px 0}
.ic-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:24px}
.ic-card{position:relative;border:1px solid var(--line);border-radius:8px;padding:20px;
  background:var(--surface);display:flex;flex-direction:column;gap:6px}
.ic-ic{width:42px;height:42px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,var(--surface));margin-bottom:6px}
.ic-ic svg{width:23px;height:23px}
.ic-card h4{margin:0;font-size:17px}
.ic-card p{margin:0;font-size:14px;color:var(--color-text-secondary)}
.ic-soon{position:absolute;top:16px;right:16px;font-size:12px;color:var(--color-primary);
  background:color-mix(in srgb,var(--color-primary) 10%,var(--surface));padding:2px 10px;border-radius:8px} .ic-live{position:absolute;top:16px;right:16px;font-size:12px;color:#15803d;
  background:color-mix(in srgb,#16a34a 12%,var(--surface));padding:2px 10px;border-radius:8px}                                          .eval-modal.em-with-host{overflow:visible;max-height:none;background:transparent;border:none;
  box-shadow:none;padding:0;margin-top:66px}
.em-scroll{position:relative;max-height:calc(90vh - 44px);overflow:auto;background:var(--surface);
  border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 70px rgba(0,0,0,.4);padding:22px 24px}
.em-host{position:absolute;top:-66px;left:24px;width:120px;height:120px;z-index:7;pointer-events:none}
.em-scroll-host{padding-top:54px}
.em-host .dh-frames{width:100%;height:100%}
.em-host .dh-frame{object-position:center center;filter:drop-shadow(0 10px 14px rgba(0,0,0,.30))}
.em-close{z-index:8}
.em-body{display:flex;flex-direction:column;gap:16px;min-width:0}
@media (prefers-reduced-motion:reduce){.em-host{animation:none}}

                                 
.rv-tools{display:inline-flex;align-items:center;gap:10px}
.rv-icon-btn{width:42px;height:38px;border-radius:9px;border:1px solid var(--color-border);
  background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}
.rv-icon-btn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.rv-icon-btn:hover{color:var(--color-text-primary);background:var(--color-surface-hover)}
.rv-icon-btn.rv-icon-on{color:var(--color-primary);border-color:color-mix(in srgb,var(--color-primary) 40%,var(--color-border))}
.rv-evalall{appearance:none;border:1px solid color-mix(in srgb,var(--color-primary) 45%,var(--color-border));
  background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary);
  font-size:15px;font-weight:600;padding:8px 18px;border-radius:9px;cursor:pointer}
.rv-evalall:hover{background:color-mix(in srgb,var(--color-primary) 20%,transparent)}
.rv-evalall:disabled{opacity:.6;cursor:wait}
.rv-stats-btn{appearance:none;border:1px solid var(--color-border-strong);background:transparent;
  color:var(--color-text-secondary);font-size:15px;font-weight:600;padding:8px 18px;border-radius:9px;cursor:pointer}
.rv-stats-btn:hover{color:var(--color-text-primary);border-color:var(--color-text-secondary);background:var(--color-surface-hover)}

                        
.stats-mask{position:fixed;inset:0;z-index:130;background:rgba(17,24,39,.55);
  display:grid;place-items:center;padding:24px;animation:stIn .2s ease-out}
@keyframes stIn{from{opacity:0}to{opacity:1}}
.stats-modal{width:min(640px,100%);max-height:80vh;display:flex;flex-direction:column;
  background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:8px;
  box-shadow:0 24px 64px rgba(0,0,0,.3);overflow:hidden}
.stats-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 18px;border-bottom:1px solid var(--color-border)}
.stats-head h3{margin:0;font-size:16px}
.stats-close{appearance:none;border:none;background:transparent;color:var(--color-text-secondary);
  width:34px;height:34px;border-radius:9px;display:grid;place-items:center;cursor:pointer}
.stats-close:hover{background:var(--color-surface-hover);color:var(--color-text-primary)}
.stats-close svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.stats-body{padding:16px 18px 20px;overflow:auto;display:flex;flex-direction:column;gap:16px}
.stats-body .form-dist{background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:14px 16px;margin:0}
.stats-body .fd-title{font-size:14px;color:var(--color-text-secondary)}
.stats-body .fd-cloud{display:flex;flex-wrap:wrap;gap:8px}
.stats-body .fd-chip{padding:7px 14px;border-radius:8px;font-weight:600;
  background:color-mix(in srgb,var(--color-primary) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--color-primary) 25%,var(--color-border));color:var(--color-text-primary)}
.stats-body .sm-empty{text-align:center;padding:26px 0;color:var(--color-text-secondary)}
.stats-body .sm-empty p{margin:0 0 6px;font-size:15px}
.stats-body .sm-empty .sub{font-size:13px;color:var(--color-text-tertiary)}

                             
.rp-collapsed .rc-text,.rp-collapsed .rl-text,.rp-collapsed .rt-text{display:none}
.rp-collapsed .rc{padding-bottom:14px}

                      
.rv-danmu{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.rv-danmu canvas{display:block;width:100%;border-radius:8px;border:1px solid var(--color-border);
  background:color-mix(in srgb,var(--color-primary) 5%,transparent)}
.danmu-foot{margin:0;font-size:13px;color:var(--color-text-secondary);text-align:center}
/* 弹幕展示控制条（暂停/清屏/身份/全屏/历史 + 速度/字号/密度） */
.dm-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.dm-btn{appearance:none;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);
  height:34px;padding:0 12px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}
.dm-btn:hover{color:var(--color-text-primary);border-color:var(--color-primary)}
.dm-btn.on{background:var(--color-primary);border-color:var(--color-primary);color:#fff}
.dm-slider{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-secondary)}
.dm-slider input[type=range]{width:88px}
.dm-history{max-height:240px;overflow:auto;border:1px solid var(--color-border);border-radius:10px;padding:6px 10px;background:var(--color-surface)}
.dm-hist-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--color-border)}
.dm-hist-row:last-child{border-bottom:0}
.dm-hist-row.is-hidden{opacity:.5}
.dm-hist-name{flex:none;font-size:13px;font-weight:700;color:var(--color-primary);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm-hist-text{flex:1;font-size:14px;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dm-hist-btn{flex:none;border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary);
  font-size:12px;padding:3px 10px;border-radius:7px;cursor:pointer}
.dm-hist-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}
.dm-hist-empty{font-size:13px;color:var(--color-text-secondary);padding:8px 0;text-align:center}
.rv-danmu:fullscreen{background:var(--color-background);padding:20px;justify-content:center}
.rv-danmu:fullscreen canvas{max-height:80vh}

                        
.ce-hero h3{margin:10px 0 6px;font-size:22px;color:var(--color-text-primary)}
.ce-hero-meta{font-size:15px;color:var(--color-text-secondary)}
.ce-hero-meta b{color:var(--color-primary);font-size:18px}
.ce-block{border:1px solid var(--color-border);border-radius:8px;padding:14px 16px}
.ce-sub{font-size:14px;font-weight:700;color:var(--color-text-primary);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.ce-sub .em-speak{margin-left:auto}
.ce-solo-row,.ce-dim-row{display:flex;align-items:center;gap:10px;padding:4px 0}
.ce-solo-label,.ce-dim-label{flex:none;width:84px;font-size:14px;color:var(--color-text-secondary)}
.ce-solo-track,.ce-dim-track{flex:1;height:10px;border-radius:5px;background:var(--color-surface-hover);overflow:hidden}
.ce-solo-fill{display:block;height:100%;border-radius:5px;background:var(--color-primary)}
.ce-dim-fill{display:block;height:100%;border-radius:5px;background:var(--color-primary)}
.ce-solo-n{flex:none;width:28px;text-align:right;font-size:14px;color:var(--color-text-primary)}
.ce-dim-v{flex:none;width:100px;text-align:right;font-size:13px;color:var(--color-text-secondary)}
.ce-findings{margin:0;padding-left:20px}
.ce-findings li{font-size:15px;line-height:1.6;color:var(--color-text-primary);padding:3px 0}
.ce-fq{margin:0;font-size:15px;line-height:1.6;color:var(--color-text-primary)}
.ce-sub-2{font-size:13px;font-weight:600;color:var(--color-text-secondary);margin:14px 0 8px}
.ce-interpret{margin:10px 0 2px;padding:10px 12px;border-left:3px solid var(--color-primary);background:var(--color-surface-hover);border-radius:8px;font-size:14px;line-height:1.65;color:var(--color-text-primary)}
.ce-evidence{display:flex;flex-direction:column;gap:6px}
.ce-ev-row{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.5}
.ce-ev-lvl{flex:none;padding:1px 8px;border-radius:6px;background:var(--color-surface-hover);color:var(--color-text-secondary);font-size:12px;margin-top:1px}
.ce-ev-quote{color:var(--color-text-primary)}
.ce-gc-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}
.ce-gc-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;padding:4px 0;border-bottom:1px dashed var(--color-border)}
.ce-gc-k{color:var(--color-text-secondary)}
.ce-gc-v{color:var(--color-text-primary);font-variant-numeric:tabular-nums}
.ce-gc-a{font-size:12px;font-weight:700}
.ce-gc-a.up{color:#16a34a}.ce-gc-a.down{color:var(--color-error)}.ce-gc-a.flat{color:var(--color-text-secondary)}
.ce-gc-ind{display:flex;gap:10px;align-items:center;font-size:13px;padding:5px 0;border-bottom:1px dashed var(--color-border)}
.ce-gc-name{flex:none;min-width:64px;color:var(--color-text-primary);font-weight:600}
.ce-gc-seq{color:var(--color-text-secondary)}
.ce-gc-seq .up{color:#16a34a;font-weight:700}
@media(max-width:680px){.ce-gc-grid{grid-template-columns:1fr}}

                         
.data-tables{margin-top:10px}
.dt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.dt-item{display:flex;align-items:baseline;gap:8px;padding:9px 11px;border:1px solid var(--line);
  border-radius:8px;background:var(--surface)}
.dt-n{font-weight:700;font-variant-numeric:tabular-nums;font-size:16px}
.dt-k{font-size:12px;opacity:.6;word-break:break-all}

                         
.growth-top{display:grid;grid-template-columns:1fr 1.5fr;gap:14px;margin-bottom:6px}
.growth-points-card,.growth-vip-card{border:1px solid var(--line);border-radius:8px;padding:20px;background:var(--surface)}
.gp-num{font-size:40px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}
.gp-label{margin-top:6px;opacity:.6;font-size:13px}
.gv-badge{display:inline-block;padding:5px 14px;border-radius:6px;font-weight:700;font-size:14px;
  background:color-mix(in srgb,var(--accent,var(--color-primary)) 12%,transparent);color:var(--accent,var(--color-primary))}
.gv-badge.on{background:var(--accent,var(--color-primary));color:#fff}
.gv-sub{margin-top:10px;font-size:13px;opacity:.65}
.gtask{display:flex;justify-content:space-between;padding:10px 4px;border-bottom:1px solid var(--line)}
.gtask:last-child{border-bottom:0}
.gtask.done .gt-label{opacity:.5;text-decoration:line-through}
.gt-val{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.gtask.done .gt-val{opacity:.5;font-weight:500}
.growth-plans{display:grid;gap:10px}
.gplan{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);
  border-radius:8px;padding:12px 14px;background:var(--surface)}
.gpl-name{font-weight:700}
.gpl-sub{font-size:12px;opacity:.6;margin-top:2px}
.gevent{display:flex;justify-content:space-between;padding:8px 2px;border-bottom:1px dashed var(--line);font-size:13px}
.gevent:last-child{border-bottom:0}
.ge-pts{font-variant-numeric:tabular-nums;font-weight:700}
.ge-pts.neg{opacity:.7}

                       
.design-studio{margin:14px 0;border:1px dashed var(--line)}
.design-studio.need{border:1.5px solid var(--accent,var(--color-primary));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent,var(--color-primary)) 10%,transparent)}
.ds-head{display:flex;justify-content:space-between;align-items:center}
.ds-body{margin-top:12px;display:grid;gap:6px}
.ds-body label{font-size:13px;font-weight:600;margin-top:6px}
.ds-row{display:flex;gap:12px}
.ds-image{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ds-image img{max-width:220px;max-height:150px;border-radius:8px;border:1px solid var(--line)}

                              
.q-image{max-width:100%;border-radius:8px;margin:0;border:1px solid var(--line);display:block;object-fit:contain}
.composer-choice #contentLabel,.composer-choice #content,.composer-choice #counter,.composer-choice .hint-fold{display:none}
.choice-grid{display:grid;gap:10px}
.choice-btn{padding:14px 16px;border-radius:8px;border:1.5px solid var(--line);
  background:var(--surface);font-size:15px;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
.choice-btn:hover{border-color:var(--accent,var(--color-primary));
  background:color-mix(in srgb,var(--accent,var(--color-primary)) 6%,var(--surface))}
.debate-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.debate-btn{padding:18px;border-radius:8px;border:2px solid var(--line);font-size:17px;
  font-weight:700;background:var(--surface);cursor:pointer}
.debate-btn.pos{color:var(--color-error)}
.debate-btn.neg{color:var(--color-info)}
.debate-btn.picked.pos{background:var(--color-error);color:#fff;border-color:var(--color-error)}
.debate-btn.picked.neg{background:var(--color-info);color:#fff;border-color:var(--color-info)}

                                   
.form-dist{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-top:10px;background:var(--surface)}
.fd-title{font-size:13px;font-weight:700;margin-bottom:8px}
.fd-row{display:grid;grid-template-columns:minmax(110px,30%) 1fr 36px;gap:10px;align-items:center;margin:5px 0;font-size:14px}
.fd-track{height:10px;border-radius:8px;background:color-mix(in srgb,var(--text) 10%,transparent);overflow:hidden}
.fd-track i{display:block;height:100%;background:var(--accent,var(--color-primary));border-radius:8px} .fd-fill{transition:width .55s cubic-bezier(.22,.8,.28,1);transform-origin:left center}
.fd-num small{display:block;font-weight:500;opacity:.65;font-size:11px}
.fd-cloud{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;padding-top:4px}
.fd-chip{display:inline-block;padding:4px 10px;border-radius:6px;background:color-mix(in srgb,var(--accent,var(--color-primary)) 14%,transparent);color:var(--text);line-height:1.2}
.fd-num{text-align:right;font-variant-numeric:tabular-nums}
.fd-debate{display:flex;gap:4px;border-radius:8px;overflow:hidden}
.fd-pos{background:var(--color-error);color:#fff;padding:8px;text-align:center;font-weight:700;font-size:14px}
.fd-neg{background:var(--color-info);color:#fff;padding:8px;text-align:center;font-weight:700;font-size:14px}
.qb-material{border-left:3px solid var(--accent,var(--color-primary));padding:6px 12px;margin:0;
  background:color-mix(in srgb,var(--accent,var(--color-primary)) 6%,transparent);border-radius:0 8px 8px 0;font-size:16px;line-height:1.55;white-space:pre-wrap}
.impl-act-pick{margin-bottom:14px}
.impl-image-field{margin:4px 0 14px}
.impl-image-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:6px}
.impl-image-preview{position:relative;display:inline-flex}
.impl-image-preview img{width:168px;height:112px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:var(--surface)}
.impl-image-clear{position:absolute;top:-9px;right:-9px;width:24px;height:24px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--text);font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.impl-image-clear:hover{background:var(--soft,var(--color-primary-soft));color:var(--accent)}

                    
.impl-filelist{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.impl-fileitem{display:flex;align-items:center;gap:10px;border:1px solid var(--line,#e3d9d9);background:var(--surface,#fff);border-radius:8px;padding:8px 10px}
.impl-fileicon{flex:none;color:var(--accent,var(--color-primary));display:inline-flex}
.impl-filename{flex:1;min-width:0;font-size:13px;color:var(--text,#222);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.impl-filedel{flex:none;width:24px;height:24px;border-radius:7px;border:1px solid var(--line,#e3d9d9);background:transparent;color:var(--muted,#888);font-size:15px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.impl-filedel:hover{background:var(--soft,var(--color-primary-soft));color:var(--accent,var(--color-primary))}
#implImagePick:disabled{opacity:.5;cursor:not-allowed}
                      
.q-images{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  margin:12px 0;width:100%
}
.q-images .q-image{
  margin:0;max-width:100%;max-height:280px;width:auto;height:auto;
  object-fit:contain;border-radius:8px;border:1px solid var(--line);background:#fff
}
.student-q-block{display:flex;flex-direction:column;gap:10px;margin:8px 0 4px}
.student-q-block #prompt{margin:0;font-size:16px;line-height:1.55;font-weight:600}

            
.impl-queue-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:6px 0 10px}
.impl-queue-body{display:flex;flex-direction:column;gap:10px}
.impl-qitem{border:1px solid var(--line,#e3d9d9);border-radius:8px;overflow:hidden;background:var(--surface2,#faf7f2)}
.impl-qitem-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.impl-qitem-toggle{flex:1;display:flex;align-items:center;gap:10px;padding:11px 12px;background:none;border:0;cursor:pointer;text-align:left;color:inherit}
.impl-qitem-badge{font-size:12px;font-weight:700;color:var(--accent,var(--color-primary));background:var(--accent-soft,var(--color-primary-soft));border-radius:8px;padding:3px 8px;white-space:nowrap}
.impl-qitem-kind{font-size:13px;font-weight:600;white-space:nowrap}
.impl-qitem-prompt{font-size:13px;color:var(--muted,#8a7f7f);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.impl-qitem-del{background:none;border:0;color:var(--muted,#8a7f7f);font-size:18px;line-height:1;padding:8px 12px;cursor:pointer}
.impl-qitem-del:hover{color:var(--accent,var(--color-primary))}
.impl-qitem-body{padding:4px 12px 12px;display:flex;flex-direction:column;gap:10px;border-top:1px dashed var(--line,#e3d9d9)}

            
.qr-camp{display:flex;flex-direction:column;align-items:center;gap:6px}
.qr-countdown{margin-top:18px;display:flex;flex-direction:column;align-items:center;gap:10px}
.qr-ring{width:74px;height:74px;border-radius:8px;display:grid;place-items:center;border:3px solid var(--accent,var(--color-primary));position:relative}
.qr-ring::before{content:"";position:absolute;inset:-3px;border-radius:8px;border:3px solid var(--line,#e3d9d9);border-right-color:transparent;border-bottom-color:transparent;animation:qrspin 1s linear infinite}
@keyframes qrspin{to{transform:rotate(360deg)}}
.qr-ring-num{font-size:28px;font-weight:800;color:var(--accent,var(--color-primary));font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion: reduce){.qr-ring::before{animation:none}}

                          
.grp-card { border: 1px solid var(--color-border); border-radius: 8px; padding: 14px 16px; margin-bottom: 12px; background: var(--color-surface); }
.grp-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.grp-avatar { flex: none; width: 34px; height: 34px; border-radius: 8px; display: grid; place-items: center; color: #fff; font-weight: 700; font-size: 16px; background: var(--color-surface) }
.grp-name { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; border: 1px solid transparent; border-radius: 8px; padding: 5px 8px; background: transparent; color: var(--color-text); }
.grp-name:hover { border-color: var(--color-border); }
.grp-name:focus { border-color: var(--color-primary); outline: none; background: var(--color-background); }
.grp-count { flex: none; font-size: 12px; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
.grp-members { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.grp-member { display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px 3px 3px; border-radius: 8px; background: var(--color-background); border: 1px solid var(--color-border); }
.grp-member-av { flex: none; width: 24px; height: 24px; border-radius: 8px; display: grid; place-items: center; font-size: 12px; font-weight: 600; color: var(--color-primary); background: var(--color-primary-soft); }
.grp-member-name { font-size: 13px; }
.grp-member-x { flex: none; width: 18px; height: 18px; border-radius: 8px; border: none; background: transparent; color: var(--color-text-secondary); cursor: pointer; font-size: 14px; line-height: 1; display: grid; place-items: center; }
.grp-member-x:hover { background: var(--color-danger, var(--color-error)); color: #fff; }
.grp-empty { font-size: 13px; }
.grp-add { border: 1px dashed var(--color-border); background: transparent; color: var(--color-text-secondary); border-radius: 8px; padding: 5px 13px; font-size: 13px; cursor: pointer; }
.grp-add:hover { border-color: var(--color-primary); color: var(--color-primary); }
.grp-picker { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--color-border); display: flex; flex-wrap: wrap; gap: 8px; }
.grp-pick { display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--color-border); background: var(--color-surface); border-radius: 8px; padding: 4px 12px 4px 4px; font-size: 13px; color: var(--color-text); cursor: pointer; }
.grp-pick:hover { border-color: var(--color-primary); }
.grp-pick.on { border-color: var(--color-primary); background: var(--color-primary-soft); color: var(--color-primary); }
.grp-pick-name { line-height: 1; }
.grp-tick { font-size: 12px; font-weight: 700; }

                            
.pk-view{margin-top:6px}
.pk-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.pk-state{font-size:13px;font-weight:700;color:var(--color-primary);background:var(--color-primary-soft);padding:6px 14px;border-radius:8px} .pk-clock{font-size:22px;font-weight:900;font-variant-numeric:tabular-nums;color:#333}
.pk-clock.urgent{color:#d64545}
.pk-qcard{background:#fff;border:1px solid #e8e8ee;border-radius:8px;padding:20px;margin-bottom:14px;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.pk-qprompt{font-size:19px;font-weight:800;line-height:1.5;margin-bottom:16px}
.pk-opt{width:100%;display:flex;align-items:center;gap:12px;padding:15px 16px;margin-bottom:11px;border:2px solid #e6e8ef;border-radius:8px;background:#fafbff;font-size:16px;font-weight:600;text-align:left;cursor:pointer;color:#222}
.pk-opt .pok{width:30px;height:30px;flex:none;border-radius:8px;background:#eef0f6;display:flex;align-items:center;justify-content:center;font-weight:800}
.pk-opt:active{border-color:var(--color-primary)}
.pk-opt.correct{border-color:#22a05a;background:rgba(34,160,90,.12)}
.pk-opt.correct .pok{background:#22a05a;color:#fff}
.pk-opt.miss{border-color:#d64545;background:rgba(214,69,69,.1)}
.pk-opt.miss .pok{background:#d64545;color:#fff}
.pk-opt.lock{opacity:.65;cursor:default}
.pk-result{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:8px;margin-bottom:12px;font-weight:800;font-size:16px}
.pk-result.good{background:rgba(34,160,90,.12);color:#1a7a46}
.pk-result.bad{background:rgba(214,69,69,.1);color:#b53434}
.pk-mescore{display:flex;align-items:center;justify-content:space-between;background:#fff;border:1px solid #e8e8ee;border-radius:8px;padding:14px 18px;margin-bottom:14px;font-weight:800}
.pk-mescore .tot{font-size:22px;color:var(--color-primary);font-variant-numeric:tabular-nums}
.pk-leader{background:#fff;border:1px solid #e8e8ee;border-radius:8px;overflow:hidden;margin-bottom:14px}
.pk-leader h4{padding:13px 16px;font-size:14px;color:#777;border-bottom:1px solid #f0f0f4}
.pk-lrow{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:15px}
.pk-lrow.me{background:var(--color-primary-soft);font-weight:800}
.pk-lrow .lr{width:26px;color:#999;font-weight:800}
.pk-lrow .ln{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pk-lrow .ls{font-variant-numeric:tabular-nums;font-weight:800}
.pk-wait{text-align:center;padding:30px 16px;color:#888;font-size:15px;line-height:1.9}
.pk-idbox{background:#fff;border:1px solid #e8e8ee;border-radius:8px;padding:18px;margin-bottom:14px}
.pk-nick{margin-top:12px}
.pk-nick input{width:100%;padding:12px 14px;border:1.5px solid #e0e2ea;border-radius:8px;font-size:15px}
.rv-collapsed-hint{margin:14px 0;padding:20px;border:1px dashed var(--color-border);border-radius:8px;text-align:center;color:var(--color-text-secondary);font-size:15px;background:var(--color-surface)}
.rv-collapse-txt{margin-left:6px;font-size:14px;font-weight:600}


                            
.goal-learner-card {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 18px 20px;
  margin-bottom: 18px;
  background: var(--color-surface);
}
.goal-learner-card .goal-summary-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 14px; }
.goal-learner-card h3 { margin: 0; font-size: 16px; }
.learner-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.learner-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.learner-field label { font-size: 13px; font-weight: 600; color: var(--color-text-secondary); }
.learner-field textarea {
  font-family: inherit; font-size: 14px; line-height: 1.6;
  resize: vertical; min-height: 58px; width: 100%; box-sizing: border-box;
  border: 1px solid var(--color-border); border-radius: 8px;
  padding: 10px 12px; background: var(--color-bg); color: var(--color-text);
}
.learner-field textarea:focus {
  outline: none; border-color: var(--color-primary);
  box-shadow: 0 0 0 3px var(--color-primary-soft, var(--color-primary-soft));
}
@media (max-width: 900px) { .learner-grid { grid-template-columns: 1fr; } }

                                            
.step-lead { margin: 2px 0 16px; }
                                              
.s1-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  padding: 48px 16px 64px;
  text-align: center;
}
.s1-hero[hidden] { display: none; }
.s1-hero-icon { color: var(--color-text-tertiary, #8a8375); }
.s1-hero h3 { margin: 4px 0 0; font-size: 18px; color: var(--color-text-primary); }
.s1-hero .sub { margin: 0; max-width: 460px; }
.s1-hero-actions { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px; margin-top: 14px; }
.s1-resume-line {
  margin: 6px 0 0;
  max-width: 560px;
  font-size: 12px;
  color: var(--color-text-tertiary, #8a8375);
  line-height: 1.6;
}
                                       
.content-modal-panel { width: min(720px, 100%); }
.content-title-field {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--color-text-secondary);
  margin: 4px 0 14px;
}
.content-title-field input {
  flex: 1;
  min-width: 0;
  height: 34px;
  padding: 0 10px;
  border: 1px solid var(--color-border, #e3dccd);
  border-radius: var(--radius-control, 6px);
  font: inherit;
  background: var(--color-paper, #fff);
  color: var(--color-text-primary, #2c2a25);
}
.content-modal-foot {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--color-border, #e3dccd);
}
.content-stage {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 18px 18px 16px;
  background: var(--color-surface);
  margin-bottom: 0;
}
.content-stage-hint-line {
  margin: 0 0 14px;
  font-size: 12px;
  color: var(--color-text-secondary);
}
.content-stage-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.content-stage-head h3 { margin: 0; font-size: 15px; font-weight: 700; color: var(--color-text-primary); }
.content-stage-no {
  width: 24px; height: 24px; border-radius: 8px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--color-primary); color: #fff;
  font-size: 13px; font-weight: 700; flex: none;
}
.content-stage-hint { margin-left: auto; font-size: 12px; color: var(--color-text-secondary); }

               
.understand-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--color-border); margin: 4px 0 16px; }
.understand-tab {
  appearance: none; border: 0; background: none; cursor: pointer;
  padding: 9px 14px; font-size: 14px; font-weight: 600;
  color: var(--color-text-secondary);
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  border-radius: 8px 8px 0 0;
}
.understand-tab:hover { color: var(--color-text-primary); background: var(--color-surface-hover); }
.understand-tab.on { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.understand-pane { animation: uaFade .25s ease; }
@keyframes uaFade { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: none; } }
.ua-body { font-size: 14px; color: var(--color-text-primary); }
.ua-building { padding: 8px 2px; }

          
.ua-rows { display: flex; flex-direction: column; gap: 12px; }
.ua-row { display: grid; grid-template-columns: 76px 1fr; gap: 12px; align-items: start; }
.ua-row-label { font-size: 13px; font-weight: 700; color: var(--color-text-secondary); padding-top: 2px; }
.ua-row-body { color: var(--color-text-primary); line-height: 1.7; }
.ua-logic { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ua-logic-step { background: var(--color-surface-hover); border: 1px solid var(--color-border); padding: 4px 10px; border-radius: 6px; font-size: 13px; }
.ua-logic-arrow { color: var(--color-primary); font-weight: 700; }
.ua-full { margin-top: 14px; }
.ua-full-toggle { appearance: none; border: 1px solid var(--color-border); background: var(--color-surface); cursor: pointer; padding: 6px 14px; border-radius: 8px; font-size: 13px; font-weight: 600; color: var(--color-primary); }
.ua-full-toggle:hover { background: var(--color-primary-soft); }
.ua-full-body { margin-top: 10px; padding: 14px 16px; background: var(--color-surface-hover); border-radius: 8px; line-height: 1.8; color: var(--color-text-primary); white-space: pre-wrap; }

                  
.ua-svg-wrap { width: 100%; background: var(--color-surface-hover); border: 1px solid var(--color-border); border-radius: 8px; padding: 8px; }
#uaSvg { width: 100%; height: auto; display: block; }
.ua-edge { fill: none; stroke: var(--color-border-strong); stroke-width: 1.6; }
.ua-node { cursor: pointer; outline: none; }
.ua-node rect { fill: var(--color-surface); stroke: var(--color-border-strong); stroke-width: 1.4; transition: fill .15s, stroke .15s; }
.ua-node text { font-size: 13px; font-weight: 600; fill: var(--color-text-primary); pointer-events: none; }
.ua-node.ua-root rect { fill: var(--color-surface-hover); stroke: var(--color-text-secondary); }
.ua-node:hover rect { stroke: var(--color-primary); }
.ua-node.on rect { fill: var(--color-primary); stroke: var(--color-primary); }
.ua-node.on text { fill: #fff; }
.ua-node:focus-visible rect { stroke-width: 2.4; stroke: var(--color-primary); }
.ua-node-detail { margin-top: 14px; }
.ua-node-title { font-size: 14px; font-weight: 700; color: var(--color-text-primary); margin-bottom: 10px; padding-left: 2px; }
.ua-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ua-detail { border: 1px solid var(--color-border); border-radius: 8px; padding: 10px 12px; background: var(--color-surface); }
.ua-detail-label { font-size: 12px; font-weight: 700; margin-bottom: 5px; }
.ua-detail-body { font-size: 13px; line-height: 1.7; color: var(--color-text-primary); }
.ua-detail-concept .ua-detail-label { color: var(--color-info); }
.ua-detail-caution .ua-detail-label { color: var(--color-warning); }
.ua-detail-related .ua-detail-label { color: var(--color-success); }
.ua-detail-tip .ua-detail-label { color: var(--color-primary); }

          
.ua-sec { margin-bottom: 16px; }
.ua-sec:last-child { margin-bottom: 0; }
.ua-sec h4 { margin: 0 0 8px; font-size: 13px; font-weight: 700; color: var(--color-text-secondary); }
.ua-sec p { margin: 0; line-height: 1.7; }
.ua-concept-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ua-chip { background: var(--color-primary-soft); color: var(--color-primary); border: 1px solid var(--color-primary-border); padding: 4px 12px; border-radius: 6px; font-size: 13px; font-weight: 600; }
.ua-big { background: var(--color-surface-hover); border-left: 3px solid var(--color-primary); padding: 10px 14px; border-radius: 0 8px 8px 0; line-height: 1.8; }
.ua-list { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 6px; line-height: 1.7; }
.ua-pitfalls { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.ua-pitfall { display: flex; align-items: center; gap: 8px; border: 1px solid var(--color-border); border-radius: 6px; padding: 6px 12px; background: var(--color-surface); font-size: 13px; }
.ua-pf-l { font-weight: 700; color: var(--color-primary); }
.ua-pf-neq { color: var(--color-text-secondary); font-weight: 700; }
.ua-pf-r { color: var(--color-text-primary); }
.ua-issues li::marker { color: var(--color-primary); }

@media (max-width: 720px) {
  .ua-detail-grid { grid-template-columns: 1fr; }
  .ua-row { grid-template-columns: 1fr; gap: 4px; }
}


                           
.ua-source { display: none; align-items: center; gap: 7px; font-size: 12px; color: var(--color-text-secondary); margin: 4px 0 12px; }
.ua-source.on { display: flex; }
.ua-source-dot { width: 7px; height: 7px; border-radius: 8px; background: var(--color-primary); flex: none; }

                           
.xq-layout { display: grid; grid-template-columns: 1fr 296px; gap: 18px; align-items: start; }
.xq-main { min-width: 0; display: grid; gap: 16px; }
.xq-modules { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.xq-module {
  border: 1px solid var(--color-border); border-radius: 8px;
  padding: 13px 15px; background: var(--color-surface);
}
.xq-module.important { border-color: var(--color-primary-border); background: var(--color-primary-soft); }
.xq-module-head { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }
.xq-module-label { font-weight: 700; font-size: 14px; color: var(--color-text-primary); }
.xq-module.important .xq-module-label { color: var(--color-primary); }
.xq-module-tag {
  font-size: 11px; color: var(--color-text-secondary); border: 1px solid var(--color-border);
  padding: 1px 7px; border-radius: 6px; line-height: 1.5;
}
.xq-module p { margin: 0; font-size: 13px; line-height: 1.7; color: var(--color-text-primary); }
.xq-extra { display: grid; gap: 12px; border-top: 1px dashed var(--color-border); padding-top: 14px; }
.xq-extra-row { display: grid; grid-template-columns: 82px 1fr; gap: 12px; align-items: start; }
.xq-side { display: grid; gap: 14px; }
.xq-side-card {
  border: 1px solid var(--color-border); border-radius: 8px;
  padding: 14px 16px; background: var(--color-surface);
}
.xq-side-card h3 { margin: 0 0 8px; font-size: 14px; color: var(--color-text-primary); }
.xq-side-card .sub { margin: 0; line-height: 1.6; }
.xq-side-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 11px; }
.xq-survey-stats { margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--color-border); display: grid; gap: 5px; }
.xq-survey-stats b { color: var(--color-primary); }
@media (max-width: 980px) {
  .xq-layout { grid-template-columns: 1fr; }
  .xq-modules { grid-template-columns: 1fr; }
}

                            
.xq-edit-modal { position: fixed; inset: 0; z-index: 92; display: grid; place-items: center; }
.xq-edit-modal[hidden] { display: none; }
.xq-edit-backdrop { position: absolute; inset: 0; background: rgba(17,24,39,.45); }
.xq-edit-panel {
  position: relative; width: min(720px, 92vw); max-height: 86vh; overflow: auto;
  background: var(--color-surface); border-radius: 8px; border: 1px solid var(--color-border);
  box-shadow: 0 20px 60px rgba(17,24,39,.25); padding: 18px 20px;
}
.xq-edit-body { display: grid; gap: 12px; margin: 12px 0; }
.xq-edit-field { display: grid; gap: 6px; }
.xq-edit-field label { font-size: 13px; font-weight: 600; color: var(--color-text-primary); }
.xq-edit-field textarea {
  width: 100%; border: 1px solid var(--color-border); border-radius: 8px;
  padding: 9px 11px; font: inherit; resize: vertical;
  background: var(--color-surface); color: var(--color-text-primary);
}
.xq-edit-field.important label { color: var(--color-primary); }

                             
.xq-pick-modal { position: fixed; inset: 0; z-index: 93; display: grid; place-items: center; }
.xq-pick-modal[hidden] { display: none; }
.xq-pick-backdrop { position: absolute; inset: 0; background: rgba(17,24,39,.45); }
.xq-pick-panel {
  position: relative; width: min(560px, 92vw); max-height: 84vh; overflow: auto;
  background: var(--color-surface); border-radius: 8px; border: 1px solid var(--color-border);
  box-shadow: 0 20px 60px rgba(17,24,39,.25); padding: 18px 20px;
}
.xq-pick-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.xq-pick-head h3 { margin: 0; font-size: 16px; }
.xq-pick-list { display: grid; gap: 9px; margin: 12px 0; max-height: 52vh; overflow: auto; }
.xq-pick-item {
  text-align: left; display: flex; flex-direction: column; gap: 3px;
  border: 1px solid var(--color-border); border-radius: 8px; padding: 11px 13px;
  background: var(--color-bg); cursor: pointer; transition: .12s;
}
.xq-pick-item:hover { border-color: var(--color-primary); background: var(--color-primary-soft); }
.xqpi-t { font-weight: 700; font-size: 14px; }
.xqpi-m { font-size: 12px; color: var(--color-text-tertiary); }
.xq-pick-foot { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
.xq-go-survey { display: inline-block; margin-top: 8px; font-size: 12px; color: var(--color-primary); text-decoration: none; }
.xq-go-survey:hover { text-decoration: underline; }

                                      
.itm-issue { display: flex; flex-direction: column; gap: 7px; }
.itm-divider { height: 1px; background: var(--line); margin: 1px 0; }
.issue-step-wrap { min-width: 0; }
.issue-step-strip { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding-top: 3px; }
.iss-step { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--muted); white-space: nowrap; }
.iss-step > i {
  width: 21px; height: 21px; border-radius: 8px;
  display: inline-flex; align-items: center; justify-content: center;
  font-style: normal; font-size: 12px; line-height: 1;
  background: var(--surface); border: 1px solid var(--line); color: var(--muted);
}
.iss-step.is-done { color: var(--color-text-primary); }
.iss-step.is-done > i { background: var(--primary); border-color: var(--primary); color: #fff; }
.iss-step-arrow { color: var(--line); font-size: 13px; }
.main-context-block { display: flex; flex-direction: column; gap: 5px; }
.main-context-name { font-size: 15px; font-weight: 650; line-height: 1.4; color: var(--color-text-primary); }
.main-context-summary {
  margin: 0; line-height: 1.55;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.main-context-block.is-empty .main-context-summary { -webkit-line-clamp: 2; }
.main-context-change { align-self: flex-start; padding: 0; }
.issue-tree-why-fold summary { font-size: 12px; color: var(--muted); cursor: pointer; }
.issue-tree-why-fold .issue-tree-why { display: block; -webkit-line-clamp: unset; margin-top: 4px; }
@media (max-width: 760px) {
  .issue-step-strip { gap: 6px; }
  .iss-step { font-size: 12px; }
}

                                       
.s4-page { display: flex; flex-direction: column; gap: 12px; }
.s4-page-top { display: flex; justify-content: flex-end; }
.s4-page-foot { display: flex; justify-content: flex-end; }
.s4-switcher {
  display: inline-flex; gap: 4px; padding: 4px;
  border: 1px solid var(--line); border-radius: 8px; background: var(--surface);
}
.s4s-tab {
  appearance: none; border: 0; background: transparent; cursor: pointer;
  padding: 7px 16px; border-radius: 7px; font: inherit; font-size: 14px; font-weight: 600;
  color: var(--muted);
}
.s4s-tab:hover { color: var(--color-text-primary); }
.s4s-tab.on { background: var(--primary); color: #fff; }

.scx-banner {
  padding: 9px 14px; border-radius: 8px;
  background: var(--primary-soft); color: var(--color-text-primary);
  font-size: 13px;
}
.scx-main { min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.scx-main-full { width: 100%; }
.scx-main-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap;
  padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface);
}
.scx-main-title { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; }
.scx-main-head h4 { margin: 0; font-size: 19px; line-height: 1.4; }
.scx-main-head .btn { flex: none; align-self: center; }
.scx-main-actions { display: flex; align-items: center; gap: 8px; align-self: center; flex: none; }
.scx-detail-btn {
  appearance: none; cursor: pointer; font: inherit;
  width: 34px; height: 34px; flex: none;
  display: grid; place-items: center;
  border: 1px solid var(--line); border-radius: 8px; background: var(--surface);
  color: var(--muted); font-size: 17px; line-height: 1;
  transition: border-color .12s, color .12s;
}
.scx-detail-btn:hover { border-color: var(--primary); color: var(--primary); }
.ctx-detail-label { margin: 0 0 6px; font-size: 13px; font-weight: 700; color: var(--muted); }
.ctx-detail-text { margin: 0; font-size: 15px; line-height: 1.75; color: var(--color-text-primary); white-space: pre-wrap; }
.scx-overview {
  display: flex; flex-direction: column; gap: 8px;
  padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface);
}
.scx-overview p { margin: 0; font-size: 14px; line-height: 1.6; }
.scx-empty {
  display: flex; flex-direction: column; gap: 12px; align-items: flex-start;
  padding: 24px; border: 1px dashed var(--line); border-top: none; border-radius: 0 0 8px 8px;
}
.scx-pager {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.scx-pager-dots { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; flex: 1; }
.scx-pager-dot {
  appearance: none; border: 1px solid var(--line); background: var(--surface); color: var(--muted);
  border-radius: 8px; min-width: 40px; padding: 6px 10px; font: inherit; font-size: 13px; font-weight: 650; cursor: pointer;
}
.scx-pager-dot.on { border-color: var(--primary); background: var(--primary); color: #fff; }
.scx-pager-dot:hover:not(.on) { border-color: var(--primary); color: var(--primary); }
.scx-slice {
  display: flex; flex-direction: column; gap: 14px;
  padding: 16px 18px; border: 1px solid var(--line); border-top: none; border-radius: 0 0 8px 8px; background: var(--surface);
}
.scx-slice-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.scx-slice-no { display: block; font-size: 12px; font-weight: 700; color: var(--primary); margin-bottom: 4px; }
.scx-slice-head h3 { margin: 0; font-size: 20px; line-height: 1.4; }
.scx-slice-role { margin: 0; font-size: 14px; line-height: 1.55; color: var(--color-text-primary); }
.scx-slice-block { display: flex; flex-direction: column; gap: 8px; }
.scx-slice-block h4 { margin: 0; font-size: 14px; font-weight: 700; color: var(--muted); }
.scx-slice-body { margin: 0; font-size: 15px; line-height: 1.7; white-space: pre-wrap; }
.scx-fact-list { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: 14px; line-height: 1.55; }
.scx-mat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; }
.scx-mat-card {
  display: flex; flex-direction: column; gap: 6px; padding: 10px;
  border: 1px solid var(--line); border-radius: 8px; background: #fff; min-width: 0;
}
.scx-mat-type { font-size: 11px; color: var(--muted); font-weight: 650; }
.scx-mat-card b { font-size: 13px; line-height: 1.4; }
.scx-mat-face { margin: 0; font-size: 12px; line-height: 1.5; color: var(--muted); white-space: pre-wrap; max-height: 140px; overflow: auto; }
.scx-mat-visual { border-radius: 8px; overflow: hidden; background: #f8fafc; min-height: 86px; display: grid; place-items: center; }
.scx-mat-visual .material-thumb-svg { width: 100%; height: auto; display: block; }
.scx-mat-visual .material-mini-table { width: 100%; font-size: 11px; border-collapse: collapse; }
.scx-mat-visual .material-mini-table th, .scx-mat-visual .material-mini-table td { border: 1px solid var(--line); padding: 4px 6px; }
.scx-mat-visual .material-type-mark { font-size: 12px; color: var(--muted); padding: 18px 8px; }

.scp-tags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.scp-tag {
  appearance: none; font: inherit; cursor: pointer;
  font-size: 12px; color: var(--primary);
  border: 1px solid var(--primary); border-radius: 6px; padding: 1px 9px; background: var(--primary-soft);
}
.scp-tag:hover { background: var(--primary); color: #fff; }
.scp-tag-add { border-style: dashed; }
.scx-link-overlay { display: grid; place-items: center; padding: 24px; }
.scx-link-panel {
  width: min(520px, calc(100vw - 32px));
  max-height: min(80vh, 640px);
  overflow: auto;
  background: var(--surface);
  border-radius: var(--r);
  border: 1px solid var(--line);
  box-shadow: 0 18px 48px rgba(0,0,0,.18);
  padding: 18px 20px 16px;
  position: relative; z-index: 1;
}
.scx-link-panel .advanced-panel-head { margin-bottom: 4px; }
.scx-link-panel .advanced-panel-head h3 { margin: 3px 0 0; font-size: 20px; }
.scx-link-modal-list { margin-top: 12px; }
.scp-unused { font-size: 12px; color: var(--muted); }
.scp-link-list { display: flex; flex-direction: column; gap: 7px; }
.scp-link-opt {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 13px; cursor: pointer; padding: 5px 8px;
  border: 1px solid var(--line); border-radius: 8px;
}
.scp-link-opt small { color: var(--muted); }
.scp-link-opt input[type="checkbox"] {
  width: 18px; min-width: 18px; height: 18px; flex: 0 0 auto;
  margin: 0; padding: 0; border: 0; background: none; accent-color: var(--primary);
}
.scp-link-opt span { line-height: 1.5; }
.scp-clue-list { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: 13px; line-height: 1.55; }

                                         
.aplan { display:flex; flex-direction:column; gap:14px; }
.aplan-topbar { display:flex; flex-direction:column; gap:8px; }
.aplan-topline { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.aplan-h-title { font-size:21px; }
.aplan-save-state { font-size:13px; color:var(--muted); }
.aplan-mainline { font-size:14px; color:var(--color-text-primary); font-weight:600; }
.aplan-mainline small { color:var(--muted); }
.aplan-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.aplan-toolbar { display:flex; flex-direction:column; align-items:stretch; gap:10px; }
.aplan-toolbar-right { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.aplan-unit-tabs { display:flex; flex-direction:column; align-items:stretch; gap:6px; width:100%; }
.aplan-unit-tabs-row { display:flex; align-items:stretch; gap:8px; overflow-x:auto; overflow-y:hidden; scrollbar-width:thin; padding-bottom:4px; }
.aplan-unit-tab {
  appearance:none; cursor:pointer; font:inherit; text-align:left;
  flex:none; display:flex; flex-direction:column; gap:3px; min-width:150px; max-width:280px;
  border:1px solid var(--line); border-radius:9px; background:var(--surface); padding:8px 12px;
}
.aplan-unit-tab:hover { border-color:var(--primary); }
.aplan-unit-tab.on { border-color:var(--primary); background:var(--primary-soft); }
.aplan-unit-tab.warn:not(.on) { border-color:color-mix(in srgb, var(--primary) 35%, var(--line)); }
.aplan-unit-tab-title { font-size:14px; font-weight:650; line-height:1.4; color:var(--color-text-primary); white-space:nowrap; }
.aplan-unit-tab.on .aplan-unit-tab-title { font-weight:700; }
.aplan-unit-tab-st { font-size:11px; color:var(--muted); }
.aplan-unit-tab-st.aplan-status-confirmed { color:var(--primary); font-weight:600; }
.aplan-unit-tab-st.aplan-status-empty,
.aplan-unit-tab-st.aplan-status-partial { color:var(--color-warning); }
.aplan-seeding { padding:12px 14px; border-radius:8px; border:1px dashed var(--primary); background:var(--primary-soft); color:var(--primary); font-size:14px; font-weight:600; }
.aplan-work-full { width:100%; }
.aplan-mat-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(168px, 1fr)); gap:10px; margin-top:4px; }
.aplan-mat-card { display:flex; flex-direction:column; gap:6px; padding:10px; border:1px solid var(--line); border-radius:8px; background:#fff; min-width:0; }
.aplan-mat-type { font-size:11px; color:var(--muted); font-weight:650; }
.aplan-mat-card b { font-size:13px; line-height:1.4; }
.aplan-mat-face { margin:0; font-size:12px; line-height:1.45; color:var(--muted); }
.aplan-mat-visual { border-radius:8px; overflow:hidden; background:#f8fafc; min-height:86px; display:grid; place-items:center; }
.aplan-mat-visual .material-thumb-svg { width:100%; height:auto; display:block; }
.aplan-mat-visual .material-mini-table { width:100%; font-size:11px; border-collapse:collapse; }
.aplan-mat-visual .material-mini-table th, .aplan-mat-visual .material-mini-table td { border:1px solid var(--line); padding:4px 6px; }
.aplan-mat-visual .material-type-mark { font-size:12px; color:var(--muted); padding:18px 8px; }
.aplan-mat-actions { display:flex; flex-wrap:wrap; gap:4px; }

.aplan-viewseg { display:inline-flex; padding:3px; gap:3px; border:1px solid var(--line); border-radius:9px; background:var(--surface); }
.aplan-viewseg button { appearance:none; border:0; background:transparent; cursor:pointer; font:inherit; font-size:14px; font-weight:600; color:var(--muted); padding:6px 14px; border-radius:6px; }
.aplan-viewseg button.on { background:var(--primary); color:#fff; }
.time-axis-bar .time-seg {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 2px;
  padding: 8px 10px;
  min-width: 0;
  border-right: 1px solid rgba(255,255,255,.2);
  color: inherit;
  font: inherit;
  cursor: default;
}
.time-axis.is-readonly .time-axis-bar .time-seg.on {
  background: rgba(255,255,255,.12);
}
.synth-act.is-readonly {
  cursor: default;
  pointer-events: none;
}
.synth-map-title {
  color: var(--color-text-secondary);
  font-size: 13px;
}

.aplan-body { display:grid; grid-template-columns:248px minmax(0,1fr); gap:18px; align-items:start; }
.aplan-nav { position:sticky; top:12px; max-height:calc(100vh - 24px); overflow-y:auto; display:flex; flex-direction:column; gap:6px; padding-right:4px; }
.aplan-nav-head { font-size:13px; font-weight:700; color:var(--color-text-primary); padding:4px 6px 8px; }
.aplan-nav-group { display:flex; flex-direction:column; gap:5px; margin-bottom:4px; }
.aplan-nav-grouplabel { font-size:12px; font-weight:700; color:var(--muted); padding:2px 6px; letter-spacing:.04em; }
.aplan-nav-empty { padding:8px 6px; margin:0; }
.aplan-nav-item {
  appearance:none; text-align:left; cursor:pointer; font:inherit;
  display:flex; flex-direction:column; gap:5px;
  border:1px solid var(--line); border-radius:9px; background:var(--surface); padding:9px 11px;
}
.aplan-nav-item.compact { padding:7px 11px; }
.aplan-nav-item.compact .aplan-nav-title { font-size:12px; font-weight:500; color:var(--muted); }
.aplan-nav-item:hover { border-color:var(--primary); }
.aplan-nav-item.on { border-color:var(--primary); background:var(--primary-soft); }
.aplan-nav-item.on .aplan-nav-title { color:var(--color-text-primary); font-weight:700; }
.aplan-nav-item.warn:not(.on) { border-color:color-mix(in srgb, var(--primary) 35%, var(--line)); }
.aplan-nav-title { font-size:13px; line-height:1.5; color:var(--color-text-primary); font-weight:600; }
.aplan-nav-meta { display:flex; align-items:center; justify-content:space-between; gap:6px; }
.aplan-status { font-size:12px; padding:1px 8px; border-radius:6px; border:1px solid var(--line); color:var(--muted); }
.aplan-status-review { color:var(--primary); border-color:var(--primary); }
.aplan-status-confirmed { color:#fff; background:var(--primary); border-color:var(--primary); }
.aplan-nav-dur { font-size:12px; color:var(--muted); }
.aplan-nav-total { font-size:12px; color:var(--muted); padding:6px; border-top:1px solid var(--line); }

.aplan-work { min-width:0; }
.aplan-unit { display:flex; flex-direction:column; gap:14px; }
.aplan-unitinfo { display:flex; flex-direction:column; gap:6px; }
.aplan-unitinfo h3 { margin:0; font-size:19px; line-height:1.5; }
.aplan-understanding-line { margin:0; font-size:14px; line-height:1.55; color:var(--color-text-primary); }
.aplan-understanding { display:flex; flex-direction:column; gap:5px; font-size:13px; color:var(--muted); }
.aplan-understanding textarea { font-size:15px; }

.aplan-context { display:flex; flex-direction:column; gap:8px; border:1px solid var(--line); border-radius:8px; background:var(--surface); padding:12px 14px; }
.aplan-context-brief { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.aplan-context-label { font-size:12px; font-weight:700; color:var(--muted); }
.aplan-context-summary { margin:4px 0 0; font-size:14px; line-height:1.55; color:var(--color-text-primary); }
.aplan-context-tag { flex:none; font-size:12px; padding:3px 9px; border-radius:6px; background:var(--primary-soft); color:var(--primary); font-weight:600; }

.aplan-opening {
  display:flex; flex-direction:column; gap:12px;
  border:1px solid var(--line); border-radius:8px; background:var(--surface); padding:12px 14px;
}
.aplan-opening-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.aplan-opening-empty {
  margin:0; padding:12px; border:1px dashed var(--line); border-radius:8px;
  background:var(--surface-2,#f8f9fb); color:var(--muted); font-size:13px; line-height:1.5;
}
.aplan-opening-card { display:grid; gap:10px; padding:12px; border-radius:8px; background:var(--surface-2,#f8f9fb); }
.aplan-opening-meta { display:flex; flex-wrap:wrap; gap:8px; align-items:baseline; }
.aplan-opening-type {
  display:inline-flex; padding:2px 8px; border-radius:6px; font-size:12px; font-weight:700;
  background:var(--primary-soft); color:var(--primary);
}
.aplan-opening-meta em { font-style:normal; font-size:12px; color:var(--muted); }
.aplan-opening-script span,
.aplan-opening-prompt span,
.aplan-opening-bridge span {
  display:block; font-size:11px; font-weight:700; color:var(--muted); margin-bottom:4px;
}
.aplan-opening-script p,
.aplan-opening-prompt p,
.aplan-opening-bridge p {
  margin:0; font-size:14px; line-height:1.6; color:var(--color-text-primary);
}
.aplan-open-sheet { width:min(720px,100%); }
.aplan-open-filters { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 12px; }
.aplan-open-chip {
  border:1px solid var(--line); background:#fff; border-radius:6px;
  padding:5px 10px; font:inherit; font-size:12px; cursor:pointer; color:var(--muted);
}
.aplan-open-chip.on { border-color:var(--primary); color:var(--primary); background:var(--primary-soft); font-weight:650; }
.aplan-open-list { display:grid; gap:8px; max-height:min(52vh,480px); overflow:auto; }
.aplan-open-item {
  text-align:left; border:1px solid var(--line); border-radius:8px;
  padding:12px; background:#fff; cursor:pointer; font:inherit; color:inherit; display:grid; gap:4px;
}
.aplan-open-item:hover { border-color:var(--primary); }
.aplan-open-item.on { border-color:var(--primary); box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 18%, transparent); }
.aplan-open-item-top { display:flex; flex-wrap:wrap; gap:8px; align-items:center; font-size:12px; color:var(--muted); }
.aplan-open-item-top b { color:var(--primary); }
.aplan-open-item-top em { font-style:normal; padding:1px 6px; border-radius:6px; background:#ecfdf3; color:#027a48; font-size:11px; }
.aplan-open-item strong { font-size:14px; }
.aplan-open-item p { margin:0; font-size:13px; line-height:1.5; color:var(--muted); }

.aplan-slice-tags { display:flex; flex-wrap:wrap; gap:8px; }
.aplan-slice-tag {
  display:inline-flex; align-items:center; gap:6px; max-width:100%;
  font-size:12px; line-height:1.35; color:var(--color-text-primary);
  padding:5px 10px; border:1px solid var(--line); border-radius:8px; background:#fff;
}
.aplan-slice-tag b { flex:none; color:var(--primary); font-size:12px; }
.aplan-slice-empty { margin:0; }
.aplan-slice-no {
  display:inline-block; margin-right:6px; font-size:12px; font-weight:700;
  color:#fff; background:var(--primary); border-radius:5px; padding:1px 6px;
}
.aplan-context-fold > summary { cursor:pointer; list-style:none; font-size:13px; font-weight:600; color:var(--primary); }
.aplan-context-fold > summary::-webkit-details-marker { display:none; }
.aplan-context-body { margin-top:10px; display:flex; flex-direction:column; gap:10px; }
.aplan-ctx-card { border:1px dashed var(--line); border-radius:8px; padding:10px 12px; }
.aplan-ctx-card b { display:block; margin-bottom:4px; }
.aplan-ctx-card p { margin:0 0 4px; font-size:13px; line-height:1.55; }
.aplan-ctx-note { display:flex; flex-direction:column; gap:5px; font-size:13px; color:var(--muted); }
.aplan-ctx-note textarea { font-size:14px; }
.aplan-ctx-actions-hint { margin:0; }
.aplan-ctx-item { margin:0; font-size:13px; line-height:1.5; }
.aplan-ctx-item small { color:var(--muted); }

.aplan-tasks-head { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.aplan-tasks-head .sub { font-size:13px; }
.aplan-tasks { display:flex; flex-direction:column; gap:10px; }
.aplan-empty { display:flex; flex-direction:column; gap:10px; align-items:flex-start; border:1px dashed var(--line); border-radius:8px; padding:18px; }
.aplan-add-more { align-self:flex-start; }
.aplan-unit-foot { display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding-top:6px; border-top:1px solid var(--line); }
.aplan-unit-dur { font-size:13px; }

.atask { border:1px solid var(--line); border-radius:8px; background:var(--surface); overflow:hidden; }
.atask > summary { list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:11px 14px; }
.atask > summary::-webkit-details-marker { display:none; }
.atask[open] > summary { border-bottom:1px solid var(--line); background:color-mix(in srgb, var(--primary) 8%, var(--surface)); }
.atask-prompt { font-size:15px; font-weight:600; line-height:1.5; }
.atask-meta { font-size:12px; color:var(--muted); white-space:nowrap; }
.atask-body { padding:13px 14px 14px; display:flex; flex-direction:column; gap:11px; }
.atask-prompt-edit { display:flex; flex-direction:column; gap:5px; font-size:13px; color:var(--muted); }
.atask-prompt-edit textarea { font-size:15px; }
.atask-tlp { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.atlp-block { display:flex; flex-direction:column; gap:6px; min-width:0; }
.atlp-block h5 { margin:0; font-size:13px; color:var(--color-text-primary); display:flex; flex-direction:column; gap:2px; }
.atlp-block h5 small { font-weight:500; color:var(--muted); font-size:12px; }
.atlp-block textarea { font-size:14px; line-height:1.55; }
.atlp-output { display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--muted); }
.atask-fold { border-top:1px dashed var(--line); padding-top:8px; }
.atask-fold > summary { cursor:pointer; font-size:13px; font-weight:600; color:var(--color-text-primary); list-style:none; }
.atask-fold > summary::-webkit-details-marker { display:none; }
.atask-fold-grid { margin-top:8px; display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.atask-fold-grid label { display:flex; flex-direction:column; gap:5px; font-size:12px; color:var(--muted); }
.atask-fold-grid textarea { font-size:14px; }
.atask-fold-full { grid-column:1 / -1; }
.atask-tools { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.atask-dur { display:flex; align-items:center; gap:6px; font-size:13px; color:var(--muted); }
.atask-dur input { width:72px; padding:6px 8px; }
.aplan-table-scope { margin:0 0 8px; }

.aplan-table-wrap { overflow-x:auto; border:1px solid var(--line); border-radius:8px; }
.aplan-table { width:100%; border-collapse:collapse; table-layout:fixed; }
.aplan-table th, .aplan-table td { border:1px solid var(--line); padding:9px 11px; font-size:13px; vertical-align:top; line-height:1.55; text-align:left; word-break:break-word; }
.aplan-table thead th { background:var(--surface); font-weight:700; }
.aplan-t-grouprow td { background:var(--primary-soft); font-weight:700; cursor:pointer; }
.aplan-t-prompt small { display:block; color:var(--muted); margin-top:4px; }

@media (max-width:1100px) { .atask-tlp { grid-template-columns:1fr; } }
@media (max-width:860px) {
  .aplan-body { grid-template-columns:1fr; }
  .aplan-nav { position:static; max-height:none; }
  .aplan-context { grid-template-columns:1fr; }
}

                            
.aplan-goal-rail {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  font-size: 12px; color: var(--color-text-secondary);
}
.aplan-goal-rail-label { font-weight: 600; color: var(--color-text-primary); }
.aplan-goal-chip {
  padding: 2px 8px; border-radius: 6px;
  border: 1px solid var(--color-border); background: var(--color-surface-hover);
}
.aplan-goal-chip.on {
  border-color: color-mix(in srgb, var(--color-primary) 40%, var(--color-border));
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
  color: var(--color-primary); font-weight: 600;
}
.atask-goals {
  display: flex; flex-wrap: nowrap; align-items: center; gap: 8px;
  font-size: 12px; margin: 6px 0 10px; color: var(--color-text-secondary);
  overflow-x: auto; white-space: nowrap;
}
.atask-goal-ck { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; flex-shrink: 0; }
.aplan-soft-check {
  margin-top: 14px; padding: 10px 14px; border-radius: 8px;
  border: 1px dashed var(--color-border); font-size: 12px; color: var(--color-text-secondary);
}

.aplan-soft-check {
  display: flex; flex-direction: column; gap: 10px;
}
.aplan-soft-top {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.aplan-soft-scores {
  display: flex; align-items: center; gap: 24px; flex-wrap: wrap;
}
.aplan-ring {
  width: 62px; height: 62px; border-radius: 50%;
  background: conic-gradient(var(--c, #9aa3ad) calc(var(--p, 0) * 1%), #eef1f5 0); /* 环形进度 ring：功能性数据可视化 */
  display: flex; align-items: center; justify-content: center; position: relative; flex: 0 0 auto;
}
.aplan-ring::before {
  content: ""; position: absolute; inset: 6px; background: #fff; border-radius: 50%; /* ring 内圆 */
}
.aplan-ring b {
  position: relative; z-index: 1; font-size: 17px; font-weight: 700; color: var(--c, #333); line-height: 1;
}
.aplan-ring span {
  position: absolute; bottom: -17px; left: 50%; transform: translateX(-50%);
  font-size: 11px; color: var(--color-neutral); white-space: nowrap;
}
.aplan-boost {
  min-width: 220px; flex: 1 1 240px; background: #f8fafc;
  border: 1px solid #e6eaf0; border-radius: 8px; padding: 8px 12px;
}
.aplan-boost b { font-size: 12px; color: #7c5a10; }
.aplan-boost ul { margin: 4px 0 0; padding-left: 16px; }
.aplan-boost li { font-size: 12px; line-height: 1.6; color: #445; }
.aplan-soft-check ol { margin: 6px 0 0; padding-left: 18px; }
.synth-accept {
  margin: 12px 0; padding: 14px 16px; border-radius: 8px;
  border: 1px solid var(--color-border); background: var(--color-surface);
}
.synth-accept h4 { margin: 0 0 10px; font-size: 15px; }
.synth-accept-draft { display: grid; gap: 6px; font-size: 13px; }
.synth-accept-draft textarea { width: 100%; border-radius: 8px; border: 1px solid var(--color-border); padding: 8px 10px; font: inherit; }
.synth-accept-row { display: flex; gap: 10px; align-items: baseline; margin-top: 10px; font-size: 13px; }

                           
.impl-shell {
  display: grid;
  grid-template-columns: 1fr 1.15fr;
  gap: 22px 28px;
  width: 100%;
  max-width: none;
  align-items: start;
}
.impl-shell-seg {
  grid-template-columns: 1fr;
  gap: 18px;
}
.impl-segs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  grid-column: 1 / -1;
}
.impl-seg {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 8px;
  padding: 14px 16px;
  text-align: left;
  cursor: pointer;
  font: inherit;
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 2px;
  transition: border-color .15s, background .15s;
}
.impl-seg-n {
  grid-row: 1 / span 2;
  align-self: center;
  width: 28px; height: 28px; border-radius: 8px;
  display: grid; place-items: center;
  font-size: 13px; font-weight: 700;
  color: var(--primary); background: var(--primary-soft);
}
.impl-seg-t { font-size: 15px; font-weight: 700; color: var(--ink); }
.impl-seg-d { font-size: 12px; color: var(--muted); }
.impl-seg.on {
  border-color: var(--primary);
  background: var(--primary-soft);
}
.impl-pane { min-width: 0; }
.impl-pane-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 16px 18px;
  background: var(--surface);
  margin-bottom: 14px;
}
.impl-pane-title {
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 700;
}
.impl-pane-foot {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 4px 0 8px;
}
.impl-grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.impl-act-layout {
  display: grid;
  grid-template-columns: minmax(180px, 220px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.impl-act-rail {
  position: sticky;
  top: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  background: color-mix(in srgb, var(--bg) 55%, var(--surface));
}
.impl-act-select {
  width: 100%;
  min-height: 140px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--surface);
  font: inherit;
  padding: 6px;
}
.impl-act-select option { padding: 6px 8px; }
.impl-rail-hint { margin: 10px 0 0; font-size: 12px; line-height: 1.45; }
.impl-act-editor { min-width: 0; }
.impl-act-form { padding: 4px 18px 8px; }
.impl-act-sec { padding: 14px 0 16px; }
.impl-act-sec + .impl-act-sec:not([hidden]) {
  border-top: 1px solid var(--line);
  margin-top: 2px;
  padding-top: 16px;
}
.impl-act-sec .impl-pane-title {
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 8px;
}
                                        
.impl-sec-n {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  border-radius: 7px;
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 700;
  color: var(--primary);
  background: var(--primary-soft);
}
.impl-kind-hint { margin: 8px 0 0; }
.impl-fw-grid { margin-bottom: 2px; }
.impl-eval-pts { margin-top: 12px; }
.impl-alist-card { padding: 16px 18px 12px; }
.impl-alist-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.impl-alist {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.impl-alist-item {
  display: flex;
  align-items: stretch;
  gap: 6px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: color-mix(in srgb, var(--bg) 40%, var(--surface));
  overflow: hidden;
}
.impl-alist-item.is-current {
  border-color: color-mix(in srgb, var(--primary) 55%, var(--line));
  background: color-mix(in srgb, var(--primary-soft) 65%, var(--surface));
}
.impl-alist-main {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: inherit;
  min-width: 0;
}
.impl-alist-main:hover { background: color-mix(in srgb, var(--primary) 6%, transparent); }
.impl-alist-n {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 700;
  color: var(--primary);
  background: color-mix(in srgb, var(--primary) 12%, transparent);
}
.impl-alist-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.impl-alist-title {
  font-size: 15px;
  font-weight: 650;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.impl-alist-meta {
  font-size: 12px;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.impl-alist-del {
  flex: 0 0 auto;
  width: 40px;
  border: 0;
  border-left: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 20px;
  cursor: pointer;
}
.impl-alist-del:hover { color: var(--color-error); background: color-mix(in srgb, var(--color-error) 8%, transparent); }
.impl-alist-empty {
  text-align: center;
  padding: 28px 16px;
  border: 1px dashed var(--line);
  border-radius: 8px;
}
.impl-alist-empty p { margin: 0 0 8px; }
.impl-alist-hint { margin: 12px 0 0; }
.impl-modal[hidden] { display: none !important; }
.impl-modal {
  position: fixed;
  inset: 0;
  z-index: 110;
  display: grid;
  place-items: center;
  padding: 20px;
}
.impl-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(17, 24, 39, 0.42);
}
.impl-modal-sheet {
  position: relative;
  z-index: 1;
  width: min(920px, 100%);
  max-height: min(88vh, 860px);
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 20px 60px rgba(17, 24, 39, 0.18);
  overflow: hidden;
}
.impl-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--line);
}
.impl-modal-head h3 { margin: 0; font-size: 17px; }
.impl-modal-body {
  overflow: auto;
  padding: 4px 4px 12px;
  flex: 1;
  min-height: 0;
}
.impl-modal-foot {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 12px 16px;
  border-top: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 50%, var(--surface));
}
.impl-prompt-hint {
  display: block;
  font-weight: 400;
  margin: 2px 0 8px;
}
.impl-prompt-pick {
  width: 100%;
  margin-bottom: 8px;
  font: inherit;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
  background: var(--surface);
  color: var(--ink);
}
.impl-kind-select {
  width: 100%;
  font: inherit;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  background: var(--surface);
  color: var(--ink);
}
.impl-pk-card,
.impl-scen-node,
.impl-scen-end {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  background: color-mix(in srgb, var(--bg) 45%, var(--surface));
}
.impl-pk-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
  font-size: 13px;
  font-weight: 650;
  color: var(--ink);
}
.impl-scen-opt {
  display: grid;
  grid-template-columns: 1fr 120px;
  gap: 8px;
  margin-top: 8px;
}
.impl-scen-opt input {
  width: 100%;
  font: inherit;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
  background: var(--surface);
}
@media (max-width: 640px) {
  .impl-scen-opt { grid-template-columns: 1fr; }
}
@media (max-width: 860px) {
  .impl-segs,
  .impl-grid-2,
  .impl-act-layout { grid-template-columns: 1fr; }
  .impl-act-rail { position: static; }
}
.impl-hero {
  grid-column: 1 / -1;
  padding: 2px 0 12px;
  border-bottom: 1px solid var(--line);
}
.impl-kicker {
  margin: 0 0 6px;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.impl-hero-title {
  margin: 0 0 8px;
  font-size: 22px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--ink);
}
.impl-hero-issue {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: var(--color-text-primary);
}
.impl-hero-meta {
  margin: 10px 0 0;
  font-size: 12px;
  color: var(--muted);
}
.impl-block {
  padding: 0;
  background: transparent;
  border: none;
  min-width: 0;
}
.impl-block-head {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 14px;
}
.impl-n {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 700;
  color: var(--primary);
  background: var(--primary-soft);
}
.impl-block-head h4 {
  margin: 0 0 2px;
  font-size: 16px;
  font-weight: 700;
  color: var(--ink);
}
.impl-block-head p {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.45;
}
.impl-label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 12px;
  color: var(--muted);
  min-width: 0;
}
.impl-label input,
.impl-label select,
.impl-label textarea {
  width: 100%;
  box-sizing: border-box;
  font-size: 14px;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 11px;
  background: var(--surface);
  font-family: inherit;
  line-height: 1.45;
  resize: vertical;
}
.impl-label input:focus,
.impl-label select:focus,
.impl-label textarea:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 18%, transparent);
}
.impl-grid-3 {
  display: grid;
  grid-template-columns: 1.2fr 1fr auto;
  gap: 12px;
  align-items: end;
}
.impl-switch {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  padding: 0 4px;
  font-size: 14px;
  color: var(--ink);
  cursor: pointer;
  user-select: none;
}
.impl-switch input {
  width: 18px;
  height: 18px;
  accent-color: var(--primary);
}
.impl-view-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2px 14px;
}
@media (max-width: 640px) {
  .impl-view-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}
.impl-fw {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.impl-mini-label {
  margin: 0 0 8px;
  font-size: 12px;
  color: var(--muted);
}
.impl-pills {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.impl-pill {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 6px;
  padding: 8px 14px;
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: var(--ink);
  transition: border-color .15s, background .15s;
}
.impl-pill span {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  color: var(--muted);
}
.impl-pill.on {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
}
.impl-pill.on span { color: color-mix(in srgb, var(--primary) 70%, var(--muted)); }
.impl-modes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.impl-mode {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 8px;
  padding: 16px 16px 14px;
  text-align: left;
  cursor: pointer;
  font: inherit;
  display: flex;
  flex-direction: column;
  gap: 4px;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.impl-mode:hover { border-color: color-mix(in srgb, var(--primary) 45%, var(--line)); }
.impl-mode.on {
  border-color: var(--primary);
  background: var(--primary-soft);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary) 35%, transparent);
}
.impl-mode-tag {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--primary);
  background: color-mix(in srgb, var(--primary) 12%, var(--surface));
  margin-bottom: 4px;
}
.impl-mode strong {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
}
.impl-mode em {
  font-style: normal;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.impl-mode-panel {
  margin-top: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: end;
}
.impl-mode-panel .impl-label { flex: 1 1 240px; }
.impl-actions { display: flex; gap: 8px; flex-wrap: wrap; padding-bottom: 2px; }
.impl-focus {
  grid-column: 2;
  grid-row: 2 / span 2;
  padding: 18px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--bg) 65%, var(--surface));
  border: 1px solid var(--line);
  align-self: stretch;
}
.impl-q-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 12px;
}
.impl-kind-block { margin: 14px 0 12px; }
.impl-kinds {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.impl-kind {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 8px;
  padding: 12px 12px 10px;
  cursor: pointer;
  text-align: left;
  font: inherit;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  transition: border-color .15s, background .15s;
}
.impl-kind span {
  display: block;
  margin-top: 4px;
  font-size: 11px;
  font-weight: 400;
  color: var(--muted);
}
.impl-kind.on {
  border-color: var(--primary);
  background: var(--primary-soft);
  color: var(--primary);
}
.impl-kind.on span { color: color-mix(in srgb, var(--primary) 65%, var(--muted)); }
.impl-kind-tip {
  margin: 10px 0 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--primary) 8%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--primary) 22%, var(--line));
  font-size: 12px;
  line-height: 1.45;
}
.impl-inline-2 {
  display: grid;
  grid-template-columns: minmax(140px, 0.8fr) minmax(0, 1.2fr);
  gap: 12px;
  margin-top: 12px;
}
.impl-focus .impl-label + .impl-label { margin-top: 12px; }
.impl-more {
  grid-column: 1 / -1;
  border-top: 1px solid var(--line);
  padding-top: 8px;
}
.impl-more > summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  padding: 10px 0;
  user-select: none;
}
.impl-more > summary::-webkit-details-marker { display: none; }
.impl-more > summary::before {
  content: "";
  width: 6px;
  height: 6px;
  border-right: 2px solid var(--muted);
  border-bottom: 2px solid var(--muted);
  transform: rotate(-45deg);
  transition: transform .15s;
}
.impl-more[open] > summary::before { transform: rotate(45deg); }
.impl-more > summary span {
  display: inline-grid;
  place-items: center;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  background: var(--bg);
}
.impl-more-hint { margin: 0 0 12px; }
.impl-qe-list { display: flex; flex-direction: column; gap: 14px; }
.impl-qe-group { display: flex; flex-direction: column; gap: 10px; }
.impl-qe-grouphead {
  font-size: 13px;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.02em;
}
.impl-qe-empty { margin: 0; }
.impl-qe-item {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}
.impl-qe-item-num {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
  background: var(--bg);
}
.impl-qe-item-body { min-width: 0; }
.impl-qe-item-body .impl-inline-2 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: 10px;
}
@media (max-width: 980px) {
  .impl-shell { grid-template-columns: 1fr; }
  .impl-focus { grid-column: auto; grid-row: auto; }
}
@media (max-width: 860px) {
  .impl-grid-3,
  .impl-modes,
  .impl-q-grid,
  .impl-kinds,
  .impl-inline-2,
  .impl-qe-item-body .impl-inline-2 { grid-template-columns: 1fr; }
}

                         
.board-ctl { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.board-ctl-btn { appearance:none; border:1px solid var(--primary); background:var(--primary); color:#fff; font:inherit; font-size:14px; font-weight:600; padding:9px 16px; border-radius:9px; cursor:pointer; }
.board-ctl-btn.ghost { background:transparent; color:var(--primary); }
.board-ctl-btn.ghost.danger { color:var(--color-error); border-color:var(--color-error); }
.board-ctl-btn.ghost.danger:hover { background:color-mix(in srgb,var(--color-error) 10%,transparent); }
.board-ctl-btn:disabled { opacity:.6; cursor:default; }
                                        
.pres-head-right { display:flex; align-items:center; justify-content:flex-end; gap:14px; flex-wrap:wrap; }
                             
.board-ctl-icon {
  appearance:none; position:relative;
  width:44px; height:44px; border-radius:8px;
  border:1px solid var(--line); background:transparent; color:var(--ink);
  display:inline-flex; align-items:center; justify-content:center;
  cursor:pointer; transition:background .15s ease, border-color .15s ease;
}
.board-ctl-icon svg { width:21px; height:21px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.board-ctl-icon:hover { background:color-mix(in srgb, var(--ink) 8%, transparent); border-color:var(--ink); }
.board-ctl-icon:disabled { opacity:.55; cursor:default; }
.board-ctl-icon.danger { color:var(--color-error); border-color:var(--color-error); }
.board-ctl-icon.danger:hover { background:color-mix(in srgb, var(--color-error) 12%, transparent); }
.board-ctl-icon .badge {
  position:absolute; top:-7px; right:-7px;
  min-width:19px; height:19px; padding:0 5px;
  border-radius:8px; background:var(--primary); color:#fff;
  font-size:11px; font-weight:700; line-height:19px; text-align:center;
}
.board-sep { flex:0 0 auto; width:1px; height:28px; background:var(--line); opacity:.55; }
.board-tools { display:flex; align-items:center; gap:8px; }
.board-count { text-align:right; line-height:1.15; }
/* 匿名视图提示条：只说清「现在看不到回答墙」的原因，不用大色块打扰投屏 */
.board-scope-hint {
  margin-top:8px; max-width:340px; text-align:right;
  font-size:12px; line-height:1.5; color:var(--muted, var(--color-neutral));
}
.board-scope-hint[hidden] { display:none; }
                        
.reply-sec-head { display:flex; align-items:baseline; gap:10px; margin:0 0 10px; }
.reply-sec-title { font-size:21px; font-weight:700; color:var(--ink); }
.reply-sec-head .sub { font-size:13px; color:var(--muted); }

                                             
.impl-modal-sheet.impl-modal-wide { width: min(1180px, 100%); }
.impl-pk-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.impl-pk-col { min-width: 0; }
.impl-pk-col-prev { border-left: 1px dashed var(--line, #e3d9d9); padding-left: 18px; }
.impl-bulk-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin: 10px 0 8px; }
.impl-bulk-titles { min-width: 0; }
.impl-bulk-titles .impl-mini-label { margin: 0 0 2px; }
.impl-bulk-titles .sub { margin: 0; font-size: 12px; line-height: 1.5; }
.impl-bulk-ta { width: 100%; font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; font-size: 13px; line-height: 1.7; resize: vertical; }
.impl-bulk-msg { margin: 6px 0 0; min-height: 16px; }
.impl-pk-list { display: flex; flex-direction: column; gap: 10px; margin: 8px 0 10px; max-height: 46vh; overflow: auto; }
.impl-pk-head-tools { display: inline-flex; align-items: center; gap: 8px; }
.impl-pk-type { font: inherit; font-size: 12px; padding: 3px 6px; border-radius: 7px; border: 1px solid var(--line, #e3d9d9); background: var(--surface, #fff); color: inherit; }
.impl-pk-tag { font-size: 11px; color: var(--muted, #8a7f7f); }
.impl-pk-ansrow { display: flex; align-items: flex-start; gap: 10px; margin-top: 6px; }
.impl-pk-ansrow .impl-mini-label { margin-top: 6px; white-space: nowrap; }
.impl-pk-ans-wrap { flex: 1; min-width: 0; }
.impl-pk-ans { font: inherit; font-size: 13px; padding: 5px 8px; border-radius: 8px; border: 1px solid var(--line, #e3d9d9); background: var(--surface, #fff); color: inherit; min-width: 88px; }
.impl-pk-chks { display: flex; flex-wrap: wrap; gap: 8px 14px; }
.impl-pk-chk { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; cursor: pointer; }
.impl-pk-chk input { width: 15px; height: 15px; }
@media (max-width: 980px) {
  .impl-pk-wrap { grid-template-columns: 1fr; }
  .impl-pk-col-prev { border-left: 0; padding-left: 0; border-top: 1px dashed var(--line, #e3d9d9); padding-top: 16px; }
}

                                         
@media (min-width: 1101px) {
  .pres-stage { grid-template-columns: minmax(0, 1fr) minmax(260px, 340px); gap: 20px; }
}
.space-board .pres-head { align-items: center; gap: 20px; }
.space-board .brand { font-size: 30px; line-height: 1.25; }
.space-board .pres-head .muted { font-size: 17px; }
.space-board .count { font-size: 44px; line-height: 1.1; }
.space-board .qb-label { font-size: 17px; padding: 3px 16px; }
.space-board .qb-text { font-size: 30px; line-height: 1.45; }
.space-board .qb-material { font-size: 17px; }
.space-board .qb-image { max-height: 240px; max-width: min(100%, 420px); }
.insight.insight-compact { width: 100%; max-width: 340px; padding: 14px 16px; }
.space-board .insight.insight-compact .ai-line { font-size: 18px; line-height: 1.45; }
.space-board .insight.insight-compact .ai-kicker { font-size: 12px; }
.space-board .insight h3 { font-size: 17px; }
.space-board .reply-stats { padding: 14px 18px; gap: 16px; }
.space-board .rs-title { font-size: 17px; }
.space-board .rs-title b { font-size: 21px; }
.space-board .rs-legend { font-size: 15px; }
.space-board .rv-tab { font-size: 16px; padding: 8px 18px; }
.space-board .rc-name { font-size: 18px; }
.space-board .rc-text { font-size: 18px; }
.space-board .rl-text { font-size: 18px; }
.space-board .camp h3 { font-size: 21px; }
.space-board .fd-title { font-size: 16px; }
.space-board .fd-label { font-size: 16px; }
.space-board .muted { font-size: 16px; }
.space-board .board-ctl-btn { font-size: 15px; padding: 10px 18px; }

                                
.qr-overlay {
  position: fixed; inset: 0; z-index: 90;
  display: grid; place-items: center;
  background: #1e293b;
  animation: qr-in 220ms ease-out;
}
@keyframes qr-in { from { opacity: 0; transform: scale(.98) } to { opacity: 1; transform: none } }
.qr-overlay-card {
  position: relative; text-align: center;
  background: var(--color-surface, #171b24);
  border: 1px solid var(--color-border, #2a2e38);
  border-radius: 8px;
  padding: 34px 46px 30px;
  box-shadow: 0 34px 90px rgba(0, 0, 0, .55);
  width: min(560px, 92vw);
}
.qr-overlay-close {
  position: absolute; top: 14px; right: 14px;
  width: 40px; height: 40px; border-radius: 8px;
  border: 1px solid var(--color-border, #2a2e38);
  background: transparent; color: var(--color-text-secondary, #9aa4b8);
  cursor: pointer; display: grid; place-items: center;
}
.qr-overlay-close:hover { background: var(--color-surface-hover, rgba(255,255,255,.06)); }
.qr-overlay-close svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 2.1; stroke-linecap: round; }
.qr-overlay-kicker { margin: 0 0 4px; font-size: 15px; letter-spacing: .06em; color: var(--color-text-secondary, #9aa4b8); }
.qr-overlay-title { margin: 0 0 18px; font-size: 34px; font-weight: 800; color: var(--color-text-primary, var(--color-secondary)); }
.qr-overlay-img { display: block; margin: 0 auto; width: min(340px, 46vh); height: auto; background: #fff; border-radius: 8px; padding: 10px; }
.qr-overlay-code { margin: 18px 0 2px; font-size: 19px; color: var(--color-text-secondary, #9aa4b8); }
.qr-overlay-code b { font-size: 40px; letter-spacing: .12em; color: var(--color-text-primary, var(--color-secondary)); font-variant-numeric: tabular-nums; }
.qr-overlay-url { margin: 6px 0 0; font-size: 14px; color: var(--color-text-secondary, #9aa4b8); word-break: break-all; }
.qr-overlay .qr-countdown { margin-top: 16px; }
.qr-overlay .qr-ring { width: 62px; height: 62px; }
.qr-overlay .qr-ring-num { font-size: 24px; }
.qr-overlay .qr-skip { margin-top: 4px; font-size: 16px; padding: 10px 22px; border-radius: 8px; border: 1px solid var(--color-border, #2a2e38); background: transparent; color: var(--color-text-primary, var(--color-secondary)); cursor: pointer; }
.qr-overlay .qr-skip:hover { background: var(--color-surface-hover, rgba(255,255,255,.06)); }
@media (prefers-reduced-motion: reduce) { .qr-overlay { animation: none } }

                           
body.board, .space-board { font-size: 17px; }
.space-board .rv-empty h3 { font-size: 22px; }
.space-board .pager, .space-board .pg-btn { font-size: 15px; }

                               
.pk-opt.picked { border-color: var(--color-primary, var(--color-primary)); background: color-mix(in srgb, var(--color-primary, var(--color-primary)) 10%, #fafbff); }
.pk-opt.picked .pok { background: var(--color-primary, var(--color-primary)); color: #fff; }
.pk-qtag { margin-left: 8px; font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 8px; background: var(--color-primary-soft, var(--color-primary-soft)); color: var(--color-primary, var(--color-primary)); }
.pk-multifoot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 4px; }
.pk-multifoot .btn { padding: 10px 20px; border-radius: 8px; border: none; background: var(--color-primary, var(--color-primary)); color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; }
.pk-multifoot .btn:disabled { opacity: .5; cursor: default; }

                                             
.classroom-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(264px, 1fr));
  gap: 16px;
  align-items: stretch;
}
.class-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--card);
}
.class-card-top {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}
.class-pick { display: inline-flex; align-items: center; }
.class-pick input { width: 16px; height: 16px; cursor: pointer; }
.class-source { font-size: 12px; padding: 3px 10px; margin: 0; }
.class-card .trash-btn { position: static; margin-left: auto; }
.class-card-title { margin: 2px 0; font-size: 16px; font-weight: 650; }
.class-card-actions { display: flex; gap: 8px; margin-top: auto; padding-top: 10px; }
.class-card-actions .btn { flex: 0 0 auto; }
.draft-grid { margin-top: 12px; margin-bottom: 22px; }
.draft-card { border-color: color-mix(in srgb, var(--primary) 28%, var(--line)); background: color-mix(in srgb, var(--primary-soft) 28%, var(--card)); }
.draft-score { margin-left: auto; font-size: 12px; padding: 3px 9px; color: var(--primary); }
.six-step-gate { margin: 16px 0 22px; padding: 16px; border: 1px solid var(--line); border-radius: var(--r); background: var(--surface); }
.six-step-gate-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.six-step-gate-head h3 { margin: 0 0 4px; font-size: 17px; }
.six-step-score.is-good { color: var(--ok, #16803c); }
.six-step-score.is-partial { color: var(--warn, #a15c00); }
.six-step-score.is-gap { color: var(--danger, var(--color-error)); }
.six-step-gate-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.six-step-card { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 11px 12px; text-align: left; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink); cursor: pointer; font: inherit; }
.six-step-card:hover { border-color: var(--primary); }
.six-step-card.is-good { border-left: 4px solid var(--ok, #16803c); }
.six-step-card.is-partial { border-left: 4px solid var(--warn, #a15c00); }
.six-step-card.is-gap { border-left: 4px solid var(--danger, var(--color-error)); }
.six-step-index { display: grid; place-items: center; width: 25px; height: 25px; flex: 0 0 25px; border-radius: 8px; background: var(--primary-soft); color: var(--primary); font-size: 12px; font-weight: 700; }
.six-step-copy { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.six-step-copy b { font-size: 13px; }
.six-step-copy small { overflow: hidden; color: var(--muted); font-size: 12px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.six-step-arrow { margin-left: auto; color: var(--muted); }
@media (max-width: 760px) { .six-step-gate-grid { grid-template-columns: 1fr; } }

           
.bulk-bar {
  position: sticky;
  top: 8px;
  z-index: 9;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 14px;
  margin-bottom: 14px;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--surface);
}
.bulk-select-all { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; }
.bulk-select-all input { width: 16px; height: 16px; cursor: pointer; }
#bulkCount { margin-right: auto; }
.btn.danger { background: var(--danger); color: #fff; border-color: var(--danger); }
.btn.danger:hover:not(:disabled) { filter: brightness(0.95); }
.btn.danger:disabled { opacity: .55; cursor: not-allowed; }

          
.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 70;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(3px);
}
.modal {
  position: relative;
  width: min(620px, calc(100vw - 32px));
  max-height: calc(100dvh - 48px);
  overflow-y: auto;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: 0 24px 70px rgba(15, 23, 42, 0.24);
  padding: 24px;
  animation: dialog-in .18s ease-out both;
}
.modal-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.modal-close:hover { background: var(--bg); color: var(--ink); }
.detail-list { margin: 12px 0 0; display: block; }
.detail-row {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: 12px;
  padding: 9px 0;
  border-bottom: 1px dashed var(--line);
}
.detail-row dt { color: var(--muted); font-size: 14px; }
.detail-row dd { margin: 0; font-size: 14px; }
.detail-modal-actions { display: flex; justify-content: flex-end; margin-top: 18px; }

                                   
.ver-head { font-size: 17px; font-weight: 600; margin-bottom: 4px; }
.ver-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; }
.ver-card b { font-size: 15px; }
.ver-card .btn { margin-top: 6px; align-self: flex-start; }

.iv-card {
  position: relative;
  width: min(1120px, calc(100vw - 32px));
  max-height: calc(100dvh - 48px);
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: 0 24px 70px rgba(15, 23, 42, 0.24);
  overflow: hidden;
}
.iv-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.iv-head b { font-size: 16px; }
.iv-body { display: grid; grid-template-columns: 320px minmax(0, 1fr); min-height: 0; }
.iv-tree { border-right: 1px solid var(--line); overflow-y: auto; padding: 12px 10px; max-height: calc(100dvh - 110px); }
.iv-detail { overflow-y: auto; padding: 16px 20px; max-height: calc(100dvh - 110px); }

.tree-book { margin-bottom: 12px; }
.tree-book-h { font-weight: 600; font-size: 14px; color: var(--ink); margin: 2px 0 4px; }
.tree-unit { margin: 0 0 8px 4px; }
.tree-unit-h { font-size: 12px; color: var(--muted); margin: 2px 0; }
.tree-lesson { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 5px 8px; border-radius: 8px; cursor: pointer; font-size: 13px; }
.tree-lesson:hover { background: var(--bg); }
.tree-lesson.on { background: var(--primary-soft, #fce7ed); color: var(--primary); }
.tree-lesson-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tree-lesson-n { flex: none; font-size: 11px; color: var(--muted); background: var(--bg); border-radius: 8px; padding: 0 7px; }

.detail-lessons { font-size: 16px; margin-bottom: 10px; }
.iss-list { display: grid; gap: 8px; }
.iss-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 9px 11px; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; background: var(--surface); }
.iss-row:hover { border-color: var(--primary); background: var(--primary-soft, #fce7ed); }
.iss-head { font-size: 16px; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.arch { margin: 14px 0; }
.arch-h { font-weight: 600; font-size: 14px; margin-bottom: 6px; color: var(--ink); }
table.sub-issues { width: 100%; border-collapse: collapse; font-size: 13px; }
table.sub-issues th, table.sub-issues td { border: 1px solid var(--line); padding: 7px 9px; text-align: left; vertical-align: top; }
table.sub-issues th { background: var(--bg); color: var(--muted); font-weight: 600; }
.warn { color: var(--color-warning); background: rgba(180, 83, 9, .08); border: 1px solid rgba(180, 83, 9, .2); border-radius: 8px; padding: 8px 10px; }

@media (max-width: 720px) {
  .iv-body { grid-template-columns: 1fr; }
  .iv-tree { max-height: 38vh; border-right: 0; border-bottom: 1px solid var(--line); }
  .iv-detail { max-height: none; }
}
body.modal-open { overflow: hidden; }

@media (max-width: 640px) {
  .classroom-grid { grid-template-columns: 1fr; }
  .detail-row { grid-template-columns: 1fr; gap: 2px; }
}

                     
.ped-box{border:1px solid var(--color-border);border-radius:8px;padding:13px;margin-top:14px;background:var(--color-surface)}
.ped-part{margin-top:10px;padding-top:10px;border-top:1px dashed var(--color-border)}
.ped-part b{font-size:13px;color:var(--color-primary)}
.ped-dq{font-weight:600;margin:6px 0;line-height:1.55}
.ped-flow{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:6px}
.ped-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;border:1px solid var(--color-border-strong);border-radius:6px;padding:3px 10px;background:var(--color-background)}
.ped-chip i{font-style:normal;display:inline-flex;width:16px;height:16px;border-radius:8px;background:var(--color-primary);color:#fff;font-size:11px;align-items:center;justify-content:center}
.ped-flow em{font-style:normal;color:var(--color-text-secondary);font-size:11px}
.ped-part p{margin:5px 0;font-size:13px;line-height:1.55}
.ped-look{color:var(--color-text-secondary)}
.ped-bq{font-weight:600}
.ped-tline{font-style:italic;background:var(--color-primary-soft);border-left:3px solid var(--color-primary);padding:7px 11px;border-radius:0 8px 8px 0}               .ped-mask{position:fixed;inset:0;background:rgba(8,10,16,.6);backdrop-filter:blur(4px);z-index:1200;display:flex;align-items:center;justify-content:center;padding:30px}
.ped-sheet{width:min(760px,96vw);max-height:90vh;display:flex;flex-direction:column;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.35)}
.ped-head{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;border-bottom:1px solid var(--color-border)}
.ped-head h3{margin:0;font-size:16px}
.ped-x{width:32px;height:32px;border:none;border-radius:8px;background:transparent;color:var(--color-text-secondary);font-size:20px;cursor:pointer}
.ped-x:hover{background:var(--color-surface-hover)}
.ped-mbody{overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:14px}
.ped-sec{border:1px solid var(--color-border);border-radius:8px;padding:14px;background:var(--color-background)}
.ped-sec h4{margin:0 0 10px;font-size:14px}
.ped-sec label{display:block;font-size:12px;color:var(--color-text-secondary);margin-bottom:9px}
.ped-sec input,.ped-sec select,.ped-sec textarea{margin-top:5px}
.ped-beat-e{border:1px solid var(--color-border);border-radius:8px;padding:10px;margin-bottom:9px;background:var(--color-surface)}
.ped-beat-eh{display:flex;align-items:center;gap:7px;margin-bottom:6px}
.ped-beat-eh i{font-style:normal;display:inline-flex;width:19px;height:19px;border-radius:8px;background:var(--color-primary);color:#fff;font-size:11px;align-items:center;justify-content:center}
.ped-beat-e textarea{margin-bottom:6px}
.ped-foot{display:flex;justify-content:flex-end;gap:10px;padding:13px 20px;border-top:1px solid var(--color-border)}
.ped-foot .btn{width:auto;padding:9px 20px}

                     
.synth-sub{border:1px solid var(--color-border);border-radius:8px;padding:10px 12px;margin:0 0 11px}
.synth-sub legend{font-size:12px;font-weight:700;color:var(--color-primary);padding:0 6px}
.synth-sub label{margin-bottom:8px}
.synth-tf{margin:7px 0;font-size:13px;line-height:1.55}
.synth-tf b{display:inline-block;font-size:11px;border-radius:6px;padding:1px 9px;margin-right:8px}
.synth-tf b{color:#34d399;background:rgba(52,211,153,.14)}
.synth-tf b[style]{background:transparent}
.synth-meta-prompts{margin:8px 0;padding-left:20px}
.synth-meta-prompts li{margin:5px 0;font-size:13px;line-height:1.55}

                                         
.aplan-unit-tabs-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:2px; }
.aplan-unit-tabs-head b { font-size:13px; font-weight:700; color:var(--muted); letter-spacing:.04em; }
.aplan-unit-tabs-total { font-size:12px; color:var(--muted); }
.aplan-unit-tabs-row { display:flex; gap:8px; flex-wrap:wrap; }
.aplan-unit-tab { min-width:138px; }
.aplan-unit-tab-meta { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.aplan-unit-tab-stats { font-size:11px; color:var(--muted); white-space:nowrap; }
.aplan-unit-tab.on .aplan-unit-tab-stats { color:var(--primary); font-weight:600; }

.aplan-split { display:grid; grid-template-columns:1fr; gap:16px; align-items:start; }
.aplan-col { min-width:0; display:flex; flex-direction:column; gap:12px; }
.aplan-col-mat { position:sticky; top:12px; max-height:calc(100vh - 96px); overflow-y:auto; padding-right:2px; scrollbar-width:thin; }
.aplan-tasks-head { justify-content:space-between; }
.aplan-tasks-count { font-size:12px; color:var(--muted); font-weight:650; white-space:nowrap; }
.aplan-tasks { gap:10px; }
.atask-order { flex:none; font-size:12px; font-weight:700; color:var(--primary); background:var(--primary-soft); padding:2px 9px; border-radius:6px; }
.aplan-mat-card { transition: border-color .15s ease, box-shadow .15s ease; }
.aplan-mat-card:hover { border-color:var(--primary); box-shadow:0 2px 10px rgba(0,0,0,.07); }
.aplan-context, .aplan-opening { box-shadow:0 1px 2px rgba(0,0,0,.03); }
.aplan-unitinfo h3 { font-size:17px; }
.aplan-soft-check ol { gap:3px; }
.aplan-soft-check li { font-size:13px; }
@media (max-width:860px) {
  .aplan-split { grid-template-columns:1fr; }
  .aplan-col-mat { position:static; max-height:none; overflow:visible; }
}

                         
.atask-design-row { display:flex; align-items:center; gap:10px; margin:10px 0 4px; }
.atask-design-row .btn { flex:none; }
.atask-design-summary { font-size:12px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

                                           
.scx-main-issue {
  display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
  padding:10px 14px; border:1px solid color-mix(in srgb, var(--primary) 22%, var(--line));
  border-radius:8px; background:var(--primary-soft);
}
.scx-main-issue span {
  flex:none; font-size:12px; font-weight:700; color:var(--primary); letter-spacing:.5px;
}
.scx-main-issue b { font-size:15px; line-height:1.5; color:var(--color-text-primary); font-weight:650; }
.scx-tabwrap { border:none; border-radius:0; overflow:visible; background:transparent; }
.scx-tabstrip {
  display:flex; overflow-x:auto; overflow-y:hidden; scrollbar-width:thin;
  background:transparent; border-bottom:1px solid var(--line);
}
.scx-tabchip {
  appearance:none; cursor:pointer; font:inherit; text-align:left;
  flex:none; display:flex; align-items:baseline; gap:6px;
  padding:9px 16px 12px; border:none; border-right:1px solid color-mix(in srgb, var(--line) 55%, transparent);
  border-radius:9px 9px 0 0;
  background:transparent; color:var(--muted); font-size:17px; font-weight:650; line-height:1.35;
  white-space:nowrap;
}
.scx-tabchip:last-child { border-right:none; }
.scx-tabchip:hover { background:color-mix(in srgb, var(--primary) 6%, transparent); color:var(--primary); }
.scx-tabchip.on { background:var(--surface); color:var(--primary); font-weight:700; box-shadow:inset 0 3px 0 var(--primary); }
.scx-tabidx { flex:none; font-weight:700; color:var(--primary); white-space:nowrap; }
.scx-tabchip:not(.on) .scx-tabidx { color:var(--muted); }
.scx-tablabel { white-space:nowrap; }
.scx-tabmiss { flex:none; margin-left:6px; padding:1px 7px; border-radius:999px; background:color-mix(in srgb, var(--warn) 12%, transparent); color:var(--warn); font-size:12px; font-weight:600; align-self:center; }
.scx-tabchip-add { padding:9px 14px 12px; color:var(--muted); font-size:15px; }
.scx-tabpanel { padding:0 0 6px; }
.scx-subslots { display:flex; flex-direction:column; gap:14px; }
.scx-subhead { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:12px 0 4px; border-bottom:1px solid var(--line); margin-bottom:6px; }
.scx-subhead-copy b { font-size:16px; line-height:1.5; }
.scx-subhead-copy .sub { margin:2px 0 0; }
.scx-subhead-actions { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.scx-arch-overview { margin-top:16px; border-top:1px solid var(--line); padding-top:6px; }
.scx-arch-overview > summary { cursor:pointer; list-style:none; display:flex; align-items:baseline; gap:10px; padding:10px 0; }
.scx-arch-overview > summary::-webkit-details-marker { display:none; }
.scx-arch-overview > summary b { font-size:15px; }
.scx-arch-overview > summary::before { content:"▸"; color:var(--muted); font-size:12px; transition:transform .15s ease; }
.scx-arch-overview[open] > summary::before { transform:rotate(90deg); }
.scx-overview-mainlines { display:flex; gap:10px 32px; flex-wrap:wrap; padding:10px 0; border-bottom:1px solid var(--line); }
.scx-overview-mainlines .eyebrow { display:block; }
.scx-overview-mainlines b { font-size:14px; line-height:1.6; }
.scx-overview-actions { display:flex; gap:8px; flex-wrap:wrap; padding:10px 0; }

                       
.scx-main-head .scx-main-issue-title { font-size: 22px; font-weight: 700; line-height: 1.4; margin: 0; }
.scx-main-context { margin: 2px 0 0; font-size: 15px; line-height: 1.5; color: var(--muted); }

                
.scx-slice-head-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.scx-swap-group { margin-top:14px; }
.scx-swap-group-name { font-size:12px; font-weight:700; color:var(--muted); margin-bottom:6px; }
.scx-swap-opt {
  display:flex; flex-direction:column; gap:2px; width:100%;
  padding:10px 12px; margin-bottom:7px;
  border:1px solid var(--line); border-radius:9px; background:var(--surface);
  cursor:pointer; text-align:left; font:inherit;
}
.scx-swap-opt:hover:not(:disabled) { border-color:var(--primary); }
.scx-swap-opt.on, .scx-swap-opt:disabled { opacity:.55; cursor:default; }
.scx-swap-opt b { font-size:13px; line-height:1.4; color:var(--color-text-primary); }
.scx-swap-opt small { font-size:12px; color:var(--muted); }

                                       
.aplan-topbar.scx-main-head { margin-bottom: 12px; }
.aplan-head-actions { align-items: center; gap: 10px; flex-wrap: wrap; }
.aplan-head-actions .aplan-goal-rail { margin: 0; }
.aplan-process { margin: 0 0 14px; }
.aplan-process-head { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.aplan-process-head b { font-size:15px; }
.aplan-process-head .sub { flex:1; }
.aplan-process-list { display:flex; flex-direction:column; gap:8px; }
.aplan-process-item {
  appearance:none; cursor:pointer; font:inherit; text-align:left;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:10px 14px; border:1px solid var(--line); border-radius:9px; background:var(--surface);
}
.aplan-process-item:hover { border-color:var(--primary); }
.aplan-process-item.on { border-color:var(--primary); background:var(--primary-soft); box-shadow:inset 3px 0 0 var(--primary); }
.aplan-process-item.warn:not(.on) { border-color:color-mix(in srgb, var(--primary) 35%, var(--line)); }
.aplan-process-title { font-size:14px; font-weight:650; line-height:1.4; color:var(--color-text-primary); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
.aplan-process-item.on .aplan-process-title { color:var(--primary); }
.aplan-process-meta { display:flex; align-items:center; gap:12px; font-size:12px; color:var(--muted); flex:none; }
.aplan-field { display:flex; flex-direction:column; gap:6px; margin-top:12px; }
.aplan-field span { font-size:13px; font-weight:600; color:var(--color-text-primary); }
.aplan-field input, .aplan-field select { font:inherit; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--color-text-primary); }

                                      
.aplan-process-item-wrap { display:flex; flex-direction:column; min-width:0; }
.aplan-process-item-wrap.open > .aplan-process-item { border-bottom-left-radius:0; border-bottom-right-radius:0; border-bottom:none; }
.aplan-process-item { gap:10px; }
.aplan-process-idx {
  flex:none; width:22px; height:22px; border-radius:5px;
  background:var(--primary); color:#fff; font-size:12px; font-weight:700;
  display:flex; align-items:center; justify-content:center; line-height:1;
}
.aplan-process-item.warn:not(.on) .aplan-process-idx { background:#d97706; }
.aplan-process-chev { flex:none; font-size:13px; color:var(--muted); transition:transform .15s ease; }
.aplan-process-item-wrap.open .aplan-process-chev { color:var(--primary); }
.aplan-process-detail {
  border:1px solid var(--line); border-top:none; border-radius:0 0 9px 9px;
  padding:12px 14px 6px; background:var(--surface);
}
.aplan-process-detail .aplan-unit { margin:0; }

                               
.aplan-process-head { gap:10px; }
.aplan-process-head .sub { flex:none; margin-right:2px; }
.aplan-process-spacer { flex:1; }
.aplan-gen-icon {
  appearance:none; cursor:pointer; font:inherit;
  width:30px; height:30px; flex:none; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--line); border-radius:8px; background:var(--surface);
  color:var(--primary); font-size:17px; line-height:1;
}
.aplan-gen-icon:hover { border-color:var(--primary); background:var(--primary-soft); }
.aplan-process-head .aplan-viewseg { flex:none; }
             
.aplan-process-item { justify-content:flex-start; }
.aplan-process-title { text-align:left; }
.aplan-process-meta { margin-left:auto; }

                                 
.aplan-process-type {
  flex:none; font-size:12px; line-height:1; padding:4px 8px; border-radius:8px;
  background:var(--primary-soft); color:var(--primary); font-weight:600; white-space:nowrap;
}
.aplan-process-handle {
  flex:none; font-size:14px; color:var(--muted); letter-spacing:1px; cursor:grab;
  padding:0 2px; user-select:none;
}
.aplan-process-item[data-drag-custom] { cursor:default; }
.aplan-process-item.dragging { opacity:.45; }
.aplan-process-item-wrap.drag-before > .aplan-process-item { border-top:2px solid var(--primary); }

                                           
.aplan-unit-note { border:1px solid var(--line); border-radius:8px; padding:12px 14px; background:var(--surface); }
.aplan-note-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.aplan-note-grid .aplan-note-key { grid-column:1 / -1; }
.aplan-note-grid label { display:flex; flex-direction:column; gap:6px; }
.aplan-goal-row { display:flex; align-items:center; flex-wrap:wrap; gap:8px 24px; margin-top:12px; padding-top:10px; border-top:1px solid var(--line); }
.aplan-goal-label { font-size:13px; font-weight:600; }
.aplan-goal-check { display:inline-flex; align-items:center; gap:6px; font-size:14px; margin:0; }
.aplan-goal-check input { width:auto; min-width:16px; height:auto; margin:0; }
.aplan-cognition { padding:0 0 14px; margin-bottom:12px; border-bottom:1px solid var(--line); }
.aplan-cognition .aplan-board-head { margin-bottom:10px; }
.aplan-cognition .aplan-note-grid textarea { min-height:56px; }
.aplan-note-grid label > span { font-size:13px; font-weight:600; }
.aplan-note-grid label > span .sub { font-weight:400; margin-left:6px; }
.aplan-note-grid textarea { min-height:64px; }
.aplan-board-design, .aplan-homework { border:1px solid var(--line); border-radius:8px; padding:12px 14px; background:var(--surface); }
.aplan-board-head { display:flex; align-items:baseline; gap:8px; margin-bottom:10px; }
.aplan-board-head b { font-size:14px; }
.aplan-board-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; }
.aplan-homework-grid { grid-template-columns:220px 1fr; }
.aplan-board-grid label { display:flex; flex-direction:column; gap:6px; }
.aplan-board-grid label > span { font-size:13px; font-weight:600; }
.aplan-board-grid textarea { min-height:56px; }
.aplan-recap-row { display:flex; align-items:center; gap:10px; margin-top:12px; padding-top:10px; border-top:1px dashed var(--line); }
.aplan-field { display:flex; flex-direction:column; gap:6px; margin-bottom:12px; }
.aplan-field > span { font-size:13px; font-weight:600; }
.aplan-field textarea { min-height:88px; }

                             
.aplan-recap-sheet { width:min(880px,100%); max-height:84vh; overflow:auto; }
.aplan-recap-task { margin-top:8px; font-size:13px; color:var(--text); background:#f7faff; border-radius:6px; padding:8px 10px; }
.aplan-recap-task b { color:var(--primary); }
.aplan-recap-steps { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.aplan-recap-steps > li { display:grid; grid-template-columns:108px 1fr; gap:12px; align-items:start; padding:12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.aplan-recap-label { font-size:13px; font-weight:700; color:var(--primary); padding-top:2px; }
.aplan-recap-evidence { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.aplan-recap-evidence li { font-size:13px; line-height:1.6; }
.aplan-recap-evidence li b { display:block; margin-bottom:2px; }
.aplan-recap-evidence li span { display:block; color:var(--muted,var(--color-neutral)); }

                          
.asset-hub { display:flex; flex-direction:column; gap:16px; }
.asset-hub-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.asset-hub-title { font-size:22px; margin:2px 0; }
.asset-actions { display:flex; gap:8px; }
.asset-viewseg { display:inline-flex; gap:4px; padding:3px; border:1px solid var(--line); border-radius:9px; background:var(--surface); align-self:flex-start; }
.asset-viewseg button { appearance:none; cursor:pointer; font:inherit; font-size:13px; padding:6px 14px; border:none; border-radius:7px; background:transparent; color:var(--muted,var(--color-neutral)); }
.asset-viewseg button.on { background:var(--primary); color:#fff; font-weight:600; }
.asset-body { min-height:200px; }
.asset-doc { border:1px solid var(--line); border-radius:8px; padding:26px 30px; background:var(--surface); box-shadow:0 1px 3px rgba(0,0,0,.04); }
.asset-doc h1 { font-size:21px; margin:0 0 4px; }
.asset-doc .doc-meta { color:var(--muted,var(--color-neutral)); font-size:13px; margin-bottom:14px; }
.doc-block { margin-top:18px; }
.doc-block h2 { font-size:15px; border-bottom:1px solid var(--line); padding-bottom:6px; margin-bottom:10px; }
.doc-block h3 { font-size:14px; margin:14px 0 6px; }
.doc-issue { font-size:15px; font-weight:700; }
.doc-ul { list-style:none; margin:0; padding:0; }
.doc-ul li { font-size:13px; margin:8px 0; line-height:1.6; }
.doc-ul li span { display:block; color:var(--muted,var(--color-neutral)); }
.doc-task { margin:10px 0; padding-left:10px; border-left:3px solid var(--line); }
.doc-task b { font-size:13px; }
.doc-task div { margin:4px 0; }
.doc-task em { font-style:normal; color:var(--primary); font-size:12px; margin-right:6px; }
.doc-task ul { margin:2px 0; padding-left:18px; }
.doc-task li { font-size:13px; color:#3a4556; }
.doc-dur { color:var(--muted,var(--color-text-tertiary)); font-size:12px; margin-left:8px; }
.doc-note { color:var(--muted,var(--color-neutral)); font-size:13px; margin:8px 0; }
.doc-note span { display:block; }
.doc-key { background:#f5f7fa; border-radius:6px; padding:6px 10px; font-size:13px; margin:8px 0; }
.doc-opening { font-size:13px; }
.asset-slides { display:flex; flex-direction:column; gap:10px; }
.slide-card { display:flex; align-items:center; gap:12px; border:1px solid var(--line); border-radius:8px; padding:12px 14px; background:var(--surface); }
.slide-no { flex:none; width:26px; height:26px; border-radius:7px; background:var(--primary); color:#fff; font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.slide-card b { font-size:14px; }
.slide-card p { font-size:13px; color:var(--muted,var(--color-neutral)); margin:2px 0 0; }
.asset-reflection { border:1px solid var(--line); border-radius:8px; padding:22px 24px; background:var(--surface); }
.asset-reflection h2 { font-size:16px; margin:0 0 6px; }

                             
.aplan-total-score { font-size:12px; font-weight:700; color:var(--primary); background:#eef4ff; border:1px solid #d6e4ff; border-radius:6px; padding:2px 10px; flex:none; }
.aplan-score { font-size:12px; font-weight:700; color:var(--primary); }
.aplan-soft-top { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:6px; }
.aplan-soft-scores { display:flex; gap:14px; font-size:13px; color:var(--muted,var(--color-neutral)); }
.aplan-soft-scores b { font-size:15px; color:#111827; margin-left:2px; }
.aplan-soft-scores span + span::before { content:"·"; margin-right:14px; color:var(--color-border-strong); }
.aplan-soft-check > b { font-size:13px; }

.lesson-doc h1 { text-align:center; }
.ppt-stage { display:flex; align-items:center; gap:12px; margin:12px 0 4px; }
.ppt-nav { appearance:none; border:1px solid var(--line); background:#fff; border-radius:8px; width:40px; height:40px; font-size:22px; line-height:1; cursor:pointer; color:var(--primary,#1e5cbf); flex:none; }
.ppt-nav:hover { background:#f0f5ff; border-color:var(--primary,#1e5cbf); }
.ppt-page { flex:1; min-width:0; background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 4px 14px rgba(15,23,42,.07); aspect-ratio:16/9; display:flex; flex-direction:column; overflow:hidden; position:relative; }
.ppt-topbar { background: #1e5cbf; color:#fff; font-size:16px; font-weight:600; padding:12px 20px; flex:none; }
.ppt-body { flex:1; padding:16px 22px 26px; overflow:auto; }
.ppt-lead { color:#64748b; font-style:italic; margin:0 0 10px; font-size:14px; }
.ppt-line { margin:0 0 9px; font-size:15px; line-height:1.65; color:#1e293b; animation:pptIn .5s ease both; }
@keyframes pptIn { from { opacity:0; transform:translateY(8px) } to { opacity:1; transform:none } }
.ppt-chart { width:100%; max-width:600px; margin:6px auto 0; display:block; }
.ppt-pageno { position:absolute; right:14px; bottom:10px; font-size:12px; color:#94a3b8; }

.lesson-doc h1 { text-align:center; }
.asset-slides .slide-card { cursor:default; }
.asset-ppt-hint { margin-top:8px; font-size:12px; color:var(--color-neutral); }

.doc-table{width:100%;border-collapse:collapse;margin:8px 0 4px;font-size:13px;line-height:1.6}
.doc-table th,.doc-table td{border:1.5px solid #b0b8c7;padding:7px 9px;vertical-align:top;text-align:left}
.doc-table thead th{background:#f3f6fa;font-weight:600}
.doc-table .doc-dur{color:var(--color-text-tertiary);font-size:12px}

                          
.aplan-opening-voice-row { display:flex; align-items:flex-start; gap:8px; }
.aplan-opening-voice-row textarea { flex:1; min-height:48px; font-size:13px; }

                            
.aplan-unit-note { border:1px solid var(--line); border-radius:8px; background:var(--surface); overflow:hidden; }
.aplan-unit-note summary { cursor:pointer; font-size:13px; font-weight:600; padding:9px 14px; list-style:none; display:flex; align-items:center; gap:6px; user-select:none; }
.aplan-unit-note summary::before { content:"▸"; font-size:12px; color:var(--primary); transition:transform .15s; }
.aplan-unit-note[open] summary::before { transform:rotate(90deg); }
.aplan-unit-note summary .sub { font-weight:400; margin-left:2px; }
.aplan-unit-note[open] summary { border-bottom:1px dashed var(--line); }
.aplan-unit-note .aplan-note-grid { padding:12px 14px; }

                               
.aplan-intro-note { border:1px dashed var(--line); border-radius:8px; padding:14px; }
.aplan-intro-note .aplan-tasks-head { align-items:flex-start; }

                                     
.aplan-process-item { border-radius:6px; }
.aplan-process-item-wrap.open > .aplan-process-item { border-bottom-left-radius:0; border-bottom-right-radius:0; border-bottom:none; }
.aplan-process-detail {
  border:none; border-radius:0; padding:2px 2px 0;
  background:transparent;
}
.aplan-process-detail > .aplan-unit { gap:0; }
.aplan-process-detail .aplan-context,
.aplan-process-detail .aplan-opening,
.aplan-process-detail .aplan-col-task,
.aplan-process-detail .aplan-unit-note,
.aplan-process-detail .aplan-board-design,
.aplan-process-detail .aplan-homework,
.aplan-intro-note {
  border:none; border-radius:0; background:transparent;
  border-top:1px solid var(--line); padding:14px 2px;
}
.aplan-process-detail .aplan-context { margin-top:2px; }
.aplan-unit-note { border-top:1px dashed var(--line); }
.aplan-unit-note[open] summary { border-bottom:1px dashed var(--line); }
.aplan-unit-note .aplan-note-grid { padding:12px 0; }
.aplan-soft-check {
  border:none; border-top:1px dashed var(--line); border-radius:0;
  margin-top:16px; padding:12px 2px;
}
.atask { border-radius:6px; background:#fff; }
.aplan-mat-card, .aplan-slice-tag, .aplan-ctx-card { border-radius:6px; }
.aplan-opening-card { border-radius:6px; background:var(--surface-2,#f8f9fb); }
.aplan-process-type, .aplan-total-score, .aplan-open-chip, .aplan-open-item-top em { border-radius:6px; }
.aplan-status, .aplan-total-score { border-radius:6px; }
.aplan-unit-tab { border-radius:6px; }
.aplan-empty { border-radius:6px; }
.aplan-board-design, .aplan-homework { border:none; border-radius:0; border-top:1px solid var(--line); padding:14px 2px; background:transparent; }

                                           
.aplan-process-del {
  appearance:none; cursor:pointer; font:inherit;
  flex:none; width:22px; height:22px; border-radius:6px;
  border:1px solid var(--line); background:#fff; color:var(--color-error);
  font-size:12px; line-height:1; display:flex; align-items:center; justify-content:center;
}
.aplan-process-del:hover { border-color:var(--color-error); background:var(--color-error-soft); }
.aplan-process-del-confirm { display:inline-flex; gap:6px; flex:none; }
.aplan-process-del-confirm button {
  appearance:none; cursor:pointer; font:inherit; font-size:12px;
  padding:3px 8px; border-radius:6px; border:1px solid var(--line); background:#fff; color:var(--color-text-primary);
}
.aplan-process-del-confirm button:first-child { border-color:var(--color-error); color:var(--color-error); background:var(--color-error-soft); }
.aplan-unit-form {
  appearance:none; font:inherit; font-size:12px; cursor:pointer;
  padding:5px 9px; border:1px solid var(--line); border-radius:6px; background:#fff; color:var(--color-text-primary);
}
.aplan-unit-form:focus { border-color:var(--primary); }

                                   
.aplan-process-edit,
.aplan-process-gen {
  appearance:none; cursor:pointer; font:inherit;
  flex:none; width:26px; height:22px; border-radius:6px;
  border:1px solid var(--line); background:#fff; color:var(--primary);
  font-size:13px; line-height:1; display:flex; align-items:center; justify-content:center;
}
.aplan-process-gen { color:#a35c00; }
.aplan-process-gen:hover { border-color:#a35c00; background:#fff7ec; }
.aplan-process-edit:hover { border-color:var(--primary); background:#f0f6ff; }

.aplan-viewer { padding:14px 16px 16px; }
.aplan-viewer-note { margin-bottom:10px; }
.aplan-viewer-block { padding:12px 0; border-top:1px solid var(--line); }
.aplan-viewer-block:first-of-type { border-top:none; }
.aplan-view-task { margin:8px 0; padding:10px 12px; background:#fafbfc; border-radius:6px; }
.aplan-view-task-head { display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:6px; }
.aplan-view-task-head b { font-size:13px; }
.aplan-view-task p { font-size:13px; margin:3px 0; color:var(--color-text-secondary); }
.aplan-view-task p em { font-style:normal; color:var(--primary); margin-right:6px; font-size:12px; }
.aplan-viewer-block > p { font-size:13px; margin:5px 0; color:var(--color-text-secondary); }
.aplan-viewer-block > p b { color:var(--color-text-primary); margin-right:6px; }
.aplan-viewer-edit { margin-top:12px; }

.aplan-edit-mask {
  position:fixed; inset:0; z-index:1200;
  background:rgba(15,23,42,0.42);
  display:flex; align-items:center; justify-content:center;
  padding:24px;
}
.aplan-edit-modal {
  width:min(860px, 94vw); max-height:88vh; display:flex; flex-direction:column;
  background:#fff; border-radius:8px; box-shadow:0 18px 50px rgba(15,23,42,0.22);
  overflow:hidden;
}
.aplan-edit-head {
  display:flex; justify-content:space-between; align-items:flex-start;
  padding:16px 20px 14px; border-bottom:1px solid var(--line);
}
.aplan-edit-head h4 { margin:2px 0 0; font-size:16px; }
.aplan-edit-head h4 .sub { margin-left:8px; }
.aplan-edit-close {
  appearance:none; cursor:pointer; border:none; background:transparent;
  font-size:16px; color:var(--color-text-secondary); width:30px; height:30px; border-radius:6px;
}
.aplan-edit-close:hover { background:#f2f3f5; color:var(--color-text-primary); }
.aplan-edit-body { display:flex; min-height:0; flex:1; }
.aplan-edit-tabs {
  flex:none; width:132px; padding:12px 8px; border-right:1px solid var(--line);
  display:flex; flex-direction:column; gap:4px; background:#fafbfc;
}
.aplan-edit-tabs button {
  appearance:none; cursor:pointer; font:inherit; text-align:left;
  padding:9px 12px; border:none; border-radius:6px; background:transparent;
  color:var(--color-text-secondary); font-size:13px;
}
.aplan-edit-tabs button:hover { background:#f0f2f5; color:var(--color-text-primary); }
.aplan-edit-tabs button.on { background:#e8f1ff; color:var(--primary); font-weight:600; }
.aplan-edit-pane { flex:1; min-width:0; overflow-y:auto; padding:16px 20px 20px; }
.aplan-edit-foot {
  display:flex; justify-content:space-between; align-items:center;
  padding:10px 20px; border-top:1px solid var(--line); background:#fafbfc;
}
.aplan-setting-card {
  padding:14px 16px; border:1px solid var(--line); border-radius:8px;
  display:flex; flex-direction:column; gap:10px; margin:12px 0 16px;
}
.aplan-setting-row { display:flex; justify-content:space-between; align-items:center; gap:12px; font-size:13px; }
.aplan-setting-row input {
  flex:1; font:inherit; font-size:13px; padding:7px 10px;
  border:1px solid var(--line); border-radius:6px;
}
.aplan-del-unit-btn { border-color:#f3d6d6 !important; color:var(--color-error) !important; }
.aplan-del-unit-btn:hover { background:var(--color-error-soft) !important; }

                       
.aplan-process-edit-chev { display:inline-flex; align-items:center; gap:2px; flex:none; }
.aplan-process-edit-chev .aplan-process-edit { width:22px; height:20px; }

                  
.aplan-intro-intent { margin-top:14px; }
.aplan-intro-intent h5 { font-size:13px; margin:0 0 6px; display:flex; align-items:baseline; gap:8px; color:var(--text); }
.aplan-intro-intent .sub { font-weight:400; font-size:12px; }
.aplan-intro-intent textarea { width:100%; min-height:64px; resize:vertical; border:1px solid var(--line); border-radius:8px; padding:8px 10px; font:inherit; }

                      
.aplan-opening-title { font-size:15px; font-weight:700; color:var(--text); display:block; margin-bottom:2px; }
.aplan-opening-switch {
  appearance:none; cursor:pointer; font:inherit; font-size:12px; font-weight:600;
  padding:6px 14px; border:none; border-radius:8px; color:#fff;
  background:var(--primary); flex:none;
}
.aplan-opening-switch:hover { opacity:.9; }
.aplan-opening-card.selected {
  border:1px solid var(--primary); border-left:4px solid var(--primary);
  background:var(--primary-soft);
  box-shadow:0 2px 8px rgba(0,0,0,.05);
}
.aplan-opening-title-text { font-size:14px; font-weight:700; color:var(--text); }
.aplan-opening-dur { font-style:normal; font-size:12px; color:var(--muted); }
.aplan-opening-check {
  display:inline-flex; align-items:center; gap:2px; margin-left:auto;
  font-size:12px; font-weight:700; color:var(--primary);
  background:rgba(255,255,255,.7); border-radius:6px; padding:2px 7px;
}
.aplan-intro-intent { margin-top:14px; }
.aplan-intro-intent h5 {
  font-size:14px; font-weight:700; margin:0 0 8px; color:var(--text);
  border-top:1px solid var(--line); padding-top:14px;
}
.aplan-intro-intent-field { display:block; }
.aplan-intro-intent-field > span {
  display:block; font-size:12px; font-weight:700; color:var(--muted); margin-bottom:5px;
}
.aplan-intro-intent textarea {
  width:100%; min-height:64px; resize:vertical; box-sizing:border-box;
  border:1px solid var(--line); border-radius:8px; padding:9px 11px; font:inherit; font-size:13px;
}
.aplan-intro-intent textarea:focus { outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(0,0,0,.04); }

                      
.aplan-table-wrap { border-top:none; padding-top:0; }
.aplan-chain { background:#fbfcff; border:1px solid var(--line); border-bottom:none; padding:10px 12px 8px; }
.aplan-chain-head { display:flex; align-items:baseline; gap:8px; margin-bottom:8px; }
.aplan-chain-head b { font-size:13px; color:var(--text); }
.aplan-chain-head .sub { font-size:12px; color:var(--muted); }
.aplan-chain-row {
  display:flex; align-items:center; gap:8px; padding:6px 10px;
  border:1px solid var(--line); border-radius:8px; background:#fff; margin-bottom:6px;
}
.aplan-chain-no { color:var(--primary); font-size:12px; font-weight:700; flex:none; width:24px; }
.aplan-chain-q {
  flex:1; min-width:0; border:none; outline:none; background:transparent;
  font:inherit; font-size:13px; color:var(--text); padding:2px 0;
}
.aplan-chain-mat {
  flex:none; font-size:12px; color:var(--primary); background:#eaf1ff;
  padding:3px 10px; border-radius:8px; cursor:pointer; border:1px solid #d5e2fd;
}
.aplan-chain-mat:hover { border-color:var(--primary); }
.aplan-chain-ops { flex:none; display:flex; gap:2px; }
.aplan-chain-ops button {
  appearance:none; border:1px solid var(--line); background:#fff; color:var(--muted);
  width:24px; height:24px; border-radius:6px; cursor:pointer; font-size:12px; line-height:1;
}
.aplan-chain-ops button:hover { color:var(--primary); border-color:var(--primary); }
.aplan-chain-mat-pop {
  margin:-2px 0 8px; padding:10px 12px; border:1px dashed var(--primary);
  border-radius:8px; background:#f7faff; font-size:13px; color:var(--text);
}
.aplan-mat-sheet { width:min(720px,100%); max-height:84vh; overflow:auto; }
.aplan-mat-tabs { display:flex; flex-wrap:wrap; gap:8px; margin:2px 0 10px; }
.aplan-mat-tab { appearance:none; cursor:pointer; font:inherit; font-size:13px;
  padding:6px 12px; border-radius:6px; border:1px solid var(--line); background:#fff; color:var(--text); }
.aplan-mat-tab.active { border-color:var(--primary); background:var(--primary); color:#fff; }
.aplan-mat-body { font-size:14px; line-height:1.75; color:var(--text); }
.aplan-mat-body b { display:block; font-size:15px; margin-bottom:6px; color:#111827; }
.aplan-mat-body p { margin:0; }
.aplan-chain-mat-item + .aplan-chain-mat-item { margin-top:10px; }
.aplan-chain-mat-item b { display:block; color:var(--primary); font-size:12px; margin-bottom:4px; }
.aplan-chain-mat-item p { margin:0; line-height:1.6; }
.aplan-chain-empty { font-size:12px; color:var(--muted); padding:4px 2px 8px; }
.aplan-chain-add {
  appearance:none; border:none; background:none; color:var(--primary);
  font:inherit; font-size:13px; font-weight:600; cursor:pointer; padding:2px 0;
}
.aplan-chain-add:hover { text-decoration:underline; }
.aplan-process-detail { padding:0 2px; }
.aplan-unit-table td { padding:6px 8px; }
.aplan-unit-table td textarea {
  width:100%; box-sizing:border-box; border:none; border-radius:0; appearance:none; -webkit-appearance:none;
  background:transparent; resize:vertical; font:inherit; font-size:13px; line-height:1.55;
  min-height:52px; padding:0; outline:none; color:var(--text);
}
.aplan-unit-table td textarea:focus { background:#fff; }
.aplan-table-note-th {
  background:var(--surface-2); color:var(--muted); font-size:12px; font-weight:700;
  text-align:left; padding:6px 10px; border:1px solid var(--line); width:100%;
}
.aplan-table-note-cell { padding:6px 10px; border:1px solid var(--line); }
.aplan-table-note-cell textarea {
  width:100%; box-sizing:border-box; border:none; border-radius:0; appearance:none; -webkit-appearance:none;
  background:transparent; resize:vertical; font:inherit; font-size:13px; line-height:1.55;
  min-height:44px; padding:0; outline:none; color:var(--text);
}

.aplan-unit-table { width:100%; table-layout:fixed; border-collapse:collapse; font-size:13px; background:transparent; }
.aplan-unit-table th {
  background:var(--surface-2); color:var(--muted); font-size:12px; font-weight:700;
  text-align:left; padding:8px 10px; border:1px solid var(--line); width:24.67%;
}
.aplan-unit-table th.aplan-th-q { width:26%; }
.aplan-unit-table td {
  padding:9px 10px; border:1px solid var(--line); vertical-align:top;
  line-height:1.55; color:var(--text); background:#fff; width:24.67%;
}
.aplan-unit-table td.aplan-table-q { width:26%; }
.aplan-table-qtext { line-height:1.5; }
.aplan-table-q .aplan-table-no { display:block; margin-bottom:2px; }
.aplan-table-no { color:var(--primary); font-size:12px; }
.aplan-table-empty { color:var(--muted); font-size:12px; text-align:center; padding:18px 10px !important; }



                         
.impl-textbook-analysis {
  margin: 0 0 12px;
  border: 1px solid #e6eaf0;
  border-radius: 8px;
  background: #fbfcfe;
  padding: 10px 14px;
}
.impl-textbook-analysis summary {
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  color: #1a1523;
}
.impl-textbook-analysis .ua-rows { margin-top: 8px; }
.impl-textbook-analysis .ua-row {
  display: flex;
  gap: 10px;
  padding: 6px 0;
  border-bottom: 1px dashed #edf0f4;
}
.impl-textbook-analysis .ua-row:last-child { border-bottom: none; }
.impl-textbook-analysis .ua-row-label {
  flex: 0 0 64px;
  font-size: 12px;
  color: var(--color-neutral);
  font-weight: 600;
}
.impl-textbook-analysis .ua-row-body { font-size: 13px; color: #334155; line-height: 1.65; }


                          
.asset-slides-tabs { display: flex; gap: 6px; margin: 10px 0 12px; }
.asset-slides-tabs button {
  padding: 6px 14px; border-radius: 6px; border: 1px solid #dbe1e8;
  background: #fff; font-size: 12px; color: #5b6472; cursor: pointer;
}
.asset-slides-tabs button.on { background: #2563eb; border-color: #2563eb; color: #fff; font-weight: 600; }
.asset-slides-outline { display: grid; gap: 6px; max-height: 540px; overflow: auto; padding-right: 4px; }
.aso-item {
  display: flex; gap: 12px; align-items: flex-start; text-align: left;
  width: 100%; padding: 10px 12px; border: 1px solid #e6eaf0; border-radius: 8px;
  background: #fff; cursor: pointer; transition: border-color .15s ease, background .15s ease;
}
.aso-item:hover { border-color: #b9c6dd; background: #f8fafc; }
.aso-item.on { border-color: #2563eb; background: #eef4ff; }
.aso-idx {
  flex: 0 0 26px; height: 26px; border-radius: 8px; background: #eef1f5;
  color: #445; font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center;
}
.aso-item.on .aso-idx { background: #2563eb; color: #fff; }
.aso-main { display: block; min-width: 0; }
.aso-main b { display: block; font-size: 13px; color: #1a1523; }
.aso-main em { display: block; margin-top: 3px; font-style: normal; font-size: 12px; color: #5b6472; line-height: 1.55; }
.aso-main i { display: block; margin-top: 2px; font-style: normal; font-size: 12px; color: #7c8797; line-height: 1.5; }


                       
.asset-job-panel {
  margin: 0 0 12px;
  border: 1px solid #dbe4f0;
  border-radius: 8px;
  background: #f4f8ff;
  padding: 12px 16px;
}
.asset-job-panel.done { border-color: #b9e0cd; background: #f0faf5 }
.asset-job-panel.failed { border-color: #f3c9c9; background: #fdf2f2 }
.ajp-head {
  display: flex; align-items: center; justify-content: space-between;
  font-size: 14px; font-weight: 600; color: #1a1523;
}
.ajp-pct { font-size: 13px; color: #2563eb; }
.asset-job-panel.failed .ajp-pct { color: var(--color-error); }
.ajp-bar {
  height: 6px; border-radius: 6px; background: #e4eaf3; overflow: hidden; margin: 9px 0;
}
.ajp-bar i {
  display: block; height: 100%; border-radius: 6px;
  background: #2563eb;
  transition: width .6s ease;
}
.ajp-steps { display: flex; gap: 16px; flex-wrap: wrap; margin: 4px 0 8px; }
.ajp-step { font-size: 12px; color: #9aa3ad; display: inline-flex; align-items: center; gap: 4px; }
.ajp-step.done { color: #16a34a; font-weight: 600; }
.ajp-step.doing { color: #2563eb; font-weight: 600; }
.ajp-step.doing::after {
  content: ""; width: 8px; height: 8px; border-radius: 8px;
  border: 2px solid #bfdbfe; border-top-color: #2563eb;
  animation: ajp-spin .8s linear infinite;
}
@keyframes ajp-spin { to { transform: rotate(360deg); } }
.ajp-msg { margin: 0; font-size: 12px; color: #5b6472; }
.aso-group {
  font-size: 12px;
  color: #9b9b9b;
  font-weight: 600;
  margin: 10px 12px 4px;
  letter-spacing: 1px;
}
.aso-group:first-child { margin-top: 4px; }
.aso-main i {
  display: block;
  font-style: normal;
  font-size: 11px;
  color: #a89fa8;
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cw-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cw-variant select {
  font-size: 13px; padding: 5px 8px; border: 1px solid #e3dce2; border-radius: 8px;
  background: #fff; color: #1a1523; cursor: pointer; outline: none;
}
.cw-variant select:disabled { opacity: .6; cursor: not-allowed; }
.asset-html-wrap { display: flex; flex-direction: column; gap: 10px; }
.asset-html-bar {
  font-size: 12px; color: #8a8188; background: #faf6f8; border: 1px solid #f0e6ea;
  padding: 8px 12px; border-radius: 8px;
}
.asset-html-frame { width: 100%; height: 460px; border: 1px solid #e6dde2; border-radius: 8px; background: #fff; }
.cw-choice-overlay {
  position: fixed; inset: 0; background: rgba(15,12,18,.45);
  display: flex; align-items: center; justify-content: center; z-index: 900;
}
.cw-choice-panel {
  position: relative; background: #fff; border-radius: 8px; width: 430px;
  max-width: calc(100vw - 40px); padding: 22px 22px 16px; box-shadow: 0 20px 60px rgba(0,0,0,.25);
}
.cw-choice-close {
  position: absolute; top: 12px; right: 14px; border: 0; background: none;
  font-size: 20px; color: #a89faa; cursor: pointer; line-height: 1;
}
.cw-choice-panel header h4 { margin: 0 0 6px; font-size: 17px; color: #1a1523; }
.cw-choice-panel header p { margin: 0 0 16px; font-size: 12px; color: #8a8188; line-height: 1.6; }
.cw-choice-card {
  display: block; width: 100%; text-align: left; border: 1px solid #e9e2e6; border-radius: 8px;
  padding: 12px 14px; margin-bottom: 10px; background: #faf8fa; cursor: pointer; font-family: inherit;
}
.cw-choice-card b { display: block; font-size: 14px; color: #1a1523; font-weight: 600; }
.cw-choice-card b em {
  font-style: normal; font-size: 11px; color: var(--color-primary); background: var(--color-error-soft);
  border-radius: 6px; padding: 1px 7px; margin-left: 6px; font-weight: 400;
}
.cw-choice-card span { display: block; font-size: 12px; color: #6b6270; margin-top: 5px; line-height: 1.55; }
.cw-choice-card:hover:not(.off) { border-color: #d8b8c8; background: #fdf7fa; }
.cw-choice-card.off { opacity: .55; cursor: not-allowed; }
.cw-choice-card.off b em { background: #eee; color: #8a8188; }
.cw-pulse { display: inline-flex; align-items: flex-end; gap: 3px; height: 12px; }
.cw-pulse i { width: 3px; height: 6px; background: currentColor; border-radius: 2px; animation: cwPulse 1s ease-in-out infinite; }
.cw-pulse i:nth-child(2) { animation-delay: .18s; }
.cw-pulse i:nth-child(3) { animation-delay: .36s; }
@keyframes cwPulse { 0%, 100% { height: 4px; } 50% { height: 12px; } }

            
.rec-rating-row { display: flex; align-items: center; gap: 8px; margin: 4px 0 8px; font-size: 13px; }
.rec-stars { color: #f5a623; letter-spacing: 2px; font-size: 14px; }
.rec-rating-num { color: var(--text-2, #666); }
.rec-rate-btn { border: 1px solid var(--line, #e5e5e5); border-radius: 6px; background: transparent; padding: 2px 10px; font-size: 12px; color: var(--primary, #1a6bff); cursor: pointer; }
.rec-rate-btn:hover { background: var(--primary-soft, #eef4ff); border-color: var(--primary, #1a6bff); }
.rate-modal-overlay { position: fixed; inset: 0; z-index: 9999; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; }
.rate-modal { background: #fff; border-radius: 8px; padding: 24px 28px; width: min(420px, 92vw); box-shadow: 0 12px 40px rgba(0,0,0,.2); text-align: center; }
.rate-modal h4 { margin: 0 0 10px; font-size: 17px; }
.rate-modal-title { color: #555; font-size: 14px; margin: 0 0 18px; line-height: 1.5; }
.rate-stars { display: flex; justify-content: center; gap: 10px; margin-bottom: 16px; }
.rate-star { font-size: 26px; color: #f5a623; background: transparent; border: none; cursor: pointer; padding: 4px 2px; line-height: 1; }
.rate-star:hover { transform: scale(1.15); }
.rate-modal-hint { color: #999; font-size: 12px; margin: 0 0 16px; }

                            
.slice-edit-form { display: flex; flex-direction: column; gap: 12px; padding: 14px 0 6px; }
.slice-edit-form label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: #666; }
.slice-edit-form input[type="text"], .slice-edit-form textarea {
  border: 1px solid #e2e2e2; border-radius: 8px; padding: 8px 10px; font-size: 14px; color: #222; resize: vertical; width: 100%; box-sizing: border-box; background: #fff;
}
.slice-edit-form input:focus, .slice-edit-form textarea:focus { outline: none; border-color: #b43a3a; box-shadow: 0 0 0 2px rgba(180, 58, 58, .08); }
.advanced-panel-foot { display: flex; justify-content: flex-end; gap: 10px; padding-top: 14px; border-top: 1px solid #f0f0f0; margin-top: 6px; }
.ai-ctx-toolbar { margin-bottom: 8px; }
.ai-context-shelf { margin: 8px 0 14px; }
.ai-ctx-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.ai-ctx-head b { font-size: 13px; color: #333; }
.ai-ctx-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.ai-ctx-card { border: 1px solid #ececec; border-radius: 8px; padding: 10px 12px; background: #fafafa; display: flex; flex-direction: column; gap: 6px; }
.ai-ctx-card.selected { border-color: #b43a3a; background: #fff7f6; }
.ai-ctx-card b { font-size: 14px; color: #222; }
.ai-ctx-card p { font-size: 12px; color: #777; margin: 0; line-height: 1.5; }
.ai-ctx-card .btn { align-self: flex-end; }

                                   
.history-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.seg{display:inline-flex;border:1px solid #d8d8d8;border-radius:6px;overflow:hidden;background:#fff}
.seg button{border:0;background:transparent;padding:6px 16px;font-size:13px;color:#666;cursor:pointer;line-height:1.4}
.seg button + button{border-left:1px solid #eee}
.seg button.active{background:#2563eb;color:#fff}
.seg button:hover:not(.active){background:#f2f5ff}
.history-list{display:flex;flex-direction:column;gap:8px}
.history-row{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid #e3e3e3;border-radius:8px;background:#fff}
.history-row-pill{flex:none;white-space:nowrap}
.history-row-main{flex:1;min-width:0}
.history-row-main h3{font-size:15px;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.history-row-main .sub{margin:0;font-size:12px;color:#888;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.history-row-time{flex:none;font-size:12px;color:#999}
.history-row-actions{display:flex;gap:6px;flex:none}
.btn.sm{padding:4px 10px;font-size:12px}

                                         
.issue-picker-tabs{display:inline-flex;border:1px solid #d8d8d8;border-radius:6px;overflow:hidden;background:#fff;margin:0 0 12px}
.issue-picker-tab{border:0;background:transparent;padding:7px 18px;font-size:13px;color:#666;cursor:pointer;line-height:1.4}
.issue-picker-tab + .issue-picker-tab{border-left:1px solid #eee}
.issue-picker-tab.on{background:#2563eb;color:#fff}
.issue-picker-tab:hover:not(.on){background:#f2f5ff}
.issue-group-panel{padding:2px 0 8px}
.issue-group-head h3{font-size:15px;margin:0 0 6px}
.issue-group-head .sub{margin:0 0 12px;font-size:12px;color:#888;line-height:1.6}
.issue-group-card{border:1px solid #e3e3e3;border-radius:8px;background:#fff;padding:14px 16px;margin-bottom:12px}
.issue-group-card .igc-head{display:flex;gap:12px;align-items:flex-start}
.issue-group-card .igc-code{flex:none;display:inline-block;padding:3px 9px;border-radius:6px;background:var(--color-ai-soft);color:#3730a3;font-weight:700;font-size:13px;letter-spacing:.5px}
.issue-group-card .igc-main{flex:1;min-width:0}
.issue-group-card .igc-main .eyebrow{display:block;font-size:11px;color:#999;margin-bottom:2px}
.issue-group-card .igc-main-text{display:block;font-size:15px;color:#1a1a1a;line-height:1.5;margin-bottom:4px}
.issue-group-card .igc-concept{margin:0;font-size:12px;color:#777;line-height:1.5}
.issue-group-card .igc-ladder{margin:10px 0;font-size:12px;color:#555;background:#f7f8fa;border-radius:6px;padding:6px 10px}
.issue-group-card .igc-subs{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:7px}
.issue-group-card .igc-sub{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:8px 10px;border:1px solid #f0f0f0;border-radius:8px;background:#fcfcfd}
.issue-group-card .igc-sub-code{flex:none;padding:2px 7px;border-radius:5px;background:#f1f5f9;color:#475569;font-size:12px;font-weight:600;letter-spacing:.5px}
.issue-group-card .igc-sub-stage{flex:none;font-size:11px;color:#2563eb;background:var(--color-info-soft);border-radius:4px;padding:2px 6px}
.issue-group-card .igc-sub-text{font-size:13px;color:#222;line-height:1.5}
.issue-group-card .igc-sub-basis{flex-basis:100%;font-size:11px;color:#999}
.issue-group-card .igc-actions{display:flex;justify-content:flex-end}
.split-issue-code{flex:none;display:inline-block;margin-right:6px;padding:1px 6px;border-radius:5px;background:#f1f5f9;color:#475569;font-size:11px;font-weight:600;letter-spacing:.5px;vertical-align:middle}
.issue-tree-main-code{display:inline-block;margin-right:8px;padding:2px 8px;border-radius:6px;background:var(--color-ai-soft);color:#3730a3;font-size:12px;font-weight:700;letter-spacing:.5px;vertical-align:middle}

                                           
.student-eval-flat { display: block; margin-top: 10px; }
.student-eval-flat .sef-status { margin: 0 0 4px; font-size: 13px; color: var(--muted); }
.student-eval-flat .sef-sec { padding: 10px 0; border-top: 1px solid var(--line); }
.student-eval-flat .sef-sec h4 { margin: 0 0 4px; font-size: 13px; font-weight: 650; color: var(--muted); }
.student-eval-flat .sef-sec p { margin: 0; font-size: 15px; line-height: 1.6; }
.ai-voice-btn.sef-voice-btn {
  width: auto; height: auto; border-radius: 6px; padding: 8px 14px;
  gap: 6px; font-size: 14px; margin-top: 12px;
}

                                  
.pres-stage.pres-stage-single { grid-template-columns: minmax(0, 1fr); }

                                   
.impl-launch-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.impl-launch-actions { display:flex; gap:10px; flex-wrap:wrap; }
.spv-mask { position:fixed; inset:0; background:rgba(10,12,20,.62); z-index:9000; display:flex; align-items:center; justify-content:center; padding:24px; }
.spv-modal { background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:18px; max-width:460px; width:100%; }
.spv-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; gap:12px; }
.spv-head h3 { margin:0; font-size:16px; }
.spv-close { border:none; background:none; font-size:26px; line-height:1; cursor:pointer; color:var(--muted); }
.spv-phone { width:390px; max-width:100%; height:700px; max-height:72vh; margin:0 auto; border:10px solid #15182333; border-radius:8px; overflow:hidden; background:#0f1118; box-shadow:0 18px 50px rgba(0,0,0,.35); }
.spv-phone iframe { width:100%; height:100%; border:0; display:block; }

                                        
.pres-head-info { display:flex; align-items:center; gap:18px; min-width:0; }
.pres-head-info #boardCountBox { text-align:left; display:flex; align-items:baseline; gap:12px; }
.pres-head-info #boardCountBox .count { font-size:34px; font-weight:700; line-height:1; white-space:nowrap; }
.pres-head-info #boardCountBox .muted { font-size:13px; white-space:nowrap; }
.pres-head-right { gap:9px; }
.board-ctl-icon { width:42px; height:42px; border-radius:8px; }
.board-ctl-icon svg { width:20px; height:20px; }
.board-tools { display:flex; align-items:center; gap:9px; }
.board-icon-btn { width:42px; height:42px; border-radius:8px; }

                                         
.rv-collecting { display:flex; flex-direction:column; align-items:center; gap:18px; padding:52px 0; }
.rv-collect-core { --sz:72px; width:var(--sz); height:var(--sz); position:relative; }
.rv-collect-core .ai-ring { position:absolute; border-radius:8px; pointer-events:none; }
.rv-collect-core .ai-ring { inset:16%; border:1.5px solid var(--ink); opacity:.45; }
.rv-collect-core .ai-ring-outer { inset:0; opacity:.32; animation:rvCollectRing 2.6s ease-in-out infinite; }
.rv-collect-core .ai-dot { position:absolute; inset:34%; border-radius:8px; background:var(--ink); opacity:.9;
  animation:rvCollectDot 1.7s ease-in-out infinite; }
@keyframes rvCollectRing { 0%,100% { transform:scale(1); opacity:.28; } 50% { transform:scale(1.15); opacity:.55; } }
@keyframes rvCollectDot { 0%,100% { transform:scale(1); } 50% { transform:scale(1.09); opacity:.68; } }
.rv-collecting h3 { margin:0; font-size:20px; font-weight:700; }

                                                  
.qb-recite-answer{margin-top:4px}
.qb-recite-line{margin:0;line-height:1.9}
.qb-recite-line + .qb-recite-line{margin-top:2px}
.qb-recite-ans{text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;
  font-weight:600;color:var(--color-primary)}
.pz-recite-answer{margin-top:6px}
.pz-recite-answer .qb-recite-line{line-height:1.85}

                                                                  
.ui-mask {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4);
  background: rgba(17, 24, 39, 0.4);
}
.ui-modal {
  width: min(440px, 100%);
  max-height: min(84vh, 720px);
  overflow: auto;
  background: var(--color-surface);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-overlay);
  box-shadow: var(--shadow-overlay);
}
.ui-control {
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-control);
  background: var(--color-surface);
  color: var(--color-text-primary);
  font-size: 14px;
  box-sizing: border-box;
}

.ui-empty,
.lr-empty,
.disk-empty,
.sc-empty,
.sv-empty {
  margin: 0;
  padding: var(--space-8) var(--space-4);
  text-align: center;
  color: var(--color-text-secondary);
  font-size: 14px;
}

.archive-page {
  max-width: var(--width-content);
  margin: 0 auto;
  padding: var(--space-6) var(--space-4) var(--space-8);
}
.archive-head,
.archive-section {
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--color-border);
}
.archive-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
}
.archive-kicker,
.archive-note,
.archive-status,
.archive-lead {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: 14px;
}
.archive-page h1 {
  margin: 4px 0 8px;
  font-size: 24px;
  font-weight: 650;
}
.archive-page h2 {
  margin: 0 0 8px;
  font-size: 18px;
  font-weight: 650;
}
.archive-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
  gap: var(--space-3);
  align-items: end;
  margin-top: var(--space-4);
}
.archive-form label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  color: var(--color-text-secondary);
  font-size: 13px;
}
.archive-form .ui-control { width: 100%; }
.archive-facts p,
.archive-facts ol { margin: 0 0 8px; font-size: 16px; }
.archive-facts ol { padding-left: 1.2em; color: var(--color-text-primary); }

@media (max-width: 1366px) {
  .design-page .app-content,
  .design-page .app-pagehead { padding-left: 16px; padding-right: 16px; }
  .design-page .design-main { min-width: 0; }
}
@media (max-width: 1100px) and (min-width: 721px) {
  .design-page .design-main { min-width: 0; }
}
@media (max-width: 720px) {
  .archive-head { flex-direction: column; }
  .archive-form { grid-template-columns: 1fr; }
}

.week-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin: 8px 0 4px;
}
.week-stats div {
  min-width: 0;
  padding-top: 8px;
  border-top: 1px solid var(--color-border);
}
.week-stats b {
  display: block;
  font-size: 22px;
  line-height: 1.2;
  font-weight: 700;
  color: var(--color-text-primary);
}
.week-stats span { font-size: 13px; color: var(--color-text-secondary); }
body.board-fullscreen { padding: 16px 24px; }
body.board-fullscreen .pres-shell { max-width: none; min-height: calc(100dvh - 32px); }

@media (max-width: 1366px) {
  .design-page .step-panel { min-width: 0; }
  .design-page .step-head-row,
  .design-page .goal-head-actions,
  .design-page .impl-launch-actions { flex-wrap: wrap; align-items: flex-start; }
  .design-page .step-panel img,
  .design-page .step-panel video { max-width: 100%; height: auto; }
}
@media (max-width: 720px) {
  .design-page .step-panel,
  .design-page .step-panel[data-step="1"] { padding: 12px; }
  .design-page .step-panel h2,
  .design-page .step-panel[data-step="1"] h2 { font-size: 18px; }
  .design-page .step-panel[data-step="1"] select,
  .design-page .step-panel[data-step="1"] input {
    min-height: 40px;
    padding: 8px 12px;
    font-size: 16px;
  }
  .design-page .step-panel[data-step="1"] label { margin-top: 12px; }
  .issue-package-list,
  .context-pack-list,
  .context-mode-cards,
  .context-filter-row,
  .context-summary-dl,
  .context-detail-meta,
  .builtin-scheme-grid,
  .design-brief,
  .context-fields,
  .health-dims,
  .context-issue-grid,
  .grid.two,
  .grid.three,
  .week-stats { grid-template-columns: 1fr 1fr; }
  .context-node-row,
  .chain-field,
  .xq-extra-row { grid-template-columns: minmax(0, 1fr); }
  .design-page .step-panel table { display: block; max-width: 100%; overflow-x: auto; }
  .design-page .step-panel pre { max-width: 100%; overflow-x: auto; }
}

                                              
.ua-source-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 4px 0 12px; }
.ua-source-head .ua-source { display: flex; margin: 0; align-items: baseline; flex-wrap: wrap; row-gap: 2px; }
.ua-source-head .ua-source .ua-source-dot { align-self: center; }
.ua-source-path { font-size: 13px; font-weight: 600; color: var(--color-text-primary); }
.ua-source-sub { font-size: 12px; color: var(--color-text-tertiary); }
.ua-copy-id { appearance: none; border: 1px solid var(--color-border); background: var(--color-surface); border-radius: var(--radius-control); font-size: 11px; line-height: 1; padding: 3px 6px; color: var(--color-text-secondary); cursor: pointer; }
.ua-copy-id:hover { border-color: var(--color-border-strong); color: var(--color-text-primary); }
.ua-cv-switch { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--color-text-secondary); flex: none; }
.ua-cv-switch select { height: 30px; border: 1px solid var(--color-border); border-radius: var(--radius-control); background: var(--color-surface); font-size: 12px; padding: 0 6px; color: var(--color-text-primary); }

                     
.ua-struct-head { display: flex; gap: 16px; border-bottom: 1px solid var(--color-border); margin-bottom: 12px; }
.ua-view-tab { appearance: none; background: none; border: none; border-bottom: 2px solid transparent; margin-bottom: -1px; padding: 6px 2px; font-size: 13px; font-weight: 600; color: var(--color-text-secondary); cursor: pointer; }
.ua-view-tab.on { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.ua-graph-view[hidden] { display: none; }

                     
.ua-v2-body { font-size: 16px; line-height: 1.75; color: var(--color-text-primary); display: flex; flex-direction: column; gap: 16px; }
.ua-v2-body .ua-rows { gap: 16px; }
.ua-v2-body .ua-row { grid-template-columns: 88px minmax(0, 1fr); }
.ua-v2-body .ua-row-label { font-size: 13px; padding-top: 3px; }
.ua-v2-body .ua-row-body { font-size: 16px; line-height: 1.75; }
.ua-para { margin: 0; }
.ua-core-q { margin: 0; font-weight: 600; }
.ua-big { border-radius: 0; }

          
.ua-std-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.ua-std-item p { margin: 0; }
.ua-std-item b { color: var(--color-text-primary); }
.ua-std-rel { font-size: 13px; color: var(--color-text-secondary); margin-top: 2px; }
.ua-std-interp { font-size: 13px; color: var(--color-text-secondary); margin-top: 2px; }
.ua-std-quote { margin-top: 4px; padding-left: 10px; border-left: 3px solid var(--color-border-strong); font-size: 14px; color: var(--color-text-secondary); }
.ua-std-quote-note { margin-top: 4px; font-size: 12px; color: var(--color-text-tertiary); }

          
.ua-frame-head { display: flex; gap: 10px; align-items: flex-start; padding-bottom: 8px; border-bottom: 1px dashed var(--color-border); }
.ua-frame-order { width: 22px; height: 22px; border-radius: 8px; background: var(--color-primary-soft); color: var(--color-primary); font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: none; }
.ua-frame-title { font-size: 15px; font-weight: 700; line-height: 1.4; }
.ua-frame-path { font-size: 12px; color: var(--color-text-tertiary); margin-top: 1px; }

              
.ua-graph-group { margin-bottom: 16px; }
.ua-graph-group:last-child { margin-bottom: 0; }
.ua-edge-semantic { stroke-dasharray: 5 4; stroke: var(--color-info); }
.ua-edge-cause { stroke: var(--color-info); }
.ua-edge-evolve { stroke: var(--color-success); }
.ua-edge-compare { stroke: var(--color-warning); }
.ua-edge-conflict { stroke: var(--color-error); }
.ua-edge-label { font-size: 11px; fill: var(--color-text-secondary); paint-order: stroke; stroke: var(--color-surface); stroke-width: 4px; stroke-linejoin: round; }
.ua-tree-text { font-size: 14px; line-height: 1.8; color: var(--color-text-primary); }
.ua-tree-pre { margin: 0; white-space: pre-wrap; word-break: break-all; font-family: inherit; }
.ua-tree-sem { margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--color-border); }
.ua-tree-sem h5 { margin: 0 0 6px; font-size: 13px; color: var(--color-text-secondary); }
.ua-tree-sem ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--color-text-secondary); }

          
.ua-node-desc { margin: 0 0 8px; font-size: 13px; line-height: 1.7; color: var(--color-text-primary); }
.ua-node-type { display: inline-block; font-size: 12px; color: var(--color-text-secondary); background: var(--color-surface-hover); padding: 1px 6px; }
.ua-rel-list { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--color-text-primary); }
.ua-rel-dir { color: var(--color-primary); font-weight: 600; }

          
.ua-kp-list { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 8px; }
.ua-kp-desc { display: block; font-size: 14px; color: var(--color-text-secondary); margin-top: 2px; }
.ua-mis-list { display: flex; flex-direction: column; gap: 12px; }
.ua-mis { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.ua-mis-l, .ua-mis-r { background: var(--color-surface-hover); padding: 10px 12px; }
.ua-mis-l p, .ua-mis-r p { margin: 0; font-size: 15px; line-height: 1.7; }
.ua-mis-tag { display: inline-block; font-size: 12px; font-weight: 700; color: var(--color-warning); margin-bottom: 4px; }
.ua-mis-tag.ok { color: var(--color-success); }

@media (max-width: 900px) {
  .ua-v2-body .ua-row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .ua-v2-body .ua-row-label { padding-top: 0; }
  .ua-mis { grid-template-columns: minmax(0, 1fr); }
  .ua-source-head { flex-direction: column; align-items: stretch; gap: 8px; }
  .ua-cv-switch { align-self: flex-end; }
}

                                                 
.kbv2 { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--color-border); }
.kbv2-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.kbv2-head h4 { margin: 0; font-size: 15px; }
.kbv2-status { font-size: 12px; color: var(--color-text-secondary); }
.kbv2-cv-row { display: flex; align-items: center; gap: 12px; margin: 10px 0; flex-wrap: wrap; }
.kbv2-cv-row .hint { font-size: 12px; }
.kbv2-toolbar { display: flex; align-items: center; gap: 8px; margin: 8px 0 12px; flex-wrap: wrap; }
.kbv2-toolbar select { height: 32px; border: 1px solid var(--color-border); border-radius: var(--radius-control); background: var(--color-surface); padding: 0 8px; font-size: 13px; }
.kbv2-import-label { display: inline-flex; align-items: center; cursor: pointer; }
.kbv2-hint { font-size: 12px; color: var(--color-text-secondary); }
.kbv2-hint.err { color: var(--color-danger, var(--color-error)); }
.kbv2-table-title { font-size: 13px; font-weight: 700; color: var(--color-text-secondary); margin: 12px 0 6px; }
.kbv2-table-wrap { overflow-x: auto; }
.kbv2-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.kbv2-table th, .kbv2-table td { border-bottom: 1px solid var(--color-border); padding: 7px 8px; text-align: left; white-space: nowrap; }
.kbv2-table th { font-weight: 600; color: var(--color-text-secondary); font-size: 12px; }
.kbv2-table td.kbv2-path { white-space: normal; min-width: 220px; }
.kbv2-total td { font-weight: 700; border-top: 1px solid var(--color-border-strong); }
.kbv2-miss { color: var(--color-warning); }
.kbv2-dim { color: var(--color-text-tertiary); }
.kbv2-mini { font-size: 12px; padding: 3px 8px; }
.kbv2-status-dot { display: inline-block; width: 7px; height: 7px; border-radius: 8px; margin-right: 6px; background: var(--color-text-tertiary); }
.kbv2-status-dot.st-published { background: var(--color-success); }
.kbv2-status-dot.st-review { background: var(--color-info); }
.kbv2-status-dot.st-review_ed { background: var(--color-info); }
.kbv2-status-dot.st-pending_review { background: var(--color-warning); }
.kbv2-status-dot.st-disabled { background: var(--color-text-tertiary); }
.kbv2-act { font-size: 12px; padding: 1px 6px; background: var(--color-surface-hover); }
.kbv2-act.conflict { color: var(--color-warning); font-weight: 700; }
.kbv2-act.new { color: var(--color-success); }
.kbv2-act.update { color: var(--color-info); }
.kbv2-bulk { display: flex; align-items: center; gap: 8px; margin: 8px 0; font-size: 13px; flex-wrap: wrap; }
.kbv2-bulk select { height: 30px; border: 1px solid var(--color-border); border-radius: var(--radius-control); background: var(--color-surface); padding: 0 6px; font-size: 12px; }
.kbv2-block { margin: 12px 0; padding: 12px 14px; background: var(--color-surface-hover); }
.kbv2-block h5 { margin: 0 0 8px; font-size: 13px; }
.kbv2-block.err { border-left: 3px solid var(--color-danger, var(--color-error)); }
.kbv2-block ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.7; }
.kbv2-preview-counts { margin: 0 0 6px; font-size: 13px; }
.kbv2-src-changes { margin: 0 0 6px; font-size: 12px; color: var(--color-text-secondary); }
.kbv2-warn summary { cursor: pointer; font-size: 12px; color: var(--color-warning); }
.kbv2-import-actions { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.kbv2-overwrite { font-size: 13px; display: inline-flex; align-items: center; gap: 6px; }

          
.kbv2-dialog { border: 1px solid var(--color-border); border-radius: var(--radius-overlay); padding: 0; max-width: min(960px, 94vw); width: min(960px, 94vw); }
.kbv2-dialog::backdrop { background: rgba(0, 0, 0, 0.35); }
.kbv2-sheet { display: flex; flex-direction: column; max-height: 86vh; }
.kbv2-sheet header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--color-border); }
.kbv2-sheet header h4 { margin: 0; font-size: 15px; }
.kbv2-dialog-body { padding: 14px 16px 20px; overflow-y: auto; font-size: 13px; line-height: 1.7; }
.kbv2-detail-meta { margin: 0 0 8px; font-size: 12px; color: var(--color-text-secondary); }
.kbv2-detail-meta.warn { color: var(--color-warning); }
.kbv2-dialog-body h5 { margin: 14px 0 6px; font-size: 13px; }
.kbv2-std { margin: 0; padding-left: 18px; }
.kbv2-v1std { font-size: 12px; color: var(--color-text-tertiary); margin: 4px 0 0; }
.kbv2-fields { margin-top: 10px; border-top: 1px solid var(--color-border); }
.kbv2-frow, .kbv2-group-row { display: grid; grid-template-columns: 96px minmax(0, 1fr) minmax(0, 1.2fr) auto; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--color-border); align-items: start; }
.kbv2-fname { font-size: 13px; font-weight: 700; color: var(--color-text-secondary); padding-top: 2px; }
.kbv2-covered { display: inline-block; margin-left: 6px; font-size: 11px; font-weight: 600; color: var(--color-warning); }
.kbv2-fsrc { display: inline-block; font-size: 11px; font-weight: 700; color: var(--color-text-tertiary); margin-bottom: 3px; }
.kbv2-fsrc.v2 { color: var(--color-primary); }
.kbv2-fcol p { margin: 0; white-space: pre-wrap; }
.kbv2-fops { display: flex; flex-direction: column; gap: 6px; }
.kbv2-kp { margin: 0; padding-left: 16px; }
.kbv2-kp b { margin-right: 6px; }
.kbv2-mis { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; margin-bottom: 8px; }
.kbv2-mis b { display: block; font-size: 12px; color: var(--color-text-tertiary); margin-bottom: 2px; }
.kbv2-mis p { margin: 0; }
.kbv2-map-fix { margin-top: 14px; padding-top: 10px; border-top: 1px dashed var(--color-border); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.kbv2-map-fix h5 { margin: 0; }
.kbv2-map-fix select { max-width: 420px; height: 30px; border: 1px solid var(--color-border); border-radius: var(--radius-control); font-size: 12px; }
.kbv2-blocking { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.8; }
.kbv2-admin-edit { margin-top: 14px; }
.kbv2-admin-edit summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--color-text-secondary); }
.kbv2-edit-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 10px; }
.kbv2-edit-grid label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--color-text-secondary); }
.kbv2-edit-grid input, .kbv2-edit-grid select { height: 30px; border: 1px solid var(--color-border); border-radius: var(--radius-control); padding: 0 8px; font-size: 13px; }
.kbv2-edit-grid textarea { min-height: 60px; border: 1px solid var(--color-border); border-radius: var(--radius-control); padding: 6px 8px; font-size: 13px; line-height: 1.6; resize: vertical; }
.kbv2-edit-wide { grid-column: 1 / -1; }
.kbv2-edit-actions { margin-top: 12px; }

@media (max-width: 900px) {
  .kbv2-frow, .kbv2-group-row { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .kbv2-fops { flex-direction: row; }
  .kbv2-edit-grid { grid-template-columns: minmax(0, 1fr); }
}

                                                     
.ops-banner { background: var(--color-primary-soft, var(--color-primary-soft)); border-bottom: 1px solid var(--color-primary-border, var(--color-primary-border)); }
.ops-banner-inner { display: flex; align-items: center; gap: 12px; min-height: 40px; padding: 6px max(16px, calc((100% - 1120px) / 2)); }
.ops-banner-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 600; color: var(--color-primary, var(--color-primary)); }
.ops-banner-count { flex: none; font-size: 12px; color: var(--color-text-secondary, var(--color-neutral)); font-variant-numeric: tabular-nums; }
.ops-banner-spring { flex: 1; }
.ops-banner-cta { flex: none; display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: var(--radius-control, 6px); background: var(--color-primary, var(--color-primary)); color: var(--color-primary-foreground, #fff); font-size: 12px; font-weight: 600; text-decoration: none; }
.ops-banner-cta:hover { background: var(--color-primary-hover, var(--color-primary-hover)); color: var(--color-primary-foreground, #fff); }
.ops-banner-close { flex: none; width: 24px; height: 24px; border: 0; background: none; border-radius: var(--radius-control, 6px); font-size: 15px; line-height: 1; color: var(--color-text-tertiary, var(--color-text-tertiary)); cursor: pointer; }
.ops-banner-close:hover { color: var(--color-text-primary, #111827); }
@media (max-width: 640px) {
  .ops-banner-count { display: none; }
}



/* ===== 连线配对 / 归类 / 时序排列（结构化题型学生端） ===== */
.match-cols { display: flex; gap: 16px; }
.match-col { flex: 1; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.match-item { appearance: none; text-align: left; background: var(--color-surface, #fff); border: 1px solid var(--color-border); border-radius: var(--radius-control); padding: 10px 12px; font-size: 14px; line-height: 1.5; cursor: pointer; }
.match-item.picked { border-color: var(--color-primary); background: var(--color-primary-soft); }
.match-item.linked { opacity: .65; border-style: dashed; }
.match-item i { font-style: normal; color: var(--color-primary); font-size: 12px; }
.pair-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.pair-chip { font-size: 13px; border: 1px solid var(--color-border); border-radius: var(--radius-control); padding: 4px 8px; background: var(--color-surface, #fff); }
.cat-items { display: flex; flex-wrap: wrap; gap: 8px; }
.cat-grid { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.cat-grid .match-item { background: var(--color-primary-soft); }
.order-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.order-list li { display: flex; align-items: center; gap: 10px; border: 1px solid var(--color-border); border-radius: var(--radius-control); padding: 8px 10px; background: var(--color-surface, #fff); }
.order-num { flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%; background: var(--color-primary-soft); color: var(--color-primary); display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; }
.order-text { flex: 1; font-size: 14px; line-height: 1.5; min-width: 0; }
.order-btns { display: flex; gap: 4px; flex-shrink: 0; }
.order-btns button { width: 30px; height: 30px; border-radius: var(--radius-control); border: 1px solid var(--color-border); background: var(--color-surface, #fff); cursor: pointer; }
.order-btns button:disabled { opacity: .35; cursor: default; }

/* ===== 弹幕活动：学生端「一句话发送」输入区（复用同一提交接口） ===== */
#danmuComposer { margin-top: 12px; }
.dm-compose-row { display: flex; align-items: flex-end; gap: 8px; }
.dm-compose-row textarea {
  flex: 1; min-width: 0; margin: 0; padding: 10px 12px;
  min-height: 44px; max-height: 96px; line-height: 1.5; font-size: 15px;
  resize: none; border: 1px solid var(--color-border); border-radius: var(--radius-control);
  background: var(--color-surface); color: var(--color-text-primary);
}
.dm-compose-row textarea:focus { border-color: var(--color-primary); outline: none; }
.dm-send { flex: none; height: 44px; padding: 0 20px; margin: 0; font-size: 15px; font-weight: 600; white-space: nowrap; }
.dm-send[disabled] { opacity: .5; cursor: default; }
.dm-compose-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 8px; font-size: 12px; color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }
.dm-status { min-height: 16px; text-align: right; }
.dm-status.ok { color: var(--color-primary); }
.dm-status.err { color: var(--color-error); }
@media (max-width: 360px) {
  .dm-compose-row { flex-direction: column; align-items: stretch; }
  .dm-send { width: 100%; }
}

/* ===== 弹幕视图：空态与工具条换行 ===== */
.dm-toolbar { flex-wrap: wrap; }
.dm-empty { margin: 16px 0 0; font-size: 14px; color: var(--color-text-tertiary); }

/* ===== 学生端统一外壳：顶部信息条 + 吸底主操作区 ===== */
.stu-bar {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 16px; padding-bottom: 12px;
  border-bottom: 1px solid var(--color-border);
  font-size: 12px; color: var(--color-text-tertiary);
}
.stu-brand { flex: none; font-size: 13px; font-weight: 600; color: var(--color-primary); letter-spacing: .02em; }
.stu-klass { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stu-who {
  flex: none; max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  padding: 2px 8px; border: 1px solid var(--color-border); border-radius: var(--radius-control);
  background: var(--color-surface); color: var(--color-text-secondary);
}
/* 课堂状态条：SSE 驱动单行常驻（圆点 + 文案），data-tone 区分语义色；与 .stu-bar 同容器，自动对齐左右留白 */
.stu-status {
  display: flex; align-items: center; gap: 8px;
  margin: 0 0 16px;
  font-size: 12px; color: var(--color-text-secondary);
}
.stu-status[hidden] { display: none; }
.stu-status-dot {
  flex: none; width: 8px; height: 8px; border-radius: 50%;
  background: var(--color-text-tertiary);
}
#stuStatusText {
  flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.stu-status[data-tone="ok"] .stu-status-dot { background: var(--color-success); }
.stu-status[data-tone="warn"] { color: var(--color-warning); }
.stu-status[data-tone="warn"] .stu-status-dot { background: var(--color-warning); }
.stu-status[data-tone="info"] .stu-status-dot { background: var(--color-info); }
/* 固定在视口底部（内容不足一屏时也贴底），页面给底栏留出安全高度 */
.student-page { padding-bottom: calc(104px + env(safe-area-inset-bottom)); }
.stu-actions {
  position: fixed; left: 50%; transform: translateX(-50%); bottom: 0; z-index: 20;
  width: min(100%, 480px); margin: 0;
  padding: 8px 18px calc(8px + env(safe-area-inset-bottom));
}
.stu-actions:has(> .btn:not([hidden])),
.stu-actions:has(> #danmuComposer:not([hidden])) {
  background: var(--color-background);
  border-top: 1px solid var(--color-border);
}
.stu-actions .btn { margin: 0; }
.stu-actions .dm-compose-row textarea { margin: 0; }

/* ===== 学生端图片附件：缩略图条 + 预览浮层 ===== */
.imgpick { margin-top: 8px; }
.imgpick-note { margin: 8px 0 0; font-size: 12px; color: var(--color-text-tertiary); }
.imgpick-strip { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.imgpick-strip:empty { margin-bottom: 0; }
.img-thumb {
  position: relative; width: 64px; height: 64px; overflow: hidden; cursor: pointer;
  border: 1px solid var(--color-border); border-radius: var(--radius-control); background: var(--color-surface);
}
.img-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.img-thumb-state {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 4px;
  font-size: 11px; font-style: normal; text-align: center; line-height: 1.2;
  color: var(--color-text-on-strong); background: var(--color-text-secondary);
}
.img-thumb-state.err { background: var(--color-error); }
.img-thumb-del {
  position: absolute; top: 4px; right: 4px; width: 20px; height: 20px; padding: 0;
  border: none; border-radius: 50%; cursor: pointer;
  font-size: 13px; line-height: 1; color: var(--color-text-on-strong); background: var(--color-text-secondary);
}
#imgAdd[hidden] { display: none; }
.img-viewer {
  position: fixed; inset: 0; z-index: 40;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px;
  padding: 24px 16px calc(24px + env(safe-area-inset-bottom));
  background: var(--color-overlay-backdrop, rgba(17, 24, 39, 0.85));
}
.img-viewer[hidden] { display: none; }
.img-viewer img { max-width: 100%; max-height: 70vh; object-fit: contain; border-radius: var(--radius-control); }
.img-viewer-bar { display: flex; gap: 12px; }
.img-viewer-bar .btn.ghost { color: var(--color-text-on-strong); border-color: var(--color-text-on-strong); background: transparent; }

/* ===== 学生端界面重设计（2026-10-28）：纸张卡片外壳 + 卡头 + 身份卡片 + 大块上传区 ===== */
/* 外层只留呼吸留白，卡片是学生端唯一的视觉容器（1px 边框 + 底色，不加阴影） */
body.space-student { padding: 16px 12px calc(16px + env(safe-area-inset-bottom)); }
.student-page {
  box-sizing: border-box;
  display: flex; flex-direction: column;
  width: 100%; max-width: 456px;
  min-height: calc(100dvh - 32px - env(safe-area-inset-bottom));
  margin: 0 auto; padding: 0 18px calc(104px + env(safe-area-inset-bottom));
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-overlay);
}
/* 卡头：品牌图标 + 两行标题 + 身份胶囊，负 margin 通到卡片边缘 */
.stu-bar {
  display: flex; align-items: center; gap: 10px;
  margin: 0 -18px 16px; padding: 14px 18px;
  border-bottom: 1px solid var(--color-border);
}
.stu-logo {
  flex: none; width: 36px; height: 36px; border-radius: var(--radius-control);
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in srgb, var(--color-primary) 10%, var(--color-surface));
  color: var(--color-primary);
}
.stu-bar-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.stu-brand { font-size: 15px; font-weight: 650; color: var(--color-text-primary); letter-spacing: .01em; }
.stu-klass { font-size: 12px; color: var(--color-text-tertiary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stu-who {
  flex: none; max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  padding: 4px 10px; border: 1px solid var(--color-border); border-radius: var(--radius-control);
  background: var(--color-surface); color: var(--color-text-secondary); font-size: 12px;
}
/* 首入态：垂直居中，标题大字 */
.student-page .landing { flex: 1; min-height: 0; }
.landing h1, #composer #title2 { font-size: 24px; font-weight: 700; line-height: 1.3; margin: 0 0 8px; }
#composer .sub { margin-bottom: 4px; }
.student-page #start, .stu-actions .btn { min-height: 44px; font-size: 15px; font-weight: 600; }
/* 作答身份：去掉底色框，选项改成图标卡片（与设计稿的小组卡片同构） */
.student-page .id-picker { border: none; border-radius: 0; padding: 0; margin-top: 16px; background: transparent; }
.id-seg { grid-template-columns: repeat(3, 1fr); gap: 8px; }
.id-seg-item span {
  flex-direction: column; gap: 4px; height: auto; padding: 12px 8px;
  border-radius: var(--radius-control); background: var(--color-background);
  font-size: 14px; color: var(--color-text-secondary); font-weight: 500;
}
.id-seg-item svg { color: var(--color-text-tertiary); }
.id-seg-item input:checked + span { font-weight: 600; color: var(--color-text-on-strong); }
.id-seg-item input:checked + span svg { color: var(--color-text-on-strong); }
/* 图片上传：大块虚线按钮（图标 + 主文案 + 副文案） */
.imgpick .imgpick-add {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  width: 100%; min-height: 76px; margin-top: 4px; padding: 12px;
  border: 1px dashed var(--color-border-strong, var(--color-border));
  border-radius: var(--radius-control); background: var(--color-background);
  color: var(--color-text-secondary); font-weight: 500;
}
.imgpick .imgpick-add b { font-size: 14px; font-weight: 600; color: var(--color-text-primary); }
.imgpick .imgpick-add small { font-size: 12px; font-weight: 400; color: var(--color-text-tertiary); }
.imgpick .imgpick-add:disabled { opacity: .55; }
/* 提交成功提示：绿色横幅 + 圆形对勾（空内容时不渲染） */
.student-page .oktext:not(:empty) {
  display: flex; align-items: center; gap: 10px;
  margin: 16px 0 0; padding: 12px 16px;
  border-radius: var(--radius-control);
  background: color-mix(in srgb, var(--color-success) 10%, var(--color-surface));
  color: var(--color-success); font-size: 14px; font-weight: 600;
}
.student-page .oktext:not(:empty)::before {
  content: "✓"; flex: none; width: 24px; height: 24px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--color-success); color: var(--color-text-on-strong); font-size: 14px;
}
