Loading files
/* No max-width: the panel is ~928px at full size and the facts band wants all
of it. At 760px the band folded to 2×2 and left 168px empty on the right.
Container queries, not media queries: the 3D viewer takes the left half, so
this panel's width does not track the viewport — at a 1440px window it is
594px, and a viewport breakpoint would fold it at the wrong moment. */
.buildPanel {
display: grid;
gap: 34px;
container-type: inline-size;
}
.note {
max-width: 560px;
margin: 0;
color: var(--pf-ink-muted);
font-size: var(--pf-fs-body);
line-height: 1.65;
}
/* ── What it takes ── cost + time, before the steps. Four across, because the
decision is "is this worth it", and that is one glance, not four rows. */
.factsBand {
display: grid;
grid-template-columns: repeat(4, 1fr);
border: 1px solid var(--pf-rule);
}
.factCard {
display: grid;
gap: 4px;
align-content: start;
padding: 18px 18px 20px;
border-right: 1px solid var(--pf-rule);
}
.factCard:last-child {
border-right: 0;
}
/* 28px → 18px → 13px inside the cell, so the number carries and the detail
recedes. Weight stays 500 — the system has no 600. */
.factValue {
font-family: var(--pf-mono);
font-size: 28px;
font-weight: 500;
letter-spacing: -0.02em;
line-height: 1.1;
color: var(--pf-ink);
}
.factName {
font-size: var(--pf-fs-row);
line-height: 1.25;
color: var(--pf-ink);
}
.factLabel {
margin-top: 2px;
color: var(--pf-ink-muted);
font-size: 13px;
line-height: 1.5;
}
/* ── Steps | Start here ── side by side, which halves the scroll. */
.buildCols {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
align-items: start;
}
/* pf-block is a global class, so match the child element instead — naming it
here would get hashed by CSS Modules and match nothing. */
.buildCols > div {
min-width: 0;
}
.stepList {
display: grid;
}
.stepCard {
cursor: pointer;
}
.stepContent {
display: grid;
gap: 3px;
}
/* ── Build guide ── the single ink solid in this panel, so there is never a
question which link is the main route. */
.guideCard {
display: grid;
gap: 8px;
padding: 20px 22px;
border: 1px solid var(--pf-ink);
background: var(--pf-ink);
color: var(--pf-cream);
text-decoration: none;
transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
}
.guideCard strong {
font-size: clamp(19px, 2vw, 24px);
font-weight: 500;
line-height: 1.2;
letter-spacing: -0.01em;
}
.guideCard span {
color: var(--pf-cream);
opacity: 0.75;
font-size: var(--pf-fs-body);
line-height: 1.5;
}
/* Keep the fill — emptying a solid on hover reads as disabled. */
.guideCard:hover,
.guideCard:focus-visible {
outline: 0;
background: var(--pf-ink-muted);
border-color: var(--pf-ink-muted);
}
.quickLinks {
display: grid;
border: 1px solid var(--pf-rule);
border-top: 0;
}
.quickLinks a {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 14px;
padding: 13px 16px;
border-bottom: 1px solid var(--pf-rule);
color: var(--pf-ink);
text-decoration: none;
}
.quickLinks a:last-child {
border-bottom: 0;
}
.quickLinks a:hover,
.quickLinks a:focus-visible {
outline: 0;
background: var(--pf-cream-2);
}
.quickLinks strong {
font-size: var(--pf-fs-row-d);
font-weight: 500;
}
.quickLinks span {
flex: none;
color: var(--pf-ink-muted);
font-family: var(--pf-mono);
font-size: 11px;
letter-spacing: var(--pf-track-mono);
text-transform: uppercase;
}
.otherPaths {
margin: 16px 0 0;
color: var(--pf-ink-muted);
font-size: var(--pf-fs-body);
line-height: 1.55;
}
.pathLinks {
display: flex;
flex-wrap: wrap;
gap: 18px;
margin-top: 18px;
}
/* Explode rides in the row instead of floating over it — the old
position:absolute pinned it to a fixed offset that only fit one column
width. */
.stepHead {
min-height: 21px;
display: flex;
align-items: baseline;
gap: 12px;
}
.explodeControl {
flex: none;
display: inline-flex;
align-items: center;
gap: 10px;
white-space: nowrap;
}
.explodeControl label {
min-width: 8ch;
color: var(--pf-ink-muted);
font-family: var(--pf-mono);
font-size: 10px;
letter-spacing: var(--pf-track-mono);
text-transform: uppercase;
}
/* Square everything — the system has no radius, and a stock range input brings
a rounded track and thumb by default. */
.explodeControl input[type="range"] {
appearance: none;
-webkit-appearance: none;
width: 92px;
height: 14px;
margin: 0;
background: transparent;
cursor: ew-resize;
}
.explodeControl input[type="range"]::-webkit-slider-runnable-track {
height: 1px;
background: var(--pf-rule);
}
.explodeControl input[type="range"]::-moz-range-track {
height: 1px;
background: var(--pf-rule);
}
.explodeControl input[type="range"]::-webkit-slider-thumb {
appearance: none;
-webkit-appearance: none;
width: 3px;
height: 14px;
margin-top: -6px;
border: 0;
border-radius: 0;
background: var(--pf-ink);
}
.explodeControl input[type="range"]::-moz-range-thumb {
width: 3px;
height: 14px;
border: 0;
border-radius: 0;
background: var(--pf-ink);
}
.explodeControl input[type="range"]:focus-visible {
outline: 1px solid var(--pf-ink);
outline-offset: 3px;
}
/* Four across needs ~760px of panel; below that the detail lines shred into
six-word columns. */
@container (max-width: 760px) {
.factsBand {
grid-template-columns: repeat(2, 1fr);
}
.factCard:nth-child(2n) {
border-right: 0;
}
.factCard:nth-child(-n + 2) {
border-bottom: 1px solid var(--pf-rule);
}
}
@container (max-width: 620px) {
.buildCols {
grid-template-columns: 1fr;
gap: 28px;
}
}
@container (max-width: 400px) {
.factsBand {
grid-template-columns: 1fr;
}
.factCard {
border-right: 0;
border-bottom: 1px solid var(--pf-rule);
}
.factCard:last-child {
border-bottom: 0;
}
}
07e931b46This file is pinned to the selected release. Download the original to open it in your design tool.