/* Paper Studio teaching tools: lessons, classroom presenter, topic frequency,
   similar-question swap. Built on --dash-* tokens so both themes work. */

:root{
  --pt-right:#15803d;--pt-right-soft:rgba(21,128,61,.14);
  --pt-wrong:#c2410c;--pt-wrong-soft:rgba(194,65,12,.13);
  --pt-amber:#b45309;--pt-amber-soft:rgba(180,83,9,.14);
}
html[data-ps-theme="dark"]{--pt-right:#4ade80;--pt-right-soft:rgba(74,222,128,.16);--pt-wrong:#fb923c;--pt-wrong-soft:rgba(251,146,60,.16);--pt-amber:#fbbf24;--pt-amber-soft:rgba(251,191,36,.16)}

/* ---- lesson list + editor ------------------------------------------------ */
.pt-lesson-row{align-items:center}
.pt-lesson-row .library-actions{flex-wrap:nowrap}
.pt-title-input{width:min(520px,100%);font-size:clamp(18px,2vw,22px);font-weight:700;letter-spacing:-.01em;border:1px solid transparent;border-radius:10px;padding:6px 10px;margin-left:-10px;background:transparent;color:var(--dash-ink)}
.pt-title-input:hover,.pt-title-input:focus{border-color:var(--dash-line-strong);background:var(--dash-bg-2)}
.pt-edit-grid{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1.4fr);gap:14px;align-items:start}
.pt-edit-grid>.page-panel{margin:0}
.pt-picker{position:sticky;top:12px;max-height:calc(100vh - 140px);display:flex;flex-direction:column}
.pt-picker input{width:100%;min-height:38px;margin-bottom:8px}
.pt-topic-tree{overflow:auto;display:grid;gap:2px;padding-right:4px}
.pt-chapter-head,.pt-topic{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto auto;align-items:center;gap:8px;width:100%;min-height:40px;padding:6px 8px;border:0;border-radius:10px;background:transparent;color:var(--dash-ink);text-align:left;cursor:pointer;font:inherit}
.pt-chapter-head{grid-template-columns:18px auto minmax(0,1fr) auto;font-weight:650}
.pt-chapter-head:hover,.pt-topic:not(:disabled):hover{background:var(--dash-accent-soft)}
.pt-chapter-head span:not(.pt-caret),.pt-topic span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.pt-chapter-head small,.pt-topic small{font-size:11.5px;color:var(--dash-muted);font-variant-numeric:tabular-nums}
.pt-caret{display:inline-flex;transition:transform .15s ease}
.pt-caret svg{width:14px;height:14px}
.pt-chapter-head[aria-expanded="false"] .pt-caret{transform:rotate(-90deg)}
.pt-chapter-body{display:grid;gap:2px;margin:2px 0 6px 18px}
.pt-topic{grid-template-columns:auto minmax(0,1fr) auto 22px}
.pt-topic b{font-size:12px;font-variant-numeric:tabular-nums;color:var(--dash-muted)}
.pt-topic.is-section{font-weight:650}
.pt-topic.is-section b{color:var(--dash-ink)}
.pt-topic i{display:inline-flex;color:var(--dash-accent)}
.pt-topic i svg{width:16px;height:16px}
.pt-topic:disabled{cursor:default;opacity:.55}
.pt-topic:disabled i{color:var(--dash-muted)}
.pt-slots{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.pt-slot,.pt-slot-q>*{min-width:0}
.pt-slots>.ps-sec-head{margin-bottom:0}
.pt-slot{border:1px solid var(--dash-line);border-radius:14px;padding:10px 12px;background:var(--dash-bg-2)}
.pt-slot-head{display:flex;align-items:center;gap:8px}
.pt-slot-head .grow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}
.pt-slot-head .grow span{color:var(--dash-muted)}
.pt-slot-no{flex:none;display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--dash-accent-soft);color:var(--dash-accent);font-weight:700;font-size:12.5px}
.pt-slot-q{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:12px;margin-top:10px}
.pt-slot-meta{display:flex;flex-direction:column;gap:6px;align-items:flex-start;font-size:12px;color:var(--dash-muted)}
.pt-slot-meta small{line-height:1.4}
.pt-thumb{display:block;max-height:170px;overflow:hidden;border-radius:10px;border:1px solid var(--dash-line);background:#fff}
.pt-thumb img{display:block;width:100%;height:auto}
.pt-thumb.is-small{width:96px;max-height:72px;flex:none}
@media (max-width:900px){.pt-edit-grid{grid-template-columns:1fr}.pt-picker{position:static;max-height:420px}.pt-slot-q{grid-template-columns:minmax(0,1fr)}}

/* ---- studio swap drawer --------------------------------------------------- */
.pt-swap{margin:0 0 12px;padding:10px;border-radius:12px;background:var(--dash-accent-soft)}
.pt-swap-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}
.pt-swap-head strong{display:block;font-size:13px}
.pt-swap-head small{font-size:11.5px;color:var(--dash-muted)}
.pt-swap-head select{min-height:32px}
.pt-swap-row{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:6px;margin-top:4px;border:1px solid var(--dash-line);border-radius:10px;background:var(--dash-bg);color:var(--dash-ink);text-align:left;cursor:pointer;font:inherit}
.pt-swap-row:hover,.pt-swap-row:focus-visible{border-color:var(--dash-accent)}
.pt-swap-copy{display:grid;min-width:0}
.pt-swap-copy strong{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-swap-copy small{font-size:11.5px;color:var(--dash-muted)}

/* ---- presenter ------------------------------------------------------------- */
html.pt-presenting,html.pt-presenting body{overflow:hidden}
.pt-presenter{position:fixed;inset:0;z-index:1000;background:var(--dash-bg,#f5f5f7);color:var(--dash-ink,#1d1d1f)}
.pt-pres{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%}
.pt-pres-top{display:grid;grid-template-columns:minmax(0,1.2fr) auto minmax(0,1fr);align-items:center;gap:16px;padding:12px 20px;border-bottom:1px solid var(--dash-line)}
.pt-pres-topic{min-width:0}
.pt-pres-topic small{display:block;font-size:13px;color:var(--dash-muted)}
.pt-pres-topic strong{display:block;font-size:clamp(18px,1.8vw,24px);letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:0;padding:0;list-style:none;max-width:44vw}
.pt-dot{display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 6px;border-radius:999px;border:1.5px solid var(--dash-line-strong);background:transparent;color:var(--dash-muted);font:700 12.5px/1 inherit;font-variant-numeric:tabular-nums;cursor:pointer}
.pt-dot[data-state="current"]{border-color:var(--dash-accent);background:var(--dash-accent);color:var(--dash-accent-ink,#fff)}
.pt-dot[data-state="right"]{border-color:transparent;background:var(--pt-right-soft);color:var(--pt-right)}
.pt-dot[data-state="recovered"]{border-color:transparent;background:var(--pt-amber-soft);color:var(--pt-amber)}
.pt-dot[data-state="wrong"]{border-color:transparent;background:var(--pt-wrong-soft);color:var(--pt-wrong)}
.pt-pres-tools{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:6px}
.pt-tool{min-height:40px;padding:0 14px;border-radius:10px;border:1px solid var(--dash-line-strong);background:var(--dash-bg-2);color:var(--dash-ink);font:600 14px/1 inherit;font-variant-numeric:tabular-nums;cursor:pointer}
.pt-tool.is-on{border-color:var(--dash-accent);color:var(--dash-accent);background:var(--dash-accent-soft)}
.pt-tool.is-done{border-color:var(--pt-wrong);color:var(--pt-wrong);background:var(--pt-wrong-soft)}
.pt-stage{position:relative;display:flex;gap:18px;justify-content:center;align-items:flex-start;min-height:0;overflow:auto;padding:18px 20px}
.pt-paper{position:relative;flex:0 0 auto;background:#fff;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.08),0 10px 30px rgba(0,0,0,.08)}
.pt-paper img{display:block;width:100%;height:auto}
.pt-paper canvas{position:absolute;inset:0;pointer-events:none;touch-action:auto}
.pt-paper.is-pen canvas{pointer-events:auto;touch-action:none;cursor:crosshair}
.pt-mc-answer{position:absolute;top:18px;right:20px;z-index:2;padding:18px 26px;border-radius:16px;background:var(--pt-right);color:#fff;font-size:clamp(28px,3.4vw,48px);font-weight:800;letter-spacing:.02em;box-shadow:0 10px 30px rgba(0,0,0,.18)}
.pt-ms{flex:0 0 42%;max-width:42%;max-height:100%;overflow:auto;position:sticky;top:0;align-self:flex-start;background:#fff;border-radius:6px;border-top:4px solid var(--pt-right);box-shadow:0 10px 30px rgba(0,0,0,.1)}
.pt-ms img{display:block;width:100%;height:auto}
.pt-empty{margin:auto;font-size:20px;color:var(--dash-muted)}
.pt-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px 16px;padding:12px 20px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--dash-line);background:var(--dash-bg-2)}
.pt-bar-meta{min-width:0}
.pt-bar-meta strong{display:block;font-size:15px}
.pt-bar-meta small{display:block;font-size:13px;color:var(--dash-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-bar-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.pt-sep{width:1px;height:28px;background:var(--dash-line-strong);margin:0 4px}
.pt-btn{min-height:48px;padding:0 18px;border-radius:12px;border:1px solid var(--dash-line-strong);background:var(--dash-bg);color:var(--dash-ink);font:650 15px/1 inherit;cursor:pointer}
.pt-btn:disabled{opacity:.45;cursor:default}
.pt-btn.is-wrong{border-color:transparent;background:var(--pt-wrong-soft);color:var(--pt-wrong)}
.pt-btn.is-right{border-color:transparent;background:var(--dash-accent);color:var(--dash-accent-ink,#fff)}
.pt-dir{min-height:48px;border-radius:12px;padding:0 10px}
.pt-keys{grid-column:1/-1;margin:0;font-size:11.5px;color:var(--dash-faint,var(--dash-muted))}
.pt-summary .pt-sum{overflow:auto;padding:24px 20px}
.pt-sum ol{display:grid;gap:8px;max-width:820px;margin:0 auto;padding:0;list-style:none}
.pt-sum-row{display:grid;grid-template-columns:34px auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;background:var(--dash-bg-2);font-size:15px}
.pt-sum-row span:not(.pt-dot){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dash-muted)}
.pt-sum-row em{font-style:normal;font-weight:700}
.pt-sum-row[data-state="right"] em{color:var(--pt-right)}
.pt-sum-row[data-state="recovered"] em{color:var(--pt-amber)}
.pt-sum-row[data-state="wrong"] em{color:var(--pt-wrong)}
.pt-sum-row[data-state=""] em{color:var(--dash-muted);font-weight:500}
@media (max-width:900px){
  .pt-pres-top{grid-template-columns:1fr auto}
  .pt-dots{grid-column:1/-1;grid-row:2;justify-content:flex-start;max-width:none}
  .pt-stage{flex-direction:column;align-items:stretch;justify-content:flex-start;padding:12px}
  .pt-ms{flex:none;max-width:none;max-height:none}
  .pt-bar{grid-template-columns:1fr}
  .pt-bar-actions{justify-content:stretch}
  .pt-bar-actions .pt-btn{flex:1 1 auto}
  .pt-sep,.pt-keys{display:none}
}

/* ---- topic frequency -------------------------------------------------------- */
.pt-freq-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}
.pt-freq-controls input{min-height:36px;min-width:180px;flex:1 1 180px;max-width:280px}
.pt-freq-cards{display:grid;grid-template-columns:1.4fr repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}
.pt-freq-cards .pt-card-label{display:block;line-height:1.45}
.pt-freq-cards .ps-metric p{margin:8px 0 0;display:flex;flex-wrap:wrap}
.pt-chip{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:500}
.pt-chip b{margin-right:4px}
.pt-freq-table th[scope="row"]{min-width:220px;max-width:360px}
.pt-freq-code{font-variant-numeric:tabular-nums;font-weight:700;margin-right:8px}
.pt-freq-title{color:var(--dash-muted);font-weight:500}
.pt-freq-table thead .ps-cell small{display:block;font-size:10.5px;color:var(--dash-muted);font-weight:500}
.pt-freq-table tr.is-zero th,.pt-freq-table tr.is-zero td{color:var(--dash-muted)}
.pt-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pt-num small{display:block;font-size:11px;color:var(--dash-muted)}
.pt-trend{font-weight:800;color:var(--dash-muted)}
.pt-trend.is-up{color:var(--pt-wrong)}
.pt-trend.is-down{color:var(--dash-accent)}
.pt-row-actions{white-space:nowrap}
.pt-row-actions .secondary{min-height:32px;padding:0 10px;font-size:12.5px}
@media (max-width:900px){.pt-freq-cards{grid-template-columns:1fr 1fr}}

@media (prefers-reduced-motion:reduce){.pt-caret{transition:none}}

/* ---- ps-teacher.js additions: mark by question, clickable matrix ---------- */
.ps-byq-progress{display:inline-flex;align-items:center;min-height:32px;padding:0 10px;border-radius:999px;background:var(--dash-accent-soft);color:var(--dash-accent);font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.ps-quick-score{display:inline-flex;flex-wrap:wrap;gap:4px}
.ps-quick-score .chip{min-width:34px;min-height:34px;justify-content:center;font-variant-numeric:tabular-nums}
.ps-topic-btn{all:unset;display:inline-flex;cursor:pointer;border-radius:6px}
.ps-topic-btn:hover span,.ps-topic-btn:focus-visible span{color:var(--dash-accent);text-decoration:underline}
.ps-topic-btn:focus-visible{outline:2px solid var(--dash-accent);outline-offset:2px}
.ps-chip-btn{border:0;cursor:pointer;font:inherit;font-size:12px;font-weight:600}
.ps-chip-btn:hover{filter:brightness(.95);text-decoration:underline}

/* ---- board / subject / paper pickers (lesson editor, frequency) ---------- */
.pt-scope{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}
.pt-scope label{display:grid;gap:3px;font-size:11.5px;color:var(--dash-muted);font-weight:600}
.pt-scope select{min-height:36px;min-width:120px;max-width:340px;border-radius:10px}
.pt-scope label:nth-child(2) select{min-width:200px}
.pt-scope label:nth-child(3) select{min-width:220px}

/* ---- lesson syllabus tree (mirrors the studio outline) --------------------- */
.pt-tree-item{display:block}
.pt-tree-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto 32px;align-items:start;gap:6px;padding:5px 4px;border-radius:8px}
.pt-tree-row:hover{background:var(--dash-accent-soft)}
.pt-tree-item[data-depth="0"]>.pt-tree-row{margin-top:10px;background:var(--dash-bg-3);font-weight:680}
.pt-tree-item[data-depth="0"]:first-child>.pt-tree-row{margin-top:0}
.pt-tree-children{margin-left:14px;padding-left:8px;border-left:1px solid var(--dash-line)}
.pt-tree-label{padding-top:5px;font-size:13px;line-height:1.45;color:var(--dash-ink);white-space:normal;overflow-wrap:anywhere;cursor:pointer}
.pt-tree-label b{font-weight:650;color:var(--dash-muted);font-variant-numeric:tabular-nums;margin-right:2px}
.pt-tree-item[data-depth="0"] .pt-tree-label b{color:var(--dash-ink)}
.pt-tree-row small{padding-top:6px;font-size:11.5px;color:var(--dash-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.pt-tree-row.is-empty small{color:var(--dash-faint,var(--dash-muted))}
.pt-tree-row.is-empty .pt-tree-label{cursor:default}
.pt-tree-toggle,.pt-tree-add{display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--dash-muted);cursor:pointer}
.pt-tree-toggle svg{width:14px;height:14px;transition:transform .15s ease}
.pt-tree-toggle[aria-expanded="false"] svg{transform:rotate(-90deg)}
.pt-tree-add{width:30px;height:30px;border-radius:50%;background:var(--dash-accent-soft);color:var(--dash-accent)}
.pt-tree-add svg{width:16px;height:16px}
.pt-tree-add:hover:not(:disabled){background:var(--dash-accent);color:var(--dash-accent-ink,#fff)}
.pt-tree-add:disabled{background:transparent;color:var(--dash-line-strong);cursor:default}
.pt-tree-row.is-added .pt-tree-add{color:var(--pt-right)}
.pt-tree-spacer{width:28px}
@media (prefers-reduced-motion:reduce){.pt-tree-toggle svg{transition:none}}
/* icon() paths are stroke-only; containers elsewhere supply the stroke, so do it here too */
.pt-tree-toggle svg,.pt-tree-add svg,.pt-topic i svg,.pt-caret svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.pt-slot-head{align-items:flex-start}
.pt-slot-head .grow{white-space:normal;overflow:visible;line-height:1.45;padding-top:3px}
.pt-slot-head .icon-button svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* ---- presenter: marks and zoom ------------------------------------------ */
.pt-stage{justify-content:safe center}
.pt-zoom{display:inline-flex;gap:4px}
.pt-zoom .pt-tool{min-width:40px;padding:0 10px}
.pt-marks{display:inline-flex;gap:6px}
.pt-mark.is-right-mark.is-on{border-color:transparent;background:var(--pt-right);color:#fff}
.pt-mark.is-wrong-mark.is-on{border-color:transparent;background:var(--pt-wrong);color:#fff}
.pt-mark:not(.is-on).is-right-mark{color:var(--pt-right)}
.pt-mark:not(.is-on).is-wrong-mark{color:var(--pt-wrong)}
.pt-sum-head{max-width:820px;margin:22px auto 8px;font-size:15px}
.pt-sum-head small{color:var(--dash-muted);font-weight:500}
.pt-sum-missed{display:grid;gap:6px;max-width:820px;margin:0 auto;padding:0;list-style:none}
.pt-sum-missed li{display:flex;gap:12px;padding:10px 14px;border-radius:10px;background:var(--pt-wrong-soft);font-size:14px}
.pt-sum-missed span{color:var(--dash-muted)}

/* ---- lesson outline: same markup as the studio outline (wizard look) ------ */
.pt-outline{border:0;background:transparent;padding:0 2px 8px;display:block}
.pt-outline .topic-item{border:0;display:flex;flex-wrap:wrap;align-items:flex-start}
.pt-outline .topic-row{flex:1;min-width:0;display:flex;align-items:flex-start;gap:8px;border:0;border-radius:8px;margin:1px 0;min-height:36px;padding:6px 8px}
.pt-outline .topic-row[style*="--topic-depth:0"]{margin-top:12px;font-weight:680;background:var(--dash-bg-2)}
.pt-outline>.topic-item:first-child>.topic-row{margin-top:0}
.pt-outline .topic-row:hover{background:var(--dash-accent-soft)}
.pt-outline .topic-row>span{flex:1;min-width:0;white-space:normal;overflow:visible;text-overflow:unset;line-height:1.45;cursor:pointer}
.pt-outline .topic-row.is-empty>span{cursor:default}
.pt-outline .topic-code{font-weight:500;color:var(--dash-muted);font-variant-numeric:tabular-nums;margin-right:4px}
.pt-outline .topic-row>small{padding-top:2px;font-size:11.5px;color:var(--dash-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.pt-outline .topic-row .pt-tree-add{flex:none;margin-top:-3px}
.pt-outline .topic-children{flex:0 0 100%;margin-left:18px;padding-left:10px;border-left:1px solid var(--dash-line)}
.pt-outline .topic-expand{flex:0 0 28px;min-width:28px;min-height:36px;display:grid;place-items:center;border:0;background:transparent;color:var(--dash-muted);cursor:pointer}
.pt-outline .topic-expand svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s ease}
.pt-outline .topic-expand[aria-expanded="false"] svg{transform:rotate(-90deg)}
.pt-outline .topic-expand-spacer{flex:0 0 28px}
.pt-outline .topic-row.is-added .pt-tree-add{color:var(--pt-right)}
@media (prefers-reduced-motion:reduce){.pt-outline .topic-expand svg{transition:none}}

/* ---- lesson editor header: title row + scope chips, same as studio scope ---- */
.dash-app main.pt-editor>header.pt-edit-head{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;
  column-gap:16px;row-gap:10px;margin:0 0 14px;
}
.dash-app main.pt-editor>header.pt-edit-head>.page-head-copy{min-width:0}
.dash-app main.pt-editor>header.pt-edit-head>.library-actions{margin:0;align-self:center;flex-wrap:nowrap}
.dash-app main.library.pt-editor input.pt-title-input{
  width:100%;max-width:none;margin:0;padding:4px 8px 4px 10px;min-height:40px;
  border:1px solid transparent!important;border-radius:10px;background:transparent!important;
  box-shadow:none!important;color:var(--dash-ink)!important;
  font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1.25;
}
.dash-app main.library.pt-editor input.pt-title-input:hover,
.dash-app main.library.pt-editor input.pt-title-input:focus{
  border-color:var(--dash-line-strong)!important;background:var(--dash-bg-2)!important;
}
.dash-app main.pt-editor .pt-scope{grid-column:1/-1;margin:0}
.dash-app main.pt-editor .pt-scope-field{flex:1 1 0;min-width:0;max-width:none}
.dash-app main.pt-editor .pt-scope-field:nth-child(1){flex:0.75 1 0}
.dash-app main.pt-editor .pt-scope-field:nth-child(2){flex:0.9 1 0}
.dash-app main.pt-editor .pt-scope-field:nth-child(3){flex:1.15 1 0;min-width:0}
.dash-app main.pt-editor .pt-scope-field:nth-child(4){flex:1.35 1 0;min-width:0}
.dash-app main.pt-editor .pt-scope-field>span{font-size:10px;font-weight:600;letter-spacing:0;line-height:1.15}
.dash-app main.pt-editor .pt-scope-field select{
  font-size:13px;font-weight:600;line-height:1.25;padding:1px 0 0;
  background:transparent!important;border:0!important;box-shadow:none!important;color:var(--dash-ink)!important;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.dash-app main.pt-editor .pt-scope-field::after{right:12px;width:6px;height:6px;margin-top:-4px;border-width:1.6px}
@media (max-width:720px){
  .dash-app main.pt-editor .pt-scope{flex-wrap:wrap}
  .dash-app main.pt-editor .pt-scope-field,
  .dash-app main.pt-editor .pt-scope-field:nth-child(n){flex:1 1 50%;min-width:50%}
}

/* ---- lesson editor v3: wider picker, flat rows, ticks -------------------- */
.dash-app main.pt-editor{max-width:1480px;width:100%}
.pt-edit-grid{grid-template-columns:minmax(400px,1.2fr) minmax(0,1fr)}
.pt-picker{height:calc(100vh - 170px);min-height:520px;max-height:none}
.pt-picker .pt-topic-tree{flex:1 1 auto;min-height:0;overflow:auto}
.dash-app .pt-outline .topic-row{background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:0!important;border-radius:8px!important;box-shadow:none!important;
  display:flex;align-items:flex-start;gap:10px;min-height:34px;margin:0;padding:6px 10px 6px 6px;font-size:13.5px;font-weight:450;line-height:1.5;color:var(--dash-ink);cursor:pointer}
.dash-app .pt-outline .topic-row[style*="--topic-depth:0"]{margin-top:10px;background:var(--dash-bg-3)!important;font-weight:650}
.dash-app .pt-outline>.topic-item:first-child>.topic-row{margin-top:0}
.dash-app .pt-outline .topic-row:hover{background:var(--dash-accent-soft)!important}
.dash-app .pt-outline .topic-row:has(input:checked:not(:disabled)){background:var(--dash-accent-soft)!important}
.dash-app .pt-outline .topic-item:hover{background:transparent!important}
.pt-outline .topic-row input{flex:none;width:17px;height:17px;margin:2px 0 0;accent-color:var(--dash-accent);cursor:pointer}
.pt-outline .topic-row>span{flex:1;min-width:0;cursor:pointer}
.pt-outline .topic-row .topic-code{font-weight:600;color:var(--dash-muted);margin-right:6px}
.pt-outline .topic-row[style*="--topic-depth:0"] .topic-code{color:var(--dash-ink)}
.pt-outline .topic-row>small{flex:none;padding-top:1px;font-size:12px}
.pt-outline .topic-row.is-empty{color:var(--dash-muted)}
.pt-outline .topic-row.is-added input{accent-color:var(--pt-right)}
.pt-added-tag{display:inline-block;margin-left:8px;padding:0 7px;border-radius:999px;background:var(--pt-right-soft);color:var(--pt-right);font-style:normal;font-size:11px;font-weight:650;vertical-align:1px}
.pt-outline .topic-children{margin-left:14px;padding-left:8px}
.pt-outline .topic-expand{min-height:34px}
.pt-picker-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--dash-line);font-size:12.5px;color:var(--dash-muted)}
.pt-picker-foot span{margin-right:auto}
.pt-picker-foot .primary{min-height:38px}
@media (max-width:1100px){.pt-edit-grid{grid-template-columns:1fr}.pt-picker{height:auto;max-height:620px;position:static}}

.pt-slot-grip{flex:none;display:grid;place-items:center;width:22px;height:26px;margin-left:-4px;color:var(--dash-muted);cursor:grab;border-radius:6px}
.pt-slot-grip:hover{background:var(--dash-bg-3);color:var(--dash-ink)}
.pt-slot-grip:active{cursor:grabbing}
.pt-slot-grip svg{width:16px;height:16px;fill:currentColor;stroke:none}
.pt-slot.is-dragging{opacity:.45}
.pt-slot.drop-before{box-shadow:0 -3px 0 var(--dash-accent)}
.pt-slot.drop-after{box-shadow:0 3px 0 var(--dash-accent)}

/* ---- lesson editor v4: two steps, full-width outline, tray ------------------ */
.pt-steps{margin:0 0 12px}
.pt-steps b{margin-left:4px;font-variant-numeric:tabular-nums}
.pt-picker-full{display:flex;flex-direction:column;height:calc(100vh - 250px);min-height:560px;max-width:none;position:static}
.pt-picker-full>input{width:100%;min-height:40px;margin-bottom:10px;flex:none}
.pt-picker-full .pt-topic-tree{flex:1 1 auto;min-height:0;overflow:auto;padding-right:6px}
.pt-outline .topic-children{flex:0 0 calc(100% - 14px);max-width:calc(100% - 14px);box-sizing:border-box}
.pt-outline .topic-item{width:100%}
.pt-tray{flex:none;display:flex;align-items:center;gap:12px;margin-top:10px;padding-top:12px;border-top:1px solid var(--dash-line)}
.pt-tray-order{flex:1;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;max-height:84px;overflow:auto}
.pt-tray-label{font-size:12px;font-weight:650;color:var(--dash-muted);margin-right:4px}
.pt-tray-hint{font-size:12.5px;color:var(--dash-muted)}
.pt-tray-order>i{font-style:normal;color:var(--dash-faint,var(--dash-muted));font-size:12px}
.pt-tray-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px 3px 4px;border:0;border-radius:999px;background:var(--dash-accent-soft);color:var(--dash-ink);font:600 12.5px/1.2 inherit;font-variant-numeric:tabular-nums;cursor:grab}
.pt-tray-chip:active{cursor:grabbing}
.pt-tray-chip.is-dragging{opacity:.4}
.pt-tray-chip.drop-before{box-shadow:-3px 0 0 var(--dash-accent)}
.pt-tray-chip.drop-after{box-shadow:3px 0 0 var(--dash-accent)}
.pt-tray-chip:focus-visible{outline:2px solid var(--dash-accent);outline-offset:2px}
.pt-tray-chip b{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:50%;background:var(--dash-accent);color:var(--dash-accent-ink,#fff);font-size:11px}
.pt-tray-chip.is-loading{opacity:.6}
.pt-tray-chip.is-empty{background:var(--pt-wrong-soft)}
.pt-tray-actions{flex:none;display:flex;gap:8px}
.pt-slots-full{max-width:1100px}
@media (min-width:1101px){.pt-slots-full .pt-slot-q{grid-template-columns:minmax(0,1fr) 220px}}
@media (max-width:760px){.pt-tray{flex-direction:column;align-items:stretch}.pt-picker-full{height:auto;max-height:none}.pt-picker-full .pt-topic-tree{max-height:60vh}}
.pt-picker-full{height:calc(100vh - 200px);min-height:620px}
.dash-app .pt-picker-full .pt-topic-tree{max-height:none!important;height:auto;border:0;background:transparent;box-shadow:none}

/* ---- tray on top, compact example-chain rows, preview ------------------------ */
.pt-picker-full>.pt-tray{margin:0 0 12px;padding:0 0 12px;border-top:0;border-bottom:1px solid var(--dash-line)}
.pt-slots-full{max-width:1180px}
.pt-rows{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.pt-row{display:grid;grid-template-columns:22px 26px 132px minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 12px 8px 8px;border:1px solid var(--dash-line);border-radius:12px;background:var(--dash-bg-2);transition:border-color .12s ease,box-shadow .12s ease}
.pt-row:hover{border-color:var(--dash-line-strong)}
.pt-row .pt-slot-grip{margin:0}
.pt-row .pt-slot-no{width:24px;height:24px;font-size:12px}
.pt-row-thumb{display:block;width:132px;height:74px;padding:0;border:1px solid var(--dash-line);border-radius:8px;background:#fff;overflow:hidden;cursor:zoom-in}
.pt-row-thumb img{display:block;width:100%;height:auto;object-fit:cover;object-position:top}
.pt-row-thumb:hover,.pt-row-thumb:focus-visible{border-color:var(--dash-accent)}
.pt-row-thumb.is-placeholder{display:grid;place-items:center;cursor:default;background:var(--dash-bg-3);border-style:dashed;font-size:11.5px;color:var(--dash-muted)}
.pt-row-thumb.is-empty{background:var(--pt-wrong-soft);color:var(--pt-wrong)}
.pt-row-main{min-width:0}
.pt-row-title{margin:0;font-size:13.5px;line-height:1.45;color:var(--dash-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pt-row-title b{font-weight:650;margin-right:4px;font-variant-numeric:tabular-nums}
.pt-row-meta{display:flex;flex-wrap:wrap;gap:2px 12px;margin-top:4px}
.pt-row-meta small{font-size:12px;color:var(--dash-muted);font-variant-numeric:tabular-nums}
.pt-row-meta small.is-warn{color:var(--pt-wrong)}
.pt-row-actions{display:flex;align-items:center;gap:6px}
.pt-row-actions .secondary{min-height:32px;padding:0 12px;font-size:12.5px}
.pt-row-icons{display:flex;gap:2px}
.pt-row-icons .icon-button{width:30px;height:30px;min-height:30px;display:grid;place-items:center;padding:0;border-radius:8px;border:0;background:transparent;color:var(--dash-muted)}
.pt-row-icons .icon-button:hover:not(:disabled){background:var(--dash-bg-3);color:var(--dash-ink)}
.pt-row-icons .icon-button:disabled{opacity:.3}
.pt-row-icons svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.pt-row.is-dragging{opacity:.45}
.pt-row.drop-before{box-shadow:0 -3px 0 var(--dash-accent)}
.pt-row.drop-after{box-shadow:0 3px 0 var(--dash-accent)}
@media (max-width:760px){
  .pt-row{grid-template-columns:22px 24px 96px minmax(0,1fr);row-gap:8px}
  .pt-row-thumb{width:96px;height:60px}
  .pt-row-actions{grid-column:3/-1;justify-content:space-between}
}
.pt-lightbox{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;padding:24px;background:rgba(15,18,22,.55)}
.pt-lightbox-card{display:flex;flex-direction:column;width:min(1000px,100%);max-height:100%;border-radius:14px;background:var(--dash-bg,#fff);box-shadow:0 20px 60px rgba(0,0,0,.3);overflow:hidden}
.pt-lightbox-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--dash-line);font-size:13.5px}
.pt-lightbox-head svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}
.pt-lightbox-body{overflow:auto;background:#fff;padding:12px}
.pt-lightbox-body img{display:block;width:100%;height:auto}
@media (prefers-reduced-motion:reduce){.pt-row{transition:none}}

/* ---- frequency page v2 ---------------------------------------------------- */
.pt-freq{max-width:1480px}
.pt-freq-head{margin:0 0 14px}
.pt-freq-head h1{margin:0;font-size:24px;letter-spacing:-.02em;line-height:1.2}
.pt-freq-head p{margin:4px 0 0;font-size:13.5px;color:var(--dash-muted)}
.pt-freq-toolbar{display:grid;gap:10px;margin:0 0 14px;padding:14px 16px;border:1px solid var(--dash-line);border-radius:16px;background:var(--dash-bg-2)}
.pt-freq-toolbar .pt-scope{margin:0}
.pt-freq-toolbar .pt-freq-controls{margin:0}
.pt-freq-toolbar .segmented button{min-height:34px;font-size:13px}
.pt-freq-controls input{min-height:36px}
.pt-freq-cards{grid-template-columns:minmax(180px,.8fr) repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}
.pt-freq-card{display:flex;flex-direction:column;gap:8px;min-width:0;padding:14px 16px;border-radius:16px;border:1px solid var(--dash-line);background:var(--dash-bg-2)}
.pt-freq-card.is-total{justify-content:center;gap:2px}
.pt-freq-card.is-total strong{font-size:34px;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.pt-freq-card.is-total span{font-size:14px;font-weight:650}
.pt-freq-card.is-total small{font-size:12px;color:var(--dash-muted)}
.pt-freq-card .pt-card-label{font-size:12px;font-weight:650;color:var(--dash-muted)}
.pt-freq-card.is-top .pt-card-label{color:var(--dash-accent)}
.pt-freq-card.is-rise .pt-card-label{color:var(--pt-wrong)}
.pt-freq-card.is-stale .pt-card-label{color:var(--pt-amber)}
.pt-freq-chips{display:grid;gap:6px}
.pt-freq-chip{display:flex;align-items:baseline;gap:8px;min-width:0;padding:6px 10px;border:0;border-radius:10px;background:var(--dash-bg-3);color:var(--dash-ink);font:inherit;font-size:13px;text-align:left;cursor:pointer}
.pt-freq-chip:hover{background:var(--dash-accent-soft)}
.pt-freq-chip b{flex:none;font-variant-numeric:tabular-nums}
.pt-freq-chip span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dash-muted)}
.pt-freq-none{color:var(--dash-muted)}
.pt-freq-panel{border:1px solid var(--dash-line);border-radius:16px;background:var(--dash-bg-2);overflow:hidden}
.pt-freq-scroll{overflow:auto;max-height:calc(100vh - 150px)}
.pt-freq-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.pt-freq-table thead th{position:sticky;top:0;z-index:2;padding:10px 8px;background:var(--dash-bg-2);border-bottom:1px solid var(--dash-line-strong);font-size:12px;font-weight:650;color:var(--dash-muted);text-align:right;white-space:nowrap}
.pt-freq-table thead th:first-child{text-align:left;padding-left:16px}
.pt-freq-year{text-align:center!important;font-variant-numeric:tabular-nums}
.pt-freq-year small{display:block;font-size:10.5px;font-weight:500;color:var(--dash-faint,var(--dash-muted))}
.pt-freq-table tbody td,.pt-freq-table tbody th{padding:6px 8px;border-bottom:1px solid var(--dash-line)}
.pt-freq-table tbody tr:hover>*{background:var(--dash-accent-soft)}
.pt-freq-table tbody th{text-align:left;font-weight:400;padding-left:10px;min-width:260px;max-width:420px}
.pt-freq-topic{display:flex;align-items:baseline;gap:8px;width:100%;padding:4px 6px;border:0;border-radius:8px;background:transparent;color:var(--dash-ink);font:inherit;text-align:left;cursor:pointer}
.pt-freq-topic:disabled{cursor:default}
.pt-freq-topic:not(:disabled):hover .pt-freq-title{color:var(--dash-accent);text-decoration:underline}
.pt-freq-topic .pt-freq-code{flex:none;margin:0;font-weight:650;font-variant-numeric:tabular-nums}
.pt-freq-topic .pt-freq-title{min-width:0;color:var(--dash-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.4}
.pt-freq-cell{text-align:center;padding:5px 3px!important}
.pt-freq-cell span{display:inline-grid;place-items:center;min-width:34px;height:28px;border-radius:7px;font-weight:650;font-size:12.5px;font-variant-numeric:tabular-nums;
  background:color-mix(in srgb,var(--dash-accent) calc(var(--pt-heat,0) * 70% + 8%),transparent);color:var(--dash-ink)}
.pt-freq-cell span[style*="--pt-heat:0.9"],.pt-freq-cell span[style*="--pt-heat:1"],.pt-freq-cell span[style*="--pt-heat:0.8"],.pt-freq-cell span[style*="--pt-heat:0.7"]{color:#fff}
.pt-freq-cell span.is-none{background:transparent}
.pt-cover{min-width:110px}
.pt-cover-bar{display:block;height:6px;margin:0 0 4px auto;width:84px;border-radius:999px;background:var(--dash-bg-3);overflow:hidden}
.pt-cover-bar i{display:block;height:100%;border-radius:inherit;background:var(--dash-accent)}
.pt-num small.is-stale{color:var(--pt-amber)}
.pt-trend{font-size:15px}
.pt-freq-go{text-align:right;padding-right:14px!important;white-space:nowrap}
.pt-freq-go .secondary{min-height:30px;padding:0 12px;font-size:12.5px}
.pt-freq-table tr.is-zero .pt-freq-code{color:var(--dash-muted)}
.pt-freq-note{margin:0;padding:10px 16px;font-size:12px;color:var(--dash-muted);border-top:1px solid var(--dash-line)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:1100px){.pt-freq-cards{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.pt-freq-cards{grid-template-columns:1fr}}
.pt-browse-count{justify-self:center;padding:4px 14px;border-radius:999px;background:var(--dash-bg-3);font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}

/* ---- frequency page v3 / shared scope pickers -------------------------------- */
.pt-scope{display:flex;flex-wrap:nowrap;gap:0;min-width:0;margin:0;border:1px solid var(--dash-line);border-radius:12px;background:var(--dash-bg-2);overflow:hidden}
.pt-scope-field{position:relative;display:flex;flex-direction:column;justify-content:center;flex:1 1 0;min-width:0;min-height:44px;padding:5px 26px 5px 12px;border:0;border-radius:0;background:transparent;box-shadow:none;cursor:pointer}
.pt-scope-field+.pt-scope-field{box-shadow:inset 1px 0 0 var(--dash-line)}
.pt-scope-field:hover,.pt-scope-field:focus-within{background:var(--dash-accent-soft)}
.pt-scope-field>span{font-size:10px;font-weight:600;color:var(--dash-muted);line-height:1.15}
.pt-scope-field select{appearance:none;-webkit-appearance:none;width:100%;min-height:0;margin:0;padding:1px 0 0;border:0;background:transparent;box-shadow:none;font:inherit;font-size:13px;font-weight:600;line-height:1.25;color:var(--dash-ink);cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-app .pt-scope-field select{background:transparent!important;border:0!important;box-shadow:none!important;color:var(--dash-ink)!important}
.pt-scope-field::after{content:"";position:absolute;right:12px;top:50%;width:6px;height:6px;margin-top:-4px;border-right:1.6px solid var(--dash-muted);border-bottom:1.6px solid var(--dash-muted);transform:rotate(45deg);pointer-events:none}
.pt-scope-field:has(select:disabled){opacity:.7;cursor:default}
.pt-scope-field:nth-child(1){flex:0.75 1 0}
.pt-scope-field:nth-child(2){flex:0.9 1 0}
.pt-scope-field:nth-child(3){flex:1.15 1 0}
.pt-scope-field:nth-child(4){flex:1.35 1 0}
@media (max-width:720px){
  .pt-scope{flex-wrap:wrap}
  .pt-scope-field,.pt-scope-field:nth-child(n){flex:1 1 50%;min-width:50%}
  .pt-scope-field:nth-child(n+3){box-shadow:inset 0 1px 0 var(--dash-line)}
  .pt-scope-field:nth-child(odd){box-shadow:none}
  .pt-scope-field:nth-child(even){box-shadow:inset 1px 0 0 var(--dash-line)}
  .pt-scope-field:nth-child(4){box-shadow:inset 1px 0 0 var(--dash-line),inset 0 1px 0 var(--dash-line)}
}
.pt-freq-toolbar{grid-template-columns:1fr;gap:10px;margin:0 0 14px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.pt-freq-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.pt-freq-controls .segmented{padding:3px;border-radius:12px}
.pt-freq-controls .segmented button{min-height:32px;padding:0 12px;border-radius:9px;font-size:13px}
.pt-freq-controls input{flex:1 1 200px;max-width:320px;min-height:38px;margin-left:auto;padding-left:34px;border-radius:12px;
  background:var(--dash-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23889' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 11px 50%/16px}
.pt-freq-cards{grid-template-columns:minmax(170px,.7fr) repeat(3,minmax(0,1fr));gap:12px}
.pt-freq-card{gap:10px;padding:16px;border-radius:18px;background:var(--dash-bg-2)}
.pt-freq-card .pt-card-label{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;letter-spacing:.01em}
.pt-freq-card .pt-card-label i{width:8px;height:8px;border-radius:50%;background:var(--dash-muted)}
.pt-freq-card.is-total .pt-card-label{color:var(--dash-muted)}
.pt-freq-card.is-top .pt-card-label i{background:var(--dash-accent)}
.pt-freq-card.is-rise .pt-card-label i{background:var(--pt-wrong)}
.pt-freq-card.is-stale .pt-card-label i{background:var(--pt-amber)}
.pt-freq-card.is-top .pt-card-label,.pt-freq-card.is-rise .pt-card-label,.pt-freq-card.is-stale .pt-card-label{color:var(--dash-ink)}
.pt-freq-card.is-total{justify-content:flex-start;gap:6px}
.pt-freq-card.is-total strong{display:flex;align-items:baseline;gap:6px;margin-top:6px;font-size:40px;line-height:1}
.pt-freq-card.is-total strong small{font-size:14px;font-weight:600;color:var(--dash-muted)}
.pt-freq-card.is-total .pt-total-sub{font-size:12px;font-weight:500;color:var(--dash-muted)}
.pt-freq-chips{gap:4px}
.pt-freq-chip{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:8px;padding:7px 10px;border-radius:10px;background:transparent}
.pt-freq-chip:hover{background:var(--dash-bg-3)}
.pt-freq-chip span{color:var(--dash-muted)}
.pt-freq-chip em{font-style:normal;font-size:11.5px;font-weight:650;color:var(--dash-muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.pt-freq-card.is-top .pt-freq-chip em{color:var(--dash-accent)}
.pt-freq-card.is-rise .pt-freq-chip em{color:var(--pt-wrong)}
.pt-freq-card.is-stale .pt-freq-chip em{color:var(--pt-amber)}
.pt-freq-chip+.pt-freq-chip{border-top:1px solid var(--dash-line);border-radius:0 0 10px 10px}
.pt-freq-chip:first-child:not(:only-child){border-radius:10px 10px 0 0}
@media (prefers-reduced-motion:reduce){.pt-scope-field{transition:none}}

.pt-ms-error{display:grid;gap:10px;justify-items:start;padding:16px 18px;font-size:14px;color:var(--pt-wrong)}
.pt-ms-error p{margin:0;line-height:1.5}

/* ---- presenter ink toolbar (Notability-style) -------------------------------- */
.pt-pres.has-inkbar{grid-template-rows:auto auto minmax(0,1fr) auto}
.pt-inkbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;padding:8px 16px;border-bottom:1px solid var(--dash-line);background:var(--dash-bg-2)}
.pt-ink-group{display:inline-flex;align-items:center;gap:4px;padding:3px;border-radius:12px;background:var(--dash-bg-3)}
.pt-ink-sep{width:1px;height:26px;background:var(--dash-line-strong)}
.pt-ink-btn{display:grid;place-items:center;width:38px;height:38px;padding:0;border:0;border-radius:9px;background:transparent;color:var(--dash-ink);cursor:pointer}
.pt-ink-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.pt-ink-btn:hover:not(:disabled){background:var(--dash-bg)}
.pt-ink-btn.is-on{background:var(--dash-bg);color:var(--dash-accent);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.pt-ink-btn:disabled{opacity:.3;cursor:default}
.pt-ink-chip{min-height:32px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--dash-muted);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.pt-ink-chip.is-on{background:var(--dash-bg);color:var(--dash-ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.pt-ink-swatch{width:30px;height:30px;padding:0;border:0;border-radius:50%;background:transparent;display:grid;place-items:center;cursor:pointer}
.pt-ink-swatch::before{content:"";width:20px;height:20px;border-radius:50%;background:var(--sw);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}
.pt-ink-swatch.is-on{box-shadow:0 0 0 2px var(--sw)}
.pt-ink-size{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:9px;background:transparent;cursor:pointer}
.pt-ink-size i{width:var(--d);height:var(--d);border-radius:50%;background:var(--dash-ink)}
.pt-ink-size.is-on{background:var(--dash-bg);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.pt-paper.is-pen canvas[data-mode="eraser"]{cursor:cell}

/* ---- lesson ↔ classes, lesson records ---------------------------------------- */
.pt-class-picker{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}
.pt-class-picker>span{font-size:11.5px;font-weight:650;color:var(--dash-muted);margin-right:4px}
.pt-class-chip{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:0 12px;border:1px solid var(--dash-line-strong);border-radius:999px;background:var(--dash-bg);color:var(--dash-ink);font:inherit;font-size:13px;cursor:pointer}
.pt-class-chip svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.pt-class-chip.is-on{border-color:transparent;background:var(--dash-accent);color:var(--dash-accent-ink,#fff)}
.pt-lesson-classes{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.pt-lesson-classes span{padding:1px 8px;border-radius:999px;background:var(--dash-accent-soft);color:var(--dash-accent);font-size:11.5px;font-weight:650}
.pt-class-pick{width:min(420px,100%)}
.pt-class-pick-list{display:grid;gap:8px;padding:16px}
.pt-rec-title-h{margin:0;font-size:18px}
.pt-records .pt-steps b{font-weight:500;opacity:.7}
.pt-rec-card{margin:0 0 12px;border:1px solid var(--dash-line);border-radius:16px;background:var(--dash-bg-2);overflow:hidden}
.pt-rec-card header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px 16px;border-bottom:1px solid var(--dash-line)}
.pt-rec-card header strong{font-size:15px;font-variant-numeric:tabular-nums}
.pt-rec-class{padding:2px 10px;border-radius:999px;background:var(--dash-accent-soft);color:var(--dash-accent);font-size:12.5px;font-weight:650}
.pt-rec-card header small{color:var(--dash-muted);font-size:12.5px}
.pt-rec-card header .secondary{margin-left:auto;min-height:32px;font-size:12.5px}
.pt-rec-card ol{margin:0;padding:6px 8px;list-style:none;display:grid;gap:2px}
.pt-rec-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:4px 12px;padding:8px 10px;border-radius:10px;font-size:13.5px}
.pt-rec-row:hover{background:var(--dash-bg-3)}
.pt-rec-code{font-weight:650;font-variant-numeric:tabular-nums}
.pt-rec-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dash-muted)}
.pt-rec-row em{font-style:normal;font-weight:650;font-size:12.5px;white-space:nowrap}
.pt-rec-row[data-state="right"] em{color:var(--pt-right)}
.pt-rec-row[data-state="recovered"] em{color:var(--pt-amber)}
.pt-rec-row[data-state="wrong"] em{color:var(--pt-wrong)}
.pt-rec-row[data-state="unmarked"] em,.pt-rec-row[data-state="absent"] em{color:var(--dash-muted);font-weight:500}
.pt-rec-row[data-state="absent"]{opacity:.72}
.pt-rec-missed{grid-column:2/-1;display:flex;flex-wrap:wrap;gap:6px}
.pt-rec-q{min-height:28px;padding:0 10px;border:0;border-radius:8px;background:var(--pt-wrong-soft);color:var(--pt-wrong);font:inherit;font-size:12px;font-weight:600;cursor:zoom-in}
.pt-rec-q:hover{filter:brightness(.96)}

.pt-class-chip.is-new{border-style:dashed;color:var(--dash-accent)}
.pt-class-new{display:grid;gap:8px;padding:12px;border:1px dashed var(--dash-line-strong);border-radius:12px}
.pt-class-new label{display:grid;gap:6px;font-size:12.5px;font-weight:650;color:var(--dash-muted)}
.pt-class-new input{min-height:40px}

/* ---- class records + build-from-lesson dialog -------------------------------- */
.pt-rec-lesson{padding:2px 10px;border-radius:999px;background:var(--dash-bg-3);color:var(--dash-ink);font-size:12.5px;font-weight:650}
.pt-build{width:min(620px,100%)}
.pt-build-body{display:grid;gap:14px;padding:16px;overflow:auto}
.pt-build-body .segmented b{font-weight:500;opacity:.7;margin-left:3px}
.pt-build-list{display:grid;gap:2px;max-height:320px;overflow:auto;margin:0;padding:0;list-style:none;border:1px solid var(--dash-line);border-radius:12px}
.pt-build-list label{display:grid;grid-template-columns:18px auto minmax(0,1fr) auto;align-items:baseline;gap:8px;padding:8px 12px;font-size:13.5px;cursor:pointer}
.pt-build-list label:hover{background:var(--dash-bg-3)}
.pt-build-list input{width:16px;height:16px;accent-color:var(--dash-accent);align-self:center}
.pt-build-list b{font-variant-numeric:tabular-nums}
.pt-build-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dash-muted)}
.pt-build-list em{font-style:normal;font-size:11.5px;font-weight:650;color:var(--pt-wrong)}
.pt-build-list em.is-muted{color:var(--dash-muted);font-weight:500}
.pt-build-time{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pt-build-time>span{font-size:12.5px;font-weight:650;color:var(--dash-muted);margin-right:4px}
.pt-build-time .chip[aria-pressed="true"]{background:var(--dash-accent);color:var(--dash-accent-ink,#fff);border-color:transparent}
.pt-build-custom{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--dash-muted)}
.pt-build-custom input{width:70px;min-height:34px}
.pt-build-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--dash-line)}

/* ---- autosave, resume, practice records, notes preview ---------------------- */
.pt-list-h{margin:26px 0 8px;font-size:15px}
.pt-list-h small{color:var(--dash-muted);font-weight:500}
.pt-resume-note{margin:0 0 4px;font-size:14px;line-height:1.5}
.pt-rec-ink{display:flex;flex-wrap:wrap;gap:6px;padding:0 18px 12px}
.pt-rec-q.is-ink{background:var(--dash-accent-soft);color:var(--dash-accent)}
.pt-preview-paper{position:relative}
.pt-preview-paper img{display:block;width:100%;height:auto}
.pt-preview-paper canvas{position:absolute;inset:0;pointer-events:none}

/* Scope bar = the 组卷 page's scope cards: separate 12px cards (label over
   value, one chevron), and the native select is invisible inside the card so
   no second box shows.  dashboard-theme.css loads later and styles every
   select with !important, hence the higher-specificity !important here. */
.dash-app .pt-scope{display:flex;flex-wrap:wrap;gap:12px;border:0;border-radius:0;background:transparent;overflow:visible}
.dash-app .pt-scope .pt-scope-field{display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:1px;flex:1 1 0;min-width:140px;min-height:44px;padding:8px 28px 8px 12px;border:1px solid var(--dash-line-strong);border-radius:12px;background:var(--dash-bg-0);box-shadow:none}
.dash-app .pt-scope .pt-scope-field+.pt-scope-field{box-shadow:none}
.dash-app .pt-scope .pt-scope-field:hover,.dash-app .pt-scope .pt-scope-field:focus-within{border-color:var(--dash-accent);background:var(--dash-bg-0)}
.dash-app .pt-scope .pt-scope-field>span{font-size:10px;font-weight:650;line-height:1.5;color:var(--dash-muted)}
.dash-app .pt-scope .pt-scope-field select{width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;text-align:left;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;outline:none!important;padding:0!important;min-height:0!important;height:auto!important;font-size:13px!important;font-weight:400!important;line-height:1.25!important;color:var(--dash-ink)!important}
.dash-app .pt-scope .pt-scope-field::after{right:14px}
@media (max-width:720px){.dash-app .pt-scope .pt-scope-field,.dash-app .pt-scope .pt-scope-field:nth-child(n){flex:1 1 calc(50% - 6px);min-width:calc(50% - 6px);box-shadow:none}}

/* The later unconditional .pt-freq-cards/.pt-freq-controls rules above win
   over the earlier breakpoints; restate them last so phones stack the cards
   and the search box starts at the left edge once the controls wrap. */
@media (max-width:1100px){.pt-freq-cards{grid-template-columns:1fr 1fr}}
@media (max-width:640px){
  .pt-freq-cards{grid-template-columns:1fr}
  .pt-freq-controls input{flex:1 1 100%;max-width:none;margin-left:0}
}
