.assignment-primary-nav { position: sticky; top: .5rem; z-index: 8; display: flex; gap: .4rem; margin: 1rem 0 1.8rem; padding: .4rem; border: 1px solid var(--line, #d8d3c8); background: rgba(246,243,235,.94); backdrop-filter: blur(10px); overflow-x: auto; }
.assignment-primary-nav a { flex: 1 0 max-content; padding: .55rem .7rem; color: inherit; font-weight: 800; text-align: center; text-decoration: none; }
.assignment-primary-nav a:hover { background: rgba(140,78,53,.08); color: var(--accent, #8c4e35); }
.assignment-workbook { scroll-margin-top: 5rem; }
.version-notice { display: flex; align-items: center; gap: .75rem; margin: 1rem 0; padding: .75rem .9rem; border-left: 3px solid var(--accent, #8c4e35); background: rgba(140,78,53,.055); }
.version-notice p { flex: 1; margin: 0; }
.version-notice a { flex: 0 0 auto; font-weight: 800; }
.stage-map { display: flex; gap: .55rem; margin: 1.2rem 0; overflow-x: auto; padding-bottom: .45rem; }
.stage-map a { min-width: 145px; flex: 1; border-top: 2px solid var(--ink, #25221e); padding: .7rem .55rem; color: inherit; text-decoration: none; font-weight: 700; }
.stage-map a span { display: block; margin-bottom: .25rem; color: var(--accent, #8c4e35); font: 800 .7rem/1 ui-monospace, monospace; }
.capability-strip { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; margin-bottom: 2rem; }
.capability-strip span { margin-right: .35rem; font-size: .8rem; color: var(--ink-soft, #5d574e); }
.capability-strip b { padding: .35rem .55rem; border: 1px solid var(--line, #d8d3c8); font-size: .78rem; }
.workbook-stage { scroll-margin-top: 5rem; margin: 2.6rem 0; padding-top: 1.2rem; border-top: 3px solid var(--ink, #25221e); }
.workbook-stage > header > span { color: var(--accent, #8c4e35); font: 800 .72rem/1 ui-monospace, monospace; letter-spacing: .08em; }
.workbook-stage > header h3 { margin: .45rem 0; font-size: 1.45rem; }
.workbook-stage > header p { margin: .35rem 0 1rem; }
.stage-depends, .stage-official { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: .7rem 0; }
.stage-depends strong, .stage-official strong { min-width: 115px; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; }
.stage-depends a, .stage-official a { padding: .42rem .55rem; border: 1px solid var(--line, #d8d3c8); text-decoration: none; font-size: .82rem; }
.stage-official a { display: inline-flex; gap: .45rem; }
.stage-official a span { color: var(--accent, #8c4e35); }
.contract-block { margin: 1.2rem 0; }
.contract-block h4, .failure-signatures h4, .hint-ladder h4, .experiment-loop h4, .definition-done h4 { margin-bottom: .6rem; }
.contract-block dl { display: grid; grid-template-columns: 1fr 1fr; margin: 0; border-top: 1px solid var(--line, #d8d3c8); border-left: 1px solid var(--line, #d8d3c8); }
.contract-block dl > div { padding: .75rem; border-right: 1px solid var(--line, #d8d3c8); border-bottom: 1px solid var(--line, #d8d3c8); }
.contract-block dt { margin-bottom: .35rem; color: var(--accent, #8c4e35); font: 800 .72rem/1.2 ui-monospace, monospace; text-transform: uppercase; }
.contract-block dd { margin: 0; }
.contract-block ul { margin: 0; padding-left: 1.1rem; }
.sanity-check { margin: 1rem 0; padding: .8rem 1rem; border-left: 3px solid #356c68; background: rgba(53,108,104,.055); }
.sanity-check span { color: #356c68; font: 800 .7rem/1 ui-monospace, monospace; letter-spacing: .08em; }
.sanity-check p { margin: .4rem 0 0; }
.failure-signatures, .hint-ladder { margin: 1.1rem 0; border-top: 1px solid var(--line, #d8d3c8); }
.failure-signatures details, .hint-ladder details { padding: .65rem 0; border-bottom: 1px solid var(--line, #d8d3c8); }
.failure-signatures summary, .hint-ladder summary { cursor: pointer; font-weight: 750; }
.failure-signatures p, .hint-ladder details p { margin: .55rem 0 0; color: var(--ink-soft, #5d574e); }
.hint-ladder > p { font-size: .84rem; color: var(--ink-soft, #5d574e); }
.experiment-loop { margin: 1.2rem 0; }
.experiment-loop ol { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; padding: 1px; background: var(--line, #d8d3c8); list-style: none; counter-reset: experiment; }
.experiment-loop li { counter-increment: experiment; padding: .75rem; background: var(--paper, #f7f4ec); }
.experiment-loop li b::before { content: counter(experiment, decimal-leading-zero) ' · '; color: var(--accent, #8c4e35); }
.experiment-loop p { margin: .35rem 0 0; }
.definition-done { display: grid; grid-template-columns: repeat(3, 1fr); gap: .65rem; margin: 1.2rem 0; }
.definition-done h4 { grid-column: 1 / -1; }
.definition-done > div { padding: .75rem; border-top: 2px solid var(--ink, #25221e); }
.definition-done p { margin: .35rem 0 0; font-size: .86rem; }
.gate-check { display: grid; gap: .55rem; margin-top: 1rem; padding: .9rem 1rem; border: 1px solid var(--line, #d8d3c8); }
.gate-check > strong { color: var(--accent, #8c4e35); }
.gate-check label { display: flex; align-items: center; gap: .55rem; }
.gate-check small { color: var(--ink-soft, #5d574e); }
.gate-check.is-complete { border-color: #39725d; background: rgba(57,114,93,.055); }
.assignment-retrospective { margin: 2.5rem 0; padding: 1rem 1.1rem; border-top: 3px solid var(--ink, #25221e); border-bottom: 1px solid var(--line, #d8d3c8); }
.translated-handout-header { scroll-margin-top: 5rem; margin-top: 3.5rem; padding-top: 1.5rem; border-top: 5px double var(--ink, #25221e); }
.problem-index { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1.2rem 0 2rem; }
.problem-index section { padding: .75rem; border: 1px solid var(--line, #d8d3c8); }
.problem-index h3 { margin: 0 0 .5rem; font-size: .95rem; }
.problem-index a { display: grid; grid-template-columns: minmax(90px, .65fr) 1.35fr; gap: .5rem; padding: .38rem 0; border-top: 1px dotted var(--line, #d8d3c8); color: inherit; text-decoration: none; font-size: .8rem; }
.problem-index a:hover span { color: var(--accent, #8c4e35); }
.problem-stage-back { display: inline-block; margin: .75rem 0 0; font: 800 .72rem/1.2 ui-monospace, monospace; }
.lab-task { scroll-margin-top: 5rem; }
.lab-task.is-target-problem { animation: target-problem 1.8s ease-out; }
@keyframes target-problem { 0%, 35% { outline: 3px solid rgba(140,78,53,.45); outline-offset: 4px; } 100% { outline-color: transparent; } }
@media (prefers-reduced-motion: reduce) { .lab-task.is-target-problem { animation: none; outline: 2px solid var(--accent, #8c4e35); } }

@media (max-width: 700px) {
  .version-notice { align-items: flex-start; flex-direction: column; }
  .contract-block dl, .experiment-loop ol, .problem-index { grid-template-columns: 1fr; }
  .definition-done { grid-template-columns: 1fr; }
  .definition-done h4 { grid-column: auto; }
  .problem-index a { grid-template-columns: 95px minmax(0, 1fr); }
}
