/* Farid Productions - coming soon page
   ---------------------------------------------------------------------------
   Assembled from the live site's stylesheet by .build/build_coming_soon.py,
   which copies each brand rule by selector so the two cannot drift. Tokens are
   the brand guide's own:
     p8  palette    #3A39FF signature blue, #F7F7F9 soft white, #000 black, #F4CF31 accent
     p10 typography Alexandria (English)
     p9  patterns   01 enlarged logo geometry, 02 repeated curved lines
     p4-6 logo      clear space, approved proportions, no effects on the mark
   Only the weights this page sets are shipped: 400 body, 600 eyebrows and
   buttons, 700 display and figures. The live site also carries 300 and 500.
   Muted tones clear WCAG AA on the surface they sit on, not by eye.
   --------------------------------------------------------------------------- */

@font-face{font-family:'Alexandria';src:url('fonts/alex-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}

@font-face{font-family:'Alexandria';src:url('fonts/alex-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}

@font-face{font-family:'Alexandria';src:url('fonts/alex-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

:root{
  --blue:#3A39FF; --blue-lift:#5B5AFF; --blue-deep:#2A29CC;
  --soft:#F7F7F9; --soft-2:#EFEFF4;
  --ink:#000000; --ink-900:#08080D; --ink-800:#101018; --ink-700:#1A1A24;
  --gold:#F4CF31;
  --grad:linear-gradient(100deg,#3A39FF 0%,#F4CF31 100%);
  --accent:#3A39FF;          /* text accent, lightened on dark - see body */
  --accent-dark:#6E6DFF;
  --line-d:rgba(255,255,255,.13);
  --line-d-2:rgba(255,255,255,.07);
  --line-l:rgba(8,8,13,.13);
  --mute-d:#9A9AAC; --mute-l:#5A5A6B; --blue-mute:#D5D4FF;
  --shell:1320px;
  --gut:clamp(20px,4.4vw,64px);
  --sec-y:clamp(72px,10vw,150px);
  --head:84px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--head) + 24px)}
body{
  font-family:'Alexandria',system-ui,-apple-system,sans-serif;font-weight:400;
  font-size:16px;line-height:1.65;background:var(--ink-900);color:#fff;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
  /* The guide's #3A39FF on near-black is 3.05:1, under AA for small text.
     Dark surfaces therefore use a lighter tint of the same 240deg hue. */
  --accent:var(--accent-dark);
}

img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
button,input,select,textarea{font:inherit;color:inherit}
::selection{background:var(--blue);color:#fff}
:focus-visible{outline:2px solid var(--blue-lift);outline-offset:3px}
.skip{position:absolute;left:-9999px;top:0;z-index:200;padding:.9rem 1.3rem;
  background:var(--blue);color:#fff;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}

.skip:focus{left:0}

/* ---------- layout primitives ---------- */
.shell{width:100%;max-width:var(--shell);margin-inline:auto;padding-inline:var(--gut)}

.blue{color:var(--accent)}

/* ---------- type ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:.8rem;
  font-size:.688rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}

.eyebrow::before{content:"";width:34px;height:1px;background:currentColor;opacity:.65}
.d1{font-size:clamp(2.55rem,6.6vw,5.2rem);font-weight:700;line-height:1.04;letter-spacing:-.032em}
.lead{font-size:clamp(1.0625rem,1.35vw,1.3rem);line-height:1.62;color:var(--mute-d);max-width:58ch}
p+p{margin-top:1.05em}

/* ---------- reveal on scroll ----------
   The hidden state is scoped to .js, which the document sets before first
   paint. Without scripting the blocks are simply visible, so a failed or
   blocked script can never leave the page blank. */
.js .rv{opacity:0;transform:translate3d(0,22px,0);
  transition:opacity .85s var(--ease),transform .85s var(--ease);transition-delay:var(--d,0ms)}

.js .rv.in{opacity:1;transform:none}

/* ---------- buttons & links ----------
   The wipe is a ::before panel, and the label beside it is a bare text node -
   .btn>* only lifts element children, so at z-index:auto the panel painted
   over the text on hover and the label vanished. isolation:isolate plus
   z-index:-1 puts the panel behind the button's own background and leaves the
   label on top at every point in the transition.

   The label's colour is deliberately not transitioned here. The panel rises
   from the bottom on a fast-out easing and reaches the label within ~40ms, so
   any colour crossfade that straddles that edge paints the label in the
   panel's own colour - white on white - which is the bug again, just shorter.
   Ink is the only tone that reads on both faces at once (3.05:1 on the blue
   still uncovered, 19.98:1 on the white panel), so the flip is instant. */
.btn{display:inline-flex;align-items:center;gap:.7rem;position:relative;overflow:hidden;
  isolation:isolate;
  padding:1rem 1.6rem;border:1px solid var(--blue);background:var(--blue);color:#fff;
  font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  transition:border-color .4s var(--ease)}

.btn:focus-visible{outline:2px solid #fff;outline-offset:2px;
  box-shadow:0 0 0 2px var(--ink-900)}

.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:#fff;
  transform:translateY(101%);transition:transform .45s var(--ease)}

.btn:hover{border-color:#fff;color:var(--ink-900)}
.btn:hover::before{transform:translateY(0)}
.btn>*{position:relative;z-index:1}
.btn .arw{transition:transform .4s var(--ease)}
.btn:hover .arw{transform:translate(2px,-2px)}

.btn--sm{padding:.78rem 1.15rem;font-size:.688rem}
/* Inverted, so the label has to go the other way: it starts ink on the white
   button and has to be white on the dark panel, which means it cannot be
   legible until the panel is under it. .038s is where the panel's leading edge
   crosses the label; a search over delay and duration put the dip at 80ms,
   the floor for this design. Dropping the wipe for a hard swap would remove it
   but that is a different button, not a fix. */
.btn--light{background:#fff;border-color:#fff;color:var(--ink-900);
  transition:color .04s var(--ease) .038s,border-color .4s var(--ease)}

/* ---------- header ---------- */
.site-head{position:fixed;inset:0 0 auto;z-index:100;
  transition:background .45s var(--ease),backdrop-filter .45s var(--ease)}

.site-head::after{content:"";position:absolute;inset:auto 0 0;height:1px;
  background:var(--line-d);opacity:0;transition:opacity .45s var(--ease)}

.site-head.stuck{background:rgba(8,8,13,.86);
  -webkit-backdrop-filter:blur(16px) saturate(1.25);backdrop-filter:blur(16px) saturate(1.25)}

.site-head.stuck::after{opacity:1}
.head-in{display:flex;align-items:center;gap:1.6rem;height:var(--head)}
.brand{flex:0 0 auto;display:flex;align-items:center;padding:1rem 0}
.lockup--head{height:clamp(28px,3.3vw,38px);width:auto}

/* ---------- footer ---------- */
.foot{position:relative;overflow:hidden;background:var(--ink-900);
  border-top:1px solid var(--line-d);padding-top:clamp(3.4rem,6vw,5.6rem)}

.foot::before{content:"";position:absolute;right:-10%;bottom:-42%;width:58%;aspect-ratio:1;
  background:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyODAiIGhlaWdodD0iMjExIiB2aWV3Qm94PSIwIDAgMjAuNyAxNS42Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODcuMzAwMCwtNDYuNDAwMCkiPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0gMTA2LjY0NDEgNTIuMzQwOSBDIDEwNi41MTExIDUxLjcyNTkgMTA2LjIxMzEgNTEuMTU1OSAxMDUuODMwMSA1MC42NTg5IE0gMTA1LjgzMDEgNTAuNjU4OSBDIDEwNS40NDAxIDUwLjE1MDkgMTA0LjkzOTEgNDkuNzc3OSAxMDQuNDk2MSA0OS4zMjM5IE0gMTA0LjQ5NjEgNDkuMzIzOSBDIDEwNC4wNjkxIDQ4Ljg4NzkgMTAzLjc1OTEgNDguMjU2OSAxMDQuMTExMSA0Ny42NzM5IE0gMTA0LjExMTEgNDcuNjczOSBDIDEwNC4xMzMxIDQ3LjYzODkgMTA0LjE1NzEgNDcuNTk4OSAxMDQuMTQ2MSA0Ny41NTg5IE0gMTA0LjE0NjEgNDcuNTU4OSBDIDEwNC4xMzIxIDQ3LjUwODkgMTA0LjA2ODEgNDcuNDg5OSAxMDQuMDE5MSA0Ny41MDY5IE0gMTA0LjAxOTEgNDcuNTA2OSBDIDEwMy45NzAxIDQ3LjUyMjkgMTAzLjkzNTEgNDcuNTYzOSAxMDMuOTAyMSA0Ny42MDM5IE0gMTAzLjkwMjEgNDcuNjAzOSBDIDEwMy4wNzgxIDQ4LjYwODkgMTAyLjI0MTEgNDkuODEzOSAxMDIuMjIyMSA1MS4xNjI5IE0gMTAyLjIyMjEgNTEuMTYyOSBDIDEwMi4yMTQxIDUxLjc2NzkgMTAyLjM3NTEgNTIuMzc2OSAxMDIuNzUzMSA1Mi44NTY5IE0gMTAyLjc1MzEgNTIuODU2OSBDIDEwMy4xNDExIDUzLjM0ODkgMTAzLjcwOTEgNTMuNjQ2OSAxMDQuMjM0MSA1My45Njc5IE0gMTA0LjIzNDEgNTMuOTY3OSBDIDEwNC41MTUxIDU0LjEzOTkgMTA0Ljg1NDEgNTQuMzIyOSAxMDUuMDMxMSA1NC42MTE5IE0gMTA1LjAzMTEgNTQuNjExOSBDIDEwNS4xOTIxIDU0Ljg3MjkgMTA1LjE2MTEgNTUuMTgwOSAxMDUuMDY1MSA1NS40NjE5IE0gMTA1LjA2NTEgNTUuNDYxOSBDIDEwNC4xMjQxIDU1LjM0MDkgMTAzLjE5NDEgNTQuOTk3OSAxMDIuNDYzMSA1NC4zODM5IE0gMTAyLjQ2MzEgNTQuMzgzOSBDIDEwMS43NDkxIDUzLjc4NjkgMTAxLjIyNjEgNTIuOTQ2OSAxMDEuMTIxMSA1Mi4wMTE5IE0gMTAxLjEyMTEgNTIuMDExOSBDIDEwMS4wNTgxIDUxLjQ1ODkgMTAxLjEzMjEgNTAuODkwOSAxMDEuMzYzMSA1MC4zODI5IE0gMTAxLjM2MzEgNTAuMzgyOSBDIDEwMS40MTUxIDUwLjI3MDkgMTAxLjI2NTEgNTAuMTc3OSAxMDEuMTk1MSA1MC4yODQ5IE0gMTAxLjE5NTEgNTAuMjg0OSBDIDEwMC44ODQxIDUwLjc1NjkgMTAwLjU3MzEgNTEuMjM0OSAxMDAuMjk5MSA1MS43Mjg5IE0gMTAwLjI5OTEgNTEuNzI4OSBDIDEwMC4wNDExIDUyLjE5MTkgOTkuODI5MSA1Mi42OTE5IDk5Ljc5OTEgNTMuMjI2OSBNIDk5Ljc5OTEgNTMuMjI2OSBDIDk5Ljc3MTEgNTMuNzM3OSA5OS45MTUxIDU0LjI2MTkgMTAwLjIwMTEgNTQuNjg0OSBNIDEwMC4yMDExIDU0LjY4NDkgQyAxMDAuNDkwMSA1NS4xMTM5IDEwMC45MDUxIDU1LjQyNzkgMTAxLjI4MzEgNTUuNzcyOSBNIDEwMS4yODMxIDU1Ljc3MjkgQyAxMDEuNjUwMSA1Ni4xMDc5IDEwMi4wMTkxIDU2LjUyMTkgMTAyLjA5NzEgNTcuMDI3OSBNIDEwMi4wOTcxIDU3LjAyNzkgQyAxMDEuODg1MSA1Ny42MDg5IDEwMS4yNjgxIDU4LjA1ODkgMTAwLjc3MDEgNTguMzgzOSBNIDEwMC43NzAxIDU4LjM4MzkgQyAxMDAuMjIzMSA1OC43NDA5IDk5LjYyMDEgNTkuMDA5OSA5OC45OTMxIDU5LjE4ODkgTSA5OC45OTMxIDU5LjE4ODkgQyA5OC4yODkxIDU5LjM4OTkgOTcuNTUyMSA1OS40Nzc5IDk2LjgyMDEgNTkuNDQ2OSBNIDk2LjgyMDEgNTkuNDQ2OSBDIDk1LjkzODEgNTkuNDA4OSA5NS4wNzIxIDU5LjIwNjkgOTQuMTk1MSA1OS4xMDc5IE0gOTQuMTk1MSA1OS4xMDc5IEMgOTMuNzQ0MSA1OS4wNTU5IDkzLjI2ODEgNTkuMDI0OSA5Mi44MDUxIDU5LjA2NTkgTSA5Mi44MDUxIDU5LjA2NTkgTCA5MS44MDAxIDU4LjExODkgTSA5MS44MDAxIDU4LjExODkgQyA5MS43NTcxIDU4LjA3ODkgOTEuNjkwMSA1OC4wODA5IDkxLjY0OTEgNTguMTIyOSBNIDkxLjY0OTEgNTguMTIyOSBMIDkwLjQ5MTEgNTkuMzUxOSBNIDkwLjQ5MTEgNTkuMzUxOSBDIDkwLjQ4NzEgNTkuMzU2OSA5MC40ODMxIDU5LjM2MTkgOTAuNDc5MSA1OS4zNjY5IE0gOTAuNDc5MSA1OS4zNjY5IEMgOTAuNDc1MSA1OS4zNTg5IDkwLjQ2OTEgNTkuMzUwOSA5MC40NjIxIDU5LjM0NDkgTSA5MC40NjIxIDU5LjM0NDkgTCA4OS4yMzMxIDU4LjE4NTkgTSA4OS4yMzMxIDU4LjE4NTkgQyA4OS4xOTAxIDU4LjE0NTkgODkuMTIzMSA1OC4xNDc5IDg5LjA4MzEgNTguMTkwOSBNIDg5LjA4MzEgNTguMTkwOSBMIDg3LjkyNDEgNTkuNDE5OSBNIDg3LjkyNDEgNTkuNDE5OSBDIDg3Ljg4NDEgNTkuNDYyOSA4Ny44ODYxIDU5LjUyOTkgODcuOTI5MSA1OS41Njk5IE0gODcuOTI5MSA1OS41Njk5IEwgODkuMTU4MSA2MC43Mjc5IE0gODkuMTU4MSA2MC43Mjc5IEMgODkuMjAwMSA2MC43Njc5IDg5LjI2ODEgNjAuNzY1OSA4OS4zMDgxIDYwLjcyMzkgTSA4OS4zMDgxIDYwLjcyMzkgTCA5MC40NjYxIDU5LjQ5NDkgTSA5MC40NjYxIDU5LjQ5NDkgQyA5MC40NzExIDU5LjQ4OTkgOTAuNDc0MSA1OS40ODQ5IDkwLjQ3ODEgNTkuNDc5OSBNIDkwLjQ3ODEgNTkuNDc5OSBDIDkwLjQ4MzEgNTkuNDg3OSA5MC40ODgxIDU5LjQ5NTkgOTAuNDk2MSA1OS41MDE5IE0gOTAuNDk2MSA1OS41MDE5IEwgOTEuNzI1MSA2MC42NjA5IE0gOTEuNzI1MSA2MC42NjA5IEMgOTEuNzY3MSA2MC43MDA5IDkxLjgzNTEgNjAuNjk4OSA5MS44NzUxIDYwLjY1NTkgTSA5MS44NzUxIDYwLjY1NTkgTCA5Mi44MzYxIDU5LjYzNTkgTSA5Mi44MzYxIDU5LjYzNTkgQyA5My42NTExIDU5LjY5MTkgOTQuNDcxMSA1OS45NjU5IDk1LjIyMzEgNjAuMjM2OSBNIDk1LjIyMzEgNjAuMjM2OSBDIDk2LjI5MDEgNjAuNjIwOSA5Ny4zODgxIDYxLjAzODkgOTguNTIxMSA2MC45Njg5IE0gOTguNTIxMSA2MC45Njg5IEMgOTkuNzEwMSA2MC44OTU5IDEwMC44MDcxIDYwLjI1NTkgMTAxLjU3MzEgNTkuMzYxOSBNIDEwMS41NzMxIDU5LjM2MTkgQyAxMDIuMjE0MSA1OC42MTI5IDEwMi42MDgxIDU3LjY3NDkgMTAyLjczNDEgNTYuNjk4OSBNIDEwMi43MzQxIDU2LjY5ODkgQyAxMDIuNzQyMSA1Ni42Mzc5IDEwMi43NDkxIDU2LjU3NzkgMTAyLjc1NTEgNTYuNTE2OSBNIDEwMi43NTUxIDU2LjUxNjkgQyAxMDMuMzkyMSA1Ni45NDk5IDEwNC4xMzExIDU3LjIxNzkgMTA0Ljg5ODEgNTcuMzAxOSBNIDEwNC44OTgxIDU3LjMwMTkgQyAxMDQuOTMwMSA1Ny4zMDU5IDEwNC45NjgxIDU3LjI4MTkgMTA0Ljk4MjEgNTcuMjUzOSBNIDEwNC45ODIxIDU3LjI1MzkgQyAxMDUuMjY4MSA1Ni42OTY5IDEwNS41NTUxIDU2LjEzNzkgMTA1Ljg0MTEgNTUuNTc5OSBNIDEwNS44NDExIDU1LjU3OTkgQyAxMDYuMjMxMSA1NC45NjE5IDEwNi41NzQxIDU0LjI3NjkgMTA2LjY4MzEgNTMuNTY5OSBNIDEwNi42ODMxIDUzLjU2OTkgQyAxMDYuNzQ4MSA1My4xNDc5IDEwNi43MzAxIDUyLjczNjkgMTA2LjY0NDEgNTIuMzQwOSIvPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0gODkuMDM2OSA1Ni45ODEzIEMgODkuNDU0OSA1Ny4yMzkzIDg5Ljk2MDkgNTcuMzE4MyA5MC40NTI5IDU3LjM2MTMgTSA5MC40NTI5IDU3LjM2MTMgQyA5MS40MzU5IDU3LjQ0NTMgOTIuNDIyOSA1Ny40MDczIDkzLjQwNzkgNTcuMzk0MyBNIDkzLjQwNzkgNTcuMzk0MyBDIDk0LjM3NzkgNTcuMzgyMyA5NS4zNDg5IDU3LjM5MTMgOTYuMzE4OSA1Ny4zODczIE0gOTYuMzE4OSA1Ny4zODczIEMgOTYuNzI1OSA1Ny4zODUzIDk3LjEzMjkgNTcuMzg0MyA5Ny41Mzk5IDU3LjM4MjMgTSA5Ny41Mzk5IDU3LjM4MjMgQyA5OC4zNTE5IDU3LjM3OTMgOTkuMTY1OSA1Ny4zNjMzIDk5Ljk3NzkgNTcuMzcyMyBNIDk5Ljk3NzkgNTcuMzcyMyBDIDEwMC4wNTI5IDU3LjM3MjMgMTAwLjEwNjkgNTcuMzUxMyAxMDAuMTM1OSA1Ny4yNzYzIE0gMTAwLjEzNTkgNTcuMjc2MyBDIDEwMC4xNTM5IDU3LjIyODMgMTAwLjE1MzkgNTcuMTc2MyAxMDAuMTUxOSA1Ny4xMjYzIE0gMTAwLjE1MTkgNTcuMTI2MyBDIDEwMC4xMjk5IDU2LjQzNDMgOTkuNzU2OSA1NS44NTIzIDk5LjM0NDkgNTUuMzE0MyBNIDk5LjM0NDkgNTUuMzE0MyBDIDk5LjE4MzkgNTUuMTA0MyA5OS4wMTY5IDU0Ljg5ODMgOTguODU5OSA1NC42ODYzIE0gOTguODU5OSA1NC42ODYzIEMgOTguNTYwOSA1NC4yODQzIDk4LjMxODkgNTMuODU1MyA5OC4yMjA5IDUzLjM2MzMgTSA5OC4yMjA5IDUzLjM2MzMgQyA5OC4xMjM5IDUyLjg3MzMgOTguMTYyOSA1Mi4zNjMzIDk4LjMwNzkgNTEuODg4MyBNIDk4LjMwNzkgNTEuODg4MyBDIDk4LjQ2NjkgNTEuMzY3MyA5OC43NTI5IDUwLjg4ODMgOTkuMTExOSA1MC40NzUzIE0gOTkuMTExOSA1MC40NzUzIEMgOTkuMTI3OSA1MC40NTYzIDk5LjEzNTkgNTAuNDM2MyA5OS4xMzU5IDUwLjQxNTMgTSA5OS4xMzU5IDUwLjQxNTMgQyA5OS4xNDk5IDUwLjM0MTMgOTkuMDczOSA1MC4yNTczIDk4Ljk5MjkgNTAuMzEwMyBNIDk4Ljk5MjkgNTAuMzEwMyBDIDk4LjAxMDkgNTAuOTQ5MyA5Ni45MTY5IDUxLjcwNjMgOTYuNzMzOSA1Mi45MzczIE0gOTYuNzMzOSA1Mi45MzczIEMgOTYuNjQ4OSA1My41MTEzIDk2Ljc2NzkgNTQuMDk3MyA5Ny4wNzM5IDU0LjU5NDMgTSA5Ny4wNzM5IDU0LjU5NDMgQyA5Ny4yODc5IDU0Ljk0NDMgOTcuNTc1OSA1NS4yMzgzIDk3Ljg5NjkgNTUuNDk1MyBNIDk3Ljg5NjkgNTUuNDk1MyBDIDk3LjQ2MTkgNTUuNDk4MyA5Ny4wMjY5IDU1LjUwMTMgOTYuNTkyOSA1NS41MDUzIE0gOTYuNTkyOSA1NS41MDUzIEMgOTYuNDc4OSA1NS40MTEzIDk2LjM2OTkgNTUuMzEyMyA5Ni4yNjQ5IDU1LjIwOTMgTSA5Ni4yNjQ5IDU1LjIwOTMgQyA5NS43ODI5IDU0LjU2NTMgOTUuNDY1OSA1My44MDQzIDk1LjQ3OTkgNTIuOTkzMyBNIDk1LjQ3OTkgNTIuOTkzMyBDIDk1LjQ4NDkgNTIuNzA5MyA5NS41MTQ5IDUyLjM4NDMgOTUuNjQ2OSA1Mi4xMjczIE0gOTUuNjQ2OSA1Mi4xMjczIEMgOTUuNjY4OSA1Mi4wODMzIDk1LjY0MTkgNTIuMDMwMyA5NS41ODg5IDUyLjAyOTMgTSA5NS41ODg5IDUyLjAyOTMgQyA5NS41MTI5IDUyLjAyNzMgOTUuNDM2OSA1Mi4wMjgzIDk1LjM2MDkgNTIuMDI3MyBNIDk1LjM2MDkgNTIuMDI3MyBDIDk1LjM0ODkgNTIuMDI4MyA5NS4zMzU5IDUyLjAyODMgOTUuMzIzOSA1Mi4wMjgzIE0gOTUuMzIzOSA1Mi4wMjgzIEMgOTUuMzA3OSA1Mi4wMjkzIDk1LjI5MTkgNTIuMDMwMyA5NS4yNzQ5IDUyLjAzMDMgTSA5NS4yNzQ5IDUyLjAzMDMgQyA5NS4yNjc5IDUyLjAzMDMgOTUuMjYxOSA1Mi4wMzEzIDk1LjI1NDkgNTIuMDMxMyBNIDk1LjI1NDkgNTIuMDMxMyBDIDk1LjIxOTkgNTIuMDMxMyA5NS4xODQ5IDUyLjAzMzMgOTUuMTQ5OSA1Mi4wMzMzIE0gOTUuMTQ5OSA1Mi4wMzMzIEMgOTUuMDY1OSA1Mi4wMzUzIDk0Ljk4MTkgNTIuMDM3MyA5NC44OTU5IDUyLjAzOTMgTSA5NC44OTU5IDUyLjAzOTMgQyA5My44MzE5IDUyLjA1NTMgOTIuNTYwOSA1Mi4wMTkzIDkxLjU4MDkgNTEuOTk0MyBNIDkxLjU4MDkgNTEuOTk0MyBDIDkxLjAyODkgNTEuOTgwMyA5MC40NzI5IDUxLjk2NTMgODkuOTM4OSA1MS44MzIzIE0gODkuOTM4OSA1MS44MzIzIEMgODkuMDkzOSA1MS42MjIzIDg4LjE5MzkgNTEuMDA2MyA4OC4yMzk5IDUwLjA1NjMgTSA4OC4yMzk5IDUwLjA1NjMgQyA4OC4yNDI5IDQ5Ljk4ODMgODguMjM0OSA0OS44OTczIDg4LjE2NjkgNDkuODgzMyBNIDg4LjE2NjkgNDkuODgzMyBDIDg4LjA5MDkgNDkuODY3MyA4OC4wNDg5IDQ5Ljk2NjMgODguMDM5OSA1MC4wNDEzIE0gODguMDM5OSA1MC4wNDEzIEMgODcuOTM3OSA1MC44ODUzIDg4LjA0NjkgNTEuNzkwMyA4OC40MzQ5IDUyLjU1NjMgTSA4OC40MzQ5IDUyLjU1NjMgQyA4OC42NDg5IDUyLjk4MDMgODguOTczOSA1My4zNjIzIDg5LjQwMDkgNTMuNTg0MyBNIDg5LjQwMDkgNTMuNTg0MyBDIDg5LjgyODkgNTMuODA1MyA5MC4zMjY5IDUzLjg1MTMgOTAuODA5OSA1My44NzMzIE0gOTAuODA5OSA1My44NzMzIEMgOTEuOTY2OSA1My45MjYzIDkzLjEzMjkgNTMuOTA4MyA5NC4yODk5IDUzLjg3NDMgTSA5NC4yODk5IDUzLjg3NDMgQyA5NC4yODk5IDUzLjkxNjMgOTQuMjkwOSA1My45NjAzIDk0LjI5MzkgNTQuMDAzMyBNIDk0LjI5MzkgNTQuMDAzMyBDIDk0LjMyNDkgNTQuNTU2MyA5NC41MzE5IDU1LjA2NzMgOTQuODQyOSA1NS41MTYzIE0gOTQuODQyOSA1NS41MTYzIEMgOTQuMDAxOSA1NS41MTkzIDkzLjE2MDkgNTUuNTIwMyA5Mi4zMTk5IDU1LjUxMTMgTSA5Mi4zMTk5IDU1LjUxMTMgQyA5MS44MDM5IDU1LjUwNTMgOTEuMjg3OSA1NS40OTczIDkwLjc3MTkgNTUuNDgzMyBNIDkwLjc3MTkgNTUuNDgzMyBDIDkwLjM4NDkgNTUuNDczMyA4OS45OTU5IDU1LjQ2MDMgODkuNjE3OSA1NS4zNzgzIE0gODkuNjE3OSA1NS4zNzgzIEMgODkuMjQwOSA1NS4yOTUzIDg4Ljg3MTkgNTUuMTM3MyA4OC41OTU5IDU0Ljg3MjMgTSA4OC41OTU5IDU0Ljg3MjMgQyA4OC4yOTY5IDU0LjU4NTMgODguMTIyOSA1NC4xNzYzIDg4LjEzMTkgNTMuNzY2MyBNIDg4LjEzMTkgNTMuNzY2MyBDIDg4LjEzMzkgNTMuNjg5MyA4OC4xMjI5IDUzLjU4NzMgODguMDQ0OSA1My41NzQzIE0gODguMDQ0OSA1My41NzQzIEMgODcuOTU1OSA1My41NTkzIDg3LjkxNzkgNTMuNjgwMyA4Ny45MTY5IDUzLjc2OTMgTSA4Ny45MTY5IDUzLjc2OTMgQyA4Ny45MDk5IDU0LjM2MjMgODcuOTA3OSA1NC45NjIzIDg4LjA1NjkgNTUuNTM2MyBNIDg4LjA1NjkgNTUuNTM2MyBDIDg4LjIwNTkgNTYuMTEwMyA4OC41MjQ5IDU2LjY2NTMgODkuMDM2OSA1Ni45ODEzIi8+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTSAxMDEuNjE2MiA0OS40MzU5IEMgMTAxLjY2NTIgNDkuNDYzOSAxMDEuNzI4MiA0OS40NDY5IDEwMS43NTYyIDQ5LjM5NzkgTSAxMDEuNzU2MiA0OS4zOTc5IEwgMTAyLjU2NTIgNDcuOTg1OSBNIDEwMi41NjUyIDQ3Ljk4NTkgQyAxMDIuNTk0MiA0Ny45MzY5IDEwMi41NzcyIDQ3Ljg3NDkgMTAyLjUyODIgNDcuODQ2OSBNIDEwMi41MjgyIDQ3Ljg0NjkgTCAxMDEuMTE2MiA0Ny4wMzY5IE0gMTAxLjExNjIgNDcuMDM2OSBDIDEwMS4wNjcyIDQ3LjAwODkgMTAxLjAwNDIgNDcuMDI1OSAxMDAuOTc2MiA0Ny4wNzQ5IE0gMTAwLjk3NjIgNDcuMDc0OSBMIDEwMC4xNjYyIDQ4LjQ4NjkgTSAxMDAuMTY2MiA0OC40ODY5IEMgMTAwLjEzODIgNDguNTM1OSAxMDAuMTU1MiA0OC41OTc5IDEwMC4yMDQyIDQ4LjYyNTkgTSAxMDAuMjA0MiA0OC42MjU5IEwgMTAxLjYxNjIgNDkuNDM1OSIvPjwvZz48L3N2Zz4=') center/contain no-repeat;opacity:.045;pointer-events:none}

.lockup--foot{height:clamp(54px,5.8vw,70px);width:auto}
.foot-closing{margin-top:1.5rem;font-size:clamp(1.35rem,2.2vw,1.9rem);font-weight:600;
  letter-spacing:-.02em;line-height:1.2}

.foot-descriptor{margin-top:.6rem;font-size:.813rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--mute-d)}

.foot h4{margin-bottom:1.15rem;font-size:.688rem;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:var(--mute-d)}

.foot-nav a{display:block;padding:.34rem 0;font-size:.938rem;color:rgba(255,255,255,.8);
  transition:color .3s,transform .4s var(--ease)}

.foot-nav a:hover{color:#fff;transform:translateX(5px)}
/* Marks rather than names: one square per channel, the size of a thumb on a
   phone, so the row is a fixed ladder and nothing reflows when a handle is
   long. The marks carry no text, so the accessible name lives on the link. */
.foot-soc{display:flex;flex-wrap:wrap;gap:.6rem}

.foot-soc a{display:grid;place-items:center;width:42px;height:42px;
  border:1px solid var(--line-d);color:rgba(255,255,255,.78);
  transition:background .35s,border-color .35s,color .35s,transform .4s var(--ease)}

.foot-soc .soc-ico{display:block;width:17px;height:17px}
.foot-soc a:hover{background:var(--blue);border-color:var(--blue);color:#fff;
  transform:translateY(-2px)}

.foot-base{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;
  gap:.8rem;padding-block:1.5rem;border-top:1px solid var(--line-d);
  font-size:.688rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute-d)}

.hero-kicker{margin-bottom:clamp(1.4rem,3vw,2.4rem);font-size:.688rem;font-weight:500;
  letter-spacing:.32em;text-transform:uppercase;color:var(--mute-d)}

.hero-title{max-width:15ch}
.hero-lead{margin-top:clamp(1.2rem,2.4vw,1.9rem);max-width:44ch;color:rgba(255,255,255,.82)}
.hero-foot{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:2rem;margin-top:clamp(2.4rem,5vw,4rem);padding-top:1.8rem;border-top:1px solid var(--line-d)}

.hero-meta{display:flex;flex-wrap:wrap;gap:clamp(1.6rem,4vw,3.4rem)}
.m-l{font-size:.625rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--mute-d)}
.m-v{margin-top:.4rem;font-size:.875rem;font-weight:500;color:#fff}

/* ---------- pattern bands (guide p9) ---------- */
.pattern-band{height:clamp(90px,13vw,190px);background-color:var(--ink-900);
  background-image:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyODAiIGhlaWdodD0iMjQwIiB2aWV3Qm94PSIwIDAgMjgwIDI0MCI+PGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjM0EzOUZGIiBzdHJva2Utd2lkdGg9IjEuMSI+PHBhdGggZD0iTS0yNCAyMTAgQyA1OCAyMTAgNTggMTI2IDE0MCAxMjYgQyAyMjIgMTI2IDIyMiA0MiAzMDQgNDIiLz48cGF0aCBkPSJNLTI0IDE3NiBDIDU4IDE3NiA1OCA5MiAxNDAgOTIgQyAyMjIgOTIgMjIyIDggMzA0IDgiLz48cGF0aCBkPSJNLTI0IDE0MiBDIDU4IDE0MiA1OCA1OCAxNDAgNTggQyAyMjIgNTggMjIyIC0yNiAzMDQgLTI2Ii8+PHBhdGggZD0iTS0yNCAxMDggQyA1OCAxMDggNTggMjQgMTQwIDI0IEMgMjIyIDI0IDIyMiAtNjAgMzA0IC02MCIvPjxwYXRoIGQ9Ik0tMjQgNzQgQyA1OCA3NCA1OCAtMTAgMTQwIC0xMCBDIDIyMiAtMTAgMjIyIC05NCAzMDQgLTk0Ii8+PHBhdGggZD0iTS0yNCA0MCBDIDU4IDQwIDU4IC00NCAxNDAgLTQ0IEMgMjIyIC00NCAyMjIgLTEyOCAzMDQgLTEyOCIvPjxwYXRoIGQ9Ik0tMjQgNiBDIDU4IDYgNTggLTc4IDE0MCAtNzggQyAyMjIgLTc4IDIyMiAtMTYyIDMwNCAtMTYyIi8+PC9nPjwvc3ZnPg==');background-size:auto 100%;
  background-repeat:repeat-x;background-position:center}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .rv{opacity:1;transform:none;transition:none}
  *,*::before,*::after{transition-duration:.01ms !important;transition-delay:0s !important}
}

/* ---------- coming soon hero ----------
   The live site gets its hero wash from .hero-media::after over the cover
   photograph. There is no photograph here, so the blue radial and the curve
   overlay move onto the section itself. */
.cs-hero{position:relative;display:flex;align-items:flex-end;overflow:hidden;
  min-height:min(100svh,940px);
  padding-top:calc(var(--head) + clamp(2.5rem,7vw,6rem));
  padding-bottom:clamp(2.4rem,5vw,4.4rem)}
.cs-hero::before{content:"";position:absolute;inset:0;
  background:radial-gradient(115% 85% at 76% 26%,rgba(58,57,255,.42),transparent 60%)}
.cs-hero::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyODAiIGhlaWdodD0iMjQwIiB2aWV3Qm94PSIwIDAgMjgwIDI0MCI+PGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjRkZGRkZGIiBzdHJva2Utd2lkdGg9IjEuMSI+PHBhdGggZD0iTS0yNCAyMTAgQyA1OCAyMTAgNTggMTI2IDE0MCAxMjYgQyAyMjIgMTI2IDIyMiA0MiAzMDQgNDIiLz48cGF0aCBkPSJNLTI0IDE3NiBDIDU4IDE3NiA1OCA5MiAxNDAgOTIgQyAyMjIgOTIgMjIyIDggMzA0IDgiLz48cGF0aCBkPSJNLTI0IDE0MiBDIDU4IDE0MiA1OCA1OCAxNDAgNTggQyAyMjIgNTggMjIyIC0yNiAzMDQgLTI2Ii8+PHBhdGggZD0iTS0yNCAxMDggQyA1OCAxMDggNTggMjQgMTQwIDI0IEMgMjIyIDI0IDIyMiAtNjAgMzA0IC02MCIvPjxwYXRoIGQ9Ik0tMjQgNzQgQyA1OCA3NCA1OCAtMTAgMTQwIC0xMCBDIDIyMiAtMTAgMjIyIC05NCAzMDQgLTk0Ii8+PHBhdGggZD0iTS0yNCA0MCBDIDU4IDQwIDU4IC00NCAxNDAgLTQ0IEMgMjIyIC00NCAyMjIgLTEyOCAzMDQgLTEyOCIvPjxwYXRoIGQ9Ik0tMjQgNiBDIDU4IDYgNTggLTc4IDE0MCAtNzggQyAyMjIgLTc4IDIyMiAtMTYyIDMwNCAtMTYyIi8+PC9nPjwvc3ZnPg==') repeat;background-size:280px 240px;opacity:.08}
.cs-hero .hero-in{position:relative;z-index:2;width:100%}
.cs-sub{margin-top:1.05rem;font-size:1rem;line-height:1.65;color:var(--mute-d);max-width:46ch}
/* no nav on a one-page site, so the header CTA needs the push itself */
.cs-head-cta{margin-left:auto}
@media (max-width:900px){.cs-head-cta{display:none}}

/* ---------- countdown ----------
   Same 1px-gap grid over a tinted field the live site draws its rules with,
   and the same figures it uses for the count-up strip: 700 weight, -0.03em,
   tabular-nums so the digits do not shuffle as they tick. */
.cs-timer{margin-top:clamp(2.6rem,5.5vw,4.2rem)}
/* the guide's eyebrow rule sits above the figures, as it does above every
   section on the live site */
.cs-when{margin-bottom:clamp(1.1rem,2vw,1.6rem)}
.cs-count{max-width:760px;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--line-d);border:1px solid var(--line-d)}
.cs-cell{background:var(--ink-900);padding:clamp(1.15rem,2.2vw,1.9rem) clamp(.9rem,1.8vw,1.5rem)}
.cs-n{font-size:clamp(2.3rem,4.4vw,3.5rem);font-weight:700;line-height:1;
  letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:#fff}
.cs-l{margin-top:.8rem;font-size:.688rem;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;color:var(--mute-d)}
/* zero state - the launch date passes and the page keeps its composure */
.cs-done{margin-top:.9rem;font-size:clamp(1.35rem,2.2vw,1.9rem);font-weight:600;
  letter-spacing:-.02em;line-height:1.2}
.cs-done[hidden],.cs-count[hidden]{display:none}

/* ---------- footer, three columns ----------
   The live footer runs brand / Navigate / Elsewhere / Enquiries. There is no
   Navigate here, so the grid is three tracks rather than four. Child rules are
   the live site's, unchanged. */
.cs-foot-grid{position:relative;display:grid;grid-template-columns:1.5fr 1fr 1fr;
  gap:clamp(1.8rem,3vw,3rem);padding-bottom:clamp(2.8rem,5vw,4.2rem)}
.foot-brand{min-width:0}
/* the domain is this page, so it is set as text rather than a link to itself */
.foot-plain{display:block;padding:.34rem 0;font-size:.938rem;color:rgba(255,255,255,.8)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  :root{--head:66px}
  .cs-hero{min-height:88svh}
}
/* The four figures still fit side by side on a tablet - the widest label is
   "Minutes" at 11px - so the ladder only folds at the footer's own
   breakpoint, and the hero meta and CTA stack as a column rather than
   relying on a flex wrap. */
@media (max-width:620px){
  .cs-count{grid-template-columns:repeat(2,1fr)}
  .hero-foot{flex-direction:column;align-items:flex-start}
  .cs-foot-grid{grid-template-columns:1fr}
}

/* ---------- print ----------
   The reveal animation starts every block at opacity 0 and lets
   IntersectionObserver fade it in. A print pass never scrolls, so it would
   otherwise capture the page with every block invisible. */
@media print{
  html{scroll-behavior:auto}
  .rv,.js .rv{opacity:1 !important;transform:none !important}
  .site-head{position:static;background:none}
  .site-head::after,.skip{display:none !important}
  .foot::before{display:none}
  .cs-hero{min-height:0;padding-top:2rem}
  a{text-decoration:none}
}
