
/* ---------- tokens (home-v2 lineage; furniture.css repeats the same values) ---------- */
:root{
  --surface:#F4F3EF; --surface-raised:#FBFAF8; --surface-sunken:#E9E7E0;
  --panel:#121417; --panel-border:#2A2F35; --panel-raised:#1A1D22;
  --border-hairline:#DEDBD2; --border:#C9C6BE; --border-strong:#8B8779;
  --heading:#14181B; --body:#3C4147; --muted:#5F6369;
  --on-panel-heading:#F4F3EF; --on-panel-body:#C9C6BE; --on-panel-muted:#9DA1A7;
  --accent:#6A3F96; --accent-hover:#58347C; --accent-text:#602F90;
  --accent-soft:#F0E9F6; --accent-soft-2:#DCCBEA; --on-accent:#F4F3EF; --accent-on-panel:#BFA4DA;
  --action:#C24E0F; --action-hover:#AD4409; --on-action:#FFFFFF;
  --focus-ring:#25528C; --danger:#B3261E; --danger-soft:#FBEDEB;
  --phosphor:#43610A;
  --amb-sea-glass:#A9C1B6; --amb-aqua:#7CB2B6; --amb-periwinkle:#8D94BC; --amb-soft-violet:#9379AD; --amb-violet-anchor:#6B4097;
  --mineral-run:linear-gradient(149deg, var(--amb-sea-glass) 0 46%, var(--amb-aqua) 46% 64%, var(--amb-periwinkle) 64% 82%, var(--amb-violet-anchor) 82% 100%);
  --holvem-fold:31deg;
  --fold-k:0.6009;              /* tan(31deg): rise per unit run. Every crease on this page uses it. */
  --font:"Geist", Inter, "Helvetica Neue", Arial, system-ui, sans-serif;
  --mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --frame:1296px; --gutter:16px;
  --r:8px; --r-field:4px;
  --ease:cubic-bezier(.2,.7,.2,1);
  --dur:.28s;
}
@media (min-width:720px){ :root{ --gutter:32px; } }

/* ---------- base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{ margin:0; background:var(--surface); color:var(--body); font-family:var(--font); font-size:16px; line-height:1.55; -webkit-font-smoothing:antialiased; overflow-x:hidden; }
h1,h2,h3,p,ul,ol,fieldset{ margin:0; }
fieldset{ padding:0; border:0; min-width:0; }
legend{ padding:0; }
button,input,select,textarea{ font:inherit; color:inherit; }
a{ color:var(--accent-text); text-underline-offset:3px; }
img{ display:block; max-width:100%; height:auto; }
.frame{ width:100%; max-width:var(--frame); margin-inline:auto; padding-inline:var(--gutter); }
.sr-only{ position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:2px; }
[hidden]{ display:none!important; }

/* ---------- the response strip (page's own; the furniture sits under it) ---------- */
.response{ font-family:var(--mono); font-size:12px; line-height:18px; padding:12px var(--gutter); text-align:center; border-bottom:1px solid var(--border); color:var(--muted); background:var(--surface); }
.response .tel{ color:var(--heading); white-space:nowrap; }
@media (max-width:519px){ .response{ font-size:11px; line-height:16px; padding:10px var(--gutter); } .response .tel{ display:block; margin-top:2px; } }

/* ---------- hero: .hero-holvem (furniture.css) with the page's own trims ---------- */
.hero-holvem .hh-media{ aspect-ratio:21/9; }
@media (min-width:640px) and (max-width:899px){ .hero-holvem .hh-media{ aspect-ratio:21/9; } }
.hero-holvem .hh-proof li{ align-items:flex-start; }
.hero-holvem .hh-proof li::before{ margin-top:7px; }
.tlink{ font-size:15px; font-weight:500; color:var(--accent-text); }

/* ---------- stage: the form on the surface ground, the rail beside it ---------- */
.stage{ position:relative; background:var(--surface); padding:36px 0 72px; }
@media (min-width:1000px){ .stage{ padding:44px 0 88px; } }
.stage-grid{ display:grid; grid-template-columns:minmax(0,1fr); gap:28px; }
@media (min-width:1000px){ .stage-grid{ grid-template-columns:minmax(0,1fr) 340px; gap:40px; align-items:start; } }
@media (min-width:1200px){ .stage-grid{ grid-template-columns:minmax(0,1fr) 372px; gap:56px; } }

/* ---------- form ---------- */
.brief{ position:relative; min-width:0; }

/* step indicator: three numbered segments; the fill is cut at the fold; done segments carry the mineral run */
.stepbar{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.sb{ position:relative; color:var(--muted); }
.sb-btn{ all:unset; box-sizing:border-box; cursor:default; display:block; width:100%; padding:6px 0 4px; }
.sb.is-done .sb-btn{ cursor:pointer; }
.sb-btn:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:4px; border-radius:2px; }
.sb-head{ display:flex; align-items:baseline; gap:8px; font-size:12.5px; letter-spacing:.08em; text-transform:uppercase; font-weight:600; min-height:18px; }
.sb-num{ font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:12px; color:var(--heading); }
.sb-lab{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sb-bar{ display:block; margin-top:8px; height:6px; background:var(--border-hairline); position:relative; overflow:hidden; }
.sb-fill{ position:absolute; inset:0; width:0; background:var(--accent); transition:width .45s var(--ease), background-color .3s; clip-path:polygon(0 0, 100% 0, calc(100% - 6px / var(--fold-k)) 100%, 0 100%); }
.sb.is-current{ color:var(--heading); }
.sb.is-done{ color:var(--body); }
.sb.is-done .sb-fill{ width:100%!important; background:var(--mineral-run); clip-path:none; }
.sb.is-done .sb-num{ color:var(--accent-text); }
.sb.is-done .sb-num::after{ content:""; display:inline-block; width:5px; height:9px; margin-left:6px; border-right:1.5px solid var(--accent-text); border-bottom:1.5px solid var(--accent-text); transform:translateY(-1px) rotate(45deg); }
.sb:not(.is-current):not(.is-done) .sb-num{ color:var(--muted); }
@media (max-width:719px){ .sb:not(.is-current) .sb-lab{ display:none; } .stepbar{ grid-template-columns:auto 1fr 1fr; } .sb.is-current{ grid-column:span 1; } }
.stepbar-note{ margin-top:12px; display:flex; flex-wrap:wrap; gap:6px 14px; font-size:14px; color:var(--muted); }
.stepbar-note strong{ color:var(--heading); font-weight:500; }

/* mobile brief line (rail replacement) */
.brief-line{ display:flex; flex-wrap:wrap; gap:6px; margin-top:14px; }
.brief-line:empty{ display:none; }
.brief-line span{ font-size:13px; padding:4px 10px; border:1px solid var(--border); color:var(--body); border-radius:999px; background:var(--surface-raised); }
@media (min-width:1000px){ .brief-line{ display:none; } }

/* steps */
.steps{ margin-top:26px; min-height:520px; position:relative; }
@media (max-width:719px){ .steps{ min-height:480px; } }
.step{ animation:stepIn .38s var(--ease) both; }
@keyframes stepIn{ from{ opacity:0; transform:translateY(10px);} to{ opacity:1; transform:none; } }
.step-head{ display:grid; gap:6px; margin-bottom:22px; }
.step-kicker{ font-size:12.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-text); font-weight:600; display:flex; flex-wrap:wrap; gap:6px 10px; }
.step-kicker [data-pane-label]:not(:empty)::before{ content:""; display:inline-block; width:10px; height:6px; margin-right:10px; background:var(--accent); clip-path:polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 10px * var(--fold-k))); vertical-align:1px; }
.step-title{ font-size:clamp(26px,3.4vw,36px); line-height:1.12; letter-spacing:-.6px; font-weight:600; color:var(--heading); text-wrap:balance; }
.step-title:focus{ outline:none; }
.step-intro{ color:var(--body); max-width:60ch; font-size:16px; }

/* panes inside step 1 */
.pane{ animation:paneIn .3s var(--ease) both; }
@keyframes paneIn{ from{ opacity:0; transform:translateX(14px);} to{ opacity:1; transform:none; } }
.pane-back-row{ display:none; }
.picked-row{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; margin-bottom:20px; padding:10px 14px; background:var(--surface-raised); border:1px solid var(--border-hairline); border-radius:var(--r-field); font-size:14.5px; color:var(--body); }
.picked-row b{ color:var(--heading); font-weight:500; }
.picked-row .ico{ width:22px; height:22px; flex:none; }
.picked-row .change{ all:unset; cursor:pointer; margin-left:auto; font-size:14px; font-weight:500; color:var(--accent-text); text-decoration:underline; text-underline-offset:3px; padding:6px 2px; }
.picked-row .change:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:2px; border-radius:2px; }

.group{ margin-top:22px; }
.group + .group{ margin-top:36px; }
.group-label{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 12px; margin-bottom:12px; }
.group-label h3{ font-size:17px; font-weight:600; color:var(--heading); letter-spacing:-.2px; }
.group-label h3:focus{ outline:none; }
.group-label .req{ font-size:13px; color:var(--muted); }
.group-label .picked{ font-size:13px; color:var(--accent-text); font-weight:500; opacity:0; transition:opacity .3s; }
.group.has-pick .picked{ opacity:1; }

/* option tiles: paper on the surface, the top-right corner cut at the fold; the flap and tick land on select */
.opts{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
@media (min-width:720px){ .opts{ grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; } }
@media (min-width:1000px){ .opts.opts-5{ grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; } }
@media (min-width:1200px){ .opts.opts-5{ grid-template-columns:repeat(5,minmax(0,1fr)); } }
.opt{ position:relative; display:block; cursor:pointer; min-width:0; }
.opt-input{ position:absolute; opacity:0; width:1px; height:1px; margin:0; pointer-events:none; }
.opt-card{
  position:relative; display:flex; flex-direction:column; gap:10px; height:100%; min-height:44px;
  padding:14px 14px 12px; background:var(--surface-raised); color:var(--heading);
  border:1px solid var(--border-hairline); border-radius:var(--r);
  --fa:22px; clip-path:polygon(0 0, calc(100% - var(--fa)) 0, 100% calc(var(--fa) * var(--fold-k)), 100% 100%, 0 100%);
  transition:transform var(--dur) var(--ease), background-color var(--dur), border-color var(--dur);
}
.opt-card::before{ /* the cut corner reads as a fold: a hairline along the crease */
  content:""; position:absolute; top:0; right:0; width:var(--fa); height:calc(var(--fa) * var(--fold-k));
  background:linear-gradient(to top right, transparent calc(50% - .75px), var(--border) calc(50% - .75px), var(--border) calc(50% + .75px), transparent calc(50% + .75px));
}
.opt-card::after{ /* the folded flap: appears on select, crease at 31deg */
  content:""; position:absolute; top:0; right:0; width:var(--fa); height:calc(var(--fa) * .882);
  background:var(--accent); clip-path:polygon(0 0, 100% 68.1%, 47.1% 100%);
  transform:scale(0); transform-origin:100% 0; transition:transform .32s var(--ease);
}
.opt-icon{ width:44px; height:44px; display:grid; place-items:center; }
.ico{ width:40px; height:40px; overflow:visible; fill:none; stroke:var(--heading); stroke-width:1.75; stroke-linecap:square; stroke-linejoin:miter; transition:transform var(--dur) var(--ease); }
.ico .ac{ stroke:var(--accent); }
.ico .af{ fill:var(--accent-soft); stroke:var(--accent); }
.ico .an{ stroke:none; fill:var(--accent); }
.opt-title{ display:block; font-size:14.5px; line-height:1.3; font-weight:500; color:var(--heading); letter-spacing:-.1px; text-wrap:balance; padding-right:12px; }
.opt-tick{ position:absolute; right:10px; bottom:10px; width:20px; height:20px; border-radius:50%; background:var(--accent); color:var(--on-accent); display:grid; place-items:center; transform:scale(0); transition:transform .28s var(--ease) .06s; }
.opt-tick svg{ width:11px; height:11px; }
@media (hover:hover){
  .opt:hover .opt-card{ transform:translateY(-2px); border-color:var(--accent); }
  .opt:hover .ico{ transform:translateY(-2px); }
}
.opt:has(.opt-input:checked) .opt-card{ background:var(--accent-soft); border-color:var(--accent); animation:lock .36s var(--ease); }
.opt:has(.opt-input:checked) .opt-card::after{ transform:scale(1); }
.opt:has(.opt-input:checked) .opt-tick{ transform:scale(1); }
.opt:has(.opt-input:checked) .ico .af{ fill:var(--accent-soft-2); }
.opt:has(.opt-input:focus-visible) .opt-card{ outline:2px solid var(--focus-ring); outline-offset:2px; }
@keyframes lock{ 0%{ transform:translateY(-2px) scale(1);} 45%{ transform:translateY(0) scale(.975);} 100%{ transform:none; } }
@media (max-width:719px){ .opt-card{ padding:12px 12px 10px; gap:8px; } .opt-icon{ width:36px; height:36px; } .ico{ width:32px; height:32px; } .opt-title{ font-size:14px; } }

/* fields */
.fld{ position:relative; display:grid; gap:7px; min-width:0; }
.fld label, .fld .lbl{ font-size:15px; font-weight:500; color:var(--heading); }
.fld label small, .fld .lbl small{ font-weight:400; color:var(--muted); margin-left:6px; }
.hint{ font-size:13.5px; color:var(--muted); line-height:1.45; }
.err{ font-size:13.5px; color:var(--danger); display:none; }
.err::before{ content:"\2937  "; }
.fld.invalid .err{ display:block; }
.fld.invalid .ctl{ border-color:var(--danger); box-shadow:0 0 0 3px rgba(179,38,30,.14); }
.fld.invalid .drop{ border-color:var(--danger); }
.fld.invalid .opts{ outline:2px solid var(--danger); outline-offset:6px; border-radius:2px; }
.ctl{ width:100%; min-height:52px; padding:12px 14px; background:var(--surface-raised); color:var(--heading); border:1.5px solid var(--border); border-radius:var(--r-field); transition:border-color .2s, box-shadow .2s; }
.ctl::placeholder{ color:#8B8779; }
.ctl:hover{ border-color:var(--border-strong); }
.ctl:focus{ outline:none; border-color:var(--focus-ring); box-shadow:0 0 0 3px rgba(37,82,140,.22); }
.fld.is-filled .ctl{ border-color:var(--border-strong); }
select.ctl{ appearance:none; padding-right:40px; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'><path d='M1 1l6 6 6-6' fill='none' stroke='%2314181B' stroke-width='1.8'/></svg>"); background-repeat:no-repeat; background-position:right 14px center; cursor:pointer; }
textarea.ctl{ resize:vertical; min-height:132px; line-height:1.5; }
.grid-2{ display:grid; gap:18px; }
.grid-3{ display:grid; gap:18px; }
@media (min-width:720px){ .grid-2{ grid-template-columns:repeat(2,minmax(0,1fr)); } .grid-3{ grid-template-columns:repeat(3,minmax(0,1fr)); } .contact-hint{ grid-column:1 / -1; margin-top:-6px; } }
@media (min-width:1000px){ .contact-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }

/* postcode: the one big field */
.postcode-fld .ctl{ font-size:clamp(24px,4vw,34px); letter-spacing:.08em; text-transform:uppercase; font-weight:600; min-height:72px; padding:10px 18px; max-width:380px; font-family:var(--mono); }
.postcode-fld .ctl::placeholder{ text-transform:none; letter-spacing:0; font-weight:400; font-size:.55em; font-family:var(--font); }
.optional-block{ margin-top:34px; padding-top:26px; border-top:1px solid var(--border-hairline); }
.optional-block .group-label{ margin-bottom:16px; }

/* drop zone + file list */
.drop{ position:relative; display:grid; gap:6px; justify-items:start; padding:22px 22px 20px; border:1.5px dashed var(--border-strong); border-radius:var(--r); background:var(--surface-raised); transition:border-color .2s, background-color .2s; }
.drop:hover{ border-color:var(--accent); }
.drop:focus-within{ outline:2px solid var(--focus-ring); outline-offset:3px; }
.drop.is-over{ border-color:var(--accent); background:var(--accent-soft); border-style:solid; }
.drop input[type=file]{ position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; clip:rect(0,0,0,0); }
.drop-title{ font-weight:500; color:var(--heading); font-size:16px; display:flex; align-items:center; gap:10px; }
.drop-title svg{ width:24px; height:24px; flex:none; fill:none; stroke:var(--accent); stroke-width:1.75; stroke-linecap:square; stroke-linejoin:miter; }
.drop-sub{ font-size:13.5px; color:var(--muted); max-width:60ch; }
.drop-actions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:8px; }
.btn-ghost{ display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0 14px; border-radius:var(--r-field); background:transparent; color:var(--heading); border:1.5px solid var(--border-strong); cursor:pointer; font-weight:500; font-size:14px; transition:border-color .2s, background-color .2s; }
.btn-ghost:hover{ border-color:var(--heading); background:var(--surface); }
.btn-ghost svg{ width:14px; height:14px; }
.files{ list-style:none; margin:12px 0 0; padding:0; display:grid; gap:6px; }
.files:empty{ display:none; }
.file{ display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; align-items:center; gap:12px; padding:10px 12px; background:var(--surface-raised); color:var(--heading); border-radius:var(--r-field); border:1px solid var(--border-hairline); animation:stepIn .3s var(--ease) both; }
.file.too-big{ border-color:var(--danger); background:var(--danger-soft); }
.file-kind{ width:28px; height:28px; border-radius:4px; background:var(--accent-soft); color:var(--accent-text); display:grid; place-items:center; font-size:10px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; }
.file.too-big .file-kind{ background:#F5C9C4; color:var(--danger); }
.file-name{ font-size:14px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.file-size{ font-size:13px; color:var(--muted); white-space:nowrap; font-variant-numeric:tabular-nums; }
.file.too-big .file-size{ color:var(--danger); font-weight:500; }
.file-rm{ all:unset; cursor:pointer; width:32px; height:32px; border-radius:4px; display:grid; place-items:center; color:var(--muted); }
.file-rm:hover{ background:var(--surface-sunken); color:var(--heading); }
.file-rm:focus-visible{ outline:2px solid var(--focus-ring); }
.file-rm svg{ width:12px; height:12px; }
.files-summary{ margin-top:8px; font-size:13.5px; color:var(--muted); }
.files-summary:empty{ display:none; }

/* notes */
.notes-fld .lbl-row{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
.notes-fld .count{ font-size:12.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.chips{ display:flex; flex-wrap:wrap; gap:8px; margin-top:2px; }
.chip{ all:unset; cursor:pointer; font-size:13px; line-height:1.3; padding:8px 12px; border-radius:999px; border:1px solid var(--border-strong); color:var(--body); background:var(--surface-raised); transition:border-color .2s, color .2s, background-color .2s; }
.chip:hover{ border-color:var(--accent); color:var(--heading); }
.chip:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:2px; }
.chip.is-used{ background:var(--accent); color:var(--on-accent); border-color:var(--accent); }

/* nav */
.nav{ display:flex; align-items:center; justify-content:space-between; gap:14px; margin-top:32px; padding-top:22px; border-top:1px solid var(--border-hairline); flex-wrap:wrap; }
.nav-right{ display:flex; align-items:center; gap:14px; margin-left:auto; flex-wrap:wrap; }
.nav-hint{ font-size:13.5px; color:var(--muted); }
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:52px; padding:0 22px; border-radius:var(--r); border:1.5px solid transparent; cursor:pointer; font-weight:600; font-size:16px; letter-spacing:-.1px; text-decoration:none; transition:background-color .2s, border-color .2s, color .2s, transform .2s var(--ease), box-shadow .3s; }
.btn svg{ width:16px; height:16px; }
.btn-next{ background:transparent; color:var(--heading); border-color:var(--border-strong); }
.btn-next:hover{ border-color:var(--heading); background:var(--surface-raised); }
.btn-next.is-armed{ background:var(--action); color:var(--on-action); border-color:var(--action); animation:arm .9s var(--ease) 1; }
.btn-next.is-armed:hover{ background:var(--action-hover); border-color:var(--action-hover); }
@keyframes arm{ 0%{ box-shadow:0 0 0 0 rgba(194,78,15,.5);} 100%{ box-shadow:0 0 0 14px rgba(194,78,15,0);} }
.btn-prev{ background:transparent; color:var(--body); border-color:var(--border); }
.btn-prev:hover{ color:var(--heading); border-color:var(--heading); }
.btn:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:3px; }
.btn[disabled]{ opacity:.6; cursor:progress; }

/* wire status (injected by the wire) */
[data-wire-status]{ margin:18px 0 0; padding:12px 14px 12px 16px; border-left:3px solid var(--accent); background:var(--surface-raised); color:var(--heading); font-size:14.5px; border-radius:0 var(--r-field) var(--r-field) 0; }
[data-wire-status]:empty{ display:none; }
[data-wire-status].is-error{ border-left-color:var(--danger); }

/* promise */
.promise{ display:flex; gap:12px; align-items:flex-start; margin-top:26px; padding:14px 16px; background:var(--surface-raised); border:1px solid var(--border-hairline); border-left:3px solid var(--accent); border-radius:0 var(--r) var(--r) 0; font-size:14.5px; color:var(--body); }
.promise svg{ flex:none; width:22px; height:22px; margin-top:1px; fill:none; stroke:var(--accent); stroke-width:1.75; stroke-linecap:square; }
.promise b{ color:var(--heading); font-weight:500; }

/* ---------- rail: the brief building up (kept from R2, on paper) ---------- */
.rail{ display:none; }
@media (min-width:1000px){ .rail{ display:block; position:sticky; top:24px; } }
.rail-card{ position:relative; background:var(--surface-raised); color:var(--heading); border:1px solid var(--border-hairline); border-radius:var(--r); padding:22px 22px 18px;
  --fa:48px; clip-path:polygon(0 0, calc(100% - var(--fa)) 0, 100% calc(var(--fa) * var(--fold-k)), 100% 100%, 0 100%); }
.rail-card::before{ content:""; position:absolute; left:0; right:0; top:0; height:4px; background:var(--mineral-run); }
.rail-card::after{ content:""; position:absolute; top:0; right:0; width:var(--fa); height:calc(var(--fa) * .882); background:var(--surface-sunken); clip-path:polygon(0 0, 100% 68.1%, 47.1% 100%); }
.rail-kicker{ margin-top:6px; font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-text); font-weight:600; }
.rail-title{ margin-top:4px; font-size:22px; font-weight:600; letter-spacing:-.4px; color:var(--heading); }
.rail-sub{ margin-top:4px; font-size:13.5px; color:var(--muted); }
.rail-rows{ list-style:none; margin:18px 0 0; padding:0; border-top:1px solid var(--border-hairline); }
.rail-row{ display:grid; grid-template-columns:96px minmax(0,1fr); gap:12px; align-items:baseline; padding:10px 0; border-bottom:1px solid var(--border-hairline); font-size:14px; }
.rail-row dt{ color:var(--muted); font-size:13px; }
.rail-row dd{ margin:0; color:var(--heading); font-weight:500; min-width:0; overflow-wrap:anywhere; }
.rail-row dd:empty::before, .rail-row dd[data-empty]::before{ content:""; display:inline-block; width:12px; height:1px; background:var(--border); vertical-align:middle; }
.rail-row.is-set dd{ animation:railIn .4s var(--ease); }
@keyframes railIn{ from{ background:var(--accent-soft);} to{ background:transparent;} }
.rail-row.is-set dt::after{ content:""; display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--accent); margin-left:6px; vertical-align:middle; }
.rail-foot{ margin-top:14px; display:flex; justify-content:space-between; align-items:center; font-size:13px; color:var(--muted); }
.rail-foot b{ color:var(--heading); font-weight:500; }
.rail-meter{ height:6px; background:var(--surface-sunken); margin-top:10px; position:relative; overflow:hidden; border-radius:1px; }
.rail-meter i{ position:absolute; inset:0; width:0; background:var(--mineral-run); transition:width .45s var(--ease); clip-path:polygon(0 0, 100% 0, calc(100% - 6px / var(--fold-k)) 100%, 0 100%); }
.rail-note{ margin-top:14px; font-size:13px; color:var(--muted); line-height:1.45; }

/* ---------- after ---------- */
.after{ padding:40px 0 48px; }
.alt{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px 32px; padding:22px 24px; border:1px solid var(--border-hairline); border-radius:var(--r); background:var(--surface-raised); }
.alt h2{ font-size:18px; font-weight:600; color:var(--heading); letter-spacing:-.2px; }
.alt p{ margin-top:4px; font-size:15px; color:var(--body); max-width:60ch; }
.alt-link{ font-size:15px; font-weight:600; color:var(--accent-text); text-decoration:underline; text-underline-offset:4px; text-decoration-thickness:1.5px; }
.alt-link:hover{ color:var(--heading); }

/* ---------- confirmation (demo preview of /thank-you/) ---------- */
.done{ animation:stepIn .45s var(--ease) both; grid-column:1 / -1; }
.done-grid{ display:grid; gap:24px; }
@media (min-width:1000px){ .done-grid{ grid-template-columns:minmax(0,1fr) 372px; gap:56px; align-items:start; } }
.done-title{ font-size:clamp(30px,4vw,44px); line-height:1.08; letter-spacing:-.8px; font-weight:600; color:var(--heading); }
.done-lede{ margin-top:14px; color:var(--body); max-width:58ch; font-size:17px; }
.ref{ position:relative; margin-top:28px; background:var(--surface-raised); color:var(--heading); border:1px solid var(--border-hairline); border-radius:var(--r); padding:22px 24px 20px; max-width:560px;
  --fa:64px; clip-path:polygon(0 0, calc(100% - var(--fa)) 0, 100% calc(var(--fa) * var(--fold-k)), 100% 100%, 0 100%); }
.ref::after{ content:""; position:absolute; top:0; right:0; width:var(--fa); height:calc(var(--fa) * .882); background:var(--accent); clip-path:polygon(0 0, 100% 68.1%, 47.1% 100%); }
.ref-kicker{ font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent-text); font-weight:600; }
.ref-code{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:8px; }
.ref-code output{ font-family:var(--mono); font-size:clamp(28px,4vw,40px); font-weight:600; letter-spacing:.04em; font-variant-numeric:tabular-nums; line-height:1.1; }
.ref-full{ margin-top:10px; font-size:12.5px; color:var(--muted); font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.ref-note{ margin-top:12px; font-size:14px; color:var(--body); }
.done-next{ margin-top:30px; display:grid; gap:12px; max-width:560px; }
.done-next .row{ display:grid; grid-template-columns:28px minmax(0,1fr); gap:12px; align-items:start; font-size:15px; color:var(--body); }
.done-next .row b{ color:var(--heading); font-weight:500; }
.done-next .n{ width:28px; height:28px; border-radius:50%; border:1.5px solid var(--accent); color:var(--accent-text); display:grid; place-items:center; font-size:13px; font-weight:600; }
.done-actions{ margin-top:30px; display:flex; flex-wrap:wrap; gap:12px 24px; }
.done-recap .rail-card{ --fa:48px; }

/* ---------- prototype control (remove) ---------- */
.proto{ position:fixed; left:12px; bottom:12px; z-index:9; display:flex; align-items:center; gap:10px; padding:8px 12px 8px 8px; background:var(--surface-raised); border:1px solid var(--border); border-radius:6px; font-size:12.5px; color:var(--body); box-shadow:0 6px 24px rgba(20,24,27,.12); max-width:calc(100vw - 24px); }
.proto-tag{ font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; font-weight:600; color:var(--on-accent); background:var(--accent); padding:3px 6px; border-radius:3px; }
.proto label{ display:flex; align-items:center; gap:6px; cursor:pointer; }

/* ---------- motion preference: every animation and transition off; pane and step changes are instant ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation:none!important; transition:none!important; }
  html{ scroll-behavior:auto; }
}


/* =====================================================================================================
   HOLVEM R3 FURNITURE (M5-R1, round R3, 28 Sep 2026)
   Masthead + mega menu + dropdowns, mobile menu, footer, the R3-S3 section-background system,
   the mineral edge band and the R3-S6 hero overlay component.

   HOW IT IS USED
   - apply.py inlines this file (plus grey-fix.css) into a page as <style data-furniture="r3"> at the END of
     <head>, after the page's own <style>. Every rule here therefore wins ties against the r2 furniture CSS a
     page still carries. Inner class names are new (nav-item, nav-panel, mega, drop, mm-*, sf-*) so the old
     r2 rules (.navitem, .sub, .mgroup, .fgrid ...) never match the new markup.
   - Tokens: the page's own :root carries them (home-v2 lineage). The :root block below repeats the same
     values so a fragment or hero-example renders standalone; identical values, no drift.
   - Breakpoints (R1-SITE nav fix kept): the full nav runs from 1320px; the Menu button carries the
     navigation from 1110 to 1319 and below 1110 (mobile). Re-measured with the real Geist, see the report.
   - No em or en dashes in visible copy anywhere in this file's components.
   ===================================================================================================== */

:root{
  --surface:#F4F3EF; --surface-raised:#FBFAF8; --surface-sunken:#E9E7E0;
  --panel:#121417; --panel-border:#2A2F35;
  --border-hairline:#DEDBD2; --border:#C9C6BE; --border-strong:#8B8779;
  --heading:#14181B; --body:#3C4147; --muted:#5F6369;
  --on-panel-heading:#F4F3EF; --on-panel-body:#C9C6BE; --on-panel-muted:#9DA1A7;
  --accent:#6A3F96; --accent-hover:#58347C; --accent-text:#602F90; --accent-soft:#F0E9F6; --accent-on-panel:#BFA4DA;
  --focus-ring:#25528C;
  --action:#C24E0F; --action-hover:#AD4409;
  --phosphor:#43610A; --phosphor-on-dark:#A6E24C;
  --amb-sea-glass:#A9C1B6; --amb-aqua:#7CB2B6; --amb-periwinkle:#8D94BC; --amb-soft-violet:#9379AD; --amb-violet-anchor:#6B4097;
  --holvem-fold:31deg;
  --ch-x:36.6px; --ch-y:22px;
  --font:"Geist", Inter, "Helvetica Neue", Arial, system-ui, sans-serif;
  --mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --frame:1296px; --gutter:16px; --r:8px; --r-field:4px;
  --ease:cubic-bezier(.2,.7,.2,1); --dur:.28s;
  /* THE MINERAL RUN as a slim band: four hard-edged planes, boundaries cut at the fold (31deg from horizontal,
     the "/" orientation of the accepted ambient plates). Hard stops, never a wash. Works at any width because
     the stop positions map to the band's width when the band is much wider than tall. */
  --mineral-run:linear-gradient(149deg, var(--amb-sea-glass) 0 46%, var(--amb-aqua) 46% 64%, var(--amb-periwinkle) 64% 82%, var(--amb-violet-anchor) 82% 100%);
  --mineral-run-soft:linear-gradient(149deg, var(--amb-sea-glass) 0 46%, var(--amb-aqua) 46% 64%, var(--amb-periwinkle) 64% 82%, var(--amb-soft-violet) 82% 100%);
}
@media (min-width:720px){ :root{ --gutter:32px; } }

/* ---------------------------------------------------------------- masthead ---------------------------------- */
.masthead{ position:relative; z-index:40; background:var(--surface); border-bottom:1px solid var(--border); }
.masthead .frame{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:107px; padding-top:24px; padding-bottom:24px; }
.masthead .logo{ display:inline-flex; align-items:center; flex-shrink:0; width:auto; height:auto; font-size:0; line-height:0; text-decoration:none; }
.masthead .logo svg{ width:209.25px; height:58.33px; display:block; }
.masthead .logo:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:4px; }

.masthead nav{ display:none; align-items:center; gap:22px; font-size:14px; line-height:24px; flex:1 1 auto; min-width:0; justify-content:flex-start; padding-left:8px; }
.masthead .nav-item{ position:relative; }
.masthead .nav-item > a{ display:flex; align-items:center; gap:7px; color:var(--heading); text-decoration:none; padding:8px 0; white-space:nowrap; max-width:none; }
.masthead .nav-item > a[aria-haspopup]::after{ content:""; width:7px; height:7px; border-right:1.5px solid var(--muted); border-bottom:1.5px solid var(--muted); transform:translateY(-2px) rotate(45deg); transition:transform var(--dur) var(--ease); }
.masthead .nav-item:hover > a[aria-haspopup]::after, .masthead .nav-item.is-open > a[aria-haspopup]::after{ transform:translateY(1px) rotate(225deg); }
.masthead .nav-item.is-closed > a[aria-haspopup]::after{ transform:translateY(-2px) rotate(45deg); }
.masthead .nav-item > a[aria-current="page"], .masthead .nav-item[data-current] > a{ box-shadow:inset 0 -2px 0 var(--heading); }
.masthead .nav-item > a:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:3px; }

/* the panel: opens on hover, on keyboard focus within, or on tap (furniture.js adds is-open); Escape adds is-closed */
.masthead .nav-panel{ position:absolute; left:-14px; top:100%; padding-top:10px; display:none; z-index:20; }
.masthead .nav-item:hover .nav-panel, .masthead .nav-item:focus-within .nav-panel, .masthead .nav-item.is-open .nav-panel{ display:block; }
.masthead .nav-item.is-closed .nav-panel{ display:none; }
.masthead .nav-mega.is-open .nav-panel::before{ content:""; position:absolute; left:0; right:0; bottom:100%; height:30px; }
.masthead .nav-end .nav-panel{ left:auto; right:-14px; }

/* dropdown: raised paper on a slim mineral edge */
.masthead .drop{ min-width:300px; background:var(--surface-raised); border:1px solid var(--border); border-radius:var(--r); box-shadow:0 22px 44px -28px rgba(20,24,27,.45); overflow:hidden; padding:0 0 8px; }
.masthead .drop::before{ content:""; display:block; height:4px; background:var(--mineral-run); }
.masthead .drop a{ display:block; padding:9px 18px; font-size:14px; line-height:22px; color:var(--heading); text-decoration:none; }
.masthead .drop a:hover, .masthead .drop a:focus-visible{ background:var(--surface); color:var(--accent-text); outline:none; }
.masthead .drop a:focus-visible{ box-shadow:inset 0 0 0 2px var(--focus-ring); }
.masthead .drop a[aria-current="page"]{ box-shadow:inset 3px 0 0 var(--accent); }
.masthead .drop .drop-hub{ font-weight:600; padding-top:14px; padding-bottom:10px; margin-bottom:4px; border-bottom:1px solid var(--border-hairline); }
.masthead .drop .drop-group{ display:block; padding:12px 18px 4px; font-size:11px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; color:var(--muted); }
.masthead .drop-2{ display:grid; grid-template-columns:1fr 1fr; min-width:620px; column-gap:0; }
.masthead .drop-2::before{ grid-column:1 / -1; }
.masthead .drop-2 .drop-span{ grid-column:1 / -1; }
.masthead .drop-2 a:not(.drop-span):nth-child(odd){ border-right:1px solid var(--border-hairline); }
.masthead .drop-s{ min-width:220px; }

/* mega menu (Buildings & applications): spans the frame, five columns, two families */
.masthead .nav-mega{ position:static; }
.masthead .nav-mega .nav-panel{ left:var(--gutter); right:var(--gutter); }
.masthead .mega{ background:var(--surface-raised); border:1px solid var(--border); border-radius:var(--r); box-shadow:0 26px 52px -30px rgba(20,24,27,.5); overflow:hidden; }
.masthead .mega::before{ content:""; display:block; height:6px; background:var(--mineral-run); }
.masthead .mega-grid{ display:grid; grid-template-columns:3fr 2fr; }
.masthead .mega-family{ padding:20px 28px 24px; min-width:0; }
.masthead .mega-applications{ border-left:1px solid var(--border-hairline); background:var(--surface); }
.masthead .mega-head{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; padding-bottom:10px; margin-bottom:12px; border-bottom:1px solid var(--border-hairline); }
.masthead .mega-head h2{ margin:0; font-size:15px; line-height:22px; font-weight:600; color:var(--heading); letter-spacing:-.1px; }
.masthead .mega-all{ display:inline-flex; align-items:center; gap:6px; font-size:13.5px; font-weight:600; color:var(--accent-text); text-decoration:none; white-space:nowrap; }
.masthead .mega-all svg{ width:13px; height:13px; transition:transform var(--dur) var(--ease); }
.masthead .mega-all:hover svg, .masthead .mega-all:focus-visible svg{ transform:translateX(3px); }
.masthead .mega-all:hover{ text-decoration:underline; }
.masthead .mega-cols{ display:grid; gap:0 22px; }
.masthead .mega-buildings .mega-cols{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.masthead .mega-applications .mega-cols{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.masthead .mega-group{ min-width:0; }
.masthead .mega-group h3{ margin:0 0 6px; font-size:11px; line-height:16px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; color:var(--muted); }
.masthead .mega-group a{ display:block; padding:5px 8px 5px 0; margin-left:-8px; padding-left:8px; border-radius:4px; font-size:13.5px; line-height:19px; color:var(--heading); text-decoration:none; text-wrap:pretty; }
.masthead .mega-group a:hover, .masthead .mega-group a:focus-visible{ color:var(--accent-text); background:var(--accent-soft); outline:none; }
.masthead .mega-group a:focus-visible{ box-shadow:inset 0 0 0 2px var(--focus-ring); }
.masthead .mega-group a[aria-current="page"]{ box-shadow:inset 3px 0 0 var(--accent); }

/* the masthead action: the served BUTTON construction (R1-SITE-03; standard s9 masthead exemption) */
.masthead .desktop-cta{ display:none; align-items:center; gap:10px; padding:12px 22px; border:2px solid var(--border-strong); border-radius:var(--r); font-size:15px; line-height:24px; font-weight:400; color:var(--heading); text-decoration:none; white-space:nowrap; background:transparent; flex:none; transition:background-color var(--dur), border-color var(--dur); }
.masthead .desktop-cta svg{ width:14px; height:14px; flex:none; transition:transform var(--dur) var(--ease); }
.masthead .desktop-cta:hover{ background:var(--surface-raised); border-color:var(--heading); }
.masthead .desktop-cta:hover svg{ transform:translateX(3px); }
.masthead .desktop-cta:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:3px; }

/* the Menu button (mobile, and the 1110 to 1319 desktop band) */
.menu-button{ all:unset; cursor:pointer; display:inline-flex; align-items:center; gap:10px; font-size:14px; font-weight:600; color:var(--heading); padding:8px 12px; border:1.5px solid var(--border-strong); border-radius:var(--r); }
.menu-button i{ width:16px; height:10px; border-top:2px solid var(--heading); border-bottom:2px solid var(--heading); position:relative; }
.menu-button i::after{ content:""; position:absolute; left:0; right:0; top:2px; border-top:2px solid var(--heading); }
.menu-button[aria-expanded="true"]{ background:var(--heading); color:var(--on-panel-heading); border-color:var(--heading); }
.menu-button[aria-expanded="true"] i, .menu-button[aria-expanded="true"] i::after{ border-color:var(--on-panel-heading); }
.menu-button:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:3px; }

@media (min-width:1320px){
  .masthead nav{ display:flex; }
  .masthead .desktop-cta{ display:inline-flex; }
  .menu-button, .menu{ display:none !important; }
}
@media (min-width:1600px){ .masthead nav{ gap:28px; font-size:14.5px; } }
@media (max-width:1319px){
  .masthead nav, .masthead .desktop-cta{ display:none !important; }
  .menu-button{ display:inline-flex !important; }
  .menu:not([hidden]){ display:block !important; }
}

/* ---------------------------------------------------------------- mobile menu -------------------------------- */
.menu{ background:var(--surface-raised); border-bottom:1px solid var(--border); position:relative; z-index:39; }
.menu[hidden]{ display:none; }
.menu::before{ content:""; display:block; height:4px; background:var(--mineral-run); }
.mm{ display:grid; padding-top:6px; padding-bottom:22px; }
.mm-group{ border-bottom:1px solid var(--border-hairline); }
.mm-toggle{ all:unset; box-sizing:border-box; cursor:pointer; display:flex; width:100%; align-items:center; justify-content:space-between; gap:12px; padding:15px 0; font-size:17px; line-height:24px; font-weight:500; color:var(--heading); }
.mm-toggle::after{ content:""; flex:none; width:8px; height:8px; margin-right:6px; border-right:1.5px solid var(--muted); border-bottom:1.5px solid var(--muted); transform:translateY(-2px) rotate(45deg); transition:transform var(--dur) var(--ease); }
.mm-toggle[aria-expanded="true"]::after{ transform:translateY(2px) rotate(225deg); }
.mm-toggle:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:-2px; border-radius:4px; }
.mm-group[data-current] > .mm-toggle, .mm-group[data-current] > .mm-direct{ box-shadow:inset 3px 0 0 var(--accent); padding-left:12px; }
.mm-panel{ display:grid; padding:0 0 14px; }
.mm-panel[hidden]{ display:none; }
.mm-sub{ display:block; padding:12px 0 4px 16px; font-size:11px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; color:var(--muted); }
.mm-link{ display:block; padding:8px 0 8px 16px; font-size:16px; line-height:24px; color:var(--body); text-decoration:none; border-radius:4px; }
.mm-link:hover{ color:var(--heading); }
.mm-link:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:-2px; }
.mm-link[aria-current="page"]{ color:var(--heading); box-shadow:inset 3px 0 0 var(--accent); padding-left:13px; }
.mm-link.mm-all{ font-weight:600; color:var(--accent-text); }
.mm-direct{ display:flex; align-items:center; gap:10px; padding:15px 0; font-size:17px; line-height:24px; font-weight:500; color:var(--heading); text-decoration:none; }
.mm-direct[aria-current="page"]{ box-shadow:inset 3px 0 0 var(--accent); padding-left:12px; }
.mm-direct svg{ width:14px; height:14px; }
.mm-cta{ border-bottom:0; }
.mm-brief{ font-weight:600; }
.mm-tel{ display:block; padding:12px 0 0; font-size:14px; color:var(--muted); font-family:var(--mono); }
@media (min-width:720px){
  .mm{ grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:40px; align-items:start; }
  .mm-tel{ grid-column:1 / -1; }
}

/* ---------------------------------------------------------------- footer ------------------------------------- */
footer.sitefoot{ padding:0 0 40px; font-size:13px; color:var(--muted); border-top:0; background:var(--surface); }
footer.sitefoot::before{ content:""; display:block; height:6px; background:var(--mineral-run); }
footer.sitefoot .frame{ display:block; padding-top:48px; }
footer.sitefoot a{ color:var(--muted); text-decoration:none; }
footer.sitefoot a:hover{ color:var(--heading); text-decoration:underline; }
footer.sitefoot a[aria-current="page"]{ color:var(--heading); }
.sf-grid{ display:grid; gap:30px 24px; grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (min-width:720px){ .sf-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (min-width:1000px){ .sf-grid{ grid-template-columns:repeat(6,minmax(0,1fr)); gap:28px 22px; } }
.sf-grid > div{ display:grid; gap:7px; align-content:start; min-width:0; }
.sf-grid a{ font-size:13px; line-height:1.4; text-wrap:pretty; }
.sf-grid .sf-hub{ font-weight:600; color:var(--heading); font-size:14px; margin-bottom:4px; }
.sf-grid .sf-cont{ color:var(--muted); font-weight:500; }
.sf-grid .sf-second{ margin-top:18px; }
@media (min-width:1000px){ .sf-grid .sf-cont{ visibility:hidden; } }
.sf-util{ margin:36px 0 0; padding-top:18px; border-top:1px solid var(--border-hairline); }
footer.sitefoot p{ margin-top:12px; }
footer.sitefoot .sf-util + p{ margin-top:14px; }

/* ---------------------------------------------------------------- R3-S3 SECTION BACKGROUNDS -------------------
   The Founder: grey bands make the pages look dull. Rule: sections alternate between the surface (#F4F3EF) and the
   raised paper (#FBFAF8). Section rhythm comes from the slim 31deg mineral edge band or from hairline rules, never
   from a flat grey (#E9E7E0 or similar) full-width band. grey-fix.css neutralises the r2 grey classes.

   .sec-surface / .sec-paper   the two grounds. Alternate them; two paper sections in a row take a hairline rule.
   .rule-top / .rule-bottom    a hairline rule between sections of the same ground.
   .band-mineral-edge          the section carries a 6px mineral band across its top (::before). Do not combine
                               with .amb (which owns ::before); use the standalone element instead.
   .band-mineral-edge.edge-bottom   the band sits on the bottom edge.
   .band-mineral-edge.edge-thin     3px, for quiet sections.
   <div class="mineral-edge" aria-hidden="true"></div>   the standalone band, placed between two sections. */
.sec-surface{ background:var(--surface); }
.sec-paper{ background:var(--surface-raised); }
.rule-top{ border-top:1px solid var(--border-hairline); }
.rule-bottom{ border-bottom:1px solid var(--border-hairline); }
.band-mineral-edge{ position:relative; }
.band-mineral-edge::before{ content:""; position:absolute; left:0; right:0; top:0; height:6px; z-index:3; pointer-events:none; background:var(--mineral-run); }
.band-mineral-edge.edge-bottom::before{ top:auto; bottom:0; }
.band-mineral-edge.edge-thin::before{ height:3px; }
.band-mineral-edge.edge-soft::before{ background:var(--mineral-run-soft); }
.mineral-edge{ display:block; height:6px; background:var(--mineral-run); }
.mineral-edge.edge-thin{ height:3px; }

/* ---------------------------------------------------------------- R3-S6 HERO OVERLAY: .hero-holvem -------------
   A photograph under a HOLVEM overlay. Light-dominant, no black overlay.
   Layers, bottom to top: the image (.hh-media), translucent mineral planes cut at 31deg along the right edge
   (.hh-planes, five hard-edged planes, skewX(-59deg) gives edges at exactly 31deg from horizontal), optional fine
   dimension hairlines (.hh-lines), the pale left field for copy legibility (.hh-field), then the copy (.hh-copy).
   The field is the raised paper at .96 to .93 alpha under the copy column, so body copy (#3C4147) measures at
   least 7:1 over any photograph, including a black one (measured in hero-example.html; see the report).
   Markup:
   <section class="hero-holvem" aria-labelledby="h1">
     <div class="hh-media"><img src=".." width=".." height=".." alt="..">
       <div class="hh-planes" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i></div>
       <svg class="hh-lines" viewBox="0 0 1000 600" preserveAspectRatio="xMaxYMid slice" aria-hidden="true">...</svg>
     </div>
     <div class="hh-field" aria-hidden="true"></div>
     <div class="frame hh-copy"><div class="hh-inner"> eyebrow, h1, lede, one action </div></div>
   </section>
   Modifiers: .planes-left (planes and field swap sides), .planes-quiet (lower plane alpha), .hh-tall / .hh-short. */
.hero-holvem{ position:relative; isolation:isolate; overflow:hidden; background:var(--surface-raised); display:grid; }
.hero-holvem .hh-media{ position:relative; z-index:0; overflow:hidden; background:var(--surface-sunken); }
.hero-holvem .hh-media > img, .hero-holvem .hh-media > video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.hero-holvem .hh-planes{ position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.hero-holvem .hh-planes i{ position:absolute; top:-12%; bottom:-12%; left:var(--x); width:var(--w); background:var(--c); opacity:var(--a); transform:skewX(-59deg); transform-origin:50% 50%; }
/* the run, sea-glass to violet, toward the edge; positions are % of the media width, measured at mid height */
.hero-holvem .hh-planes i:nth-child(1){ --c:var(--amb-sea-glass);     --a:.60; --x:55%; --w:8%; }
.hero-holvem .hh-planes i:nth-child(2){ --c:var(--amb-aqua);          --a:.56; --x:63%; --w:5%; }
.hero-holvem .hh-planes i:nth-child(3){ --c:var(--amb-periwinkle);    --a:.52; --x:68%; --w:9%; }
.hero-holvem .hh-planes i:nth-child(4){ --c:var(--amb-soft-violet);   --a:.46; --x:77%; --w:4%; }
.hero-holvem .hh-planes i:nth-child(5){ --c:var(--amb-violet-anchor); --a:.44; --x:81%; --w:9%; }
.hero-holvem.planes-quiet .hh-planes i{ opacity:calc(var(--a) * .7); }
.hero-holvem .hh-lines{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.hero-holvem .hh-lines .ln{ fill:none; stroke:var(--heading); stroke-opacity:.42; stroke-width:1; vector-effect:non-scaling-stroke; shape-rendering:crispEdges; }
.hero-holvem .hh-lines .ln.pale{ stroke:var(--surface-raised); stroke-opacity:.85; }
.hero-holvem .hh-lines .tip{ fill:var(--surface-raised); stroke:var(--heading); stroke-opacity:.6; stroke-width:1; vector-effect:non-scaling-stroke; }
.hero-holvem .hh-field{ display:none; position:absolute; inset:0; z-index:2; pointer-events:none; }
.hero-holvem .hh-copy{ position:relative; z-index:3; padding-top:30px; padding-bottom:44px; }
.hero-holvem .hh-inner{ display:grid; gap:16px; max-width:640px; }
.hero-holvem .hh-eyebrow{ font-size:12px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; color:var(--muted); }
.hero-holvem h1{ font-size:clamp(34px,5.2vw,56px); line-height:1.06; letter-spacing:-1.2px; font-weight:600; color:var(--heading); text-wrap:balance; margin:0; }
.hero-holvem .hh-lede{ font-size:17.5px; line-height:1.55; color:var(--body); max-width:56ch; }
.hero-holvem .hh-actions{ display:flex; flex-wrap:wrap; gap:14px 22px; align-items:center; margin-top:6px; }
.hero-holvem .hh-proof{ list-style:none; margin:10px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:8px 22px; font-size:13.5px; color:var(--body); }
.hero-holvem .hh-proof li{ display:flex; align-items:center; gap:8px; }
.hero-holvem .hh-proof li::before{ content:""; width:8px; height:8px; background:var(--mineral-run); flex:none; }
/* mobile: image block on top (the planes live inside it), copy on paper below; nothing sits on the photograph */
.hero-holvem .hh-media{ aspect-ratio:4/3; }
@media (min-width:640px){ .hero-holvem .hh-media{ aspect-ratio:16/9; } }
@media (min-width:900px){
  .hero-holvem{ display:block; min-height:clamp(520px, 64vh, 700px); }
  .hero-holvem.hh-tall{ min-height:clamp(600px, 78vh, 820px); }
  .hero-holvem.hh-short{ min-height:clamp(420px, 52vh, 560px); }
  .hero-holvem .hh-media{ position:absolute; inset:0; aspect-ratio:auto; z-index:0; }
  .hero-holvem .hh-field{ display:block;
    background:linear-gradient(90deg, rgba(251,250,248,.97) 0%, rgba(251,250,248,.95) 36%, rgba(251,250,248,.93) 44%, rgba(251,250,248,.62) 54%, rgba(251,250,248,.18) 66%, rgba(251,250,248,0) 76%); }
  .hero-holvem .hh-copy{ display:grid; align-items:center; min-height:inherit; padding-top:72px; padding-bottom:84px; }
  .hero-holvem .hh-inner{ max-width:min(560px, 42%); gap:18px; }
  .hero-holvem.planes-left .hh-field{ background:linear-gradient(270deg, rgba(251,250,248,.97) 0%, rgba(251,250,248,.95) 36%, rgba(251,250,248,.93) 44%, rgba(251,250,248,.62) 54%, rgba(251,250,248,.18) 66%, rgba(251,250,248,0) 76%); }
  .hero-holvem.planes-left .hh-inner{ margin-left:auto; }
  .hero-holvem.planes-left .hh-planes{ transform:scaleX(-1); }
}
@media (min-width:1600px){ .hero-holvem .hh-inner{ max-width:min(600px, 40%); } }

/* ---------------------------------------------------------------- reduced motion ----------------------------- */
@media (prefers-reduced-motion: reduce){
  .masthead .nav-item > a::after, .masthead .mega-all svg, .masthead .desktop-cta svg, .mm-toggle::after{ transition:none !important; }
}

/* =====================================================================================================
   HOLVEM R3 GREY FIX (Founder R3-S3: "when the section background goes grey ... makes the pages look dull")
   apply.py inlines this after furniture.css. It neutralises the r2 classes that paint a flat grey
   (#E9E7E0 = --surface-sunken) as a SECTION background, and turns them into the surface ground with a hairline.

   Found by grep across r2/*.html (28 Sep 2026), section-level grey classes actually used on elements:
     .sunk               <section class="sunk">         applications-concrete-soffit, applications-fibre-cement-encapsulation,
                                                        buildings-agricultural, buildings-offices-concrete-soffits (as "depth sunk")
     .survey.sunk        <section class="survey sunk">  applications-metal-roof-underside, -concrete-soffit, -fibre-cement-encapsulation
     .fivesteps          <section class="fivesteps">    applications-metal-roof-underside
     .bays               <section class="bays">         buildings-warehouse-distribution
     .turn               <section class="turn">         systems-condensation-risk-analysis
     .hero (sunken)      <section class="hero">         projects-hub only (the other 26 .hero rules are already --surface).
                                                        NOT neutralised here: a blanket .hero rule would also hit the
                                                        case-study hero (#D8DEDC). The projects-hub builder changes it
                                                        with the new hero (R3-S6).
     nav.index           <nav class="index">            the "On this page" rail: 13 pages (applications, buildings, problems,
                                                        services, systems). A slim grey band; now surface with hairlines.
   Defined but not carried by any element (neutralised anyway so a copied rule cannot revive them):
     .sec.sunken (documents, systems-*, thank-you, upload)   .hero-paper (thank-you, upload)
   Not touched, because they are plates or instruments, not full-width bands: .ledger, .fstrip, .band (a card with a
   plate), .seg, .stage, media placeholders (.tile-media, .fig-media, .rec-media, .door-media, .gmedia) and every
   chamfer ::after that paints the corner cut.

   METHOD. Each neutralised section gets background:var(--surface) AND remaps --surface-sunken to --surface inside
   itself. The chamfer pseudo-elements and placeholders inside those sections paint with var(--surface-sunken) so
   they follow the new ground automatically and no corner cut shows as a grey triangle. Cards inside stay raised
   paper (#FBFAF8) on the surface (#F4F3EF), which is the accepted alternation.
   Rhythm: add class="band-mineral-edge" (furniture.css) to the neutralised section, or place
   <div class="mineral-edge" aria-hidden="true"></div> before it, where the page needs more than the hairline.
   ===================================================================================================== */
.sunk, .survey.sunk, .depth.sunk, .sec.sunken, .fivesteps, .bays, .turn, .hero-paper{
  --surface-sunken:var(--surface);
  background:var(--surface);
  border-top-color:var(--border-hairline);
}
nav.index{
  --surface-sunken:var(--surface);
  background:var(--surface);
  border-top:1px solid var(--border-hairline);
  border-bottom:1px solid var(--border-hairline);
}
/* the index tiles' corner cut follows the ground; the phosphor cut on the current tile is kept */
nav.index .ixi:not([aria-current="true"])::after{ background:var(--surface); }



.sf-grid.sf-lean{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px 24px; }
@media (min-width:1000px){ .sf-grid.sf-lean{ grid-template-columns:repeat(4,minmax(0,1fr)); } }
.sf-grid.sf-lean a{ font-size:14px; }
