:root {
				--bg: #faf7f2;
				--bg-2: #f2ede4;
				--panel: #fffdfa;
				--line: #e2d9c9;
				--line-2: #cfc3ac;
				--ink: #1d1a15;
				--ink-2: #4a4438;
				--ink-3: #7d7565;
				--acc: #a8480f; /* burnt orange */
				--acc-2: #0f5f66; /* teal */
				--acc-3: #6b4ea8; /* violet */
				--warn: #8a5a00;
				--code-bg: #f4efe5;
				--mono:
					ui-monospace, 'SF Mono', Menlo, Consolas, 'Liberation Mono',
					monospace;
				--sans:
					-apple-system, BlinkMacSystemFont, 'Segoe UI',
					'Noto Sans TC', 'PingFang TC', 'Microsoft JhengHei',
					sans-serif;
			}
			* {
				box-sizing: border-box;
			}
			html {
				color-scheme: light;
				scroll-behavior: smooth;
				scroll-padding-top: 1.5rem;
			}
			body {
				margin: 0;
				background: var(--bg);
				color: var(--ink);
				font-family: var(--sans);
				font-size: 16px;
				line-height: 1.75;
				-webkit-font-smoothing: antialiased;
			}
			.wrap {
				max-width: 1180px;
				margin: 0 auto;
				padding: 0 clamp(1rem, 4vw, 2.5rem);
			}

			/* ── header ── */
			header.hero {
				border-bottom: 1px solid var(--line);
				background: linear-gradient(180deg, var(--bg-2), var(--bg));
				padding: clamp(2.5rem, 7vw, 4.5rem) 0 clamp(2rem, 5vw, 3rem);
			}
			.kicker {
				font-family: var(--mono);
				font-size: 0.72rem;
				letter-spacing: 0.16em;
				text-transform: uppercase;
				color: var(--acc);
				margin: 0 0 1rem;
				display: flex;
				gap: 0.6rem;
				align-items: center;
				flex-wrap: wrap;
			}
			.kicker::before {
				content: '';
				width: 2.2rem;
				height: 1px;
				background: var(--acc);
			}
			h1 {
				font-size: clamp(1.9rem, 5.2vw, 3.3rem);
				line-height: 1.15;
				margin: 0 0 1rem;
				letter-spacing: -0.02em;
				font-weight: 700;
			}
			h1 em {
				font-style: normal;
				color: var(--acc);
			}
			.lede {
				font-size: clamp(1rem, 2.2vw, 1.18rem);
				color: var(--ink-2);
				max-width: 62ch;
				margin: 0 0 2rem;
			}
			.meta {
				font-family: var(--mono);
				font-size: 0.78rem;
				color: var(--ink-3);
				border-top: 1px dashed var(--line-2);
				padding-top: 1rem;
			}

			/* ── stat strip ── */
			.stats {
				display: grid;
				grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
				gap: 1px;
				background: var(--line);
				border: 1px solid var(--line);
				margin: 2rem 0 0;
			}
			.stat {
				background: var(--panel);
				padding: 1.1rem 1.2rem;
			}
			.stat b {
				display: block;
				font-family: var(--mono);
				font-size: clamp(1.3rem, 3.4vw, 1.85rem);
				color: var(--acc);
				line-height: 1.1;
				letter-spacing: -0.02em;
			}
			.stat span {
				display: block;
				font-size: 0.79rem;
				color: var(--ink-3);
				margin-top: 0.35rem;
				line-height: 1.45;
			}

			/* ── layout ── */
			.shell {
				display: grid;
				grid-template-columns: 1fr;
				gap: 0;
			}
			.shell > * {
				min-width: 0;
			}
			@media (min-width: 1040px) {
				.shell {
					grid-template-columns: 220px 1fr;
					gap: 3.5rem;
					align-items: start;
				}
				nav.toc {
					position: sticky;
					top: 1.5rem;
					max-height: calc(100vh - 3rem);
					overflow-y: auto;
					padding: 2.5rem 0;
				}
			}
			nav.toc {
				font-size: 0.83rem;
				padding: 2rem 0 0;
			}
			nav.toc ol {
				list-style: none;
				margin: 0;
				padding: 0;
				counter-reset: t;
			}
			nav.toc li {
				counter-increment: t;
				border-left: 2px solid var(--line);
			}
			nav.toc a {
				display: block;
				padding: 0.42rem 0.8rem;
				color: var(--ink-3);
				text-decoration: none;
				transition:
					color 0.15s,
					border-color 0.15s;
			}
			nav.toc a::before {
				content: counter(t, decimal-leading-zero) ' ';
				font-family: var(--mono);
				font-size: 0.72rem;
				color: var(--line-2);
			}
			nav.toc a:hover {
				color: var(--acc);
			}
			@media (max-width: 1039px) {
				nav.toc {
					border: 1px solid var(--line);
					background: var(--panel);
					padding: 1rem;
					margin: 1.5rem 0;
				}
				nav.toc ol {
					display: grid;
					grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
					gap: 0;
				}
			}

			.partdiv {
				margin: 3.4rem 0 0;
				padding: 1.2rem 0 0;
				border-top: 3px solid var(--acc);
				display: flex;
				align-items: baseline;
				gap: 0.9rem;
				flex-wrap: wrap;
			}
			.partdiv .pnum {
				font-family: var(--mono);
				font-size: 0.72rem;
				letter-spacing: 0.18em;
				color: var(--acc);
			}
			.partdiv .ptitle {
				font-size: clamp(1.55rem, 4vw, 2.2rem);
				font-weight: 700;
				letter-spacing: -0.02em;
				line-height: 1.1;
			}
			.partdiv .pdesc {
				width: 100%;
				color: var(--ink-3);
				font-size: 0.87rem;
				margin-top: 0.15rem;
			}
			.partdiv + section {
				border-top: none;
				padding-top: 1.7rem;
			}
			main > .partdiv:first-child {
				margin-top: 0.6rem;
			}
			nav.toc .plabel {
				font-family: var(--mono);
				font-size: 0.65rem;
				letter-spacing: 0.13em;
				color: var(--acc);
				margin: 1.15rem 0 0.4rem;
				padding-left: 0.8rem;
			}
			nav.toc .plabel:first-child {
				margin-top: 0;
			}
			main {
				padding: 1rem 0 5rem;
				min-width: 0;
			}
			section {
				padding: 2.6rem 0;
				border-top: 1px solid var(--line);
			}
			section:first-child {
				border-top: none;
			}
			h2 {
				font-size: clamp(1.35rem, 3.4vw, 1.85rem);
				letter-spacing: -0.015em;
				margin: 0 0 0.5rem;
				line-height: 1.25;
				display: flex;
				align-items: baseline;
				gap: 0.75rem;
				flex-wrap: wrap;
			}
			h2 .num {
				font-family: var(--mono);
				font-size: 0.78rem;
				color: var(--acc);
				letter-spacing: 0.1em;
				font-weight: 400;
			}
			h3 {
				font-size: 1.08rem;
				margin: 2rem 0 0.6rem;
				letter-spacing: -0.01em;
				color: var(--ink);
			}
			h4 {
				font-size: 0.94rem;
				margin: 1.4rem 0 0.4rem;
				color: var(--ink-2);
				font-weight: 600;
			}
			.sub {
				color: var(--ink-3);
				margin: 0 0 1.5rem;
				font-size: 0.95rem;
				max-width: 66ch;
			}
			p {
				margin: 0 0 1rem;
				max-width: 72ch;
			}
			ul,
			ol {
				max-width: 72ch;
				padding-left: 1.3rem;
			}
			li {
				margin: 0.3rem 0;
			}
			a {
				color: var(--acc-2);
				text-decoration: none;
				border-bottom: 1px solid
					color-mix(in srgb, var(--acc-2) 30%, transparent);
			}
			a:hover {
				border-bottom-color: var(--acc-2);
			}
			code {
				font-family: var(--mono);
				font-size: 0.86em;
				background: var(--code-bg);
				padding: 0.12em 0.38em;
				border-radius: 3px;
				border: 1px solid var(--line);
			}
			strong {
				color: var(--ink);
				font-weight: 650;
			}

			/* ── tables ── */
			.scroller {
				overflow-x: auto;
				margin: 1.2rem 0;
				border: 1px solid var(--line);
				background: var(--panel);
			}
			table {
				border-collapse: collapse;
				width: 100%;
				font-size: 0.87rem;
				min-width: 520px;
			}
			th,
			td {
				text-align: left;
				padding: 0.62rem 0.85rem;
				border-bottom: 1px solid var(--line);
				vertical-align: top;
			}
			thead th {
				background: var(--bg-2);
				font-family: var(--mono);
				font-size: 0.72rem;
				letter-spacing: 0.06em;
				text-transform: uppercase;
				color: var(--ink-3);
				font-weight: 500;
				white-space: nowrap;
				position: sticky;
				top: 0;
			}
			tbody tr:last-child td {
				border-bottom: none;
			}
			tbody tr:hover {
				background: var(--bg-2);
			}
			td.n,
			th.n {
				font-family: var(--mono);
				white-space: nowrap;
			}
			.win {
				color: var(--acc);
				font-weight: 650;
				font-family: var(--mono);
			}

			/* ── cards ── */
			.grid {
				display: grid;
				gap: 1px;
				background: var(--line);
				border: 1px solid var(--line);
				margin: 1.4rem 0;
			}
			.grid.c2 {
				grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
			}
			.grid.c3 {
				grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
			}
			.card {
				background: var(--panel);
				padding: 1.2rem 1.3rem;
			}
			.card h4 {
				margin-top: 0;
				display: flex;
				gap: 0.5rem;
				align-items: baseline;
			}
			.card h4 .tag {
				font-family: var(--mono);
				font-size: 0.68rem;
				color: var(--acc);
				letter-spacing: 0.08em;
			}
			.card p {
				font-size: 0.88rem;
				color: var(--ink-2);
				margin-bottom: 0;
			}
			.card ul {
				font-size: 0.87rem;
				color: var(--ink-2);
				margin: 0.5rem 0 0;
				padding-left: 1.15rem;
			}

			/* ── callouts ── */
			.note {
				border-left: 3px solid var(--acc-2);
				background: var(--panel);
				padding: 1rem 1.2rem;
				margin: 1.4rem 0;
				font-size: 0.9rem;
				color: var(--ink-2);
			}
			.note.warn {
				border-left-color: var(--warn);
			}
			.note.key {
				border-left-color: var(--acc);
			}
			.note b {
				color: var(--ink);
			}
			.note p:last-child {
				margin-bottom: 0;
			}

			/* ── waste anatomy ── */
			.anat {
				display: grid;
				gap: 1px;
				background: var(--line);
				border: 1px solid var(--line);
				margin: 1.4rem 0;
			}
			.anat-row {
				background: var(--panel);
				display: grid;
				grid-template-columns: auto 1fr;
				gap: 1.1rem;
				padding: 1.05rem 1.2rem;
				align-items: start;
			}
			.anat-row .id {
				font-family: var(--mono);
				font-size: 0.78rem;
				color: var(--acc);
				padding-top: 0.18rem;
				min-width: 2.2rem;
			}
			.anat-row h4 {
				margin: 0 0 0.3rem;
			}
			.anat-row p {
				font-size: 0.88rem;
				color: var(--ink-2);
				margin: 0;
			}
			.anat-row .ev {
				display: inline-block;
				font-family: var(--mono);
				font-size: 0.76rem;
				color: var(--acc-3);
				background: var(--code-bg);
				border: 1px solid var(--line);
				padding: 0.1rem 0.45rem;
				border-radius: 3px;
				margin-top: 0.5rem;
			}

			/* ── layer stack ── */
			.stack {
				margin: 1.4rem 0;
				border: 1px solid var(--line);
			}
			.layer {
				padding: 1rem 1.2rem;
				border-bottom: 1px solid var(--line);
				background: var(--panel);
				display: grid;
				grid-template-columns: auto 1fr;
				gap: 1rem;
			}
			.layer:last-child {
				border-bottom: none;
			}
			.layer .lv {
				font-family: var(--mono);
				font-size: 0.7rem;
				letter-spacing: 0.1em;
				color: var(--ink-3);
				writing-mode: horizontal-tb;
				padding-top: 0.2rem;
				min-width: 5.2rem;
			}
			.layer h4 {
				margin: 0 0 0.25rem;
			}
			.layer p {
				margin: 0;
				font-size: 0.87rem;
				color: var(--ink-2);
			}

			/* ── calculator ── */
			.calc {
				border: 1px solid var(--line-2);
				background: var(--panel);
				padding: 1.4rem;
				margin: 1.5rem 0;
			}
			.calc-grid {
				display: grid;
				gap: 1.1rem;
				grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
			}
			.field label {
				display: block;
				font-size: 0.82rem;
				color: var(--ink-2);
				margin-bottom: 0.35rem;
				font-weight: 600;
			}
			.field .hint {
				font-size: 0.75rem;
				color: var(--ink-3);
				font-weight: 400;
			}
			.field input[type='number'],
			.field select {
				width: 100%;
				padding: 0.5rem 0.6rem;
				font-family: var(--mono);
				font-size: 0.9rem;
				background: var(--bg);
				color: var(--ink);
				border: 1px solid var(--line-2);
				border-radius: 3px;
			}
			.toggles {
				display: flex;
				flex-direction: column;
				gap: 0.45rem;
				margin-top: 0.2rem;
			}
			.toggles label {
				display: flex;
				gap: 0.55rem;
				align-items: flex-start;
				font-size: 0.85rem;
				font-weight: 400;
				color: var(--ink-2);
				cursor: pointer;
			}
			.toggles input {
				margin-top: 0.35rem;
				accent-color: var(--acc);
			}

			.opt {
				border: 1px solid var(--line);
				background: var(--bg);
				margin-top: 0.55rem;
				transition: opacity 0.15s;
			}
			.opt.off {
				opacity: 0.5;
			}
			.opt-head {
				display: flex;
				gap: 0.55rem;
				align-items: flex-start;
				font-size: 0.86rem;
				color: var(--ink-2);
				cursor: pointer;
				padding: 0.7rem 0.85rem;
				font-weight: 400;
			}
			.opt-head input {
				margin-top: 0.35rem;
				accent-color: var(--acc);
				flex: none;
			}
			.opt-head b {
				color: var(--ink);
			}
			.opt-params {
				border-top: 1px dashed var(--line);
				padding: 0.75rem 0.85rem 0.85rem 2rem;
				display: grid;
				gap: 0.7rem;
				grid-template-columns: repeat(auto-fit, minmax(220px, 320px));
			}
			.opt.off .opt-params {
				display: none;
			}
			.sl label {
				display: flex;
				justify-content: space-between;
				align-items: baseline;
				gap: 0.5rem;
				font-size: 0.76rem;
				color: var(--ink-3);
				margin-bottom: 0.3rem;
				font-weight: 400;
			}
			.sl output {
				font-family: var(--mono);
				font-size: 0.78rem;
				color: var(--acc);
				font-weight: 600;
				white-space: nowrap;
			}
			.sl input[type='range'] {
				width: 100%;
				accent-color: var(--acc);
				height: 1.1rem;
				cursor: pointer;
			}
			.fx {
				display: inline-block;
				font-family: var(--mono);
				font-style: normal;
				font-size: 0.6rem;
				letter-spacing: 0.04em;
				color: var(--acc-2);
				border: 1px solid var(--acc-2);
				border-radius: 2px;
				padding: 0.05em 0.3em;
				margin-left: 0.3rem;
				vertical-align: 0.12em;
				opacity: 0.8;
			}
			.fxnote {
				font-size: 0.75rem;
				color: var(--ink-3);
				margin: 0.9rem 0 0;
				max-width: none;
			}
			.calc-out {
				margin-top: 1.4rem;
				padding-top: 1.2rem;
				border-top: 1px dashed var(--line-2);
				display: grid;
				grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
				gap: 1.1rem;
			}
			.calc-out div b {
				display: block;
				font-family: var(--mono);
				font-size: 1.5rem;
				color: var(--acc);
				letter-spacing: -0.02em;
			}
			.calc-out div span {
				font-size: 0.78rem;
				color: var(--ink-3);
			}
			.bar {
				height: 7px;
				background: var(--code-bg);
				border: 1px solid var(--line);
				margin-top: 1rem;
				overflow: hidden;
			}
			.bar i {
				display: block;
				height: 100%;
				background: var(--acc);
				transition: width 0.3s ease;
			}

			/* ── refs ── */
			.src {
				display: inline-block;
				font-family: var(--mono);
				font-size: 0.62rem;
				font-weight: 700;
				line-height: 1;
				color: var(--acc);
				border: 1px solid var(--acc);
				border-radius: 3px;
				padding: 0.15em 0.35em;
				margin-right: 0.35rem;
				vertical-align: 0.08em;
				opacity: 0.85;
			}
			.refs {
				font-size: 0.86rem;
			}
			.refs ol {
				padding-left: 1.4rem;
			}
			.refs li {
				margin: 0.45rem 0;
				color: var(--ink-2);
			}
			footer {
				border-top: 1px solid var(--line);
				padding: 2rem 0 3rem;
				font-size: 0.82rem;
				color: var(--ink-3);
			}
			.pill {
				display: inline-block;
				font-family: var(--mono);
				font-size: 0.68rem;
				letter-spacing: 0.06em;
				border: 1px solid var(--line-2);
				color: var(--ink-3);
				padding: 0.12rem 0.5rem;
				border-radius: 99px;
				margin-right: 0.35rem;
			}

/* Navigation and reading guide added for the standalone research archive. */
.site-nav { display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:4.5rem; }
.site-nav a { color:var(--ink-2); font-size:.85rem; border:0; }
.site-nav .brand { font-family:var(--mono); font-weight:700; color:var(--ink); }
.reading-guide { border-block:1px solid var(--line); padding:1.25rem 0; margin:1.5rem 0; }
.quick-links { display:flex; flex-wrap:wrap; gap:.6rem 1.25rem; font-size:.85rem; }
.archive-note { font-size:.83rem; color:var(--ink-2); }
.skip { position:absolute; left:1rem; top:-5rem; z-index:10; padding:.7rem 1rem; background:var(--panel); }
.skip:focus { top:1rem; }
:focus-visible { outline:2px solid var(--acc-2); outline-offset:4px; }
section[id] { scroll-margin-top:1.5rem; }
input { max-width:100%; min-width:0; }
.scroller:focus-visible { outline-offset:2px; }
@media (max-width: 480px) {
  .grid.c2, .grid.c3 { grid-template-columns:1fr; }
  .calc-grid, .calc-out { grid-template-columns:1fr; }
  .anat-row { grid-template-columns:2rem minmax(0,1fr); }
  .layer { grid-template-columns:1fr; }
  h1 { line-height:1.3; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { transition:none !important; }
}
@media (max-width:480px) {
  .opt-params { grid-template-columns:minmax(0,1fr); padding-left:.85rem; }
  .sl label { flex-wrap:wrap; }
  .sl output { white-space:normal; }
  .card, .calc, .anat-row > *, .opt-head > span { min-width:0; overflow-wrap:anywhere; }
}
