.nv-fig { container-type: inline-size; }
.nv-fig figcaption { font-size: .82rem; color: var(--slate); margin-top: .8rem; line-height: 1.45; }
.nv-fig figcaption a { overflow-wrap: anywhere; }
.nv-fig-title, .nv-tool-title { font-family: var(--display); font-weight: 600; font-size: 1.1rem; margin: 0 0 .8rem; }
.article .refs a { overflow-wrap: anywhere; }
.nv-table { width: 100%; border-collapse: collapse; background: var(--paper); border: 1px solid color-mix(in oklab, var(--slate) 25%, transparent); font-size: .93rem; }
.nv-table caption { text-align: left; font-family: var(--display); font-weight: 600; font-size: 1.1rem; padding-bottom: .6rem; }
.nv-table th, .nv-table td { padding: .65rem .8rem; text-align: left; vertical-align: top; border-bottom: 1px solid color-mix(in oklab, var(--slate) 18%, transparent); }
.nv-table thead th { font-size: .76rem; letter-spacing: .06em; text-transform: uppercase; color: var(--paper); background: var(--slate); font-weight: 600; }
.nv-table tbody tr:last-child > * { border-bottom: 0; }
.nv-table tr.nv-who-you > td:first-child { color: var(--fig); font-weight: 600; }
.nv-table tr.nv-who-ll > td:first-child { color: var(--slate); font-weight: 600; }
.nv-table .nv-days { font-family: var(--display); font-weight: 600; white-space: nowrap; }
@container (max-width: 559px) {
.nv-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.nv-table, .nv-table tbody, .nv-table tr, .nv-table td { display: block; width: auto; }
.nv-table caption { display: block; }
.nv-table tbody tr { padding: .75rem .9rem; border-bottom: 1px solid color-mix(in oklab, var(--slate) 18%, transparent); display: grid; grid-template-columns: 1fr auto; gap: .15rem .8rem; }
.nv-table tbody tr:last-child { border-bottom: 0; }
.nv-table td { padding: 0; border-bottom: 0; }
.nv-table td:nth-child(1) { grid-column: 1; font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; }
.nv-table td:nth-child(4) { grid-column: 2; grid-row: 1; font-size: 1.05rem; }
.nv-table td:nth-child(2), .nv-table td:nth-child(3) { grid-column: 1 / -1; }
.nv-table td:nth-child(3) { color: var(--slate); font-size: .86rem; }
}
.nv-cal { background: var(--paper); border: 1px solid color-mix(in oklab, var(--slate) 28%, transparent); border-top: 10px solid var(--sand-dk); border-radius: 3px; padding: 1rem clamp(.6rem, 3cqi, 1.4rem) 1.2rem; }
.nv-cal-month { font-family: var(--display); font-weight: 600; font-size: 1.35rem; margin: 0 0 .6rem; }
.nv-cal-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.nv-cal-h { font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: var(--slate); font-weight: 600; padding: 0 .2rem .2rem; }
.nv-cal-grid > li:not(.nv-cal-h) { position: relative; min-height: clamp(48px, 11cqi, 74px); border-radius: 2px; padding: .25rem .3rem; background: color-mix(in oklab, var(--riverlight) 60%, var(--paper)); display: flex; flex-direction: column; justify-content: space-between; }
.nv-cal-grid > li.nv-cal-blank { background: none; }
.nv-cal-d { font-family: var(--display); font-weight: 600; font-size: clamp(.82rem, 2.6cqi, 1rem); line-height: 1; }
.nv-cal-n { position: absolute; top: .25rem; right: .3rem; font-size: .7rem; font-weight: 600; line-height: 1; }
.nv-cal-tag { font-size: clamp(.62rem, 1.9cqi, .74rem); font-weight: 600; line-height: 1.1; letter-spacing: .02em; }
.nv-cal-grid > li.is-skip { background: repeating-linear-gradient(135deg, transparent 0 5px, color-mix(in oklab, var(--slate) 16%, transparent) 5px 6px), var(--paper); color: color-mix(in oklab, var(--ink) 55%, transparent); }
.nv-cal-grid > li.is-work { background: var(--sandstone); }
.nv-cal-grid > li.is-work .nv-cal-n { color: color-mix(in oklab, var(--ink) 70%, transparent); }
.nv-cal-grid > li.is-posted { background: var(--paper); box-shadow: inset 0 0 0 2px var(--slate); }
.nv-cal-grid > li.is-served { box-shadow: inset 0 0 0 2px var(--ink); }
.nv-cal-grid > li.is-count { background: var(--fig); color: var(--paper); }
.nv-cal-grid > li.is-count .nv-cal-n { color: color-mix(in oklab, var(--paper) 80%, transparent); }
.nv-cal-grid > li.is-last { background: var(--ink); }
.nv-key { list-style: none; margin: .9rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; font-size: .82rem; color: var(--slate); }
.nv-key li { display: flex; align-items: center; gap: .45rem; }
.nv-key i { width: 14px; height: 14px; border-radius: 2px; flex: none; }
.nv-key .k-work { background: var(--sandstone); }
.nv-key .k-skip { background: repeating-linear-gradient(135deg, transparent 0 3px, color-mix(in oklab, var(--slate) 30%, transparent) 3px 4px), var(--paper); border: 1px solid color-mix(in oklab, var(--slate) 25%, transparent); }
.nv-key .k-count { background: var(--fig); }
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
.nv-cal-fig.reveal .nv-cal-grid > li[style] { transition: background-color .35s var(--ease-settle), color .35s var(--ease-settle); transition-delay: calc(var(--i) * 45ms + 250ms); }
.nv-cal-fig.reveal:not(.in) .nv-cal-grid > li.is-work,
.nv-cal-fig.reveal:not(.in) .nv-cal-grid > li.is-count { background: color-mix(in oklab, var(--riverlight) 60%, var(--paper)); color: var(--ink); }
}
.nv-tool { background: var(--riverlight); border-radius: 3px; padding: clamp(1rem, 4cqi, 1.6rem); }
.nv-tool-form { display: grid; gap: 1rem; }
@container (min-width: 600px) { .nv-tool-form { grid-template-columns: 1.3fr 1fr 1fr; align-items: end; } .nv-tool-title { grid-column: 1 / -1; } }
.nv-field { display: grid; gap: .35rem; font-size: .9rem; font-weight: 600; margin: 0; border: 0; padding: 0; min-width: 0; }
.nv-field input[type="date"], .nv-field select { font: inherit; font-weight: 400; font-size: 1rem; padding: .55rem .65rem; border: 1px solid color-mix(in oklab, var(--slate) 45%, transparent); border-radius: 3px; background: var(--paper); color: var(--ink); min-height: 44px; width: 100%; }
.nv-field select { -webkit-appearance: none; appearance: none; background-color: var(--paper); background-image: linear-gradient(45deg, transparent 50%, var(--slate) 50%), linear-gradient(135deg, var(--slate) 50%, transparent 50%); background-position: calc(100% - 18px) 55%, calc(100% - 12px) 55%; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 2.2rem; }
.nv-how legend { padding: 0; margin-bottom: .35rem; }
.nv-how label { display: inline-flex; align-items: center; gap: .4rem; font-weight: 400; margin-right: 1rem; min-height: 44px; cursor: pointer; }
.nv-how input { width: 1.1rem; height: 1.1rem; accent-color: var(--fig); margin: 0; }
.nv-tool-out { margin: 1.2rem 0 0; display: grid; gap: .6rem; background: var(--paper); border-radius: 3px; padding: 1rem 1.1rem; }
.nv-tool-out div { display: grid; grid-template-columns: 11rem 1fr; gap: .2rem 1rem; }
@container (max-width: 479px) { .nv-tool-out div { grid-template-columns: 1fr; } }
.nv-tool-out dt { font-size: .8rem; letter-spacing: .05em; text-transform: uppercase; color: var(--slate); font-weight: 600; padding-top: .15rem; }
.nv-tool-out dd { margin: 0; }
.nv-tool-last dd { font-family: var(--display); font-weight: 600; font-size: 1.2rem; color: var(--fig); }
.nv-tool-note { font-size: .86rem; margin: .8rem 0 0; }
.nv-bars { list-style: none; margin: 0; padding: 0; display: grid; gap: .85rem; }
.nv-bar { display: grid; gap: .3rem; }
.nv-bar-name { font-size: .9rem; line-height: 1.35; }
.nv-bar-track { position: relative; height: 30px; background: repeating-linear-gradient(90deg, color-mix(in oklab, var(--slate) 22%, transparent) 0 1px, transparent 1px calc(100% / 9)); border-bottom: 1px solid color-mix(in oklab, var(--slate) 35%, transparent); }
.nv-bar-fill { position: absolute; left: 0; top: 3px; bottom: 3px; width: calc(var(--d) / 90 * 100%); background: var(--slate); border-radius: 0 2px 2px 0; }
.nv-bar.is-sale .nv-bar-fill { background: var(--sand-dk); }
.nv-bar.is-short .nv-bar-fill { background: color-mix(in oklab, var(--slate) 55%, var(--paper)); }
.nv-bar.is-you .nv-bar-fill { background: var(--fig); }
.nv-bar-val { position: absolute; top: 50%; transform: translateY(-50%); left: calc(var(--d) / 90 * 100% + .5rem); font-family: var(--display); font-weight: 600; font-size: .95rem; white-space: nowrap; }
.nv-bar[style*="--d:90"] .nv-bar-val, .nv-bar[style*="--d:60"] .nv-bar-val { left: auto; right: calc((90 - var(--d)) / 90 * 100% + .5rem); color: var(--paper); }
.nv-axis { position: relative; height: 1.4rem; margin-top: .3rem; font-size: .75rem; color: var(--slate); }
.nv-axis span { position: absolute; left: calc(var(--d) / 90 * 100%); transform: translateX(-50%); white-space: nowrap; }
.nv-axis span:first-child { transform: none; }
.nv-axis span:last-child { transform: translateX(-100%); }
.nv-glance .nv-fig-title { margin-top: 1.3rem; }
.nv-glance .nv-fig-title:first-child { margin-top: 0; }
.nv-rules { list-style: none; margin: 1rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.nv-rules li { font-size: .85rem; font-weight: 600; padding: .35rem .7rem; border: 1px solid color-mix(in oklab, var(--slate) 35%, transparent); border-left: 4px solid var(--sand-dk); background: var(--paper); }
.nv-tl-span { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .7rem; font-size: .85rem; font-weight: 600; color: var(--slate); }
.nv-tl-len { position: relative; text-align: center; font-family: var(--display); font-size: 1.15rem; color: var(--ink); padding: .2rem 0; }
.nv-tl-len::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 10px; transform: translateY(-50%); background: var(--sandstone); border-left: 3px solid var(--slate); border-right: 3px solid var(--ink); z-index: -1; }
.nv-tl-len { isolation: isolate; }
.nv-steps { list-style: none; margin: 1.1rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .5rem; counter-reset: none; }
.nv-steps li { position: relative; display: grid; justify-items: center; text-align: center; gap: .45rem; font-size: .9rem; line-height: 1.3; }
.nv-steps li + li::before { content: ""; position: absolute; top: 17px; right: calc(50% + 22px); width: calc(100% - 44px + .5rem); height: 2px; background: color-mix(in oklab, var(--slate) 40%, transparent); }
.nv-step-k { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: var(--paper); border: 2px solid var(--slate); font-family: var(--display); font-weight: 600; }
.nv-steps li:last-child .nv-step-k { background: var(--ink); border-color: var(--ink); color: var(--paper); }
@container (max-width: 559px) {
.nv-steps { grid-template-columns: 1fr; gap: .9rem; }
.nv-steps li { grid-template-columns: 36px 1fr; justify-items: start; text-align: left; align-items: center; gap: .8rem; }
.nv-steps li + li::before { top: auto; bottom: calc(100% - 2px); right: auto; left: 17px; width: 2px; height: calc(.9rem + 4px); }
}
.nv-early { display: grid; gap: 1.4rem; }
.nv-lane-h { font-family: var(--display); font-weight: 600; margin: 0 0 .5rem; }
.nv-lane-bar { display: flex; align-items: stretch; min-height: 40px; position: relative; }
.nv-seg { width: calc(var(--w) * 1%); display: flex; align-items: center; justify-content: center; text-align: center; font-size: .8rem; font-weight: 600; line-height: 1.2; padding: .3rem .4rem; }
.nv-seg-rent { background: var(--slate); color: var(--paper); }
.nv-seg-exit { background: var(--sand-dk); color: var(--ink); }
.nv-seg-free { background: repeating-linear-gradient(135deg, transparent 0 6px, color-mix(in oklab, var(--fig) 22%, transparent) 6px 7px), color-mix(in oklab, var(--fig) 10%, var(--paper)); color: var(--fig); border: 1px dashed color-mix(in oklab, var(--fig) 50%, transparent); }
.nv-pin { position: relative; width: 0; }
.nv-pin::before { content: ""; position: absolute; top: -8px; bottom: -8px; left: -1.5px; width: 3px; background: var(--ink); }
.nv-pin > span { position: absolute; top: calc(100% + 10px); left: 0; transform: translateX(-50%); font-size: .78rem; font-weight: 600; white-space: nowrap; }
.nv-lane-ends { display: flex; justify-content: space-between; font-size: .78rem; color: var(--slate); margin-top: 1.9rem; }
.nv-lane-note { font-size: .86rem; margin: .7rem 0 0; color: var(--ink); }
.nv-ticks { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
@container (min-width: 600px) { .nv-ticks { grid-template-columns: 1fr 1fr; } }
.nv-ticks li { background: var(--riverlight); border-radius: 3px; padding: .6rem .9rem; }
.nv-ticks label { display: flex; gap: .7rem; align-items: flex-start; cursor: pointer; min-height: 28px; }
.nv-ticks input { width: 1.15rem; height: 1.15rem; margin: .22rem 0 0; flex: 0 0 auto; accent-color: var(--fig); }
.nv-ticks input:checked + span { color: color-mix(in oklab, var(--ink) 55%, transparent); text-decoration: line-through; text-decoration-color: color-mix(in oklab, var(--fig) 70%, transparent); }
.nv-fee-cols { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(.4rem, 2cqi, 1rem); align-items: end; }
.nv-fee-cols li { display: grid; gap: .4rem; justify-items: stretch; text-align: center; }
.nv-fee-v { font-family: var(--display); font-weight: 600; font-size: clamp(.9rem, 3cqi, 1.1rem); }
.nv-fee-stack { display: grid; gap: 3px; }
.nv-fee-stack i { display: block; height: clamp(26px, 7cqi, 40px); background: var(--sand-md); border-radius: 1px; box-shadow: inset 0 -3px 0 color-mix(in oklab, var(--sand-dk) 80%, var(--ink)); }
.nv-fee-l { font-size: .8rem; color: var(--slate); line-height: 1.25; border-top: 2px solid var(--slate); padding-top: .4rem; }
.nv-ill svg { display: block; width: 100%; height: auto; border-radius: 3px; }
.i-wall { fill: var(--riverlight); }
.i-wall.i-river { fill: color-mix(in oklab, var(--riverlight) 70%, var(--paper)); }
.i-cal { fill: var(--paper); stroke: color-mix(in oklab, var(--slate) 35%, transparent); }
.i-cal-top { fill: var(--sand-dk); }
.i-ring { fill: var(--ink); }
.i-cells rect { fill: color-mix(in oklab, var(--slate) 14%, var(--paper)); }
.i-mark { fill: none; stroke: var(--fig); stroke-width: 3; }
.i-ground { stroke: var(--slate); stroke-width: 2; fill: none; }
.i-roof, .i-door, .i-truck, .i-cab { fill: var(--slate); }
.i-stone { fill: var(--sand-lt); }
.i-stone.i-new { fill: var(--sandstone); }
.i-course { stroke: var(--sand-dk); stroke-width: 1.5; fill: none; }
.i-lintel { fill: var(--sand-dk); }
.i-knob { fill: var(--sand-lt); }
.i-win { fill: var(--riverlight); }
.i-pad { fill: var(--verdigris); }
.i-wheel { fill: var(--ink); }
.i-keyring { fill: none; stroke: var(--ink); stroke-width: 3; }
.i-keyhead { fill: var(--sand-dk); }
.i-keyblade { stroke: var(--sand-dk); stroke-width: 4; stroke-linecap: round; fill: none; }
.i-route { fill: none; stroke: var(--fig); stroke-width: 2.5; stroke-dasharray: 7 6; }
.i-route-head { fill: var(--fig); }
.i-tag { fill: var(--paper); stroke: var(--fig); stroke-width: 2.5; }
.i-tag-hole { fill: var(--fig); }
.i-tag-line { stroke: var(--fig); stroke-width: 2.5; stroke-linecap: round; }