/* To build Minified CSS file: 
cleancss -o style.min.css style.css 
https://www.npmjs.com/package/clean-css-cli
*/

/* HTML5 Boilerplate v9.0.0-RC1 | MIT License | https://html5boilerplate.com/
 * main.css 3.0.0 | MIT License | https://github.com/h5bp/main.css#readme
 * What follows is the result of much research on cross-browser styling.
 * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
 * Kroc Camen, and the H5BP dev community and team.
 */

/* ==========================================================================
   Base styles: opinionated defaults
   ========================================================================== */

   html {
    --primary-color: #03439b;
    --background-base-color: #f2f2f2;
    --background-base-color-glass: #f2f2f2EE;
    --font-base-color: #222222;
    --font-highlight-color: #FFFFFF;
    --action-color: #9AC2FB; /* Lime Green: #0dd000 */
  
    --lg-grid-block: 32px;
    --md-grid-block: 24px;
    --sm-grid-block: 20px;
  
    --tile-graphic-element-height: 20rem;
  
    --container-side-padding: 1rem;
    --container-vertical-padding: 1rem;
    --container-side-padding-2x: 2rem;
  
    --max-container-width: 1824px;
    --grid-panel-height: calc(var(--lg-grid-block) * 10 - 1px); /* Align with graph paper lines */
    --blog-post-max-width: 768px;
  
    --nav-hover-effect-height: 2px;
  
    color: var(--font-base-color);
    font-size: 1em;
    line-height: 1.4;
  }
  
  /*
   * Remove text-shadow in selection highlight:
   * https://twitter.com/miketaylr/status/12228805301
   *
   * Customize the background color to match your design.
   */
  
  ::-moz-selection {
    background: var(--font-highlight-color);
    text-shadow: none;
  }
  
  ::selection {
    background: var(--font-highlight-color);
    text-shadow: none;
  }
  
  /*
   * A better looking default horizontal rule
   */
  
  hr {
    display: block;
    height: 1px;
    border: 0;
    border-top: 1px solid #ccc;
    margin: 1em 0;
    padding: 0;
  }
  
  /*
   * Remove the gap between audio, canvas, iframes,
   * images, videos and the bottom of their containers:
   * https://github.com/h5bp/html5-boilerplate/issues/440
   */
  
  audio,
  canvas,
  iframe,
  img,
  svg,
  video {
    vertical-align: middle;
  }
  
  /*
   * Remove default fieldset styles.
   */
  
  fieldset {
    border: 0;
    margin: 0;
    padding: 0;
  }
  
  /*
   * Allow only vertical resizing of textareas.
   */
  
  textarea {
    resize: vertical;
  }
  
  /*
   * Hide visually and from screen readers
   */
  
  .hidden,
  [hidden] {
    display: none !important;
  }
  
  /*
   * Hide only visually, but have it available for screen readers:
   * https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
   *
   * 1. For long content, line feeds are not interpreted as spaces and small width
   *    causes content to wrap 1 word per line:
   *    https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
   */
  
  .visually-hidden {
    border: 0;
    clip: rect(0, 0, 0, 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    white-space: nowrap;
    width: 1px;
    /* 1 */
  }
  
  /*
   * Extends the .visually-hidden class to allow the element
   * to be focusable when navigated to via the keyboard:
   * https://www.drupal.org/node/897638
   */
  
  .visually-hidden.focusable:active,
  .visually-hidden.focusable:focus {
    clip: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    position: static;
    white-space: inherit;
    width: auto;
  }
  
  /*
   * Hide visually and from screen readers, but maintain layout
   */
  
  .invisible {
    visibility: hidden;
  }
  
  /*
   * Clearfix: contain floats
   *
   * The use of `table` rather than `block` is only necessary if using
   * `::before` to contain the top-margins of child elements.
   */
  
  .clearfix::before,
  .clearfix::after {
    content: "";
    display: table;
  }
  
  .clearfix::after {
    clear: both;
  }
  
  /* ==========================================================================
     EXAMPLE Media Queries for Responsive Design.
     These examples override the primary ('mobile first') styles.
     Modify as content requires.
     ========================================================================== */
  
  @media only screen and (min-width: 35em) {
    /* Style adjustments for viewports that meet the condition */
  }
  
  @media print,
    (-webkit-min-device-pixel-ratio: 1.25),
    (min-resolution: 1.25dppx),
    (min-resolution: 120dpi) {
    /* Style adjustments for high resolution devices */
  }
  
  /* ==========================================================================
     Print styles.
     Inlined to avoid the additional HTTP request:
     https://www.phpied.com/delay-loading-your-print-css/
     ========================================================================== */
  
  @media print {
    *,
    *::before,
    *::after {
      background: #fff !important;
      color: #000 !important;
      /* Black prints faster */
      box-shadow: none !important;
      text-shadow: none !important;
    }
  
    a,
    a:visited {
      text-decoration: underline;
    }
  
    a[href]::after {
      content: " (" attr(href) ")";
    }
  
    abbr[title]::after {
      content: " (" attr(title) ")";
    }
  
    /*
     * Don't show links that are fragment identifiers,
     * or use the `javascript:` pseudo protocol
     */
    a[href^="#"]::after,
    a[href^="javascript:"]::after {
      content: "";
    }
  
    pre {
      white-space: pre-wrap !important;
    }
  
    pre,
    blockquote {
      border: 1px solid #999;
      page-break-inside: avoid;
    }
  
    tr,
    img {
      page-break-inside: avoid;
    }
  
    p,
    h2,
    h3 {
      orphans: 3;
      widows: 3;
    }
  
    h2,
    h3 {
      page-break-after: avoid;
    }
  }
  
  a {
    text-decoration: none; /* Remove underline */
  }
  a.add-underline:hover {
    text-decoration: underline; /* Add underline */
  }
  
  a.link, a:visited {
    color: var(--primary-color);
  }
  a.link:hover {
    text-decoration: none; /* Remove underline */
    /* 
    color: var(--font-highlight-color);
    background-color: var(--primary-color);
    */
  }
  
  /* -- 404 Page ------------------------------------------------------------- */
  
  #error-video {
    position: fixed; /* or absolute */
    top: 8rem;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
  }
  
  #error-video video {
    min-width: 100%;
    min-height: 100%;
    width: auto;
    height: auto;
    position: absolute;
    top: 45%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  
  .white-screen {
    background-color: #f2f2f2ee;
    width: 100vw;
    bottom: 0;
    padding: var(--container-side-padding-2x) 0rem;
  
    top: 0;
    position: absolute;
  }
  
  .white-screen .overlay {
    display: absolute;
    top: 0;
  }
  
  /* -- Homepage ------------------------------------------------------------- */
  
  @font-face {
    font-family: 'NBAkademieRegular';
    src: url('../fonts/NB Akademie Regular.otf') format('opentype');
  }
  
  /* Load fonts only if we need them to improve performance
  @font-face {
    font-family: 'NBAkademieMedium';
    src: url('../fonts/NB Akademie Medium.otf') format('opentype');
  }
  
  */
  @font-face {
    font-family: 'NBAkademieMonoRegular';
    src: url('../fonts/NB Akademie Mono Regular.otf') format('opentype');
  }
  
  body {
    margin: 0;
    padding: 0;
    font-family: "NBAkademieRegular", "Roboto", sans-serif;
    font-size: 16px;
    line-height: 1.5;
    color: #333;
    background-color: var(--background-base-color);
  }
  
  /* -- Header ------------------------------------------------------------- */
  
  .header {
    display: flex;
    align-self: center;
    width: 100%;
    justify-content: space-between;
  }
  
  #site-header, #site-header-inverted {
    position: sticky;
    top: 0; /* Required for Sticky Positioning */
    padding-top: var(--container-vertical-padding);
    /* padding-left: var(--container-side-padding); */
    padding-bottom: var(--container-vertical-padding);
    /* width: calc(100% - var(--container-side-padding)); */
    width: calc(100% - 0rem);
    z-index: 100; /* Ensure float above video */
  }
  
  #site-header.dark, #site-header-inverted.dark {
    /* background: var(--primary-color); */
    margin-bottom: calc(-4.5rem - 1px); /* Pull up hero under nav: height of nav, plus first grid line */
    /* padding-left: 1rem; */
    width: calc(100%); /* width - left-margin on #site-header logo */
    -webkit-transition: background-color 300ms linear;
    -ms-transition: background-color 300ms linear;
    transition: background-color 300ms linear;
  }
  
  #site-header.light, #site-header-inverted.light {
    background: var(--background-base-color-glass);
    /* box-shadow: 0px 2px 4px #00000033; */
    -webkit-transition: background-color 300ms linear;
    -ms-transition: background-color 300ms linear;
    transition: background-color 300ms linear;
  }
  
  #header-logo, #footer-logo {
    width: 200px; /* Also Specified in Header.js to improve CLS */ /* v1: 250px; */
    max-width: 200px; /* v1: 250px; */
    margin-left: 0rem;
  }
  
  #footer-logo {
    margin-left: 0.75rem; /* Space from side reduced by request from George to align Harmonic logo center with gridline */
  }
  
  @media (max-width: 600px) {
    #header-logo {
      margin-left: 0.75rem; /* Add padding on mobile collapse to space from side */
    }
  }
  
  .logo-topside {
    filter: brightness(20) contrast(2);
  }
  
  .logo-underground {
    filter: none;
  }
  
  .home-link {
    display: inline-block;
  }
  
  .header > div {
    flex: 1; /* Space for Logo / Site Items */
  }
  
  /* -- LAYOUT ------------------------------------------------------------- */
  
  .page-container {
    max-width: var(--max-container-width);
    margin: 0 auto;
    padding: 0;
    height: 100vh;
    /* Before JS auto-width:
    padding-left: var(--container-side-padding-2x);
    padding-right: var(--container-side-padding-2x);
    */
  }
  
  .full-screen-section {
    width: 100%; /* 100svw; Caused overflow with scrollbar */
    height: 100vh; /* Legacy Support */
    height: calc(100svh - var(--nav-hover-effect-height));
    display: flex;
    flex-direction: row; /* Changed to row for side-by-side layout */
    justify-content: space-between;
    align-items: stretch; /* Stretch children to full height */
    max-width: var(--max-container-width); /* Don't squeeze animation */
    margin: 0 auto; /* Center */
  }

  .full-screen-section .video-container {
    width: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
    padding-left: 10rem;
  }

  .full-screen-section .video-container video {
    width: auto;
    height: auto;
    max-height: 80vh; /* Leaves 10vh padding top and bottom */
    object-fit: contain;
    border-radius: 8px;
  }
 
  .full-screen-section .overlay {
    display: flex;
    justify-content: flex-end;
    align-items: flex-end; /* Align text to bottom */
    z-index: 1; /* Explicitly set above background */
    width: 33%;
    padding: var(--container-side-padding) var(--container-side-padding-2x) 2rem var(--container-side-padding-2x);
    color: var(--font-highlight-color);
  }

     /* Mobile responsive behavior */
   @media (max-width: 1024px) {
     .full-screen-section {
       flex-direction: column;
       height: auto;
       min-height: 100vh;
     }
     
     .full-screen-section .video-container {
       width: 100%;
       order: 1;
       padding-left: 0;
     }
     
     .full-screen-section .video-container video {
       width: auto;
       height: auto;
       max-height: 60vh; /* Slightly smaller on mobile */
       max-width: 90vw; /* Prevent overflow on mobile */
     }
     
     .full-screen-section .overlay {
       width: 100%;
       order: 2;
       justify-content: center;
       align-items: center;
       text-align: center;
       padding: var(--container-side-padding);
     }
   }
  
  .full-width-section {
    width: 100%; /* 100svw; Caused overflow with scrollbar */
    display: flex;
    flex-direction: column;
    justify-content: center;
  
    max-width: var(--max-container-width); /* Don't squeeze animation */
    margin: 0 auto; /* Center */
  }
  
  .filler-section {
    display: block;
    height: calc(var(--lg-grid-block) * 3);
  }
  
  .filler-section.fill-page-space {
    margin-top: 40vh;
  }
  
  .filler-section-1x {
    display: block;
    height: var(--lg-grid-block);
  }
  
  @media (max-width: 768px) {
    .filler-section {
      height: calc(var(--md-grid-block) * 3);
    }
    .filler-section-1x {
      height: var(--md-grid-block);
    }
  }
  
  @media (max-width: 400px) {
    .filler-section {
      height: calc(var(--sm-grid-block) * 3);
    }
    .filler-section-1x {
      height: var(--sm-grid-block);
    }
  }
  
  .code-frame {
    border-left: 1px solid var(--primary-color);
    border-right: 1px solid var(--primary-color);
  }
  
  .page-container .top-pad {
    padding-top: 2rem;
  }
  
  .page-container .top-space {
    margin-top: 2rem;
  }
  
  .page-container .top-space-medium {
    margin-top: 4rem;
  }
  
  .page-container .big-top-pad {
    padding-top: 6rem;
  }
  
  .page-container .bottom-pad {
    padding-bottom: 2rem;
  }
  
  .page-container .big-bottom-pad {
    padding-bottom: 6rem;
  }
  
  .page-container .bottom-space {
    margin-bottom: 2rem;
  }
  
  .page-container .big-bottom-space {
    margin-bottom: 6rem;
  }
  
  @media (max-width: 768px) {
    .page-container .big-bottom-pad {
      padding-bottom: 4rem;
    }
    .page-container .big-bottom-space {
      margin-bottom: 4rem;
    }
    .page-container {
      padding: 0;
      /* Before JS auto-width:
      padding-left: var(--container-side-padding);
      padding-right: var(--container-side-padding);
      */
    }
  }
  
  .vertical-padding {
    padding-top: var(--container-vertical-padding);
    padding-bottom: var(--container-vertical-padding);
  }
  
  .pad-right {
    padding-right: var(--container-side-padding);
  }

  .background-image-container {
    position: fixed; 
    width: 100%; 
    height: 100%;
    z-index: 0;
  }
  
 .background-image-container img,
  .background-image-container video {
    width: 100%;
    height: 100%;
    object-fit: cover;
  } 

  .right-fourth-centered {
    display: flex;
    justify-content: flex-end;
    width: 25%;
  }
  
  /* -- Tiles ------------------------------------------------------------------- */
  
  .tile {
    display: flex;
    flex-direction: column;
    justify-content: start;
    align-items: end;
    /*
    margin-left: 1rem;
    margin-right: 1rem;
    */
  }
  
  .tile:first-child {
    /* Jun 8, 2024: Remove to reduce first tile margin to match the flex-flow style: */
    margin-right: var(--container-side-padding-2x);
  }
  
  @media (max-width: 1024px) {
    /* Jun 8, 2024: Remove to reduce first tile margin to match the flex-flow style */
    .tile:first-child {
      margin-right: var(--container-side-padding);
    }
  }
  
  @media (max-width: 600px) {
    .tile, .tile:first-child {
      margin-left: 0rem;
      margin-right: 0rem;
    }
  }
  
  .tile > .tile-header {
    border-bottom: 1px solid var(--primary-color);
    display: flex;
    justify-content: end;
    width: 100%;
    margin-top: 0.5rem; /* Space on wrap */
    margin-bottom: 1rem;
  }
  
  /*
  @media (max-width: 768px) {
    .tile > .tile-header {
      margin-bottom: 0.5rem;
    }
  }
  */
  
  .tile > .tile-header > .header-number {
    width: 2.25rem; /* Ensure Square */
    height: 2.25rem; /* Ensure Square */
  
    font-size: 1.5rem;
    text-align: center;
    background-color: var(--primary-color);
    color: var(--font-highlight-color);
  }
  
  .tile .tile-body > .blurb > .header-number,
  .tile .tile-header > .header-number {
    display: inline-flex;
    justify-content: center;
    align-items: center;
  
    width: 2.25rem; /* Ensure Square */
    height: 2.25rem; /* Ensure Square */
  
    font-size: 1.5rem;
    background-color: var(--primary-color);
    color: var(--font-highlight-color);
    margin-right: 0.25rem; /* Space from first word */ 
  }
  
  @media (max-width: 600px) {
    .tile .tile-body > .blurb > .header-number,
    .tile .tile-header > .header-number {
      width: 2rem; /* Swtich to Rectangle for reduced font size on mobile */
      height: 2rem;
      margin-right: 0.25rem;
      font-size: 1.5rem;
    }
    .tile-header {
      /* visibility: hidden; */ /* Show / Hide the title & number? */
    }
  }
  
  .tile > .tile-body {
    display: flex;
    height: 100%; /* Increase size to match paired container */
    width: 100%; /* Go full-width on tablet */
  }
  
  .tile > .tile-body > div {
    flex: 1;
  }
  
  /* Jun 8, 2024: Increase first panel size
  .tile > .tile-body > div:first-child {
    flex: 1.5;
  }
  */
  
  .tile > .tile-body > .blurb {
    /*
    font-size: 1.5rem;
    font-weight: 500;
    */
    color: var(--primary-color);
    margin-right: 1rem; /* Space from image */
    /* line-height: normal; */
  }
  
  @media (max-width: 1024px) {
    .tile > .tile-body {
      flex-direction: column-reverse; /* Wrap on Mobile */
    }
  
    /* Fix a mis-alignment of the graphic heights but setting the blurb to fill the available space */
    .tile > .tile-body > .blurb {
      flex: 2;
    }
    .tile > .tile-body > .graphic-container {
      min-height: var(--tile-graphic-element-height);
    }
  }
  
  @media (max-width: 600px) {
    .tile > .tile-body > .blurb {
      padding-left: 1rem;
      /* Add more negative space so text can breathe */
      padding-bottom: 1rem;
      padding-top: 1rem;
    }
    .pad-left-mobile {
      padding-left: 1rem;
    }
  }
  
  .tile > .tile-body > .graphic-container {
    margin-bottom: 0.5rem; /* Space on wrap column retile */
    display: flex;
    justify-content: center;
    align-items: center;
    /* flex: 0.75; /* Give more space to text */
    flex: 1; /* George's request: make more square with text */
  }
  
  .tile > .tile-body > .graphic-container.solid-background {
    margin-top: 0.25rem; /* Micro-adjustment: align top of container with top of [ # ] in text container */
  }
  
  .tile .graphic-element,
  .tile > .tile-body > .graphic-container .graphic-element {
    width: 100%;
    max-height: var(--tile-graphic-element-height);
  }
  
  .tile > .tile-body > .graphic-container .graphic-element.blend-dark {
    mix-blend-mode: darken;
  }
  
  .tile-header {
    display: block;
    margin-bottom: 2rem;
  }
  
  .standard-tile {
    justify-content: center;
    align-items: flex-start;
    flex: 1;
  }
  .standard-tile .standard-image {
    width: 100%; /* Fit whatever space container is */
  }
  
  /* -- Founders ------------------------------------------------------------------- */
  
  .tile.founder {
    margin-right: 0;
  }
  
  .tile.founder .tile-body.regular {
    flex-direction: row;
  }
  
  .tile.founder .tile-body.reversed {
    flex-direction: row-reverse;
  }
  
  .tile.founder .tile-body.regular .blurb {
    flex: 3;
    margin-right: 2rem;
    margin-left: 0;
  }
  
  .tile.founder .tile-body.reversed .blurb {
    flex: 3;
    margin-left: 2rem;
    margin-right: 0;
  }
  
  .founder .name {
    font-size: 2rem;
  }
  
  .founder .role {
    font-size: 1.25rem;
    font-style: italic;
  }
  
  .founder .bio {
    font-size: 1.25rem;
    line-height: 1.75rem;
    margin-top: 1rem;
  }
  
  .founder .square-image {
    min-height: 20rem;
    min-width: 20rem;
    background-size: cover;
    /* filter: grayscale(1); */
    max-width: 22rem;
    /* Blend whites into paper-color background: */
    mix-blend-mode: darken;
  }
  
  .founder .tudor {
    /* background-image: url(https://res.cloudinary.com/dsysuj4th/image/upload/v1726235169/harmonic-founders-tudor_tdehu2.png); */
    background-image: url(https://res.cloudinary.com/dsysuj4th/image/upload/v1726532058/harmonic-founders-tudor_bv4piw.png);
  }
  
  .founder .vlad {
    /* background-image: url(https://res.cloudinary.com/dsysuj4th/image/upload/v1726235169/harmonic-founders-vlad_xay9yg.png); */
    background-image: url(https://res.cloudinary.com/dsysuj4th/image/upload/v1726531317/harmonic-founders-vlad_eda50i.png);
  }
  
  @media (max-width: 768px) {
    .tile.founder .tile-body.regular, .tile.founder .tile-body.reversed {
      flex-direction: column-reverse;
    }
  
    .tile.founder .graphic-container.square-image {
      align-self: center;
      min-height: 100vw;
      min-width: 100vw;
      align-self: center;
      margin-bottom: 2rem;
    }
  
    .tile.founder .tile-body.regular .blurb, .tile.founder .tile-body.reversed .blurb {
      margin-right: 0rem;
      margin-left: 0rem;
      padding-right: 1rem;
    }
  }
  
  @media (min-width: 1200px) {
    .founder .bio {
      font-size: 1.5rem;
      line-height: 2rem;
    }
  }
  
  /* -- Graph Paper ------------------------------------------------------------- */
  
  .graph-paper {
    /* Grid: Vertical and Horizontal */
    background-size: 32px 32px;
    background-image: 
      linear-gradient(to right, #00479e 1px, transparent 1px), 
      linear-gradient(to bottom, #00479e 1px, transparent 1px);
  }
  .graph-paper-white {
    background-size: 32px 32px;
    background-image: 
      linear-gradient(to right, #ffffff55 1px, transparent 1px), 
      linear-gradient(to bottom, #ffffff55 1px, transparent 1px);
  }
  .lined-paper {
    /* Horizontal Lines Only */
    background-size: 32px 32px;
    background-image: 
      linear-gradient(to right, #00479e 1px, transparent 1px);
  }
  .striped-paper {
    /* VERTICAL Lines Only */
    background-size: 32px 32px;
    background-image: 
      linear-gradient(to bottom, #00479e 1px, transparent 1px);
  }
  
  @media (max-width: 768px) {
    .graph-paper {
      background-size: 24px 24px;
      background-image: 
        linear-gradient(to right, #00479e 1px, transparent 1px), 
        linear-gradient(to bottom, #00479e 1px, transparent 1px);
    }
    .graph-paper-white {
      background-size: 24px 24px;
      background-image: 
        linear-gradient(to right, #ffffff55 1px, transparent 1px), 
        linear-gradient(to bottom, #ffffff55 1px, transparent 1px);
    }
    .striped-paper {
      background-size: 24px 24px;
      background-image: 
        linear-gradient(to bottom, #00479e 1px, transparent 1px);
    }
    .lined-paper {
      background-size: 24px 24px;
      background-image: 
        linear-gradient(to right, #00479e 1px, transparent 1px);
    }
  }
  
  @media (max-width: 400px) {
    .graph-paper {
      background-size: 20px 20px;
      background-image: 
        linear-gradient(to right, #00479e 1px, transparent 1px), 
        linear-gradient(to bottom, #00479e 1px, transparent 1px);
    }
    .striped-paper {
      background-size: 20px 20px;
      background-image: 
        linear-gradient(to bottom, #00479e 1px, transparent 1px);
    }
    .lined-paper {
      background-size: 20px 20px;
      background-image: 
        linear-gradient(to right, #00479e 1px, transparent 1px);
    }
  }
  
  /* -- Border Adjustments ------------------------------------------------- */
  
  .trim-top-graph-paper-border {
    margin-top: -1px;
  }
  
  .graph-paper.bottom-border {
    border-bottom: 1px solid var(--primary-color);
  }
  
  .top-border {
    border-top: 1px solid var(--primary-color);
  }
  
  .close-left {
    border-left: 1px solid var(--primary-color);
  }
  
  .close-right {
    border-right: 1px solid var(--primary-color);
  }
  
  .close-sides {
    border-left: 1px solid var(--primary-color);
    border-right: 1px solid var(--primary-color);
  }
  
  .solid-background-light {
    background-color: var(--background-base-color);
  }
  
  .solid-background {
    background-color: var(--primary-color);
  }
  
  .thick-border, .panel-block.thick-border {
    border: 4px solid var(--primary-color);
  }
  
  /* -- Split Panel ---------------------------------------------------------- */
  
  .split-panel {
    display: flex;
    flex-direction: row;
    /* Jun 8, 2024: Reduce split panels from 4 -> 3: remove side-by-side blocks
    flex-flow: column; 
    */
    /* NOTE: If we bring back the 2x2 layout, remember to update: .tile:first-child */
  }
  
  .split-panel > div {
    flex: 1;
    /* padding-right: var(--container-side-padding); */
  }
  
  .split-panel.left-priority > div:first-child {
    flex: 2;
  }
  
  @media (max-width: 1024px) {
    .split-panel.collapse-early {
      display: flex;
      flex-direction: column;
    }
    .split-panel.collapse-early.reverse-mobile-direction {
      flex-direction: column-reverse;
    }
  }
  
  @media (max-width: 600px) {
    .split-panel {
      display: flex;
      flex-direction: column;
    }
    .split-panel.reverse-mobile-direction {
      flex-direction: column-reverse;
    }
  }
  
  /* -- Panel Component --------------------------------------------------- */
  
  /* Match Base Background */
  .panel-block {
    background-color: var(--background-base-color);
    padding: calc(var(--container-side-padding) + 4px); /* 4px Compensate for highlight border */
  }
  
  .panel-left {
    border-left: 1px solid var(--primary-color);
    padding-left: calc(var(--container-side-padding) + 3px); /* 1-border + 3-pad = 4px Compensate for highlight border */
  }
  
  .panel-right {
    border-right: 1px solid var(--primary-color);
    padding-right: calc(var(--container-side-padding) + 3px); /* 1-border + 3-pad = 4px Compensate for highlight border */
  }
  
  .panel-block.highlight:hover, .panel-block.highlight:hover a:visited {
    border: 4px solid var(--primary-color);
    padding: var(--container-side-padding);
    cursor: pointer;
    color: var(--primary-color);
  }
  
  /* Turn panel icon white */
  .panel-block.highlight:hover .panel-icon {
    /* 
    filter: contrast(1) saturate(0) brightness(10); 
    */
  }
  
  @media (max-width: 1024px) {
    /* Close panels on mobile */
    .panel-left {
      border-right: 1px solid var(--primary-color);
      padding-right: calc(var(--container-side-padding) + 3px); /* 2x 1-border + 3-pad = 4px Compensate for highlight border */
    }
    .panel-right {
      border-left: 1px solid var(--primary-color);
      padding-left: calc(var(--container-side-padding) + 3px); /* 2x 1-border + 3-pad = 4px Compensate for highlight border */
    }
  }
  
  /* -- Match Grid with Padding --------------------------------------------- */
  .inner-panel {
    padding-left: calc(var(--container-side-padding)); /* -3 to compensate for highlight borders */
    padding-right: calc(var(--container-side-padding)); /* -3 to compensate for highlight borders */
  }
  
  @media (max-width: 768px) {
    .inner-panel {
      padding-left: calc(var(--container-side-padding) / 2); /* /2 to snap padding to grid */
      padding-right: calc(var(--container-side-padding) / 2);
    }
  }
  
  @media (max-width: 600px) {
    .inner-panel {
      padding: 0;
    }
  }
  /* -- / Match Grid with Padding ------------------------------------------- */
  
  .inner-panel {
    height: 100%; /* Center image vertically */
    display: flex;
    container: inner-panel / inline-size;
    mix-blend-mode: darken; /* Blend Video */
  }
  
  .inner-panel-text {
    flex: 6;
    /* padding-right: 1rem; /* Space from image */
  }
  
  .inner-panel-image {
    flex: 4;
    display: flex;
    align-items: center; /* V-Center media */
    mix-blend-mode: darken; /* Blend Video */
  }
  
  .inner-panel-image video {
    width: 100%; /* Constrain video to container size */
    max-height: 16rem;
    mix-blend-mode: darken; /* Blend Video */
  }
  
  .mix-blend-darken {
    mix-blend-mode: darken;
  }
  
  .mix-blend-lighten {
    mix-blend-mode: lighten;
    filter: brightness(2) contrast(2);
    background: #000000; /* Safari fix for Filter not applying: set background to black */
  }
  
  .mix-blend-screen {
    mix-blend-mode: screen; /* Requires parent: .blue-background-wrapper or similar */
    background: #FFFFFF; /* Safari fix for Filter not applying: set background to black */
  }
  
  .blue-background-wrapper {
    background: var(--primary-color);
    mix-blend-mode: darken;
    align-self: center; /* Avoid 100% width to avoid letterboxing the video */
  }
  
  .center-contents-vertical {
    display: flex;
    align-items: center;
  }
  
  @media (max-width: 1200px) {
    .inner-panel {
      flex-direction: column;
    }
    .inner-panel-text {
      flex: 1;
      padding-bottom: 1rem;/* Space from image */
    }
  }
  
  @media (max-width: 1400px) {
    .inner-panel.snap-mobile-early {
      flex-direction: column;
    }
    .inner-panel.snap-mobile-early > .inner-panel-text {
      flex: 1;
      padding-bottom: 1rem;/* Space from image */
    }
  }
  
  @media (max-width: 1200px) {
    .inner-panel-image video {
      max-height: 20rem; /* Increase video size on mobile */
    }
  }
  
  /* -- Grid Panel --------------------------------------------------------- */
  
  .grid-panel {
    display: grid;
    /*
    grid-template-areas: 
      "thick-fill thick-fill thick-fill"
      "panel divider panel"
      "thin-fill thin-fill thin-fill"
      "panel divider panel"
      "thick-fill thick-fill thick-fill";
    */
    grid-template-columns: 1fr calc(32px + 1px) 1fr;
    /* gap: 0 32px */
    min-height: var(--grid-panel-height); /* Align with graph paper on desktop */
  }
  
  .divider-block {
    /* background: #ffc0cb4d; /* debugging */
  }
  
  .divider-block {
    
  }
  
  @media (max-width: 1024px) {
    .grid-panel {
      grid-template-columns: 1fr;
    }
    .divider-block {
      height: 25px;
    }
    .striped-paper {
      /* Switch to Graph Paper */
      background-size: 24px 24px;
      background-image: 
        linear-gradient(to right, #00479e 1px, transparent 1px), 
        linear-gradient(to bottom, #00479e 1px, transparent 1px);
    }
    .close-sides {
      border-left: 0px solid var(--primary-color);
      border-right: 1px solid var(--primary-color);
    }
  }
  
  @media (max-width: 400px) {
    .grid-panel {
      grid-template-columns: 1fr;
    }
    .divider-block {
      height: 21px;
    }
    .striped-paper {
      /* Switch to Graph Paper */
      background-size: 20px 20px;
      background-image: 
        linear-gradient(to right, #00479e 1px, transparent 1px), 
        linear-gradient(to bottom, #00479e 1px, transparent 1px);
    }
    .close-sides {
      border-left: 0px solid var(--primary-color);
      border-right: 1px solid var(--primary-color);
    }
  }
  
  /* -- Grid Panel Minimal --------------------------------------------------- */
  
  .grid-panel-minimal {
    display: grid;
    grid-template-areas: 
      "panel panel";
    grid-template-columns: 1fr 1fr;
    gap: 0 32px;
  }
  
  @media (max-width: 1024px) {
    .grid-panel-minimal {
      gap: 0 24px;
    }
  }
  
  @media (max-width: 400px) {
    .grid-panel-minimal {
      gap: 0 20px;
    }
  }
  
  /* -- Splash ------------------------------------------------------------- */
  
  .hero-title {
    font-size: 5rem;
    line-height: 4.5rem;
    color: #FFFFFF;
  }
  
  .hero-title.overlay-bottom {
    position: absolute;
    bottom: 2rem;
    width: 75%; /* Don't collide with cta button -- don't use max width for container */
    padding: 0 var(--container-side-padding-2x);
    max-width: calc(var(--max-container-width) - var(--container-side-padding-2x)); /* container width - inner padding */
  }
  
  #hero-text-animation {
    width: auto;
  }
  
  #hero-text-animation svg {
    max-height: 12rem;
  }
  
  @media (max-width: 1024px) {
    .hero-title.overlay-bottom {
      max-width: none;
    }
    .full-screen-section .typewriter-container {
      /* bottom: 8rem; /* Don't collide with cta button */
    }
  }
  
  @media (max-width: 600px) {
    .hero-title.overlay-bottom {
      padding: 0 var(--container-side-padding); /* Reduce side padding to fit 'Mathematical' word on viewport */
    }
  }
  
  @media (max-width: 400px) {
    .hero-title > .typewriter {
      font-size: 2rem;
      line-height: 2rem;
    }
  }
  
  #hero-video {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
  }
  
  #hero-video video, #hero-video img, #hero-animation {
    max-width: 100%;
    max-height: calc(100vh - 0rem);
    transform: none;
    min-width: auto;
    min-height: auto;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  
  
  @media (max-width: 1024px) {
    #hero-video.avoid-mobile-clip {
      display: flex;
      align-items: center;
    }
    
    #hero-video.avoid-mobile-clip img {
      height: auto;
    }
    #hero-video.avoid-mobile-clip .zoom-sphere-on-mobile {
      height: 50%;
    }
  }
  
  #hero-animation {
    display: flex;
    align-items: center;
  }
  
  #hero-animation svg {
    height: auto !important; /* Try to avoid initial crop from left side */
  }
  
  /* -- Splash Sections ---------------------------------------------------- */
  
  .splash-with-overlay {
    background-position-x: 50%;
    background-position-y: 50%;
    background-size: cover;
    min-height: 32rem;
  }
  
  .splash-with-overlay.medium {
    min-height: 32rem;
  }
  
  .splash-with-overlay.columns {
    background-image: url(../img/splash-columns.png);
  }
  
  .splash-with-overlay.grande {
    min-height: 48rem;
  }
  
  @media (max-width: 1024px) {
    .splash-with-overlay.grande {
      min-height: 38rem; /* Don't exceed the videwport of the iPhoneX (v1: 32px) */
    }
  }
  
  @media (max-width: 768px) {
    .splash-with-overlay.grande {
      min-height: 32rem; /* Don't exceed the videwport of the iPhoneX */
    }
  }
  
  .primary-color-background,
  .splash-with-overlay.primary-color-background {
    background: var(--primary-color);
  }
  
  .splash-with-overlay.running-man {
    background: var(--primary-color);
    background-image: url(../img/product-wide-runner.png);
  }
  
  .limit-width-1500px {
    width: 100%;
    max-width: 1500px;
    margin: 0 auto;
  }
  
  .splash-with-overlay.text-bottom {
    display: flex;
    align-items: flex-end;
  }
  
  .splash-with-overlay .overlay {
    position: relative;
    z-index: 1; /* Explicitly set above background */
    width: 50%;
    padding: var(--container-side-padding) var(--container-side-padding-2x);
    color: var(--font-highlight-color);
  }
  
  .splash-with-overlay .overlay.wide {
    width: 75%;
  }
  
  .splash-with-overlay .overlay-content {
    width: 100%;
  }
  
  .splash-with-overlay.widescreen-video {
    position: relative; /* IMPORTANT: fit video within this container */
  }
  
  .splash-with-overlay.widescreen-video video {
    width: 100%;
    height: 100%;
    position: absolute; /* IMPORTANT: cover parent container with the video */
    object-fit: cover;
    z-index: 0;
  }
  
  /* Used on About page above the fold 
    - Maze should not clip vertically on widescreen or clip horizontally on mobile
    - Increased the contrast on the blend mode so the lines are more defined across devices
    - Increased the splash height to accommodate the larger title
  */
  .splash-with-overlay.widescreen-video video.large {
    object-fit: contain;
    width: 80%;
    max-width: 1200px; /* Limit width so it doesn't clip top / collide with bottom text */
    max-height: 70%;
    margin: 0 auto;
    /* inset-area: center; */ /* Fails on Safari */
  }
  
  /* Alternative for inset-area CSS property: */
  .splash-video-container {
    position: absolute;
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: flex-start;
  }
  
  @media (max-width: 1024px) {
    .splash-with-overlay.widescreen-video video.large {
      max-height: 60%;
    }
  }
  @media (max-width: 500px) {
    .splash-with-overlay.widescreen-video video.large {
      width: 90%; /* fight for every pixel on mobile */
      max-height: 50%;
    }
  }
  
  @media (max-width: 768px) {
    .splash-with-overlay .overlay {
      width: calc(100% - 2 * var(--container-side-padding-2x));
    }
  }
  
  /* Create a side-to-side blue fill for spash: */
  #full-width-solid-background-above-the-fold {
    background-color: var(--primary-color);
    position: absolute; /* Restrict to full width, outside the page layout */
    width: 100%;
    max-width: none;
    z-index: -1; /* Layer behind the main content */
    display: block;
    left: 0; /* Align to left 0,0 */
    top: 0;
    height: 100vh;
    opacity: 1;
  }
  
  #full-width-solid-background-menu {
    background-color: var(--primary-color);
    position: fixed;
    width: 100%;
    max-width: none;
    z-index: 50;
    left: 0;
    top: 0;
    height: 100vh;
    opacity: 1;
    display: flex;
    flex-direction: column;
  }
  
  #full-width-solid-background-menu.visible {
  }
  
  #full-width-solid-background-above-the-fold.hidden,
  #full-width-solid-background-menu.hidden {
    transition: opacity 0.3s ease;
    opacity: 0;
  }
  
  .overlay.standard-flex {
    display: flex;
    width: auto;
  }
  .overlay.standard-flex div {
    flex: 1;
  }
  @media (max-width: 1024px) {
    .overlay.standard-flex {
      flex-direction: column;
      padding: var(--container-side-padding) var(--container-side-padding);
    }
  }


  
  /* -- Footer ------------------------------------------------------------- */
  
  .footer-base {
    display: flex;
    justify-content: end;
    /* margin-right: var(--container-side-padding-2x); */
    margin-top: 0.25rem;
    /* margin-bottom: 1rem;  // Removed to align CTA to bottom of footer */
  }
  @media (max-width: 600px) {
    .footer-base {
      margin-right: var(--container-side-padding);
    }
  }
  
  .footer-base.cta-space {
    margin-bottom: 8rem; /* Leave room for CTA */
  }
  
  .footer-base > span {
    margin-left: 0.5rem;
  }
  
  .footer-solid {
    background-color: var(--primary-color);
    /* padding: var(--container-vertical-padding) var(--container-side-padding); */
    padding: var(--container-vertical-padding) 0; /* Remove side padding */
  }
  
  .copyright {
    color: var(--primary-color);
    font-family: "NBAkademieRegular", "Roboto", sans-serif;
  }
  
  /* -- Typeography --------------------------------------------------------- */
  
  .title {
    font-size: 4rem;
    line-height: 3.75rem;
    color: var(--primary-color);
    padding-bottom: 1rem; /* Space from Subtitle */
  }
  
  .subtitle {
    font-size: 2rem;
    line-height: 2.5rem;
    color: var(--primary-color);
  }
  
  .regular-text {
    color: var(--primary-color);
    font-size: 1.5rem;
    line-height: normal;
  }
  
  .panel-icon {
    width: 1.25rem;
    margin-bottom: 0.25rem;
  }
  
  .title.light, .subtitle.light {
    color: var(--font-highlight-color);
    text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.5), 0px 0px 4px rgba(0, 0, 0, 0.3);
  }
  
  @media (min-width: 1500px) {
    .title, .hero-title {
      font-size: 5rem;
      line-height: 5rem; /* 4.5 -> the letters touch */
    }
  }
  @media (max-width: 1200px) {
    .title, .hero-title {
      font-size: 4rem;
      line-height: 4rem; /* 3.75 -> the letters touch */
    }
  }
  @media (max-width: 1024px) {
    .title, .hero-title {
      font-size: 3.5rem;
      line-height: 3.5rem;
    }
  }
  @media (max-width: 768px) {
    .title, .hero-title {
      font-size: 2.5rem;
      line-height: 2.5rem;
    }
    .subtitle {
      font-size: 1.5rem;
      line-height: 1.5rem;
    }
    .panel-icon {
      width: 1rem;
    }
  }
  @media (max-width: 600px) {
    .title, .hero-title {
      font-size: 2.5rem;
      line-height: 2.5rem;
    }
    .panel-icon {
      width: 0.75rem;
    }
  }
  
  .bullet-strong {
    font-weight: 700;
  }
  
  .list-item {
    padding-bottom: 0.5rem;
  }
  
  /* -- Blog ------------------------------------------------------------- */
  
  .blog-post {
    color: var(--primary-color);
    display: flex;
    flex-direction: column;
  }
  
  .blog-post a, .blog-post a:visited, .blog-post a:hover, .blog-post a:focus {
    color: var(--primary-color);
    text-decoration: underline;
  }
  
  /* Mirrors subtitle class: */
  .blog-post .post-title {
    font-size: 2rem;
    line-height: 2.5rem;
    color: var(--primary-color);
  }
  @media (max-width: 768px) {
    .subtitle, .blog-post .post-title {
      font-size: 1.5rem;
      line-height: 2rem;
    }
  }
  
  .blog-post .post-subtitle {
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--primary-color);
  }
  
  @media (max-width: 600px) {
    .blog-post {
      padding-left: var(--container-side-padding);
      padding-right: var(--container-side-padding);
    }
  }
  
  .blog-post .post-subtitle {
    margin-top: 3rem;
    font-size: 1.5rem;
    line-height: 2rem;
  }
  
  .figure-subtitle {
    margin-top: 0.5rem;
    font-style: italic;
  }
  
  @media (max-width: 768px) {
    .blog-post .post-subtitle {
      font-size: 1.5rem;
      line-height: 2rem;
    }
  }
  
  .blog-post p {
    font-size: 1rem;
    line-height: 1.6rem; /* 1.6 to increase readability between blocky paragraphs */
    max-width: var(--blog-post-max-width); /* Limit the line width of the blog to improve readability */
  }
  
  .blog-post ol, ul, ol.li, ul.li, .blog-list {
    max-width: var(--blog-post-max-width); /* Limit the line width of the blog to improve readability */
  }
  
  pre, code {
    max-width: var(--blog-post-max-width); /* Limit the line width of the blog to improve readability */
    overflow: auto;
  }
  
  pre {
    width: calc(100vw - var(--container-side-padding-2x)); /* Fix Mobile overflow */
    background-color: var(--primary-color);
    color: var(--font-highlight-color);
    font-size: 0.8rem;
  }
  
  li {
    margin-bottom: 0.5rem;
  }
  
  .blog-link {
    font-weight: 600;
  }
  
  .post-header {
    display: flex;
    justify-content: center;
    width: 100%;
    border-bottom: 1px solid var(--primary-color);
    margin-bottom: 2rem;
    padding-top: 2rem;
    padding-bottom: 0.5rem;
  }
  
  .post-header-content {
    width: 100%;
    display: flex;
    justify-content: space-between;
    max-width: var(--blog-post-max-width); /* Limit the line width of the blog to improve readability */
  }
  
  .post-date {
    padding-left: 1rem; /* Space from title */
    padding-right: 1rem; /* Space from edge */
    font-size: 1rem;
    display: flex;
    line-height: 1.5;
    align-items: end;
  }
  
  .post-body {
    align-self: center;
  }
  
  @media (max-width: 768px) {
    .post-date {
      padding-right: 0; /* Space from edge */
    }
  }
  
  .blog-bullet {
    width: 0.75rem;
    margin-bottom: 0.25rem;
  }
  
  .emphasis {
    font-style: italic;
  }
  
  p sup {
    line-height: 1rem; /* Don't bump up line height of the paragraph */
  }
  
  p.footnote {
    margin-top: 0;
    margin-bottom: 0.5rem;
    font-size: 0.7rem;
    line-height: 1.2rem;
  }
  
  a.footnote-link {
    text-decoration: none;
    vertical-align: super;
    font-size: 0.8rem;
  }
  
  
  
  
  /* -- CTA ------------------------------------------------------------- */
  
  .cta-position {
    position: fixed;
    width: inherit;
    max-width: calc(var(--max-container-width) - 0 * var(--container-side-padding-2x)); /* Match Page Container */
  
    /* Bottom position needs to change relative to viewport to avoid overlapping title */
    right: 2rem;
    margin: 0 auto; /* Center */
    display: flex;
    justify-content: flex-end;
    z-index: 200; /* Ensure button appears above all other elements */
  }
  
  @media (max-width: 1024px) {
    .cta-position {
      justify-content: center;
      position: static;

    }
  
    .add-space-for-cta-mobile {
      margin-bottom: 5rem;
    }
  }
  
  .cta-btn-inner {
    color: #154280;
    padding: 2rem 5rem;
    display: block;
    background: var(--font-highlight-color);
    border: 2px #154280 solid;
  }
  
  .cta-float-container {
    background: #154280; 
    display: inline-block;
    position: relative;
  }
  .cta-float-container:active .cta-btn {
    transition: all 0.1s ease; 
    display: block; 
    transform: translate3d(0,0,0);
  }
  .cta-float-container .cta-btn {
    transform: translate3d(-0.7rem,-0.7rem,0);
  }
  .cta-corner-bottom, .cta-corner-top {
    left: -0.7rem; 
    bottom: -0.3rem; 
    width: 1rem;
    height: 1rem; 
    transition: all 0.1s ease; 
    transform: rotate(-45deg) scale(0);
    background: #154280; 
    position: absolute; z-index: 0;
    transform-origin: 0% 0%;
  }
  .cta-corner-bottom {
    left: auto; 
    top: 0; 
    right: 0; 
    top: -0.3rem; 
    right: 0.7rem; 
    bottom: auto; 
    transform: rotate(45deg) scale(0);
    transform-origin: 100% 100%;
  }
  .cta-float-container .cta-corner-bottom,
  .cta-float-container .cta-corner-top {
    transform: rotate(-45deg) scale(1); 
    transition-delay: 75ms;
  }
  .cta-float-container .cta-corner-bottom {
    transform: rotate(45deg) scale(1);
  }
  
  .cta-float-container:active .cta-corner-bottom,
  .cta-float-container:active .cta-corner-top {
    display: none;
  }
  .cta-float-container:active .cta-corner-bottom {
    display: none;
  }
  
  @media (max-width: 1024px) {
    .cta.cta-float-container {
      justify-content: center;
    }
  }
  
  .signup-btn, .standard-cta-btn {
    border: 2px solid var(--primary-color);
    /* border-radius: 1rem; */
    /* v1 - George's Figma:
    background-color: var(--primary-color);
    color: var(--font-highlight-color);
    /*
    /* v2 - Inverted Colors to improve visibility */
    background-color: var(--font-highlight-color);
    color: var(--primary-color);
  
    padding: 0rem 1.5rem;
    text-decoration: none;
    text-wrap: nowrap;
    white-space:nowrap;
    margin-top: 9vh;
    font-size: 2rem;
    border-radius: 1rem;
  }
  
  .standard-cta-btn.wide {
    padding: 0 4rem;
  }
  
  @media (max-width: 420px) {
    .signup-btn, .standard-cta-btn {
      font-size: 1.5rem;
      margin-top: 1rem;
    }
    
  }
  @media (max-width: 350px) {
    .signup-btn, .standard-cta-btn {
      font-size: 1.25rem;
    }
  }
  
  a.signup-btn:visited, .standard-cta-btn:visited {
    /* Ensure it's white after visited */
    /* v1 - George's Figma:
    color: var(--font-highlight-color);
    */
    /* v2 - Inverted Colors to improve visibility */
    background-color: var(--font-highlight-color);
    color: var(--primary-color);
  }
  
  .signup-btn:hover, .signup-btn:focus, .signup-btn:active,
  .standard-cta-btn:hover, .standard-cta-btn:focus, .standard-cta-btn:active {
    /* v1 - George's Figma: (NOTE: Important tag overrides :visited)
    border: 2px solid var(--action-color);
    color: var(--action-color) !important; 
    */
    background-color: var(--action-color)  !important;
    color: var(--font-highlight-color) !important;
  }
  
  .btn-right-space {
    margin-right: var(--container-side-padding-2x);
  }
  
  /* -- Typewriter Animation ----------------------------------------- 
     https://dev.to/afif/a-multi-line-css-only-typewriter-effect-3op3
  */
  
  .typewriter-container {
    /* font-family: 'NBAkademieMonoRegular', monospace; */
  }
  
  .typewriter {
    --total-steps-before-repeat: 60;
    --type-speed: 0.1s;
    --type-size: 1ch;
  
    --cursor-size: 4px;
    --animation-offset: 0.5rem;
  
    padding-bottom: 1rem; /* Avoid clipping "g" */
  
    color:#0000;
    background:
      linear-gradient(-90deg,#FFF var(--cursor-size),#0000 0) var(--animation-offset) 0,
      linear-gradient(#FFF 0 0) 0 0;
    background-size:calc(var(--total-steps-before-repeat)*var(--type-size)) 200%;
    -webkit-background-clip:padding-box,text;
    background-clip:padding-box,text;
    background-repeat:no-repeat;
    animation: 
     typewriter-step .5s infinite steps(1),   
     typewriter-type calc(var(--total-steps-before-repeat)*var(--type-speed)) steps(var(--total-steps-before-repeat)) forwards;
     animation-iteration-count: infinite;
  }
  
  @keyframes typewriter-type {
    from {background-size:0 200%}
  }
  @keyframes typewriter-step {
    50% {background-position:0 -100%,0 0}
  }
  
  /* ----------------------------------------------------------------- */
  
  .menu-items {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-right: 2rem;
    margin-left: 4rem; /* Align with grid on widescreen */
    margin-top: 1px; /* Micro-adjust to align Nav elements base with Harmonic logo base */
  }
  
  .header .menu-items {
    flex: 0.5; /* Set width of container. For 1-2 menu items: 0.25; For 3+ menu items: 1 */
  }
  
  @media (max-width: 1400px) {
    .header .menu-items {
      flex: 0.75; /* Set width of container. For 1-2 menu items: 0.3; For 3+ menu items: 1 */
    }
  }
  
  @media (max-width: 1200px) {
    .header .menu-items {
      flex: 1; /* Set width of container. For 1-2 menu items: 0.4; For 3+ menu items: 1 */
    }
  }
  
  .mobile-menu-button-container {
    display: none;
    align-items: center;
    justify-content: flex-end;
    padding-right: var(--container-side-padding);
  }
  .mobile-menu-button {
    font-family: "NBAkademieRegular", "Roboto", sans-serif;
    padding-top: 0.75rem; /* Micro-adjustment to align with logo & increases target area */
    padding-bottom: 0.25rem;
    font-size: 1.25rem; /* TODO */
    cursor: pointer;
    background: none;
    padding: none;
    border: none;
  }
  .mobile-menu-button.light {
    color: var(--primary-color); /* TODO */
  }
  .mobile-menu-button.dark {
    color: var(--font-highlight-color);
  }
  
  .mobile-menu-button:hover, .mobile-menu-button:active, .mobile-menu-button:focus {
    text-decoration: underline;
  }
  
  @media (max-width: 1024px) {
    .menu-link.subtitle {
      font-size: 1.5rem;
    }
    .menu-items {
      margin-right: 1rem;
      margin-left: 1rem;
    }
  }
  
  
  @media (max-width: 768px) {
    .menu-items {
      display: none;
    }
    .mobile-menu-button-container {
      display: flex;
    }
  }
  
  .menu-link {
    display: flex;
    align-items: center;
  }
  
  .menu-items a {
    color: var(--font-highlight-color);
  }
  
  /* Make it easier to read the item 
  #site-header-inverted .menu-items a {
    background-color: var(--primary-color);
  }
  */
  
  .item-bullet {
    font-size: 1.25rem; /* Shrink bullet size */
    margin-right: 0.25rem; /* Space from text */
  }
  
  .menu-link.active .item-bullet {
    color: var(--action-color);
  }
  
  .menu-link:hover > .item-bullet, .menu-link:active > .item-bullet, .menu-link:focus > .item-bullet {
    color: var(--action-color);
  }
  
  .menu-link:hover > .item-text, .menu-link:active > .item-text, .menu-link:focus > .item-text {
    /* text-decoration: underline; */
  }
  
  #site-header a:hover, #site-header a:active, #site-header a:focus,
  #site-header-inverted a:hover, #site-header-inverted a:active, #site-header-inverted a:focus {
    background: none; /* Reset default styles that set the background to primary color */
  }
  
  #site-header.light a:hover, #site-header.light a:active, #site-header.light a:focus,
  #site-header-inverted.light a:hover, #site-header-inverted.light a:active, #site-header-inverted.light a:focus {
    color: var(--primary-color); /* SET: Light Background / Dark Text */
  }
  #site-header.light a,
  #site-header-inverted.light a {
    color: var(--primary-color); /* SET: Light Background / Dark Text */
  }
  
  .menu-items-mobile-list {
    margin-top: 4rem;
    padding-top: 1rem;
    padding-left: 1rem;
    display: flex;
    flex-direction: column;
    width: calc(100% - 2rem); /* remove horiz scrollbar */
  }
  
  .menu-items-mobile-list > .menu-item {
    padding-top: 0.75rem;
    padding-bottom: 0.25rem;
    background-color: var(--primary-color);
  }
  
  .menu-items-mobile-list a .item-text {
    color: var(--font-highlight-color);
    font-size: 2rem;
    line-height: 2.5rem;
  }
  
  #full-width-solid-background-menu .bottom-fill {
    height: 100%;
    margin-left: -1px;
    margin-top: 2rem;
    opacity: 1;
    display: flex;
  }
  
  #hero-animation-mobile {
    margin-bottom: 2rem;
  }
  
  /* Alternative to bullet points in Nav 
  .menu-link.active .item-text:after, .item-text:after {
    width: 0;
    content: "";
    display: block;
    transition: width 0.2s ease 0s;
    margin-left: -0.5rem;
    margin-right: 0.5rem;
  }
  .item-text:after {
    border-bottom: var(--nav-hover-effect-height) solid var(--action-color);
  }
  .menu-link.active .item-text:after {
    width: calc(100% + 1rem);
    border-bottom: var(--nav-hover-effect-height) solid var(--font-highlight-color);
  }
  .item-text:hover:after { 
    width: calc(100% + 1rem);
  } 
  */
  
  /* -- Misc ------------------------------------------------------- */
  
  .cached-image {
    display: none;
  }
  
  .scale-up-25pct {
    transform: scale(1.25);
    max-width: calc(100vw * 0.75); /* Ensure we don't scale past the viewport size */
  }
  @media (max-width: 1024px) {
    .scale-up-25pct {
      transform: revert; /* Avoid iOS horizontal scroll on Safari */
    }
  }
  
  @media (max-width: 768px) {
    .menu-items {
      display: none;
    }
    .mobile-menu-button-container {
      display: flex;
    }
  }
  
  .video-blend-highlights-contrast {
    mix-blend-mode: lighten;
    filter: brightness(1) contrast(10) saturate(0);
    background: #000000; /* Safari fix for Filter not applying: set background to black */
  }
  
  .video-blend-brightness-4x {
    mix-blend-mode: lighten;
    filter: brightness(4) contrast(1) saturate(0);
    background: #000000; /* Safari fix for Filter not applying: set background to black */
  }
  
  .splash-with-overlay.widescreen-video video.large.full-height {
    max-height: 100%;
    height: 100%;
  }
  
  .video-blend-highlights-contrast-5x {
    mix-blend-mode: lighten;
    filter: brightness(5) contrast(10) saturate(0);
    background: #000000; /* Safari fix for Filter not applying: set background to black */
  }
  
  .raise-above-text {
    /* transform: translateY(-6rem); */ /* v1: don't collide with text */
    max-width: 45rem; /* Enclose within container */
  }
  
  @media (max-width: 600px) {
    .center-btn-on-mobile {
      margin: 0 auto;
      margin-top: 4rem;
    }
  }
  
  /* -- Investor Section --------------------------------------------------- */
  
  .investor-section {
    border-top: 1px solid var(--primary-color);
    padding-top: 2rem;
    display: flex;
    justify-content: center;
  }
  
  .investor-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
  }
  
  .investor-logo {
    width: 18rem;
    /* SVG fix for some devices: */
    min-width: 18rem;
    max-width: 18rem;
  }
  
  .logo-container {
    display: block;
    padding: 1rem 0;
  }
  
  @media (min-width: 1024px) {
    .investor-row {
      max-width: 1000px; /* Link Investor Logos to be 3x2 */
    }
  }
  
  @media (min-width: 1800px) {
    .investor-row {
      max-width: none; /* Link Investor Logos to be 6x1 */
    }
  }