:root {
  color-scheme: light;
  --bg: #faf8f1; --surface: #fffefa; --text: #24211e; --text-muted: #696258;
  --border: #ded8cb; --control-border: #948878; --accent: #62518b; --accent-soft: #f1edf6;
  --success: #0f766e; --warning: #b45309; --danger: #b42318; --focus: #7c3aed;
  --purple: #7e22ce; --blue: #2457c5; --radius: 14px;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text); font: 16px/1.6 system-ui,-apple-system,"Segoe UI","Microsoft YaHei","PingFang SC","Noto Sans CJK SC",sans-serif; }
button,input,select,textarea { font: inherit; color: inherit; }
button,select,input[type=number],textarea { min-height: 44px; border: 1px solid var(--control-border); border-radius: 7px; background: var(--surface); }
button { cursor: pointer; padding: 8px 12px; font-weight: 600; transition: background 160ms,border-color 160ms; }
button:hover:not(:disabled) { background: var(--accent-soft); border-color: var(--accent); }
button.primary { color: #fffefa; background: var(--accent); border-color: var(--accent); }
button.primary:hover:not(:disabled) { background: #514375; }
button:disabled { opacity: .45; cursor: default; }
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
select,input[type=number],textarea { width: 100%; padding: 6px 10px; }
textarea { font: 15px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace; resize: vertical; overflow-wrap: anywhere; }
input[type=range] { width: 100%; margin: 0; accent-color: var(--accent); min-height: 36px; }
input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--accent); }
[hidden] { display: none!important; }
h1,h2,h3,h4,p { margin-top: 0; }
h1 { font: 600 32px/1.32 "Songti SC","STSong","SimSun",Georgia,serif; letter-spacing: -.5px; margin-bottom: 5px; }
h2 { font-size: 21px; line-height: 1.4; margin-bottom: 4px; letter-spacing: -.3px; }
h3 { font-size: 18px; line-height: 1.4; margin-bottom: 12px; letter-spacing: -.2px; }
h4 { font-size: 16px; margin-bottom: 8px; }
p { margin-bottom: 12px; }
.page-header,main { max-width: 1640px; padding: 0 28px; margin: 0 auto; }
.page-header { padding-top: 10px; padding-bottom: 10px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.page-header button { white-space: nowrap; background: transparent; }
.eyebrow { display: none; color: var(--accent); font-size: 12px; font-weight: 650; letter-spacing: 1px; margin-bottom: 3px; }
.intro { color: var(--text-muted); font-size: 15px; margin: 0; }
main { container-type: inline-size; container-name: page; }
/* A continuous learning path, with the current experiment clearly marked. */
.stages { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin-bottom: 10px; padding: 0 0 8px; border-bottom: 1px solid var(--border); }
.stages button { display: grid; grid-template-columns: 38px 1fr; align-items: center; column-gap: 12px; text-align: left; padding: 6px 16px; background: transparent; border-color: transparent; border-radius: 10px; }
.stages button>span { grid-row: 1/3; width: 34px; height: 34px; display: grid; place-items: center; font-size: 14px; font-weight: 650; color: var(--text-muted); border: 1px solid #b3a997; border-radius: 50%; }
.stages strong { font-size: 16px; line-height: 1.45; }
.stages small { font-weight: 400; font-size: 14px; }
.stages button[aria-selected=true] { background: var(--accent-soft); }
.stages button[aria-selected=true]>span { background: var(--accent); color: var(--surface); border-color: var(--accent); }
.stages button[aria-selected=true] strong { color: #544375; }
.stage-heading { display: flex; justify-content: space-between; align-items: center; gap: 24px; margin-bottom: 8px; }
.stage-heading p { color: var(--text-muted); font-size: 15px; margin: 0; }
.nature { font-size: 14px; color: var(--success); white-space: nowrap; }
/* One paper workbench. Internal divisions use fine rules, not nested cards. */
.lab { display: grid; grid-template-columns: 288px minmax(0,1fr); border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); overflow: hidden; }
.controls { padding: 18px 20px; background: #f7f4eb; border-right: 1px solid var(--border); min-width: 0; }
.controls h3 { margin-bottom: 14px; }
.field { margin-bottom: 12px; }
.field label,.function-editor>label { display: block; font-weight: 600; margin-bottom: 4px; }
.range-number { display: grid; grid-template-columns: minmax(0,1fr) 76px; gap: 10px; align-items: center; }
.range-number input { padding-right: 4px; }
.apply-button { width: 100%; margin: 6px 0; }
small,.small-note { display: block; color: var(--text-muted); font-size: 14px; line-height: 1.55; }
.control-note { color: var(--text-muted); font-size: 14px; line-height: 1.6; margin: 12px 0; }
.preset-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.preset-row button { font-size: 14px; padding: 8px 4px; }
.wide { width: 100%; margin: 8px 0; }
.expression-field { border-top: 1px solid var(--border); margin-top: 16px; padding-top: 14px; }
.expression-field label { font-size: 15px; }
.error { color: var(--danger); font-size: 14px; padding: 6px 10px; margin: 8px 0; background: #fff0ed; border-left: 3px solid var(--danger); }
.experiment { padding: 18px 22px; min-width: 0; }
.chart-heading h3 { margin-bottom: 4px; }
.sample-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.chart-badge { min-width: 128px; text-align: right; font-variant-numeric: tabular-nums; }
.chart-badge span { display: block; color: var(--text-muted); font-size: 13px; }
.chart-badge strong { color: var(--warning); font-size: 24px; line-height: 1.35; }
.legend { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; margin-bottom: 8px; }
.target-key { color: var(--text-muted); }.blue-key { color: var(--blue); }.orange-key,.error-key { color: var(--warning); }.purple-key { color: var(--purple); }
.curve-chart { display: block; width: 100%; height: 278px; overflow: visible; }
.curve-chart text,.selected-flow svg text,.basis-card svg text,.evidence-panel svg text { font: 14px system-ui,sans-serif; fill: var(--text-muted); }
.grid-axis line { stroke: var(--border); stroke-opacity: .7; }.grid-axis .domain { display: none; }
.x-axis .domain,.y-axis .domain,.x-axis line,.y-axis line { stroke: #948878; }
.zero-line { stroke: #a49a89; stroke-width: 1; }.axis-label { font-size: 14px; }
.probe { display: grid; grid-template-columns: auto minmax(100px,1fr) 60px auto; align-items: center; gap: 12px; font-size: 14px; border-top: 1px solid var(--border); padding-top: 8px; }
.probe output { color: var(--warning); font-variant-numeric: tabular-nums; }
.probe button { font-size: 14px; padding: 6px 10px; }
.numeric-line { font-variant-numeric: tabular-nums; padding: 8px 0; color: #514a42; }
.probe+.numeric-line { font-size: 14px; margin: 4px 0 0; }
.metric-strip { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; border-top: 1px solid var(--border); padding-top: 8px; margin: 8px 0 12px; }
.metric-strip.two { grid-template-columns: 1fr 1fr; }.metric-strip span { display: block; color: var(--text-muted); font-size: 14px; }
.metric-strip strong { display: block; font-size: 24px; line-height: 1.5; font-variant-numeric: tabular-nums; font-weight: 650; }
.observation { font-size: 15px; color: #514375; background: var(--accent-soft); border-left: 2px solid #9887ad; padding: 10px 12px; margin: 8px 0; }
.experiment>.small-note { margin-bottom: 0; }
.source-note { font-size: 14px; font-family: ui-monospace,SFMono-Regular,Consolas,monospace; overflow-wrap: anywhere; }
.playback { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 6px; margin: 12px 0 8px; }
.playback button { font-size: 14px; padding: 8px 3px; }
.unit-field { margin-top: 12px; }
.unit-editor { border-top: 1px solid var(--border); margin-top: 12px; padding-top: 12px; }
.unit-editor .field { margin-bottom: 8px; }.unit-editor .range-number { grid-template-columns: minmax(0,1fr) 86px; gap: 8px; }
.unit-editor label { font-size: 14px; }.unit-editor small { font-size: 13px; }
.mini-network { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 13px; padding: 12px 0; }
.mini-network span { padding: 6px; background: #ede8dd; border-radius: 4px; }
.construction-readout { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; border-top: 1px solid var(--border); padding: 10px 0 8px; font-size: 14px; }
.status { background: #eee9df; color: var(--text-muted); padding: 2px 8px; border-radius: 4px; white-space: nowrap; }
.status.running { background: #e2f3ed; color: var(--success); }.status.failed { background: #fff0ed; color: var(--danger); }
.sum-strip { display: grid; grid-template-columns: .7fr 1fr 1.25fr 1fr; gap: 14px; padding: 8px 0 12px; }
.sum-strip div { min-width: 0; position: relative; }.sum-strip span { font-size: 13px; color: var(--text-muted); display: block; }
.sum-strip strong { font-size: 20px; font-weight: 650; font-variant-numeric: tabular-nums; line-height: 1.5; }
.sum-strip div:nth-child(3)::before,.sum-strip div:nth-child(4)::before { content: '+'; position: absolute; left: -16px; top: 19px; color: var(--text-muted); }
.sum-strip div:nth-child(4)::before { content: '='; }.sum-strip .sum-result strong { color: var(--warning); }
.relu-lab .curve-chart { height: 248px; }
.unit-detail { border-top: 1px solid var(--border); margin: 12px 0 0; }.unit-detail summary { font-size: 15px; }
.unit-info { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; padding: 8px 0; font-size: 14px; }
.unit-info p { margin: 0; }
.edit-note { padding: 10px 12px; background: #fff6e7; border-left: 3px solid var(--warning); color: #8a4b10; font-size: 14px; margin: 8px 0; }
.math-display { overflow-x: auto; overflow-y: hidden; padding: 4px 0; max-width: 100%; }.math-display .katex-display { margin: .4em 0; text-align: left; }
.math-display .katex { font-size: 1.12em; }.math-display .katex-display>.katex { text-align: left; }
/* Contributions sit in one array. Membership and selection use separate marks. */
.basis-section { margin: 8px 0; padding: 14px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.section-title { display: flex; justify-content: space-between; gap: 24px; align-items: flex-start; }
.section-title h3 { margin-bottom: 4px; }.section-title p { font-size: 14px; color: var(--text-muted); margin-bottom: 8px; }.section-title>span { white-space: nowrap; }
.inline-basis .section-title { display: block; }.inline-basis .section-title>span { display: block; margin-bottom: 10px; }.inline-basis .section-title h3 { font-size: 17px; }
.basis-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
.basis-card { display: block; text-align: left; padding: 9px 8px; border: 1px solid #a69ab7; border-radius: 7px; min-width: 0; background: var(--surface); position: relative; }
.basis-card.included { border-top: 3px solid var(--warning); padding-top: 7px; }.basis-card.selected { outline: 2px solid var(--purple); outline-offset: 0; background: #f6f1fa; }
.basis-card:hover:not(:disabled) { background: #f1edf6; }
.basis-title { display: block; font-size: 13px; line-height: 1.45; min-height: 22px; white-space: nowrap; }
.basis-params { display: block; font-size: 13px; color: var(--text-muted); font-weight: 400; font-variant-numeric: tabular-nums; }
.basis-card svg { display: block; width: 100%; height: 112px; }.basis-card svg text { font-size: 12px; }
.selected-section { padding: 22px 0; border-top: 1px solid var(--border); margin: 22px 0 0; }
.selected-flow { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; }
.selected-flow figure { margin: 0; min-width: 0; padding: 0 16px 0 0; border-right: 1px solid var(--border); }.selected-flow figure:last-child { border: 0; padding-right: 0; }
.selected-flow figcaption { font-size: 15px; font-weight: 600; }.selected-flow svg { display: block; width: 100%; height: 210px; }
.selected-flow p { font-size: 14px; font-variant-numeric: tabular-nums; color: #544375; padding: 6px 0; border-top: 1px solid var(--border); margin: 8px 0 0; }
.selected-section>.small-note { margin: 12px 0 0; }
.text-details { padding: 8px 0; border-top: 1px solid var(--border); margin: 20px 0; }
.text-details p { font-size: 16px; max-width: 1000px; }.text-details>summary { font-size: 18px; }.parameter-table summary { color: var(--text-muted); font-size: 16px; }
summary { cursor: pointer; font-weight: 600; min-height: 44px; padding: 8px 0; }
.table-scroll { max-width: 100%; overflow-x: auto; margin: 12px 0; }table { width: 100%; border-collapse: collapse; text-align: right; font-size: 14px; font-variant-numeric: tabular-nums; }
th,td { padding: 8px 12px; border-bottom: 1px solid var(--border); white-space: nowrap; }th { background: #f5f1e8; }caption { text-align: left; font-weight: 600; padding-bottom: 8px; }.selected-row { background: var(--accent-soft); }
.function-editor,.advanced { margin: 12px 0; border-top: 1px solid var(--border); padding-top: 4px; }.function-editor summary,.advanced summary { font-size: 14px; }
.architecture-fields { display: grid; grid-template-columns: 1fr 88px; gap: 12px; }
.reset-buttons { display: flex; gap: 8px; margin-bottom: 8px; }.reset-buttons button { flex: 1; font-size: 14px; padding-left: 4px; padding-right: 4px; }
.baseline-actions { display: flex; gap: 8px; margin: 10px 0 6px; }.baseline-actions button { font-size: 14px; padding: 7px 8px; }.baseline-actions button:first-child { flex: 1; }
.status-line { display: flex; align-items: center; gap: 12px; font-size: 15px; margin-bottom: 8px; }progress { width: 130px; height: 10px; accent-color: var(--accent); margin-left: auto; }
.plot-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin: 8px 0; }.plot-toolbar>div { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.plot-toolbar select { width: auto; min-height: 44px; padding: 4px 8px; }.check { display: flex; align-items: center; gap: 6px; font-size: 14px; }
.surface-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.plot { margin: 0; min-width: 0; padding: 10px 0; }.plot+.plot { border-left: 1px solid var(--border); padding-left: 20px; }
.plot figcaption strong,.plot figcaption span { display: block; }.plot figcaption span { font-size: 14px; color: var(--text-muted); }
.plot canvas { display: block; width: 100%; height: 210px; }
.colorbar { display: flex; align-items: center; gap: 8px; font-size: 13px; font-variant-numeric: tabular-nums; }.colorbar i { position: relative; font-style: normal; height: 10px; flex: 1; border: 1px solid #948878; }
.colorbar .zero-mark { position: absolute; top: -2px; transform: translateX(-50%); font-size: 12px; line-height: 12px; background: var(--surface); color: var(--text-muted); padding: 0 2px; }
.baseline-evidence { border-top: 2px solid #9887ad; margin-top: 16px; padding: 12px 0; }.baseline-evidence>strong { font-size: 16px; }.baseline-evidence>p { font-size: 14px; margin: 4px 0 8px; }
.baseline-comparison { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }.baseline-comparison span { font-size: 14px; color: var(--text-muted); }.baseline-comparison strong { display: block; font-size: 23px; font-variant-numeric: tabular-nums; }
.below-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin: 22px 0; }.evidence-panel { min-width: 0; padding: 16px 0; border-top: 1px solid var(--border); }
.evidence-panel svg { width: 100%; height: 240px; display: block; }.evidence-panel>p { font-size: 14px; }
.layer-flow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0; }.layer-box { background: #f1edf6; border-radius: 7px; padding: 8px 10px; min-width: 100px; max-width: 100%; font-size: 14px; }
.layer-box strong,.layer-box span { display: block; }.layer-box span { font-size: 13px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
footer { color: var(--text-muted); font-size: 14px; padding: 4px 0 28px; }.noscript { padding: 20px; margin: 20px; border: 2px solid var(--danger); }
@media(min-width:1600px) {
  .page-header { padding-top: 22px; padding-bottom: 20px; }h1 { font-size: 34px; }
  .curve-chart { height: 365px; }.relu-lab .curve-chart { height: 335px; }.basis-grid { grid-template-columns: repeat(5,minmax(0,1fr)); }
  .basis-card svg { height: 130px; }.plot canvas { height: 335px; }.selected-flow svg { height: 250px; }
}
@media(max-width:1100px) {
  .page-header,main { padding-left: 20px; padding-right: 20px; }.lab { grid-template-columns: 260px minmax(0,1fr); }
  .controls,.experiment { padding: 16px; }.nature { white-space: normal; max-width: 220px; }.stage-heading { gap: 12px; }
  .basis-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }.probe { grid-template-columns: auto 1fr 55px; }.probe button { grid-column: 1/-1; }
  .unit-info { grid-template-columns: 1fr; }.surface-grid { gap: 12px; }.plot+.plot { padding-left: 12px; }.plot canvas { height: 235px; }
}
@media(max-width:850px) {
  h1 { font-size: 29px; }.page-header { align-items: flex-start; }.page-header button { font-size: 14px; }
  .stages { gap: 6px; }.stages button { grid-template-columns: 30px 1fr; column-gap: 8px; padding: 8px; }.stages button>span { width: 30px; height: 30px; }
  .stages small { display: none; }.stages strong { font-size: 14px; }.stage-heading { display: block; }.nature { display: block; margin-top: 6px; max-width: none; }
  .lab { grid-template-columns: 1fr; }.controls { border-right: 0; border-bottom: 1px solid var(--border); }.below-grid { grid-template-columns: 1fr; }
  .one-lab .controls { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }.one-lab .controls h3,.one-lab .controls>.error,.one-lab .controls>.control-note,.one-lab .controls>.wide,.one-lab .controls>.expression-field { grid-column: 1/-1; }
  .selected-flow { grid-template-columns: 1fr; gap: 16px; }.selected-flow figure { border-right: 0; border-bottom: 1px solid var(--border); padding: 0 0 16px; }.selected-flow svg { height: 220px; }
  .unit-editor .range-number { grid-template-columns: 1fr 100px; }.baseline-actions { max-width: 360px; }
  /* Keep the main sum and playback together before detailed unit controls. */
  .relu-lab { display: flex; flex-direction: column; padding-bottom: 12px; }.relu-lab .controls,.relu-lab .experiment { display: contents; }
  .relu-lab .controls>*,.relu-lab .experiment>* { order: 10; margin-left: 12px; margin-right: 12px; }.relu-lab .controls>h3 { display: none; }
  .relu-lab .source-note { order: 0; margin-top: 12px; }.relu-lab .chart-heading { order: 1; margin-top: 4px; }
  .relu-lab .curve-chart { order: 2; width: calc(100% - 24px); height: 280px; }.relu-lab .construction-readout { order: 3; }.relu-lab .sum-strip { order: 4; }
  .relu-lab .playback { order: 5; }.relu-lab #relu-restart { order: 6; width: auto; }.relu-lab .unit-field { order: 7; }.relu-lab .inline-basis { order: 8; }.relu-lab .unit-editor { order: 9; }
}
@media(max-width:600px) {
  .page-header,main { padding-left: 14px; padding-right: 14px; }.page-header { display: block; padding-top: 14px; }.page-header button { margin-top: 12px; }
  h1 { font-size: 28px; }.stages { gap: 4px; margin-bottom: 14px; }.stages button { display: block; text-align: center; padding: 8px 3px; }.stages button>span { margin: 0 auto 5px; }
  .stages strong { display: block; font-size: 14px; line-height: 1.5; }.stage-heading h2 { font-size: 20px; }.one-lab .controls { display: block; }
  .experiment { padding: 14px; }.sample-heading { display: block; }.chart-badge { text-align: left; display: flex; gap: 10px; align-items: baseline; margin-bottom: 8px; }
  .chart-badge strong { font-size: 22px; }.curve-chart { height: 290px; }.probe { gap: 8px; grid-template-columns: auto 1fr 50px; }.probe button { grid-column: 1/-1; }
  .surface-grid { grid-template-columns: 1fr; gap: 16px; }.plot+.plot { border-left: 0; border-top: 1px solid var(--border); padding: 16px 0 0; }.plot canvas { height: 270px; }
  .metric-strip { grid-template-columns: 1fr 1fr; }.metric-strip>div:last-child { grid-column: 1/-1; }.metric-strip.two>div:last-child { grid-column: auto; }.metric-strip strong { font-size: 22px; }
  .sum-strip { grid-template-columns: 1fr 1fr; gap: 10px 20px; }.sum-strip div:nth-child(3)::before,.sum-strip div:nth-child(4)::before { display: none; }
  .sum-strip strong { font-size: 20px; }.status-line { flex-wrap: wrap; }.status-line progress { width: 100%; margin-left: 0; }
  .basis-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }.basis-card { padding: 8px 4px; }.basis-card.included { padding-top: 6px; }.basis-title { white-space: normal; min-height: 36px; }
  .basis-card svg { height: 112px; }.section-title { display: block; }.section-title>span { display: block; margin-bottom: 12px; white-space: normal; }
  .baseline-comparison { gap: 8px; }.baseline-comparison span { font-size: 13px; }.baseline-comparison strong { font-size: 20px; }.math-display .katex { font-size: 1em; }
}
@container page (max-width:850px) {
  .lab { grid-template-columns: 1fr; }.controls { border-right: 0; border-bottom: 1px solid var(--border); }.below-grid { grid-template-columns: 1fr; }
  .stage-heading { display: block; }.nature { display: block; margin-top: 6px; max-width: none; }.unit-info { grid-template-columns: 1fr; }
  .selected-flow { grid-template-columns: 1fr; }.selected-flow figure { border-right: 0; }.selected-flow svg { height: 220px; }
}
@container page (max-width:600px) {
  .one-lab .controls { display: block; }.surface-grid { grid-template-columns: 1fr; }.plot+.plot { border-left: 0; padding-left: 0; }.plot canvas { height: 270px; }
  .metric-strip { grid-template-columns: 1fr 1fr; }.metric-strip>div:last-child { grid-column: 1/-1; }.metric-strip.two>div:last-child { grid-column: auto; }
  .basis-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }.basis-title { white-space: normal; }
}
@media(prefers-reduced-motion:reduce) { * { transition: none!important; } }
