/* Horizon footer: logo orange and its white tints on a pixel grid. */
.brand-footer { --mono: 'Martian Mono', monospace; --footer-heading-size: 40px; --footer-ember:var(--brand-orange); --footer-tint:var(--brand-orange-65); --footer-pale:var(--brand-orange-20); --footer-cell: 32px; padding-block: 32px; font-family: 'Instrument Sans', sans-serif; }
.brand-footer__panel { --focus-ring: #FFFFFF; position: relative; background: #000; color: #fff; }
/* Corner squares centred on the rails at the panel's four corners; the bottom
   band of footer padding keeps the lower pair inside the page. */
.brand-footer__panel > .edge-markers { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
body .brand-footer__panel > .edge-markers i:nth-child(n) { position: absolute; width: 7px; height: 7px; background:var(--footer-tint); }
.brand-footer__panel > .edge-markers i:nth-child(odd) { left: -4px; }
.brand-footer__panel > .edge-markers i:nth-child(even) { right: -4px; }
.brand-footer__panel > .edge-markers i:nth-child(-n + 2) { top: -4px; }
.brand-footer__panel > .edge-markers i:nth-child(n + 3) { bottom: -4px; }
.brand-footer__main { position: relative; width: 100%; min-width: 0; min-height: 320px; overflow: clip; }
.brand-footer__main::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(#ffffff1c 1px, transparent 1px), linear-gradient(270deg, #ffffff1c 1px, transparent 1px); background-size: var(--footer-cell) var(--footer-cell); background-position: right bottom; pointer-events: none; }
/* Twenty cells wide, so every pixel block fills one grid cell and the lines run through the gaps. */
.brand-footer__pattern { position: absolute; bottom: 0; right: 0; width: calc(var(--footer-cell) * 20); aspect-ratio: 1200 / 627; pointer-events: none; }
.brand-footer__pattern > i { position: absolute; display: block; left: var(--x); top: var(--y); width: var(--size); aspect-ratio: 1; background: var(--color); }
.brand-footer__pattern > .brand-footer__outline { border:2px solid var(--color); background:transparent; opacity:.78; }
.brand-footer__pattern > .brand-footer__outline + .brand-footer__outline { opacity:.62; }
.brand-footer__copy { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: flex-start; padding: 32px 40px 20px; }
.brand-footer .brand-footer__headline { margin: 0; padding: 0; font: 500 var(--footer-heading-size)/1 'Instrument Sans', sans-serif; letter-spacing: -.96px; color: #fff; }
/* Match the heading's visible letter edge, not its font box. */
.brand-footer__socials { display: flex; align-items: center; gap: 24px; margin-top: 16px; padding-inline-start: calc(var(--footer-heading-size) * .07); }
/* 44px targets around the 24px icons; the negative margin keeps the visible spacing. */
.brand-footer__socials a { display: grid; place-items: center; width: 44px; height: 44px; margin: -10px; color: #fff; opacity: .7; transition: opacity 160ms ease; }
.brand-footer__socials a:hover { opacity: .5; }
.brand-footer__socials img { display: block; width: 24px; height: 24px; }
.brand-footer__socials img[src$="instagram.svg"] { transform: scale(1.15); }
.brand-footer__links { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 8px 40px; border-top: 1px solid #ffffff21; font: 500 14px/20px var(--mono); text-transform: uppercase; }
.brand-footer__links > div { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.brand-footer__links a { display: inline-flex; align-items: center; min-height: 44px; color: inherit; text-decoration: none; text-underline-offset: 4px; }
.brand-footer__links a:hover { text-decoration: underline; }
body .brand-footer a:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
@media (min-width: 601px) and (max-width: 1000px) {
 .brand-footer { --footer-cell: 24px; }
}
@media (min-width: 601px) and (max-width: 800px) {
 .brand-footer__copy { padding-inline: 24px; }
 .brand-footer__links { padding-inline: 24px; }
}
@media (max-width: 600px) {
 .brand-footer { --footer-heading-size: clamp(26px, 7.2vw, 32px); --footer-cell: 24px; padding-block: 24px; }
 .brand-footer__main { min-height: 280px; }
 .brand-footer__main::before { background-position: calc(50% + var(--footer-cell) / 2) bottom; }
 .brand-footer__pattern { left:50%; right:auto; transform:translateX(-50%); }
 .brand-footer__copy { min-height: 0; justify-content: flex-start; padding: 24px; }
 .brand-footer .brand-footer__headline { letter-spacing: -.64px; }
 .brand-footer__socials { margin-top: 16px; }
 .brand-footer__links { flex-direction: column; align-items: flex-start; gap: 4px; padding: 12px 24px; font-size: 12px; }
 .brand-footer__links > div { flex-wrap: wrap; gap: 4px 12px; }
 /* The domain gets the links' 44px row, so every row sits on a 48px pitch. */
 .brand-footer__links > span { display: flex; align-items: center; min-height: 44px; }
}
/* Forced colours replace the black panel with Canvas; keep the white icons on their own black tile. */
@media (forced-colors: active) {
 .brand-footer__socials img { forced-color-adjust: none; background: #000; }
}
@media print { .brand-footer, .pl-footer { display: none; } }

/* The footer sits between the page rails, as on the homepage, and its grid runs one gutter inside them. */
.pl-footer { --footer-rule:#414141; --footer-rail-left:var(--site-header-inset); --footer-rail-middle:36.111%; --footer-rail-right:var(--site-header-inset); --pixel-count:40; background:#282828; color:#f8f8f8; border-radius:8px 8px 0 0; overflow:hidden; font-family:'Instrument Sans',sans-serif; }
body .pl-footer.site-footer.rails { width:min(var(--site-content-max),calc(100% - var(--site-gutter) * 2)); max-width:var(--site-content-max); margin-inline:auto; border-inline:1px solid var(--line,#d7d7d7); border-radius:0; box-sizing:border-box; }
/* The homepage frame already draws the rails around its footer. */
.workshop-home .pl-footer.site-footer.rails { width:100%; max-width:none; margin-inline:0; border-inline:0; }
.pl-footer__body,.pl-footer__pixel-band { background-image:linear-gradient(var(--footer-rule),var(--footer-rule)),linear-gradient(var(--footer-rule),var(--footer-rule)),linear-gradient(var(--footer-rule),var(--footer-rule)); background-size:1px 100%; background-position:var(--footer-rail-left) top,var(--footer-rail-middle) top,calc(100% - var(--footer-rail-right)) top; background-repeat:no-repeat; }
.pl-footer__body { position:relative; }
.pl-footer__intro,.pl-footer__directory,.pl-footer__meta { position:relative; }
.pl-footer__intro::after,.pl-footer__directory::after,.pl-footer__meta::after,.pl-footer__pixel-band::before,.pl-footer__pixel-band::after { content:''; position:absolute; left:var(--footer-rail-left); right:var(--footer-rail-right); height:1px; background:var(--footer-rule); pointer-events:none; }
.pl-footer__intro::after,.pl-footer__directory::after,.pl-footer__meta::after,.pl-footer__pixel-band::after { bottom:0; }
.pl-footer__pixel-band::before { top:0; }
.pl-footer__intro,.pl-footer__directory,.pl-footer__meta { display:grid; grid-template-columns:var(--footer-rail-left) calc(var(--footer-rail-middle) - var(--footer-rail-left)) minmax(0,1fr) var(--footer-rail-right); min-width:0; }
.pl-footer__intro { min-height:190px; }
.pl-footer__intro-main { grid-column:2; padding:50px 32px 24px; min-width:0; }
.pl-footer__wordmark { display:inline-block; color:#fff; font:600 23px/29px 'Instrument Sans',sans-serif; text-decoration:none; }
.pl-footer__intro-main p { max-width:368px; margin:10px 0 0; color:#a7a7a7; font:400 14px/21px 'Instrument Sans',sans-serif; }
.pl-footer__intro-side { grid-column:3; justify-self:end; margin:50px 32px 0; text-decoration:none; }
.pl-footer__brand-mark { display:block; width:36px; height:36px; }
.pl-footer__directory { min-height:0; padding-block:32px 40px; box-sizing:border-box; }
.pl-footer__contact { grid-column:2; padding-inline:32px; min-width:0; }
/* Home: the wordmark and introduction lead the first column, above its button. */
.pl-footer__contact > p { max-width:368px; margin:10px 0 0; color:#a7a7a7; font:400 14px/21px 'Instrument Sans',sans-serif; }
.pl-footer__contact > p + .pl-footer__cta.ui-button.ui-button { width:auto; min-width:164px; margin-top:24px; }
.pl-footer__nav { grid-column:3; display:grid; grid-template-columns:1.15fr 1.35fr .9fr 1fr; gap:24px; min-width:0; padding-inline:32px; }
.pl-footer__stack { display:contents; }
.pl-footer__stack:first-child > .pl-footer__column:first-child { grid-column:1; grid-row:1; }
.pl-footer__stack:nth-child(2) > .pl-footer__column:first-child { grid-column:2; grid-row:1; }
.pl-footer__stack:first-child > .pl-footer__column:nth-child(2) { grid-column:3; grid-row:1; }
.pl-footer__stack:nth-child(2) > .pl-footer__column:nth-child(2) { grid-column:4; grid-row:1; }
.pl-footer__column { min-width:0; }
.pl-footer__column h2 { margin:0 0 16px; color:#a5a5a5; font:500 12px/16px 'Martian Mono',monospace; text-transform:uppercase; letter-spacing:.01em; }
/* Two classes outrank the shared mobile H2 scale in site-rails.css, so directory labels keep the overline scale. */
.pl-footer .pl-footer__column h2 { font-size:12px; line-height:16px; letter-spacing:.01em; }
.pl-footer__column ul { list-style:none; margin:0; padding:0; }
.pl-footer__column li { margin:0 0 7px; min-height:21px; font:400 14px/21px 'Instrument Sans',sans-serif; }
.pl-footer__column a { color:#f8f8f8; text-decoration:none; text-underline-offset:3px; }
.pl-footer__contact li a:hover,.pl-footer__wordmark:hover { text-decoration:underline; }
.pl-footer__nav a:hover { color:rgb(255 255 255 / 60%); text-decoration:none; }
.pl-footer__cta.ui-button.ui-button { width:auto; min-width:164px; white-space:nowrap; min-height:44px; margin-top:10px; color:#000; background:var(--brand-orange); border-color:var(--brand-orange); }
body .pl-footer__cta.ui-button.ui-button--filled:hover:not(:disabled) { color:#000; background:var(--brand-orange-85); border-color:var(--brand-orange-85); text-decoration:none; }
.pl-footer__meta { min-height:78px; align-items:center; }
.pl-footer__meta small { grid-column:2; padding-inline:32px; color:#a7a7a7; font:400 13px/19px 'Instrument Sans',sans-serif; }
.pl-footer__socials { grid-column:3; justify-self:end; display:flex; align-items:center; gap:4px; padding-inline:22px; }
.pl-footer__socials a { display:grid; place-items:center; width:44px; height:44px; opacity:.6; transition:opacity .16s ease; }
.pl-footer__socials a:hover { opacity:1; }
.pl-footer__socials img { display:block; width:24px; height:24px; }
.pl-footer__pixel-band { position:relative; display:grid; grid-template-rows:repeat(6,auto); row-gap:12px; height:auto; padding-block:19px 23px; box-sizing:border-box; overflow:hidden; background-color:#282828; }
.pl-footer__pixel-row { --tone-1:var(--brand-orange-20); --tone-2:var(--brand-orange-40); --tone-3:var(--brand-orange-65); --tone-4:var(--brand-orange); --tone-5:var(--brand-orange-85); --tone-6:var(--brand-orange-40); display:block; height:auto; aspect-ratio:calc(var(--pixel-count) / .64); margin-left:var(--footer-rail-left); margin-right:var(--footer-rail-right); background-image:linear-gradient(90deg,var(--tone-1) 0 16.6667%,var(--tone-2) 16.6667% 33.3333%,var(--tone-3) 33.3333% 50%,var(--tone-4) 50% 66.6667%,var(--tone-5) 66.6667% 83.3333%,var(--tone-6) 83.3333% 100%); background-size:calc(600% / var(--pixel-count)) 100%; background-repeat:repeat-x; -webkit-mask-image:linear-gradient(90deg,transparent 0 18%,#000 18% 82%,transparent 82%); mask-image:linear-gradient(90deg,transparent 0 18%,#000 18% 82%,transparent 82%); -webkit-mask-size:calc(100% / var(--pixel-count)) 100%; mask-size:calc(100% / var(--pixel-count)) 100%; -webkit-mask-repeat:repeat-x; mask-repeat:repeat-x; animation:pl-footer-pulse 8s steps(2,end) infinite; }
.pl-footer__pixel-row:nth-child(2) { --tone-1:var(--brand-orange-40); --tone-2:var(--brand-orange-65); --tone-3:var(--brand-orange); --tone-4:var(--brand-orange-85); --tone-5:var(--brand-orange-20); --tone-6:var(--brand-orange-65); animation-duration:11s; animation-delay:-5s; }
.pl-footer__pixel-row:nth-child(3) { --tone-1:var(--brand-orange-20); --tone-2:var(--brand-orange-85); --tone-3:var(--brand-orange-40); --tone-4:var(--brand-orange); --tone-5:var(--brand-orange-65); --tone-6:var(--brand-orange-20); animation-duration:9s; animation-delay:-2s; }
.pl-footer__pixel-row:nth-child(4) { --tone-1:var(--brand-orange-85); --tone-2:var(--brand-orange); --tone-3:var(--brand-orange-65); --tone-4:var(--brand-orange-20); --tone-5:var(--brand-orange-40); --tone-6:var(--brand-orange); animation-duration:13s; animation-delay:-8s; }
.pl-footer__pixel-row:nth-child(5) { --tone-1:var(--brand-orange-65); --tone-2:var(--brand-orange-20); --tone-3:var(--brand-orange); --tone-4:var(--brand-orange-40); --tone-5:var(--brand-orange-85); --tone-6:var(--brand-orange-20); animation-duration:10s; animation-delay:-4s; }
.pl-footer__pixel-row:nth-child(6) { --tone-1:var(--brand-orange-40); --tone-2:var(--brand-orange-85); --tone-3:var(--brand-orange-20); --tone-4:var(--brand-orange-65); --tone-5:var(--brand-orange); --tone-6:var(--brand-orange-40); animation-duration:12s; animation-delay:-7s; }
@keyframes pl-footer-pulse { 0%,100% { opacity:1; } 50% { opacity:.9; } }
body .pl-footer a:focus-visible { outline:2px solid #fff; outline-offset:3px; }

@media (max-width:1100px) {
 .pl-footer { --pixel-count:32; }
 .pl-footer__directory { min-height:0; }
 .pl-footer__nav { grid-template-columns:repeat(2,minmax(0,1fr)); row-gap:36px; }
 .pl-footer__stack { display:flex; flex-direction:column; align-self:start; gap:36px; min-width:0; }
}
@media (max-width:800px) {
 .pl-footer { --footer-rail-middle:50%; --pixel-count:24; }
 .pl-footer__intro,.pl-footer__directory,.pl-footer__meta { grid-template-columns:var(--footer-rail-left) minmax(0,1fr) minmax(0,1fr) var(--footer-rail-right); }
 .pl-footer__intro-main,.pl-footer__contact,.pl-footer__meta small { padding-left:24px; }
 .pl-footer__intro-side,.pl-footer__nav,.pl-footer__socials { padding-right:24px; }
 .pl-footer__intro-main p { max-width:320px; }
 .pl-footer__nav { grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 20px; }
}
@media (max-width:600px) {
 .pl-footer { --pixel-count:18; }
 .pl-footer__body,.pl-footer__pixel-band { background-image:linear-gradient(var(--footer-rule),var(--footer-rule)),linear-gradient(var(--footer-rule),var(--footer-rule)); background-position:var(--footer-rail-left) top,calc(100% - var(--footer-rail-right)) top; }
 .pl-footer__intro,.pl-footer__directory,.pl-footer__meta { display:flex; flex-direction:column; }
 .pl-footer__intro { min-height:0; }
 .pl-footer__intro-main { padding:32px 32px 0; }
 .pl-footer__intro-main p { max-width:100%; }
 .pl-footer__intro { position:relative; }
 .pl-footer__intro-main { padding-right:88px; padding-bottom:32px; }
 .pl-footer__intro-side { position:absolute; top:32px; right:32px; margin:0; }
 .pl-footer__directory { padding-block:0; }
 .pl-footer__contact { position:relative; padding:32px; }
 .pl-footer__contact::after { content:''; position:absolute; left:var(--footer-rail-left); right:var(--footer-rail-right); bottom:0; height:1px; background:var(--footer-rule); pointer-events:none; }
 .pl-footer__nav { padding:32px; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 16px; }
 .pl-footer__stack { gap:32px; }
 .pl-footer__column li { overflow-wrap:anywhere; }
 .pl-footer__meta { align-items:flex-start; gap:16px; padding:24px 32px; }
 .pl-footer__meta small,.pl-footer__socials { padding:0; text-align:left; }
 .pl-footer__socials { align-self:flex-start; }
}
@media (max-width:390px) { .pl-footer { --pixel-count:12; } .pl-footer__nav { grid-template-columns:1fr; } }
@media (prefers-reduced-motion:reduce) { .pl-footer__pixel-row { animation:none; } }
