:root {
  color-scheme: light;
  --purple: #7132f5;
  --purple-deep: #5741d8;
  --canvas: #ffffff;
  --ink: #101114;
  --muted: #686b82;
  --silver: #9497a9;
  --green: #149e61;
  --green-text: #087745;
  --line: #e8e9f1;
  --purple-line: #ddd1fc;
  --wash: #f7f4ff;
  --wash-row: #faf9fe;
  --focus: #5741d8;
  --font-humanist: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Trebuchet MS", sans-serif;
  --font-value: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --body: 1rem;
  --label: .875rem;
  --measure: 72ch;
  --shell: 80rem;
  --rail: 14rem;
  --corner: .75rem;
  --space-small: .5rem;
  --space-body: 1rem;
  --space-block: 2rem;
  --space-section: 3rem;
  --shadow: 0 2px 12px rgb(45 24 85 / 3%);
  --motion: 240ms;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 1rem; }
body { margin: 0; background: var(--canvas); color: var(--ink); font-family: var(--font-humanist); font-size: var(--body); font-weight: 400; line-height: 1.6; }
button, input, textarea { font: inherit; }
button { min-height: 44px; }
a { color: var(--purple-deep); text-underline-offset: .22em; }
a, button, summary { -webkit-tap-highlight-color: rgb(113 50 245 / 12%); }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, textarea:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }
main:focus { outline: none; }
h1, h2, h3 { font-weight: 700; overflow-wrap: break-word; }
p, li, td, th, figcaption, label, legend, textarea, footer { font-size: var(--body); }
p { margin-top: 0; }
strong { font-weight: 700; }
figure { margin-left: 0; margin-right: 0; }
table { text-align: left; }
th, td { padding: 1.25rem; vertical-align: top; overflow-wrap: break-word; }
thead th { background: var(--wash); color: var(--purple-deep); font-weight: 600; border-bottom: 1px solid var(--purple-line); }
thead th:first-child { width: 23%; }
tbody th { font-weight: 600; }
tbody tr { border-bottom: 1px solid var(--line); }
tbody tr:nth-child(even) { background: var(--wash-row); }
tbody td { max-width: var(--measure); }
input[type="checkbox"] { border-radius: .25rem; }
textarea { resize: vertical; line-height: 1.6; min-height: 10rem; }
[hidden] { display: none !important; }

/* Each named class changes one presentation property. */
.d-grid { display: grid; }
.d-flex { display: flex; }
.d-block { display: block; }
.d-inline-flex { display: inline-flex; }
.only-large { display: block; }
.only-small { display: none; }
.columns-shell { grid-template-columns: var(--rail) minmax(0, 1fr); }
.columns-hero { grid-template-columns: 1.13fr 1fr; }
.columns-paths { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.wrap-flex { flex-wrap: wrap; }
.align-center { align-items: center; }
.align-start { align-items: flex-start; }
.align-self-start { align-self: start; }
.justify-between { justify-content: space-between; }
.justify-center { justify-content: center; }
.place-center { place-items: center; }
.position-fixed { position: fixed; }
.left-skip { left: 1rem; }
.top-skip { top: -8rem; }
.z-skip { z-index: 10; }
.position-sticky { position: sticky; }
.top-rail { top: 2.25rem; }
.min-width-zero { min-width: 0; }
.shrink-zero { flex-shrink: 0; }
.width-full { width: 100%; }
.width-mark { width: 2.75rem; }
.height-mark { height: 2.75rem; }
.height-auto { height: auto; }
.max-shell { max-width: var(--shell); }
.measure-text { max-width: var(--measure); }
.gap-shell { gap: 3.5rem; }
.gap-hero { gap: 1.5rem; }
.gap-paths { gap: 2rem; }
.gap-buttons { gap: .75rem; }
.gap-header { gap: 1rem; }
.gap-wordmark { gap: .875rem; }
.gap-check { gap: 1rem; }
.gap-crumb { gap: .75rem; }
.gap-footer { gap: 1.5rem; }
.margin-auto { margin-inline: auto; }
.margin-zero { margin: 0; }
.margin-heading { margin: 0 0 1.25rem; }
.margin-eyebrow { margin: 0 0 1.25rem; }
.margin-paragraph { margin-bottom: 1rem; }
.margin-section { margin-top: var(--space-section); }
.margin-hero { margin-bottom: 2.5rem; }
.margin-date { margin: 0 0 1.5rem; }
.margin-actions { margin-top: 1.5rem; }
.margin-figure { margin-block: 1.5rem 2rem; }
.margin-caption { margin-top: 1rem; }
.margin-small { margin-top: .5rem; }
.margin-list-item { margin-bottom: .875rem; }
.margin-breadcrumb { margin-bottom: 1.5rem; }
.margin-footer { margin-top: 3.5rem; }
.margin-rail-note { margin-top: 2rem; }
.margin-mobile-index { margin-bottom: 1.5rem; }
.margin-legend { margin-bottom: 1rem; }
.margin-check { margin: .2rem 0 0; }
.margin-index { margin-block: .25rem; }
.padding-zero { padding: 0; }
.padding-masthead { padding: 1.5rem 2.5rem; }
.padding-shell { padding: 3rem 2.5rem 0; }
.padding-rail { padding: .5rem 1.25rem 0 0; }
.padding-index { padding: .625rem .875rem; }
.padding-mobile-nav { padding: 0 .375rem .5rem; }
.padding-rail-note { padding-top: 1.5rem; }
.padding-note { padding: 1.25rem 1.5rem; }
.padding-list { padding-left: 1.5rem; }
.padding-path { padding: 1.25rem 0; }
.padding-pager { padding-top: 1.5rem; }
.padding-footer { padding-block: 2rem; }
.padding-worksheet { padding: 1.75rem; }
.padding-check { padding: .875rem .25rem; }
.padding-button { padding: .625rem 1rem; }
.padding-source { padding-block: 1.25rem; }
.padding-cta { padding: .75rem 1rem; }
.font-label { font-size: var(--label); }
.font-body { font-size: var(--body); }
.font-hero { font-size: clamp(2.5rem, 4.3vw, 4rem); }
.font-page { font-size: 2.25rem; }
.font-section { font-size: 1.65rem; }
.font-subsection { font-size: 1.25rem; }
.line-hero { line-height: 1.09; }
.line-heading { line-height: 1.2; }
.line-unit { line-height: 1; }
.letter-heading { letter-spacing: -.035em; }
.weight-label { font-weight: 500; }
.weight-bold { font-weight: 700; }
.color-ink { color: var(--ink); }
.color-muted { color: var(--muted); }
.color-purple { color: var(--purple-deep); }
.color-brand { color: var(--purple); }
.color-white { color: var(--canvas); }
.color-green { color: var(--green-text); }
.background-purple { background: var(--purple); }
.background-white { background: var(--canvas); }
.background-note { background: var(--wash); }
.background-ink { background: var(--ink); }
.border-top { border-top: 1px solid var(--line); }
.border-right { border-right: 1px solid var(--line); }
.border-bottom { border-bottom: 1px solid var(--line); }
.border-zero { border: 0; }
.border-purple { border: 1px solid var(--purple-line); }
.border-note { border-left: 3px solid var(--purple); }
.border-worksheet { border: 1px solid var(--purple-line); }
.radius-control { border-radius: var(--corner); }
.radius-art { border-radius: 1.5rem; }
.shadow-faint { box-shadow: var(--shadow); }
.list-none { list-style: none; }
.table-fixed { table-layout: fixed; }
.border-collapse { border-collapse: collapse; }
.cursor-pointer { cursor: pointer; }
.accent-purple { accent-color: var(--purple); }
.width-check { width: 44px; }
.height-check { height: 44px; }
.decoration-none { text-decoration: none; }
.text-center { text-align: center; }
.hover-wash:hover { background: var(--wash); }
.hover-purple:hover { color: var(--purple-deep); }
.transition-quiet { transition: background-color var(--motion) ease, color var(--motion) ease, border-color var(--motion) ease; }

.link-wordmark { min-height: 44px; }
.mark-guide { font-size: 2rem; }
.link-index { min-height: 48px; }
nav[aria-label^="Guide index"] [aria-current="page"] { color: var(--purple-deep); background: var(--wash); font-weight: 600; box-shadow: inset 3px 0 var(--purple); }
.link-button { min-height: 48px; }
a.background-purple:hover, button.background-purple:hover { background: var(--purple-deep); }
a.border-purple:hover, button.border-purple:hover { background: var(--wash); }
.link-inline { min-height: 44px; }
.link-path { min-height: 44px; }
.link-next { min-height: 48px; }
.link-footer { min-height: 44px; }
.link-source { min-height: 44px; }
.link-skip { min-height: 44px; }
.top-skip:focus { top: 1rem; }
[data-review-date] { font-family: var(--font-value); font-size: var(--body); letter-spacing: -.03em; }
[data-review-date]::before { content: ""; display: inline-block; width: .5rem; height: .5rem; background: var(--green); border-radius: 2px; margin-right: .625rem; vertical-align: .08em; }
[data-worksheet-status]:empty { margin: 0; }
details summary { min-height: 48px; color: var(--purple-deep); }
details[open] summary { border-bottom: 1px solid var(--purple-line); }
body:has([data-cost-worksheet]) .padding-note { overflow-wrap: break-word; }

@media (max-width: 1100px) {
  .gap-shell { gap: 2rem; }
  .columns-hero { grid-template-columns: minmax(0, 1fr); }
  .columns-hero > figure { max-width: 27rem; }
  .font-hero { font-size: clamp(2.5rem, 5vw, 3.5rem); }
  .padding-shell { padding-inline: 1.5rem; }
  .padding-masthead { padding-inline: 1.5rem; }
}

@media (max-width: 820px) {
  .only-large { display: none; }
  .only-small { display: block; }
  .columns-shell { grid-template-columns: minmax(0, 1fr); }
  .padding-shell { padding: 1.5rem 1.25rem 0; }
  .padding-masthead { padding: 1rem 1.25rem; }
  .font-hero { font-size: clamp(2.5rem, 8vw, 3.5rem); }
  .margin-hero { margin-bottom: 2rem; }
  .columns-hero > figure { max-width: 26rem; }
  .gap-hero { gap: 2rem; }
}

@media (max-width: 560px) {
  .columns-paths { grid-template-columns: minmax(0, 1fr); }
  .font-page { font-size: 2.25rem; }
  .gap-paths { gap: 0; }
  .padding-worksheet { padding: 1.125rem; }
  .padding-note { padding: 1rem; }
  .gap-footer { gap: .75rem 1.5rem; }
  .margin-section { margin-top: 2.5rem; }
  table, tbody, tr, th, td { display: block; width: 100%; }
  thead { display: none; }
  tbody th { padding: 1rem 1rem .5rem; color: var(--purple-deep); }
  tbody td { padding: .5rem 1rem 1rem; }
  tbody tr { border-top: 1px solid var(--purple-line); border-bottom: 0; }
  tbody td::before { content: attr(data-label); display: block; color: var(--muted); font-weight: 500; margin-bottom: .25rem; }
  .link-button { width: 100%; }
  .margin-caption { margin-top: .875rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

@media print {
  :root { --purple: #101114; --purple-deep: #101114; --muted: #3d4050; }
  header, aside, .only-small, .link-skip, footer, [data-worksheet-actions], .padding-pager { display: none !important; }
  .columns-shell { display: block; }
  .padding-shell { padding: 0; }
  .position-sticky { position: static; }
  table { break-inside: avoid; }
  h2, h3 { break-after: avoid; }
  a { text-decoration: underline; }
  img { max-width: 12rem; }
  .shadow-faint { box-shadow: none; }
  .margin-section { margin-top: 1.5rem; }
}
