/* Kisaka & Company — Home page (index.html). */
/* ===== Testimonials ===== */
.testimonials
   {
      background: #f4f5f7;
      background-size: cover;
      background-position: center;
      background-repeat: no-repeat;
      position: relative;
   }

.testimonials .owl-dots
   {
      position: absolute;
      left: 50%;
      bottom: -55px;
      margin-top: -47px;
      padding: 10px 25px;
      border-radius: 3px;
      margin: 0 0 0 -52px;
      margin-top: 49px;
      box-sizing: ;
   }

.testimonials .owl-dots .owl-dot
   {
      display: inline-block;
      margin-right: 10px;
   }

.testimonials .owl-dots .owl-dot:last-child
   {
      margin: 0px;
   }

.testimonials .owl-dots .owl-dot span:hover
   {
      background: #fff;
   }

body.kisaka-home-page .kisaka-about-help
   {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-align: center;
      -ms-flex-align: center;
      align-items: center;
      min-height: calc(100svh - var(--kisaka-header-h, 72px));
      scroll-margin-top: 0;
   }

body.kisaka-home-page .kisaka-about-help[data-kisaka-theme="clay"]
   {
      --kisaka-help-bg: #c99c90;
      --kisaka-help-title: #321a16;
      --kisaka-help-body: #321a16;
      --kisaka-help-accent: #321a16;
      --kisaka-help-button: #321a16;
      --kisaka-help-button-border: rgba(50, 26, 22, 0.8);
      --kisaka-help-button-fill: #321a16;
      --kisaka-help-button-hover: #fff8f2;
      --kisaka-help-card-title: #321a16;
      --kisaka-help-focus-ring: rgba(50, 26, 22, 0.32);
   }

body.kisaka-home-page .kisaka-about-help[data-kisaka-theme="rose"]
   {
      --kisaka-help-bg: #d4ada5;
      --kisaka-help-title: #3a2029;
      --kisaka-help-body: #3a2029;
      --kisaka-help-accent: #3a2029;
      --kisaka-help-button: #3a2029;
      --kisaka-help-button-border: rgba(58, 32, 41, 0.8);
      --kisaka-help-button-fill: #3a2029;
      --kisaka-help-button-hover: #fff8f2;
      --kisaka-help-card-title: #3a2029;
      --kisaka-help-focus-ring: rgba(58, 32, 41, 0.3);
   }

body.kisaka-home-page .kisaka-about-help[data-kisaka-theme="mauve"]
   {
      --kisaka-help-bg: #c3b2bf;
      --kisaka-help-title: #342436;
      --kisaka-help-body: #342436;
      --kisaka-help-accent: #342436;
      --kisaka-help-button: #342436;
      --kisaka-help-button-border: rgba(52, 36, 54, 0.8);
      --kisaka-help-button-fill: #342436;
      --kisaka-help-button-hover: #fff8f2;
      --kisaka-help-card-title: #342436;
      --kisaka-help-focus-ring: rgba(52, 36, 54, 0.3);
   }

body.kisaka-home-page .kisaka-about-help[data-kisaka-theme="lines"]
   {
      /* The warm centre tone from the mission panel's drawn-line backdrop. */
      --kisaka-help-bg: #c9bc9f;
      --kisaka-help-title: #3d2b25;
      --kisaka-help-body: #3d2b25;
      --kisaka-help-accent: #3d2b25;
      --kisaka-help-button: #3d2b25;
      --kisaka-help-button-border: rgba(61, 43, 37, 0.82);
      --kisaka-help-button-fill: #3d2b25;
      --kisaka-help-button-hover: #fff8f2;
      --kisaka-help-card-title: #3d2b25;
      --kisaka-help-focus-ring: rgba(61, 43, 37, 0.3);
   }

body.kisaka-home-page .kisaka-about-help[data-kisaka-theme="sage"]
   {
      --kisaka-help-bg: #b9b79f;
      --kisaka-help-title: #2a2f1b;
      --kisaka-help-body: #2a2f1b;
      --kisaka-help-accent: #2a2f1b;
      --kisaka-help-button: #2a2f1b;
      --kisaka-help-button-border: rgba(42, 47, 27, 0.8);
      --kisaka-help-button-fill: #2a2f1b;
      --kisaka-help-button-hover: #fff8f2;
      --kisaka-help-card-title: #2a2f1b;
      --kisaka-help-focus-ring: rgba(42, 47, 27, 0.3);
   }

body.kisaka-home-page .kisaka-about-help__rail
   {
      margin-right: 0;

      /* Trailing runway wide enough that even the last card can snap fully to
         the left edge instead of stalling at max-scroll with a previous card
         half-peeping. The extra whitespace on the right is intentional — a card
         is always covered in full, never partially revealed. */
      padding-right: max(clamp(24px, 3.4vw, 44px), 48vw);
   }

body.kisaka-home-page .kisaka-about-help__breathing-room
   {
      height: clamp(160px, 24svh, 280px);
   }

.kisaka-about-help__layout
   {
      display: grid;
      grid-template-columns: minmax(280px, 0.85fr) minmax(0, 2.15fr);
      gap: clamp(44px, 6vw, 92px);
      align-items: start;
   }

body.kisaka-home-page .kisaka-about-help__intro
   {
      display: grid;
      grid-template-rows: auto auto minmax(0, 1fr) auto;
      height: 571px;
   }

.kisaka-about-help__title
   {
      margin: 0 0 24px;
      font-family: var(--kisaka-font-accent);
      font-size: clamp(42px, 4.2vw, 54px);
      font-weight: 500;
      line-height: 1.06;
      letter-spacing: -0.035em;
      color: var(--kisaka-help-title);
      overflow-wrap: break-word;
   }

.kisaka-about-help[data-kisaka-help-dir="up"] .kisaka-about-help__letter
   {
      -webkit-transform: translateY(-110%);
      -ms-transform: translateY(-110%);
      transform: translateY(-110%);
   }

.kisaka-about-help__title.is-letter-revealing .kisaka-about-help__letter
   {
      -webkit-animation: kisaka-about-help-letter-reveal var(--kisaka-dur-reveal) var(--kisaka-ease-out) forwards;
      animation: kisaka-about-help-letter-reveal var(--kisaka-dur-reveal) var(--kisaka-ease-out) forwards;
      -webkit-animation-delay: var(--kisaka-help-letter-delay, 0ms);
      animation-delay: var(--kisaka-help-letter-delay, 0ms);
   }

.kisaka-about-help__lead
   {
      max-width: 420px;
      margin: 0;
      padding: 0 10px 0 0;
      font-family: "Newsreader", Georgia, "Times New Roman", serif;
      font-optical-sizing: auto;
      font-size: 17px;
      font-weight: 450;
      line-height: 1.68;
      color: var(--kisaka-help-body);
   }

.kisaka-about-help[data-kisaka-help-dir="up"] .kisaka-about-help__lead-word
   {
      -webkit-transform: translate3d(0, -0.55em, 0);
      transform: translate3d(0, -0.55em, 0);
   }

.kisaka-about-help__lead.is-word-revealing .kisaka-about-help__lead-word
   {
      -webkit-animation: kisaka-about-help-word-reveal 0.46s var(--kisaka-ease-out) forwards;
      animation: kisaka-about-help-word-reveal 0.46s var(--kisaka-ease-out) forwards;
      -webkit-animation-delay: var(--kisaka-help-word-delay, 0ms);
      animation-delay: var(--kisaka-help-word-delay, 0ms);
   }

/* Incoming copy for a card change: letters and words resolve where they
   stand rather than rising through the entrance masks. */
.kisaka-about-help__title.is-letter-swapping .kisaka-about-help__letter
   {
      opacity: 0;
      -webkit-filter: blur(6px);
      filter: blur(6px);
      -webkit-transform: none;
      -ms-transform: none;
      transform: none;
      -webkit-animation: kisaka-about-help-letter-swap 380ms var(--kisaka-ease-out) forwards;
      animation: kisaka-about-help-letter-swap 380ms var(--kisaka-ease-out) forwards;
      -webkit-animation-delay: var(--kisaka-help-letter-delay, 0ms);
      animation-delay: var(--kisaka-help-letter-delay, 0ms);
   }

.kisaka-about-help__lead.is-word-swapping .kisaka-about-help__lead-word
   {
      -webkit-transform: none;
      transform: none;
      -webkit-animation: kisaka-about-help-word-swap 360ms var(--kisaka-ease-out) forwards;
      animation: kisaka-about-help-word-swap 360ms var(--kisaka-ease-out) forwards;
      -webkit-animation-delay: var(--kisaka-help-word-delay, 0ms);
      animation-delay: var(--kisaka-help-word-delay, 0ms);
   }

/* The rail paints the theme tokens every frame from its live position
   (js/main.js, paintHelpColors), the way a scrubbed timeline would. A CSS
   colour transition on top would only trail behind the scroll. */
body.kisaka-home-page .kisaka-about-help.is-color-scrubbed
   {
      -webkit-transition: none;
      -o-transition: none;
      transition: none;
   }

body.kisaka-home-page .kisaka-about-help.is-color-scrubbed .kisaka-about-help__title,
body.kisaka-home-page .kisaka-about-help.is-color-scrubbed .kisaka-about-help__lead
   {
      -webkit-transition: opacity 160ms ease;
      -o-transition: opacity 160ms ease;
      transition: opacity 160ms ease;
   }

body.kisaka-home-page .kisaka-about-help.is-color-scrubbed .kisaka-about-help__card h3
   {
      -webkit-transition: none;
      -o-transition: none;
      transition: none;
   }

.kisaka-about-help__all-label
   {
      position: relative;
      z-index: 1;
      display: inline-block;
      overflow: hidden;
      vertical-align: bottom;
      color: inherit;
   }

.kisaka-about-help__all:hover .kisaka-about-help__all-label,
.kisaka-about-help__all:focus-visible .kisaka-about-help__all-label
   {
      color: inherit;
   }

.kisaka-about-help__all.is-button-revealing .kisaka-about-help__button-label-text
   {
      -webkit-animation: kisaka-about-help-button-label-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) 0.16s forwards;
      animation: kisaka-about-help-button-label-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) 0.16s forwards;
   }

.kisaka-about-help__all:before, .kisaka-about-help__all:after
   {
      content: none;
   }

.kisaka-about-help__all:hover, .kisaka-about-help__all:focus-visible
   {
      background: var(--kisaka-help-button);
      border-color: var(--kisaka-help-button);
      color: var(--kisaka-help-button-hover);
   }

.kisaka-about-help__rail
   {
      display: grid;
      grid-auto-flow: column;
      grid-auto-columns: minmax(460px, 60%);
      gap: clamp(28px, 3vw, 40px);
      overflow-x: auto;
      overflow-y: hidden;
      padding: 0 max(1px, calc((100vw - 1140px) / 2)) 20px 0;
      margin-right: calc(50% - 50vw);
      -webkit-overflow-scrolling: touch;
      -webkit-scroll-snap-type: x mandatory;
      -ms-scroll-snap-type: x mandatory;
      scroll-snap-type: x mandatory;
      overscroll-behavior-x: contain;
      scrollbar-width: none;
      -ms-overflow-style: none;
      outline: none;
   }

.kisaka-about-help__rail::-webkit-scrollbar
   {
      width: 0;
      height: 0;
      display: none;
   }

.kisaka-about-help__rail:focus-visible
   {
      -webkit-box-shadow: 0 0 0 3px var(--kisaka-help-focus-ring);
      box-shadow: 0 0 0 3px var(--kisaka-help-focus-ring);
   }

.kisaka-about-help__card
   {
      min-width: 0;
      scroll-snap-align: start;
      scroll-snap-stop: always;
      pointer-events: none;
      -webkit-user-select: none;
      -moz-user-select: none;
      user-select: none;
   }

/* Focus carousel: the card resting at the rail's reading edge is fully lit and
   full-size; neighbours recede so the eye settles on one card at a time. The
   --help-focus weight (0 = receded, 1 = focused) is driven continuously by the
   rail JS every animation frame, so the emphasis glides with the sideways
   motion instead of snapping on at the end. Default 1 keeps every card fully
   visible before JS runs and under reduced-motion / non-home usage. */
body.kisaka-home-page .kisaka-about-help__card
   {
      --help-focus: 1;
      -webkit-transform-origin: left center;
      -ms-transform-origin: left center;
      transform-origin: left center;
      -webkit-transform: scale(calc(0.935 + 0.065 * var(--help-focus)));
      -ms-transform: scale(calc(0.935 + 0.065 * var(--help-focus)));
      transform: scale(calc(0.935 + 0.065 * var(--help-focus)));
      opacity: calc(0.34 + 0.66 * var(--help-focus));
      will-change: transform, opacity;
   }

.kisaka-about-help__card-content
   {
      display: block;
      color: var(--kisaka-help-title);
   }

/* Pictures sit behind the same clip they exit through, so arriving at 01
   from Mission or 05 from What We Do can uncover them toward that edge. */
body.kisaka-home-page .kisaka-about-help.is-cards-prepared .kisaka-about-help__card-content
   {
      -webkit-clip-path: inset(100% 0% 0% 0%);
      clip-path: inset(100% 0% 0% 0%);
      -webkit-transform: translate3d(0, 16px, 0);
      transform: translate3d(0, 16px, 0);
      will-change: clip-path, transform;
   }

body.kisaka-home-page .kisaka-about-help[data-kisaka-help-dir="up"].is-cards-prepared .kisaka-about-help__card-content
   {
      -webkit-clip-path: inset(0% 0% 100% 0%);
      clip-path: inset(0% 0% 100% 0%);
      -webkit-transform: translate3d(0, -16px, 0);
      transform: translate3d(0, -16px, 0);
   }

.kisaka-about-help__media
   {
      position: relative;
      overflow: hidden;
      aspect-ratio: 0.86;
      background: #e8e9eb;
      border-radius: 18px;
   }

.kisaka-about-help__media::after
   {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(180deg, transparent 62%, rgba(0, 0, 0, 0.16) 100%);
      pointer-events: none;
   }

.kisaka-about-help__card-copy
   {
      position: relative;
      min-height: 148px;
      padding: 28px 56px 0 0;
   }

.kisaka-about-help__card h3
   {
      margin: 0;
      font-family: var(--kisaka-font-accent);
      font-size: clamp(26px, 2.6vw, 36px);
      font-weight: 600;
      line-height: 1.25;
      letter-spacing: -0.02em;
      color: var(--kisaka-help-card-title);
      -webkit-transition: color 420ms ease;
      -o-transition: color 420ms ease;
      transition: color 420ms ease;
   }

@media (max-width: 991px)
   {
      .kisaka-about-help__layout
         {
            grid-template-columns: 1fr;
            gap: 44px;
         }

      .kisaka-about-help__intro
         {
            max-width: 720px;
         }

      body.kisaka-home-page .kisaka-about-help__intro
         {
            height: 453px;
         }

      .kisaka-about-help__lead
         {
            max-width: 640px;
         }

      .kisaka-about-help__rail
         {
            grid-auto-columns: minmax(380px, 58%);
            margin-right: calc(50% - 50vw);
            padding-right: 24px;
         }
   }

@media (max-width: 575px)
   {
      .kisaka-about-help
         {
            padding-top: 54px;
         }

      .kisaka-about-help__title
         {
            font-size: 42px;
         }

      body.kisaka-home-page .kisaka-about-help__intro
         {
            height: 627px;
         }

      .kisaka-about-help__all
         {
            margin-top: 18px;
         }

      .kisaka-about-help__rail
         {
            grid-auto-columns: minmax(320px, 90vw);
            gap: 22px;
            padding-right: 18px;
         }

      .kisaka-about-help__media
         {
            aspect-ratio: 0.92;
         }

      body.kisaka-home-page .kisaka-about-help__breathing-room
         {
            height: clamp(112px, 18svh, 180px);
         }
   }

@media (prefers-reduced-motion: reduce)
   {
      body.kisaka-home-page .kisaka-about-help.is-cards-prepared .kisaka-about-help__card-content,
      body.kisaka-home-page .kisaka-about-help[data-kisaka-help-dir="up"].is-cards-prepared .kisaka-about-help__card-content
         {
            -webkit-clip-path: none;
            clip-path: none;
            -webkit-transform: none;
            transform: none;
            will-change: auto;
         }
   }

@media (prefers-contrast: more)
   {
      .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost,
      .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:visited
         {
            background: #080808;
            border-color: #080808;
            color: #fff;
         }

      .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:hover,
      .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:focus-visible
         {
            background: #fff;
            border-color: #080808;
            color: #080808;
         }
   }

.contact-us .kisaka-contact-field__error
   {
      position: absolute;
      left: 0;
      top: 0;
      margin: 0;
      padding: 0;
      font-size: 10.5px !important;
      font-weight: 600 !important;
      line-height: 13px !important;
      letter-spacing: 0.01em;
      color: #cb1f34 !important;
      white-space: nowrap;
      overflow: hidden;
      -o-text-overflow: ellipsis;
      text-overflow: ellipsis;
      opacity: 0;
      pointer-events: none;
      -webkit-transition: opacity 0.12s ease;
      transition: opacity 0.12s ease;
   }

.contact-us .kisaka-contact-field--error .kisaka-contact-field__error
   {
      opacity: 1;
   }

.contact-us .kisaka-contact-field--error input, .contact-us .kisaka-contact-field--error textarea
   {
      border-color: #cb1f34 !important;
      box-shadow: 0 0 0 1px rgba(203, 31, 52, 0.22);
   }

/* ===== Home: Mission -> Sustainability morph (js/main.js, end of file) ===== */
/* All on the seam's curtain timeline (Sustainability's entry, set up by
   js/kisaka-motion.js), so it tracks the panel snap exactly and reverses on
   the way back up. The seam's scroll is its own slower sine glide
   (js/main.js, MORPH_MS), so segments stay linear; the fill's growth only
   adds a mild in-out so it leaves the box and lands on the edges softly.
   A strong curve here stacked on the scroll's and rushed the growth. */
@supports (animation-timeline: view())
   {
      /* Beat 1: Mission lifts away. forwards keeps it gone past the seam
         (Mission is off screen by then); before the seam nothing applies. */
      .kisaka-home-mission.is-morph .kisaka-home-mission__copy,
      .kisaka-home-mission.is-morph .kisaka-home-mission__stats
         {
            animation: kisaka-home-mission-out linear forwards;
            animation-timeline: --kisaka-home-curtain-sustainability;
            animation-range: entry 0% entry 14%;
         }

      .kisaka-home-mission.is-morph .kisaka-home-mission__stats
         {
            animation-range: entry 3% entry 17%;
         }

      /* The cue centres itself with a transform, so it only fades. */
      .kisaka-home-mission.is-morph .kisaka-home-mission__scroll-cue
         {
            animation: kisaka-home-mission-fade linear forwards;
            animation-timeline: --kisaka-home-curtain-sustainability;
            animation-range: entry 0% entry 9%;
         }

      /* Beats 1-2: a flat tan layer (Sustainability's "lines" background)
         settles over the box, then grows from the box to the whole screen. */
      .kisaka-home-mission.is-morph .kisaka-home-mission__fill
         {
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 9;
            display: block;
            height: var(--hm-vh, 100vh);
            background: #c9bc9f;
            pointer-events: none;
            opacity: 0;
            animation: kisaka-home-mission-fill linear forwards;
            animation-timeline: --kisaka-home-curtain-sustainability;
            animation-range: entry 0% entry 100%;
         }

      /* Beat 3 waits: until the fill has covered the screen, Sustainability
         rises with no background of its own and its content held back.
         main.js then plays the copy and card entrance. */
      body.kisaka-home-page .kisaka-about-help.is-morph.is-morphing
         {
            background-color: transparent;
         }
   }

/* Homepage redesign: screenshot-inspired editorial hero */
body.kisaka-home-page
   {
      background: #d9ecf7;
      --kisaka-home-shell-gutter: 0px;
   }

/* Home / What we do. The base supports the staged panel treatment; the
   natural-scroll modifier below lets the current homepage use document flow. */
.kisaka-what-do
   {
      --kisaka-what-do-paper: #f3f4ec;
      --kisaka-what-do-ink: #0a0b0a;
      position: relative;
      height: 100svh;
      min-height: 680px;
      overflow: hidden;
      background: var(--kisaka-what-do-ink);
      color: var(--kisaka-what-do-paper);
      isolation: isolate;
   }

/* Once the service rail is moving, mask the rows that have passed beneath
   the fixed navigation so their large titles cannot bleed through it. */
.kisaka-what-do::before
   {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      z-index: 2;
      height: calc(var(--kisaka-header-h, 72px) + 8px);
      background: var(--kisaka-what-do-ink);
      opacity: 0;
      pointer-events: none;
   }

.kisaka-what-do.is-browsing-services::before
   {
      opacity: 1;
   }

/* Natural-scroll variant: keep the editorial service layout, but let the
   shared Lenis document scroller move through it like every other section. */
.kisaka-what-do--natural-scroll
   {
      height: auto;
      min-height: 100svh;
      overflow: visible;
   }

.kisaka-what-do--natural-scroll .kisaka-what-do__rail
   {
      height: auto;
      overflow: visible;
   }

/* Home panels after What we do. Our clients sits on white so each logo keeps its
   own colours: a centred heading over rows of four logos (edge logos hug the frame,
   middle two centre), then the Who we serve link. Testimonials follows. */
.kisaka-home-clients
   {
      --kisaka-clients-logo-h: clamp(28px, min(2.6vw, 4.6svh), 42px);
      --kisaka-clients-paper: #f3f4f6;
      --kisaka-clients-ink: #121318;
      --kisaka-clients-mute: rgba(18, 19, 24, 0.56);
      position: relative;
      height: 100svh;
      min-height: 620px;
      overflow: hidden;
      background: var(--kisaka-clients-paper);
      color: var(--kisaka-clients-ink);
   }

.kisaka-home-clients__frame
   {
      display: flex;
      flex-direction: column;
      justify-content: center;
      width: 100%;
      height: 100%;
      padding-top: calc(var(--kisaka-header-h, 72px) + clamp(12px, 3svh, 40px));
      padding-bottom: clamp(24px, 5svh, 56px);
   }

/* Header: the claim on the left, the proof line and the way in on the right.
   The claim starts at the top of the row so it leads the paragraph beside it. */
.kisaka-home-clients__header
   {
      display: grid;
      grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
      gap: 24px clamp(32px, 6vw, 96px);
      align-items: start;
      margin-bottom: clamp(20px, 5svh, 56px);
   }

.kisaka-home-clients__claim
   {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: clamp(10px, 1.4svh, 16px);
      min-width: 0;
   }

.kisaka-home-clients__eyebrow
   {
      margin: 0;
      color: var(--kisaka-red);
      font-family: var(--kisaka-font-accent);
      font-size: 13px;
      font-weight: 600;
      letter-spacing: 0.14em;
      line-height: 1.2;
      text-transform: uppercase;
   }

.kisaka-home-clients__heading
   {
      max-width: 14em;
      margin: 0;
      color: var(--kisaka-clients-ink);
      font-family: "Newsreader", Georgia, "Times New Roman", serif;
      font-optical-sizing: auto;
      font-size: clamp(28px, 3.3vw, 50px);
      font-weight: 500;
      letter-spacing: -0.025em;
      line-height: 1.05;
      text-wrap: balance;
   }

.kisaka-home-clients__intro
   {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 20px;
   }

.kisaka-home-clients__lead
   {
      align-self: stretch;
      max-width: 30em;
      margin: 0;
      color: var(--kisaka-clients-mute);
      font-family: var(--kisaka-font-accent);
      font-size: clamp(15px, 1.15vw, 17px);
      line-height: 1.55;
   }

.kisaka-home-clients__group + .kisaka-home-clients__group
   {
      margin-top: clamp(4px, 1.2svh, 14px);
   }

/* The track runs the full viewport width and fades at both edges; the row
   inside it is what moves. */
.kisaka-home-clients__track
   {
      width: 100vw;
      margin-left: calc(50% - 50vw);
      -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
      mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
   }

/* Logo rows loop in alternating directions. js/main.js repeats each row's
   set until it overfills the screen and sets --kisaka-clients-shift to one
   set's width, so sliding by exactly that distance loops without a seam. */
.kisaka-home-clients__row
   {
      display: flex;
      flex-wrap: nowrap;
      justify-content: center;
      width: max-content;
      min-width: 100%;
      margin: 0;
      padding: clamp(8px, 1.6svh, 18px) 0 0;
      list-style: none;
   }

.kisaka-home-clients__row.is-looping
   {
      justify-content: flex-start;
      -webkit-animation: kisaka-clients-left var(--kisaka-clients-duration, 40s) linear infinite;
      animation: kisaka-clients-left var(--kisaka-clients-duration, 40s) linear infinite;
   }

.kisaka-home-clients__row.is-looping[data-kisaka-clients-direction="right"]
   {
      -webkit-animation-name: kisaka-clients-right;
      animation-name: kisaka-clients-right;
   }

/* Padding, not flex gap, spaces the logos so one set's width is exactly
   the sum of its items. Each logo is sized to a shared area rather than a
   shared height (--logo-scale from js/main.js), so a square crest and a wide
   wordmark carry the same weight. */
.kisaka-home-clients__logo
   {
      display: flex;
      flex: 0 0 auto;
      align-items: center;
      justify-content: center;
      height: calc(var(--kisaka-clients-logo-h) * 1.5);
      padding: 0 clamp(28px, 3.4vw, 64px);
   }

@media (hover: hover)
   {
      .kisaka-home-clients__logo:hover img
         {
            -webkit-filter: none;
            filter: none;
            opacity: 1;
         }
   }

@media (prefers-reduced-motion: reduce)
   {
      .kisaka-home-clients__row.is-looping
         {
            -webkit-animation: none;
            animation: none;
         }
   }

.kisaka-home-clients__cta > span:first-child
   {
      white-space: nowrap;
   }

.kisaka-home-clients__cta:focus-visible
   {
      outline: 2px solid var(--kisaka-red);
      outline-offset: 3px;
   }

/* Tablet and down: the header stacks. */
@media (max-width: 991px)
   {
      .kisaka-home-clients__header
         {
            grid-template-columns: minmax(0, 1fr);
         }
   }

/* Phones: smaller logos, tighter spacing. */
@media (max-width: 767px)
   {
      .kisaka-home-clients
         {
            --kisaka-clients-logo-h: clamp(22px, 3.6svh, 30px);
         }

      .kisaka-home-clients__lead
         {
            font-size: 15px;
         }

      .kisaka-home-clients__logo
         {
            padding: 0 22px;
         }
   }

/* Home: Our clients arrival (js/main.js, after the logo loop). Armed hides
   the header and the logo rows with no transition; .is-cl-in plays them in
   as the panel lands, the same 520ms ease-out every home panel uses. Delays
   come in as --cl-d from the script. The rows move as whole groups because
   the row inside carries the logo loop's own transform. Reduced motion
   never arms, so it stays put. */
body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__eyebrow,
body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__heading,
body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__lead,
body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__cta,
body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__group
   {
      transition: none;
   }

body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__eyebrow
   {
      opacity: 0;
      transform: translate3d(0, 0.9em, 0);
      clip-path: inset(0 0 100% 0);
   }

body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__heading
   {
      opacity: 0;
      transform: translate3d(0, 0.5em, 0);
   }

body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__lead
   {
      opacity: 0;
      transform: translate3d(0, 12px, 0);
   }

body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__cta
   {
      opacity: 0;
      transform: translate3d(0, 14px, 0);
   }

body.kisaka-home-page .kisaka-home-clients.is-cl-armed .kisaka-home-clients__group
   {
      opacity: 0;
      transform: translate3d(var(--cl-from, 3em), 0, 0);
   }

/* Shown. Bleeds the eyebrow's clip past its box so the settled line never
   shaves a letter. */
body.kisaka-home-page .kisaka-home-clients.is-cl-armed.is-cl-in .kisaka-home-clients__eyebrow
   {
      opacity: 1;
      transform: translate3d(0, 0, 0);
      clip-path: inset(-0.3em -0.3em -0.3em -0.3em);
      transition: opacity var(--kisaka-dur-reveal) var(--kisaka-ease-out) var(--cl-d, 0ms), transform var(--kisaka-dur-reveal) var(--kisaka-ease-out) var(--cl-d, 0ms), clip-path var(--kisaka-dur-reveal) var(--kisaka-ease-out) var(--cl-d, 0ms);
   }

body.kisaka-home-page .kisaka-home-clients.is-cl-armed.is-cl-in .kisaka-home-clients__heading,
body.kisaka-home-page .kisaka-home-clients.is-cl-armed.is-cl-in .kisaka-home-clients__lead,
body.kisaka-home-page .kisaka-home-clients.is-cl-armed.is-cl-in .kisaka-home-clients__group
   {
      opacity: 1;
      transform: translate3d(0, 0, 0);
      transition: opacity var(--kisaka-dur-reveal) var(--kisaka-ease-out) var(--cl-d, 0ms), transform var(--kisaka-dur-reveal) var(--kisaka-ease-out) var(--cl-d, 0ms);
   }

/* Keeps the button's own hover colours alongside the rise. */
body.kisaka-home-page .kisaka-home-clients.is-cl-armed.is-cl-in .kisaka-home-clients__cta
   {
      opacity: 1;
      transform: translate3d(0, 0, 0);
      transition: opacity var(--kisaka-dur-reveal) var(--kisaka-ease-out) var(--cl-d, 0ms), transform var(--kisaka-dur-reveal) var(--kisaka-ease-out) var(--cl-d, 0ms), border-color 200ms ease, color 200ms ease, background-color 200ms ease;
   }

/* Testimonials: Axiom-style geometry on white. --tst-u is the template's 1em
   (16px at 1440 wide), also capped by viewport height so the one-screen lock holds. */
.kisaka-home-testimonials
   {
      --kisaka-tst-paper: #ffffff;
      --kisaka-tst-ink: #121318;
      --kisaka-tst-mute: rgba(18, 19, 24, 0.5);
      --kisaka-tst-faint: rgba(18, 19, 24, 0.38);
      --kisaka-tst-line: rgba(18, 19, 24, 0.12);
      --tst-u: clamp(12px, min(100vw / 90, 100svh / 56.25), 18px);
      position: relative;
      display: flex;
      align-items: stretch;
      height: 100svh;
      min-height: 620px;
      overflow: hidden;
      background: var(--kisaka-tst-paper);
      color: var(--kisaka-tst-ink);
      font-size: var(--tst-u);
      isolation: isolate;
   }

.kisaka-home-testimonials__frame
   {
      display: flex;
      flex-direction: column;
      width: 100%;
      height: 100%;
      padding-top: calc(var(--kisaka-header-h, 72px) + 2.5em);
      padding-bottom: 2em;
   }

.kisaka-home-testimonials__stage
   {
      display: flex;
      flex: 1 1 auto;
      flex-direction: column;
      gap: 1.5em;
      min-height: 0;
   }

.kisaka-home-testimonials__eyebrow
   {
      margin: 0;
      color: var(--kisaka-red);
      font-family: var(--kisaka-font-accent);
      font-size: 18px;
      font-weight: 600;
      letter-spacing: 0.14em;
      line-height: 1.2;
      text-transform: uppercase;
   }

/* Slider: arrows sit on their own in the 4em strip under the slides. */
.kisaka-home-testimonials__viewport
   {
      position: relative;
      flex: 1 1 auto;
      min-height: 0;
      padding-bottom: 4em;
      overflow: hidden;
   }

/* One stage: the labels, rule, and quote marks stay put while each changing
   value rolls in place (see the text roll below). */
.kisaka-home-testimonials__slide
   {
      display: grid;
      grid-template-columns: 1fr 1.25fr;
      height: 100%;
      min-width: 0;
      touch-action: pan-y;
   }

/* Text roll: every testimonial's value for a slot shares one grid cell, so
   the cell keeps the size of its longest value and nothing around it moves.
   Going forward, the old value rolls up out of its mask as the next rolls up
   into place; going back runs the other way. */
.kisaka-home-testimonials__roll
   {
      display: grid;
      min-width: 0;
      overflow: hidden;
      padding-bottom: 0.12em;
      margin-bottom: -0.12em;
   }

.kisaka-home-testimonials__counter .kisaka-home-testimonials__roll
   {
      display: inline-grid;
      vertical-align: bottom;
   }

.kisaka-home-testimonials__roll > *
   {
      grid-area: 1 / 1;
      min-width: 0;
   }

/* The quote's words carry their own masks, so its cell never clips. The
   cell keeps the longest quote's height, so shorter ones centre between the
   marks rather than leaving a gap above the close mark. */
.kisaka-home-testimonials__roll--quote
   {
      overflow: visible;
      padding-bottom: 0;
      margin-bottom: 0;
   }

.kisaka-home-testimonials__roll--quote > blockquote
   {
      align-self: center;
      font-size: calc(var(--tst-quote-scale, 1) * 1em);
   }

.kisaka-home-testimonials__info
   {
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      gap: 1.25em;
      min-width: 0;
   }

.kisaka-home-testimonials__counter
   {
      margin: 0;
      color: var(--kisaka-red);
      font-family: var(--kisaka-font-accent);
      font-size: 0.875em;
      line-height: 1.4;
      font-variant-numeric: tabular-nums;
   }

.kisaka-home-testimonials__person
   {
      display: flex;
      flex-direction: column;
      gap: 1em;
   }

.kisaka-home-testimonials__who
   {
      display: flex;
      flex-direction: column;
   }

.kisaka-home-testimonials__name
   {
      margin: 0;
      color: var(--kisaka-tst-ink);
      font-family: "Newsreader", Georgia, "Times New Roman", serif;
      font-optical-sizing: auto;
      font-size: 1.25em;
      font-weight: 500;
      letter-spacing: -0.01em;
      line-height: 1.4;
   }

.kisaka-home-testimonials__role
   {
      margin: 0;
      color: var(--kisaka-tst-mute);
      font-family: var(--kisaka-font-accent);
      font-size: 1em;
      font-weight: 300;
      line-height: 1.5;
   }

.kisaka-home-testimonials__specs
   {
      display: flex;
      flex-direction: column;
      max-width: 23em;
      position: relative;
      margin: 0;
      padding: 0;
   }

/* The top rule is a stroke so each slide can draw it in from the left. */
.kisaka-home-testimonials__specs::before
   {
      content: "";
      position: absolute;
      top: 0;
      right: 0;
      left: 0;
      height: 1px;
      background: var(--kisaka-tst-line);
      -webkit-transform-origin: left center;
      transform-origin: left center;
   }

.kisaka-home-testimonials__specs > div
   {
      display: grid;
      grid-template-columns: 7.5em minmax(0, 1fr);
      align-items: start;
      column-gap: 1.25em;
      padding: 0.5em 0;
   }

.kisaka-home-testimonials__specs dt, .kisaka-home-testimonials__specs dd
   {
      margin: 0;
      font-family: var(--kisaka-font-accent);
      font-size: 0.875em;
      font-weight: 400;
      line-height: 1.5;
      text-transform: uppercase;
      font-variant-numeric: tabular-nums;
      text-align: left;
   }

.kisaka-home-testimonials__specs dt
   {
      color: var(--kisaka-tst-faint);
   }

.kisaka-home-testimonials__specs dd
   {
      color: var(--kisaka-tst-ink);
   }

.kisaka-home-testimonials__quote
   {
      --tst-quote-fs: 2.5em;
      position: relative;
      display: flex;
      flex-direction: column;
      justify-content: center;
      min-width: 0;
      margin: 0;
      font-size: var(--tst-quote-fs);
   }

.kisaka-home-testimonials__mark
   {
      display: block;
      width: 1.15em;
      height: auto;
      margin: 0 0 0.4em;
      color: var(--kisaka-red);
      line-height: 0;
      pointer-events: none;
      -webkit-transform-origin: left top;
      -ms-transform-origin: left top;
      transform-origin: left top;
   }

.kisaka-home-testimonials__mark--close
   {
      align-self: flex-end;
      margin: 0.4em 0 0;
      -webkit-transform: rotate(180deg);
      -ms-transform: rotate(180deg);
      transform: rotate(180deg);
      -webkit-transform-origin: center center;
      -ms-transform-origin: center center;
      transform-origin: center center;
   }

.kisaka-home-testimonials__mark svg
   {
      display: block;
      width: 100%;
      height: auto;
      fill: currentColor;
   }

.kisaka-home-testimonials__quote blockquote
   {
      max-width: 55em;
      margin: 0;
   }

.kisaka-home-testimonials__quote p
   {
      margin: 0;
      color: var(--kisaka-tst-mute);
      font-family: "Newsreader", Georgia, "Times New Roman", serif;
      font-optical-sizing: auto;
      font-size: 1em;
      font-weight: 300;
      letter-spacing: -0.01em;
      line-height: 1.25;
   }

.kisaka-home-testimonials__accent
   {
      color: var(--kisaka-red);
      font-weight: 650;
   }

.kisaka-home-testimonials.is-tst-drawn .kisaka-home-testimonials__roll--quote > .is-current .kisaka-home-testimonials__accent
   {
      color: var(--kisaka-red);
      -webkit-transition-delay: 700ms;
      transition-delay: 700ms;
   }

.kisaka-home-testimonials__arrow svg
   {
      width: 1.35em;
      height: 1.35em;
      fill: none;
      stroke: currentColor;
      stroke-width: 1.75;
      stroke-linecap: round;
      stroke-linejoin: round;
   }

.kisaka-home-testimonials__arrow:hover, .kisaka-home-testimonials__arrow:focus-visible
   {
      color: var(--kisaka-red);
      outline: none;
   }

.kisaka-home-testimonials__arrow:disabled
   {
      opacity: 0.22;
      cursor: default;
      color: var(--kisaka-tst-ink);
   }

/* Nothing loops behind the panels above and below. */
.kisaka-home-testimonials.is-tst-offscreen .kisaka-home-testimonials__marquee-track
   {
      -webkit-animation-play-state: paused;
      animation-play-state: paused;
   }

/* Each slot rolls a beat after the one above it, so a change reads top to
   bottom. On arrival the whole cascade waits for the labels to land. */
.kisaka-home-testimonials
   {
      --tst-roll-lead: 0s;
   }

.kisaka-home-testimonials.is-tst-drawn:not(.is-tst-settled)
   {
      --tst-roll-lead: 0.24s;
   }

.kisaka-home-testimonials__name .kisaka-home-testimonials__roll > *
   {
      --tst-roll-step: 0.04s;
   }

.kisaka-home-testimonials__role .kisaka-home-testimonials__roll > *
   {
      --tst-roll-step: 0.08s;
   }

.kisaka-home-testimonials__specs > div:nth-child(1) .kisaka-home-testimonials__roll > *
   {
      --tst-roll-step: 0.12s;
   }

.kisaka-home-testimonials__specs > div:nth-child(2) .kisaka-home-testimonials__roll > *
   {
      --tst-roll-step: 0.16s;
   }

.kisaka-home-testimonials__specs > div:nth-child(n + 3) .kisaka-home-testimonials__roll > *
   {
      --tst-roll-step: 0.2s;
   }

.kisaka-home-testimonials.is-tst-armed:not(.is-tst-drawn) .kisaka-home-testimonials__roll:not(.kisaka-home-testimonials__roll--quote) > .is-current
   {
      opacity: 0;
      -webkit-transform: translateY(105%);
      transform: translateY(105%);
   }

.kisaka-home-testimonials.is-tst-armed .kisaka-home-testimonials__word
   {
      -webkit-transition: -webkit-transform 720ms var(--kisaka-ease-out);
      transition: transform 720ms var(--kisaka-ease-out);
      -webkit-transition-delay: calc(var(--tst-roll-lead) + var(--tst-line-delay, 0.1s));
      transition-delay: calc(var(--tst-roll-lead) + var(--tst-line-delay, 0.1s));
   }

.kisaka-home-testimonials.is-tst-armed .kisaka-home-testimonials__roll--quote > :not(.is-current) .kisaka-home-testimonials__word
   {
      -webkit-transform: translateY(115%);
      transform: translateY(115%);
      -webkit-transition-duration: 480ms;
      transition-duration: 480ms;
      -webkit-transition-delay: 0s;
      transition-delay: 0s;
   }

.kisaka-home-testimonials.is-tst-armed .kisaka-home-testimonials__roll--quote > .is-before .kisaka-home-testimonials__word
   {
      -webkit-transform: translateY(-115%);
      transform: translateY(-115%);
   }

.kisaka-home-testimonials.is-tst-armed:not(.is-tst-drawn) .kisaka-home-testimonials__roll--quote > .is-current .kisaka-home-testimonials__word
   {
      -webkit-transform: translateY(115%);
      transform: translateY(115%);
   }

.kisaka-home-testimonials__counter-total
   {
      display: inline-block;
   }

.kisaka-home-testimonials.is-tst-armed:not(.is-tst-drawn) .kisaka-home-testimonials__nav
   {
      opacity: 0;
   }

.kisaka-home-testimonials.is-tst-drawn .kisaka-home-testimonials__specs > div:nth-child(1) dt
   {
      -webkit-transition-delay: 0.16s;
      transition-delay: 0.16s;
   }

.kisaka-home-testimonials.is-tst-drawn .kisaka-home-testimonials__specs > div:nth-child(2) dt
   {
      -webkit-transition-delay: 0.2s;
      transition-delay: 0.2s;
   }

.kisaka-home-testimonials.is-tst-drawn .kisaka-home-testimonials__specs > div:nth-child(n + 3) dt
   {
      -webkit-transition-delay: 0.24s;
      transition-delay: 0.24s;
   }

.kisaka-home-testimonials.is-tst-armed.is-tst-drawn.is-tst-leaving .kisaka-home-testimonials__viewport
   {
      opacity: 0;
      -webkit-transform: translateX(var(--tst-rail-to, -4em));
      transform: translateX(var(--tst-rail-to, -4em));
      -webkit-transition-duration: var(--kisaka-dur-reveal), var(--kisaka-dur-reveal);
      transition-duration: var(--kisaka-dur-reveal), var(--kisaka-dur-reveal);
   }

.kisaka-home-testimonials.is-tst-drawn:not(.is-tst-settled) .kisaka-home-testimonials__word
   {
      -webkit-transition-duration: 960ms;
      transition-duration: 960ms;
   }

.kisaka-home-testimonials.is-tst-armed.is-tst-drawn:not(.is-tst-settled):not(.is-tst-leaving) .kisaka-home-testimonials__viewport
   {
      -webkit-transition-duration: 700ms, 1000ms;
      transition-duration: 700ms, 1000ms;
   }

@media (prefers-reduced-motion: reduce)
   {
      /* The closing mark keeps its flip; it only fades. */
      .kisaka-home-testimonials.is-tst-armed .kisaka-home-testimonials__mark--close
         {
            -webkit-transform: rotate(180deg) !important;
            transform: rotate(180deg) !important;
            -webkit-transition: opacity 200ms ease !important;
            transition: opacity 200ms ease !important;
         }

      .kisaka-home-testimonials.is-tst-armed:not(.is-tst-drawn) .kisaka-home-testimonials__word,
      .kisaka-home-testimonials.is-tst-armed:not(.is-tst-drawn) .kisaka-home-testimonials__specs::before
         {
            opacity: 0;
         }

      .kisaka-home-testimonials.is-tst-armed .kisaka-home-testimonials__accent
         {
            -webkit-transition: color 150ms ease !important;
            transition: color 150ms ease !important;
         }
   }

@media (max-width: 991px)
   {
      .kisaka-home-testimonials__quote
         {
            font-size: calc(var(--tst-quote-fs) * 0.85);
         }
   }

@media (max-width: 767px)
   {
      .kisaka-home-testimonials
         {
            --tst-u: 14px;
            height: auto;
            min-height: 100svh;
         }

      .kisaka-home-testimonials__frame
         {
            height: auto;
            min-height: 100svh;
         }

      .kisaka-home-testimonials__slide
         {
            height: auto;
            align-content: start;
            grid-template-columns: minmax(0, 1fr);
            gap: 1.5em;
         }

      .kisaka-home-testimonials__info
         {
            order: 2;
         }

      .kisaka-home-testimonials__quote
         {
            order: 1;
         }
   }

@media (max-width: 479px)
   {
      .kisaka-home-testimonials__quote
         {
            font-size: calc(var(--tst-quote-fs) * 0.7);
         }

      .kisaka-home-testimonials__specs
         {
            max-width: none;
         }
   }

.kisaka-what-do__intro
   {
      height: auto;
      min-height: 0;
   }

.kisaka-what-do__intro-inner
   {
      display: flex;
      flex-direction: column;
      height: auto;
      padding-top: clamp(112px, 15svh, 154px);
      padding-bottom: clamp(42px, 5svh, 56px);
   }

@media (min-width: 768px)
   {
      .kisaka-what-do__intro
         {
            height: calc(100% - 296px);
         }

      .kisaka-what-do--natural-scroll .kisaka-what-do__intro
         {
            height: auto;
            min-height: calc(100svh - 296px);
         }

      .kisaka-what-do--natural-scroll .kisaka-what-do__intro-inner
         {
            min-height: calc(100svh - 296px);
         }

      .kisaka-what-do__intro-inner
         {
            justify-content: flex-end;
            height: 100%;
            padding-top: calc(var(--kisaka-header-h, 72px) + 8px);
         }
   }

.kisaka-what-do__eyebrow
   {
      margin: 0;
      color: var(--kisaka-red);
      font-family: var(--kisaka-font-accent);
      font-size: 18px;
      font-weight: 600;
      line-height: 1.2;
      letter-spacing: 0.14em;
      text-transform: uppercase;
   }

.kisaka-what-do__headline
   {
      max-width: 1100px;
      margin: clamp(30px, 5svh, 54px) 0 0;
      color: var(--kisaka-what-do-paper);
      font-size: clamp(3rem, min(5.25vw, 8svh), 5rem);
      font-weight: 700;
      line-height: 0.98;
      letter-spacing: -0.055em;
   }

.kisaka-what-do--natural-scroll .kisaka-what-do__headline
   {
      opacity: var(--kisaka-what-do-headline-opacity, 1);
      -webkit-transition: none;
      -o-transition: none;
      transition: none;
      will-change: opacity;
   }

.kisaka-what-do__intro.is-headline-armed .kisaka-what-do__headline-word
   {
      -webkit-transform: translateY(115%);
      -ms-transform: translateY(115%);
      transform: translateY(115%);
   }

.kisaka-what-do__intro.is-headline-armed.is-headline-drawn .kisaka-what-do__headline-word
   {
      -webkit-transform: translateY(0);
      -ms-transform: translateY(0);
      transform: translateY(0);
   }

.kisaka-what-do__services
   {
      position: relative;
   }

.kisaka-what-do__services::before
   {
      top: 0;
      -webkit-transform-origin: left center;
      -ms-transform-origin: left center;
      transform-origin: left center;
   }

.kisaka-what-do__service::after
   {
      bottom: 0;
   }

.kisaka-what-do__service:nth-of-type(odd)::after
   {
      -webkit-transform-origin: right center;
      -ms-transform-origin: right center;
      transform-origin: right center;
   }

.kisaka-what-do__service:nth-of-type(even)::after
   {
      -webkit-transform-origin: left center;
      -ms-transform-origin: left center;
      transform-origin: left center;
   }

.kisaka-what-do__services.is-lines-armed::before,
.kisaka-what-do__services.is-lines-armed .kisaka-what-do__service::after
   {
      -webkit-transform: scaleX(0);
      -ms-transform: scaleX(0);
      transform: scaleX(0);
   }

.kisaka-what-do__services.is-lines-armed.is-lines-started::before,
.kisaka-what-do__services.is-lines-armed.is-lines-started .kisaka-what-do__service.is-line-visible::after
   {
      -webkit-transform: scaleX(1);
      -ms-transform: scaleX(1);
      transform: scaleX(1);
   }

.kisaka-what-do__services.is-lines-started::before
   {
      -webkit-transition-delay: 0.18s;
      -o-transition-delay: 0.18s;
      transition-delay: 0.18s;
   }

.kisaka-what-do__services.is-lines-started .kisaka-what-do__service:nth-of-type(1)::after
   {
      -webkit-transition-delay: 0.32s;
      -o-transition-delay: 0.32s;
      transition-delay: 0.32s;
   }

.kisaka-what-do__services.is-lines-started .kisaka-what-do__service:nth-of-type(2)::after
   {
      -webkit-transition-delay: 0.46s;
      -o-transition-delay: 0.46s;
      transition-delay: 0.46s;
   }

/* Titles and descriptions are rebuilt into animated spans. Keep the link
   cursor explicit on every hover target instead of relying on inheritance. */
.kisaka-what-do__service, .kisaka-what-do__service *
   {
      cursor: pointer !important;
   }

.kisaka-what-do__service-number
   {
      align-self: center;
      padding-top: 0;
      color: var(--kisaka-red);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.12em;
   }

.kisaka-what-do__service h4
   {
      margin: 0;
      color: inherit;
      font-size: clamp(1.8rem, 3.25vw, 3.4rem);
      font-weight: 600;
      line-height: 1;
      letter-spacing: -0.045em;
   }

.kisaka-what-do__service p
   {
      margin: 0;
      color: rgba(243, 244, 236, 0.52);
      font-family: var(--kisaka-font-accent);
      font-size: clamp(13px, 1.1vw, 16px);
      line-height: 1.5;
      -webkit-transition: color 260ms ease;
      -o-transition: color 260ms ease;
      transition: color 260ms ease;
   }

.kisaka-what-do__service:hover .kisaka-what-do__description-roll-track,
.kisaka-what-do__service:focus-visible .kisaka-what-do__description-roll-track
   {
      -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
      transform: translateY(-50%);
   }

.kisaka-what-do__service-arrow
   {
      position: relative;
      display: block;
      width: 30px;
      height: 30px;
      overflow: hidden;
      color: var(--kisaka-red);
      font-size: 0;
      line-height: 0;
   }

.kisaka-what-do__service-arrow::after
   {
      -webkit-transform: translate(-115%, 115%);
      -ms-transform: translate(-115%, 115%);
      transform: translate(-115%, 115%);
   }

.kisaka-what-do__services.is-lines-armed .kisaka-what-do__service-arrow::before
   {
      -webkit-transform: translate(-115%, 115%);
      -ms-transform: translate(-115%, 115%);
      transform: translate(-115%, 115%);
   }

.kisaka-what-do__services.is-lines-armed.is-lines-started .kisaka-what-do__service.is-line-visible .kisaka-what-do__service-arrow::before
   {
      -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
      transform: translate(0, 0);
   }

.kisaka-what-do__service:hover, .kisaka-what-do__service:focus-visible
   {
      background: var(--kisaka-what-do-paper);
      color: var(--kisaka-what-do-ink);
   }

.kisaka-what-do__service:hover p, .kisaka-what-do__service:focus-visible p
   {
      color: rgba(10, 11, 10, 0.6);
   }

.kisaka-what-do__service:hover::after, .kisaka-what-do__service:focus-visible::after
   {
      background: rgba(10, 11, 10, 0.2);
   }

.kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:hover .kisaka-what-do__service-arrow::before,
.kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:focus-visible .kisaka-what-do__service-arrow::before
   {
      -webkit-transform: translate(115%, -115%);
      -ms-transform: translate(115%, -115%);
      transform: translate(115%, -115%);
   }

.kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:hover .kisaka-what-do__service-arrow::after,
.kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:focus-visible .kisaka-what-do__service-arrow::after
   {
      -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
      transform: translate(0, 0);
   }

@media (max-width: 991px)
   {
      .kisaka-what-do__headline
         {
            max-width: 850px;
            font-size: clamp(2.8rem, 7vw, 4.9rem);
         }

      .kisaka-what-do__service
         {
            grid-template-columns: 42px minmax(220px, 1fr) minmax(190px, 0.7fr) 28px;
            padding-right: 28px;
            padding-left: 28px;
         }
   }

@media (max-width: 767px)
   {
      .kisaka-what-do
         {
            min-height: 620px;
         }

      .kisaka-what-do__intro
         {
            min-height: 0;
         }

      .kisaka-what-do__intro-inner
         {
            padding-top: 102px;
            padding-bottom: 42px;
         }

      .kisaka-what-do__headline
         {
            margin-top: 26px;
            font-size: clamp(2.25rem, 10.6vw, 3.7rem);
            line-height: 1;
         }

      .kisaka-what-do__service
         {
            grid-template-columns: 30px minmax(0, 1fr) 25px;
            gap: 12px;
            min-height: 196px;
            padding: 26px 20px;
         }

      .kisaka-what-do__service-number
         {
            padding-top: 0;
         }

      .kisaka-what-do__service h4
         {
            font-size: clamp(1.75rem, 8.5vw, 2.75rem);
         }

      .kisaka-what-do__service p
         {
            grid-column: 2 / 3;
            max-width: 350px;
         }

      .kisaka-what-do__service-arrow
         {
            grid-column: 3;
            grid-row: 1;
         }
   }

@media (prefers-reduced-motion: reduce)
   {
      .kisaka-what-do__services.is-lines-armed .kisaka-what-do__service-arrow::before
         {
            -webkit-transition: none;
            -o-transition: none;
            transition: none;
            -webkit-transform: translate(0, 0);
            -ms-transform: translate(0, 0);
            transform: translate(0, 0);
         }

      .kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:hover .kisaka-what-do__service-arrow::before,
      .kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:focus-visible .kisaka-what-do__service-arrow::before
         {
            -webkit-transform: translate(0, 0);
            -ms-transform: translate(0, 0);
            transform: translate(0, 0);
         }

      .kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:hover .kisaka-what-do__service-arrow::after,
      .kisaka-what-do__services.is-lines-started .kisaka-what-do__service.is-line-visible:focus-visible .kisaka-what-do__service-arrow::after
         {
            -webkit-transform: translate(-115%, 115%);
            -ms-transform: translate(-115%, 115%);
            transform: translate(-115%, 115%);
         }

      .kisaka-what-do__services.is-lines-armed::before,
      .kisaka-what-do__services.is-lines-armed .kisaka-what-do__service::after
         {
            -webkit-transition: none;
            -o-transition: none;
            transition: none;
            -webkit-transform: none;
            -ms-transform: none;
            transform: none;
         }

      .kisaka-what-do__headline-word,
      .kisaka-what-do__intro.is-headline-armed .kisaka-what-do__headline-word
         {
            -webkit-transition: none;
            -o-transition: none;
            transition: none;
            -webkit-transform: none;
            -ms-transform: none;
            transform: none;
         }

      .kisaka-what-do
         {
            height: auto;
            min-height: 100svh;
            overflow: visible;
         }
   }

.kisaka-what-do--directory
   {
      --kisaka-industries-ink: var(--kisaka-what-do-paper);
      --kisaka-industries-muted: rgba(243, 244, 236, 0.58);
      --kisaka-industries-rule: rgba(243, 244, 236, 0.12);
      --kisaka-industries-material: rgba(243, 244, 236, 0.07);
      --kisaka-industries-material-press: rgba(243, 244, 236, 0.12);
      --kisaka-industries-radius: 12px;
      display: flex;
      flex-direction: column;
      justify-content: center;
      min-height: 100svh;
      padding: calc(var(--kisaka-header-h, 72px) + clamp(16px, 3vh, 40px)) 0 clamp(40px, 4.8vh, 72px);
      box-sizing: border-box;
   }

.kisaka-what-do--directory .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost,
.kisaka-what-do--directory .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:visited
   {
      background: var(--kisaka-what-do-paper);
      border-color: var(--kisaka-what-do-paper);
      color: var(--kisaka-what-do-ink);
   }

.kisaka-what-do--directory .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:hover,
.kisaka-what-do--directory .kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:focus-visible
   {
      background: var(--kisaka-what-do-ink);
      border-color: var(--kisaka-what-do-paper);
      color: var(--kisaka-what-do-paper);
   }

@media (min-width: 992px)
   {
      .kisaka-what-do--directory
         {
            height: 100svh;
         }
   }

/* Home: Sustainability -> What we do. The seam is a curtain (js/kisaka-motion.js).
   While the ink panel rises, Sustainability sinks back and dims under it, so
   the hard edge reads as depth rather than a wipe. This rides the curtain's
   timeline, --kisaka-home-curtain-what-we-do, so it reverses on the way back
   up. The panel's own content plays a timed entrance as it lands (the
   arrival block below). */
@supports (animation-timeline: view())
   {
      @media (prefers-reduced-motion: no-preference)
         {
            body.kisaka-home-page .kisaka-about-help.kisaka-curtain-held::after
               {
                  content: "";
                  position: absolute;
                  inset: 0;
                  z-index: 20;
                  background: var(--kisaka-what-do-ink, #0a0b0a);
                  opacity: 0;
                  pointer-events: none;
                  animation: kisaka-what-do-held-dim linear none;
                  animation-timeline: --kisaka-home-curtain-what-we-do;
                  animation-range: entry 0% entry 100%;
               }

            body.kisaka-home-page .kisaka-about-help.kisaka-curtain-held .kisaka-about-help__layout
               {
                  transform-origin: 50% 20%;
                  animation: kisaka-what-do-held-sink linear none;
                  animation-timeline: --kisaka-home-curtain-what-we-do;
                  animation-range: entry 0% entry 100%;
               }
         }
   }

/* Home: What we do -> Our clients. As the light panel rises, each piece of
   What we do lifts, shrinks a touch and dims on its own, just before the
   panel's edge reaches it, so the bottom rows go first and the heading last.
   Rides Our clients' curtain timeline, so it unwinds on the way back up.
   Uses translate, scale and filter rather than opacity and transform, so it
   never fights the arrival and exit transitions on the same elements. The
   ranges match the one-screen two-column layout, so it runs from 992px. */
@supports (animation-timeline: view())
   {
      @media (prefers-reduced-motion: no-preference) and (min-width: 992px)
         {
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__title,
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__lead,
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__item,
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__note,
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__btns
               {
                  animation: kisaka-what-do-held-recede linear both;
                  animation-timeline: --kisaka-home-curtain-our-clients;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__title,
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__lead,
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__note,
            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__btns
               {
                  transform-origin: 0% 50%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__item:nth-child(6n + 6)
               {
                  animation-range: entry 0% entry 25%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__item:nth-child(6n + 5)
               {
                  animation-range: entry 2% entry 30%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__item:nth-child(6n + 4)
               {
                  animation-range: entry 10% entry 40%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__item:nth-child(6n + 3)
               {
                  animation-range: entry 21% entry 51%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__item:nth-child(6n + 2)
               {
                  animation-range: entry 33% entry 63%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__item:nth-child(6n + 1)
               {
                  animation-range: entry 42% entry 72%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__btns
               {
                  animation-range: entry 0% entry 29%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__note
               {
                  animation-range: entry 5% entry 35%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__lead
               {
                  animation-range: entry 22% entry 52%;
               }

            body.kisaka-home-page .kisaka-what-do--directory.kisaka-curtain-held .kisaka-about-industries__title
               {
                  animation-range: entry 37% entry 67%;
               }
         }
   }

@keyframes kisaka-what-do-held-recede
   {
      to
         {
            translate: 0 -3vh;
            scale: 0.96;
            filter: brightness(0.4);
         }
   }

body.kisaka-home-page .kisaka-what-do--directory.is-wd-armed .kisaka-wd-word
   {
      display: inline-block;
      opacity: 0;
      transform: translate3d(0, 0.55em, 0);
   }

@media (prefers-reduced-transparency: reduce)
   {
      .kisaka-what-do--directory
         {
            --kisaka-industries-material: #1c1d1c;
            --kisaka-industries-material-press: #262726;
         }
   }

@media (prefers-contrast: more)
   {
      .kisaka-what-do--directory
         {
            --kisaka-industries-muted: rgba(243, 244, 236, 0.84);
            --kisaka-industries-rule: rgba(243, 244, 236, 0.32);
         }
   }

/* Home / Contact us: the former What we do layout (eyebrow, masked headline,
   ruled rows) as the last panel before the footer, held to one screen. */
.kisaka-what-do.kisaka-home-contact
   {
      display: flex;
      flex-direction: column;
      height: 100svh;
      min-height: 0;
   }

.kisaka-home-contact .kisaka-what-do__intro
   {
      display: flex;
      flex: 1 1 auto;
      flex-direction: column;
      justify-content: flex-start;
      height: auto;
      min-height: 0;
   }

.kisaka-home-contact .kisaka-what-do__intro-inner
   {
      justify-content: flex-start;
      width: 100%;
      height: auto;
      padding-top: calc(var(--kisaka-header-h, 72px) + 8px);
      padding-bottom: clamp(24px, 4svh, 48px);
   }

.kisaka-home-contact .kisaka-what-do__headline
   {
      margin-top: clamp(18px, 3.2svh, 40px);
      font-size: clamp(2.4rem, min(4.6vw, 7svh), 4.5rem);
   }

.kisaka-home-contact .kisaka-what-do__services
   {
      flex: none;
   }

.kisaka-home-contact .kisaka-what-do__service
   {
      min-height: clamp(72px, 11.5svh, 124px);
      padding-top: clamp(12px, 2svh, 24px);
      padding-bottom: clamp(12px, 2svh, 24px);
   }

.kisaka-home-contact .kisaka-what-do__service h4
   {
      font-family: var(--kisaka-font-accent);
      font-size: clamp(1.6rem, min(2.8vw, 4.6svh), 3rem);
   }

.kisaka-home-contact .kisaka-what-do__service p
   {
      font-family: var(--kisaka-font-family);
   }

/* Contact desk: the direct line and a live open/closed state (js/main.js)
   in the space beside the headline. */
.kisaka-home-contact__lead
   {
      min-width: 0;
   }

.kisaka-home-contact__desk
   {
      display: grid;
      gap: 14px;
      margin-top: 28px;
      color: rgba(243, 244, 236, 0.72);
      font-family: var(--kisaka-font-accent);
      font-size: 15px;
      line-height: 1.5;
   }

.kisaka-home-contact__direct
   {
      display: grid;
      gap: 18px;
      margin: 0;
   }

.kisaka-home-contact__item
   {
      min-width: 0;
   }

.kisaka-home-contact__item dt
   {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin: 0 0 0.35rem;
      color: var(--kisaka-red);
      font-size: 12px;
      font-weight: 600;
      letter-spacing: 0.08em;
      line-height: 1.2;
      text-transform: uppercase;
   }

.kisaka-home-contact__icon
   {
      flex: none;
      width: 1rem;
      height: 1rem;
      fill: none;
      stroke: currentColor;
      stroke-width: 1.75;
      stroke-linecap: round;
      stroke-linejoin: round;
   }

.kisaka-home-contact__item dd
   {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      margin: 0;
   }

.kisaka-home-contact__item a
   {
      color: var(--kisaka-what-do-paper, #f3f4ec);
      font-size: 16px;
      font-variant-numeric: tabular-nums;
      line-height: 1.45;
      overflow-wrap: anywhere;
      text-decoration: none;
      background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
      transition: background-size 260ms ease, color 260ms ease;
   }

.kisaka-home-contact__item a:hover, .kisaka-home-contact__item a:focus-visible
   {
      color: var(--kisaka-what-do-paper, #f3f4ec);
      background-size: 100% 1px;
   }

.kisaka-home-contact__status, .kisaka-home-contact__promise
   {
      margin: 0;
      font-size: 13px;
      color: rgba(243, 244, 236, 0.52);
   }

.kisaka-home-contact__status
   {
      display: flex;
      align-items: center;
      gap: 8px;
      padding-top: 14px;
      border-top: 1px solid rgba(243, 244, 236, 0.14);
      font-variant-numeric: tabular-nums;
   }

.kisaka-home-contact__status.is-open
   {
      color: var(--kisaka-what-do-paper, #f3f4ec);
   }

/* One primary route: Get in touch keeps the full title size and a lit
   description; the RFP and careers rows step down a size. */
.kisaka-home-contact .kisaka-home-contact__primary p
   {
      color: rgba(243, 244, 236, 0.82);
   }

.kisaka-home-contact .kisaka-home-contact__primary:hover p,
.kisaka-home-contact .kisaka-home-contact__primary:focus-visible p
   {
      color: rgba(10, 11, 10, 0.6);
   }

.kisaka-home-contact .kisaka-what-do__service:not(.kisaka-home-contact__primary) h4
   {
      font-size: clamp(1.4rem, min(2.2vw, 3.6svh), 2.3rem);
   }

/* Share the rows' gutters so the eyebrow, headline and desk line up with
   the row numbers and arrows. */
@media (min-width: 768px)
   {
      .kisaka-home-contact .kisaka-what-do__intro-inner
         {
            max-width: none;
            padding-right: max(24px, calc((100vw - 1140px) / 2));
            padding-left: max(24px, calc((100vw - 1140px) / 2));
         }
   }

/* Headline and desk sit on a shared baseline just above the rows, so the
   spare height opens under the header instead of between words and links. */
@media (min-width: 992px)
   {
      .kisaka-home-contact .kisaka-what-do__intro-inner
         {
            display: grid;
            flex: 1 1 auto;
            grid-template-columns: minmax(0, 1fr) minmax(280px, 380px);
            align-content: end;
            align-items: end;
            column-gap: clamp(40px, 6vw, 96px);
         }

      .kisaka-home-contact__desk
         {
            margin-top: 0;
         }
   }

@media (max-width: 767px)
   {
      /* The partner desk stacks under the headline, so short phones get a
         taller panel rather than rows drawn over the desk. */
      .kisaka-what-do.kisaka-home-contact
         {
            height: auto;
            min-height: 100svh;
         }

      .kisaka-home-contact .kisaka-what-do__intro-inner
         {
            padding-bottom: 20px;
         }

      .kisaka-home-contact .kisaka-what-do__headline
         {
            margin-top: 16px;
            font-size: clamp(1.9rem, min(8.4vw, 5.4svh), 3rem);
         }

      .kisaka-home-contact .kisaka-what-do__service
         {
            gap: 4px 12px;
            min-height: 0;
            padding: clamp(10px, 1.8svh, 18px) 20px;
         }

      .kisaka-home-contact .kisaka-what-do__service h4
         {
            font-size: clamp(1.3rem, min(6.4vw, 3.6svh), 2rem);
         }

      .kisaka-home-contact .kisaka-what-do__service p
         {
            font-size: 13px;
         }
   }

.kisaka-home-redesign
   {
      /* clip, not hidden: hidden makes this a scroll container, and the section
         curtains' view timelines (js/kisaka-motion.js) would then follow a box
         that never scrolls instead of the page. */
      overflow: clip;
      background: #070605;
      padding: 0;
   }

html.kisaka-home-page
   {
      scrollbar-width: none;
      -ms-overflow-style: none;
   }

html.kisaka-home-page::-webkit-scrollbar
   {
      display: none;
   }

.kisaka-home-launch
   {
      position: relative;
   }

.kisaka-home-mission
   {
      position: relative;

      /* Fit under the fixed header: the snap scroll parks this section
         scroll-padding-top below the viewport top, so a full 100svh would
         push the stats row below the fold. */
      min-height: calc(100svh - var(--kisaka-header-h, 72px) - 8px);
      display: flex;
      flex-direction: column;
      background: #fff;
   }

.kisaka-home-mission__inner
   {
      flex: 1;
      display: flex;
      flex-direction: column;
      min-height: inherit;
   }

.kisaka-home-launch__frame, .kisaka-home-mission__frame
   {
      width: 100%;
      margin: 0 auto;
   }

.kisaka-home-launch__frame
   {
      position: relative;
      min-height: 100svh;
      overflow: hidden;
      background: #070605;
      color: #fff;
      isolation: isolate;
   }

.kisaka-home-launch__frame::after
   {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      top: 66%;
      bottom: 0;
      z-index: 3;
      height: auto;
      background: rgba(4, 3, 3, 0.56);
      border-top: 1px solid rgba(255, 255, 255, 0.1);
      pointer-events: none;
   }

/* Photo, band and grid settle as the red preloader fades. See the
   "Home launch intro" block further down for the copy that follows. */
body.kisaka-home-intro-ready .kisaka-home-launch__photo
   {
      -webkit-transform: scale(1.08);
      transform: scale(1.08);
   }

body.kisaka-home-intro-playing .kisaka-home-launch__photo,
body.kisaka-home-intro-complete .kisaka-home-launch__photo
   {
      -webkit-transform: scale(1.01);
      transform: scale(1.01);
   }

body.kisaka-home-intro-playing .kisaka-home-launch__photo
   {
      -webkit-transition: -webkit-transform 2.4s cubic-bezier(0.16, 1, 0.3, 1);
      transition: transform 2.4s cubic-bezier(0.16, 1, 0.3, 1);
   }

body.kisaka-home-intro-ready .kisaka-home-launch__grid
   {
      -webkit-clip-path: inset(0 100% 0 0);
      clip-path: inset(0 100% 0 0);
   }

body.kisaka-home-intro-ready .kisaka-home-launch__frame::after
   {
      opacity: 0;
   }

body.kisaka-home-intro-playing .kisaka-home-launch__grid,
body.kisaka-home-intro-complete .kisaka-home-launch__grid
   {
      -webkit-clip-path: inset(0 0 0 0);
      clip-path: inset(0 0 0 0);
   }

body.kisaka-home-intro-playing .kisaka-home-launch__frame::after,
body.kisaka-home-intro-complete .kisaka-home-launch__frame::after
   {
      opacity: 1;
   }

/* The divider draws left to right; the column rule appears as the wipe passes it. */
body.kisaka-home-intro-playing .kisaka-home-launch__grid
   {
      -webkit-transition: -webkit-clip-path 1.2s cubic-bezier(0.65, 0, 0.35, 1) 0.5s;
      transition: clip-path 1.2s cubic-bezier(0.65, 0, 0.35, 1) 0.5s;
   }

body.kisaka-home-intro-playing .kisaka-home-launch__frame::after
   {
      -webkit-transition: opacity 0.9s cubic-bezier(0.4, 0, 0.2, 1) 0.45s;
      transition: opacity 0.9s cubic-bezier(0.4, 0, 0.2, 1) 0.45s;
   }

.kisaka-home-launch__shade
   {
      z-index: 1;
      background: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.98)), color-stop(34%, rgba(0, 0, 0, 0.84)), color-stop(58%, rgba(0, 0, 0, 0.26)), to(rgba(0, 0, 0, 0.1))), -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.74)), color-stop(42%, rgba(0, 0, 0, 0.08)), to(rgba(0, 0, 0, 0.34)));
      background: linear-gradient(90deg, rgba(0, 0, 0, 0.98) 0%, rgba(0, 0, 0, 0.84) 34%, rgba(0, 0, 0, 0.26) 58%, rgba(0, 0, 0, 0.1) 100%), linear-gradient(0deg, rgba(0, 0, 0, 0.74) 0%, rgba(0, 0, 0, 0.08) 42%, rgba(0, 0, 0, 0.34) 100%);
   }

.kisaka-home-launch__grid::before
   {
      content: "";
      position: absolute;
      inset: 66% 0 0;
      background-image: linear-gradient(to right, transparent 0, transparent calc(34% - 1px), rgba(255, 255, 255, 0.1) calc(34% - 1px), rgba(255, 255, 255, 0.1) 34%, transparent 34%);
   }

.kisaka-home-launch__headline
   {
      left: clamp(26px, 4.8vw, 74px);
      top: clamp(122px, 20svh, 178px);
      width: min(1260px, calc(100% - clamp(52px, 9.6vw, 148px)));
      max-width: none;
   }

.kisaka-home-launch__headline h1
   {
      margin: 0;
      color: #fff;
      font-size: clamp(2.65rem, 4.05vw, 4.9rem);
      line-height: 1.06;
      font-weight: 500;
      letter-spacing: 0;
   }

.kisaka-home-launch__headline h1 span
   {
      display: block;
   }

.kisaka-home-launch__headline .kisaka-home-launch__accent
   {
      color: var(--kisaka-red);
      font-weight: 600;
   }

.kisaka-home-launch__position
   {
      left: clamp(26px, 4.8vw, 74px);
      top: calc(66% + clamp(22px, 4vh, 34px));
      bottom: auto;
      width: calc(34% - clamp(42px, 7vw, 96px));
   }

.kisaka-home-launch__position p, .kisaka-home-mission__eyebrow
   {
      margin: 0;
      color: rgba(255, 255, 255, 0.74);
      font-size: 15px;
      line-height: 1.5;
      font-weight: 500;
   }

.kisaka-home-launch__position p
   {
      font-family: var(--kisaka-font-accent);
      font-size: clamp(17px, 1.3vw, 20px);
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.06em;
   }

.kisaka-home-launch__brief
   {
      left: calc(34% + 32px);
      width: calc(66% - 88px);
      right: auto;
      top: calc(66% + clamp(22px, 4vh, 34px));
      bottom: auto;
      max-width: none;
   }

.kisaka-home-launch__brief p
   {
      margin: 0;
      color: rgba(255, 255, 255, 0.92);
      font-size: clamp(1rem, 1.28vw, 1.18rem);
      line-height: 1.45;
      font-weight: 400;
   }

.kisaka-home-launch__brief [data-kisaka-home-intro="brief"]
   {
      font-family: var(--kisaka-font-accent);
      font-size: 1.12rem;
      line-height: 1.5;
      letter-spacing: -0.01em;
      font-weight: 400;
   }

.kisaka-home-scroll-cue:hover, .kisaka-home-scroll-cue:focus-visible
   {
      color: #fff;
   }

.kisaka-home-scroll-cue:focus-visible
   {
      outline: 1px solid rgba(255, 255, 255, 0.76);
      outline-offset: 7px;
      border-radius: 3px;
   }

.kisaka-home-scroll-cue__arrow
   {
      display: block;
      width: 34px;
      height: 34px;
      -webkit-animation: kisaka-scroll-cue-float 1.9s cubic-bezier(0.45, 0, 0.55, 1) infinite;
      animation: kisaka-scroll-cue-float 1.9s cubic-bezier(0.45, 0, 0.55, 1) infinite;
   }

.kisaka-home-scroll-cue__arrow svg
   {
      display: block;
      width: 100%;
      height: 100%;
      fill: none;
      stroke: currentColor;
      stroke-width: 1.5;
      stroke-linecap: round;
      stroke-linejoin: round;
   }

body.kisaka-home-intro-ready:not(.kisaka-home-intro-complete) .kisaka-home-scroll-cue,
body.kisaka-home-scroll-cue-hidden .kisaka-home-scroll-cue
   {
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
      -webkit-transform: translate3d(-50%, 10px, 0);
      transform: translate3d(-50%, 10px, 0);

      /* Leaving: get out of the way before the page moves. */
      -webkit-transition: color 220ms ease, opacity 200ms var(--kisaka-ease-out), visibility 0s linear 200ms, -webkit-transform 200ms var(--kisaka-ease-out);
      transition: color 220ms ease, opacity 200ms var(--kisaka-ease-out), visibility 0s linear 200ms, transform 200ms var(--kisaka-ease-out);
   }

.kisaka-home-launch__actions
   {
      display: flex;
      flex-wrap: wrap;
      gap: 14px;
      margin-top: 24px;
   }

.kisaka-home-launch__btn--ghost, .kisaka-home-launch__btn--ghost:visited
   {
      background: #fff;
      border: 0.5px solid var(--kisaka-red);
      color: var(--kisaka-red);
   }

.kisaka-home-launch__btn--ghost:hover, .kisaka-home-launch__btn--ghost:focus-visible
   {
      background: var(--kisaka-red);
      border-color: var(--kisaka-red);
      color: #fff;
   }

.kisaka-home-launch__actions .kisaka-home-launch__btn--ghost,
.kisaka-home-launch__actions .kisaka-home-launch__btn--ghost:visited,
.kisaka-about-industries__btns .kisaka-home-launch__btn--ghost,
.kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:visited
   {
      background: #080808;
      border-color: #080808;
      color: #fff;
   }

.kisaka-home-launch__actions .kisaka-home-launch__btn--ghost:hover,
.kisaka-home-launch__actions .kisaka-home-launch__btn--ghost:focus-visible,
.kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:hover,
.kisaka-about-industries__btns .kisaka-home-launch__btn--ghost:focus-visible
   {
      background: #fff;
      border-color: #080808;
      color: #080808;
   }

.kisaka-home-launch__actions .kisaka-home-launch__btn--ghost,
.kisaka-home-launch__actions .kisaka-home-launch__btn--ghost:visited
   {
      border-color: rgba(255, 255, 255, 0.88);
   }

/* Home launch intro. Plays as the red preloader fades and again whenever the
   page scrolls back to the hero; JS (initKisakaHomeLoadIntro) adds .is-visible
   to each stage on its own beat and the stagger inside a stage lives here. Each headline line rises out of its
   own mask. The masks drop once the lines land. */
.kisaka-home-launch__headline h1 > span
   {
      /* Descender buffer so the clip never shaves g/p/y at rest. */
      padding-bottom: 0.12em;
      margin-bottom: -0.12em;
   }

body.kisaka-home-intro-ready .kisaka-home-launch__headline:not(.is-settled) h1 > span
   {
      overflow: hidden;
   }

.kisaka-home-launch__headline h1 .kisaka-home-launch__reveal
   {
      display: block;
   }

body.kisaka-home-intro-ready .kisaka-home-launch__headline:not(.is-settled) .kisaka-home-launch__reveal
   {
      will-change: transform;
   }

body.kisaka-home-intro-playing .kisaka-home-launch__headline h1 > span:nth-child(2) > .kisaka-home-launch__reveal
   {
      -webkit-transition-delay: 0.09s;
      transition-delay: 0.09s;
   }

body.kisaka-home-intro-playing .kisaka-home-launch__headline h1 > span:nth-child(3) > .kisaka-home-launch__reveal
   {
      -webkit-transition-delay: 0.18s;
      transition-delay: 0.18s;
   }

body.kisaka-home-intro-playing .kisaka-home-launch__headline h1 > span:nth-child(4) > .kisaka-home-launch__reveal
   {
      -webkit-transition-delay: 0.27s;
      transition-delay: 0.27s;
   }

body.kisaka-home-intro-ready .kisaka-home-launch__headline.is-visible .kisaka-home-launch__reveal
   {
      -webkit-transform: translate3d(0, 0, 0);
      transform: translate3d(0, 0, 0);
   }

/* The two accent words arrive white and warm to red once their lines land. */
body.kisaka-home-intro-ready .kisaka-home-launch__headline .kisaka-home-launch__accent
   {
      color: #fff;
   }

body.kisaka-home-intro-playing .kisaka-home-launch__headline .kisaka-home-launch__accent
   {
      -webkit-transition: color 0.7s cubic-bezier(0.4, 0, 0.2, 1) 0.9s;
      transition: color 0.7s cubic-bezier(0.4, 0, 0.2, 1) 0.9s;
   }

body.kisaka-home-intro-ready .kisaka-home-launch__headline.is-visible .kisaka-home-launch__accent
   {
      color: var(--kisaka-red);
   }

body.kisaka-home-intro-ready .kisaka-home-launch [data-kisaka-home-type]::before
   {
      content: attr(data-kisaka-home-full-text);
      grid-area: 1 / 1;
      visibility: hidden;
      pointer-events: none;
      -webkit-user-select: none;
      -ms-user-select: none;
      user-select: none;
   }

body.kisaka-home-intro-ready .kisaka-home-launch .kisaka-home-type-visible
   {
      grid-area: 1 / 1;
   }

body.kisaka-home-intro-ready .kisaka-home-launch [data-kisaka-home-type].is-visible
   {
      opacity: 1;
      visibility: visible;
   }

body.kisaka-home-intro-ready .kisaka-home-launch [data-kisaka-home-type].is-typing .kisaka-home-type-visible::after
   {
      content: "";
      display: inline-block;
      width: 1px;
      height: 1em;
      margin-left: 4px;
      background: currentColor;
      vertical-align: -0.12em;
      -webkit-animation: kisaka-home-type-caret 0.76s step-end infinite;
      animation: kisaka-home-type-caret 0.76s step-end infinite;
   }

@media (prefers-reduced-motion: no-preference)
   {
      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting [data-kisaka-home-intro="brief"].is-visible .kisaka-home-launch__word
         {
            opacity: 0;
            transform: translate3d(0, -0.5em, 0);
            transition: opacity 300ms var(--kisaka-ease-out) 0.05s, transform var(--kisaka-dur-reveal) var(--kisaka-ease-out) 0.05s;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting [data-kisaka-home-type].is-visible
         {
            opacity: 0;
            transition: opacity 300ms var(--kisaka-ease-out) 0.1s;
         }

      /* The divider lines wipe off the way they drew on, left to right, and the
         band under them fades. .is-hero-reset holds them hidden until the replay. */
      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting .kisaka-home-launch__grid
         {
            clip-path: inset(0 0 0 100%);
            transition: clip-path 0.8s cubic-bezier(0.65, 0, 0.35, 1);
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting .kisaka-home-launch__frame::after
         {
            opacity: 0;
            transition: opacity 0.5s var(--kisaka-ease-out) 0.2s;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-reset .kisaka-home-launch__grid
         {
            clip-path: inset(0 100% 0 0);
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-reset .kisaka-home-launch__frame::after
         {
            opacity: 0;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting .kisaka-home-launch__headline h1 > span > .kisaka-home-launch__reveal
         {
            transform: translate3d(0, -110%, 0);
            transition: transform var(--kisaka-dur-reveal) var(--kisaka-ease-out);
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting .kisaka-home-launch__headline h1 > span:nth-child(4) > .kisaka-home-launch__reveal
         {
            transition-delay: 0.12s;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting .kisaka-home-launch__headline h1 > span:nth-child(3) > .kisaka-home-launch__reveal
         {
            transition-delay: 0.18s;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting .kisaka-home-launch__headline h1 > span:nth-child(2) > .kisaka-home-launch__reveal
         {
            transition-delay: 0.24s;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch.is-hero-exiting .kisaka-home-launch__headline h1 > span:nth-child(1) > .kisaka-home-launch__reveal
         {
            transition-delay: 0.3s;
         }
   }

@media (prefers-reduced-motion: reduce)
   {
      body.kisaka-home-intro-ready .kisaka-home-launch__photo
         {
            opacity: 1;
            -webkit-transform: scale(1.01);
            transform: scale(1.01);
            -webkit-transition: none;
            transition: none;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch__grid
         {
            -webkit-clip-path: none;
            clip-path: none;
            -webkit-transition: none;
            transition: none;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch__frame::after
         {
            opacity: 1;
            -webkit-transition: none;
            transition: none;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch__headline .kisaka-home-launch__accent
         {
            color: var(--kisaka-red);
            -webkit-transition: none;
            transition: none;
         }

      body.kisaka-home-intro-ready .kisaka-home-launch [data-kisaka-home-type].is-typing .kisaka-home-type-visible::after
         {
            display: none;
         }

      .kisaka-home-scroll-cue__arrow
         {
            -webkit-animation: none;
            animation: none;
         }

      /* Fade only, no travel. */
      body.kisaka-home-intro-ready:not(.kisaka-home-intro-complete) .kisaka-home-scroll-cue,
      body.kisaka-home-scroll-cue-hidden .kisaka-home-scroll-cue
         {
            -webkit-transform: translate3d(-50%, 0, 0);
            transform: translate3d(-50%, 0, 0);
         }
   }

.kisaka-home-mission__frame
   {
      display: grid;
      grid-template-columns: 44% 56%;
      flex: 1;
      min-height: 0;
      background: #fff;
   }

.kisaka-home-mission__copy
   {
      display: flex;
      flex-direction: column;
      justify-content: center;
      padding: clamp(34px, 5vw, 70px) clamp(24px, 3.4vw, 44px);

      /* Nudge the centred copy lower with a relative offset (not padding), so the
         frame height is unchanged and the stats row stays above the fold. */
      position: relative;
      top: clamp(28px, 5vh, 72px);
   }

.kisaka-home-mission__eyebrow
   {
      color: rgba(44, 45, 63, 0.62);
      margin-bottom: 28px;
      font-family: var(--kisaka-font-accent);
      font-size: clamp(12px, 1vw, 14px);
      font-weight: 500;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      line-height: 1.5;
   }

/* The statement speaks in the article serif; a serif reads smaller than the sans,
   so it sits a step up, with tighter leading and tracking for its size. */
.kisaka-home-mission__copy h2
   {
      margin: 0;
      color: #201b1d;
      font-family: "Newsreader", Georgia, "Times New Roman", serif;
      font-optical-sizing: auto;
      font-size: clamp(1.8rem, 2.6vw, 2.75rem);
      line-height: 1.16;
      font-weight: 400;
      letter-spacing: -0.015em;
   }

.kisaka-home-mission__copy h2 span
   {
      display: block;
   }

.kisaka-home-mission__hl
   {
      font-style: normal;
      font-weight: 500;
      color: var(--kisaka-red);
   }

.kisaka-home-mission__readmore:before, .kisaka-home-mission__readmore:after
   {
      content: none;
   }

.kisaka-home-mission__readmore:hover,
.kisaka-home-mission__readmore:focus-visible,
.kisaka-home-mission__readmore:active
   {
      background: #201b1d;
      border-color: #201b1d;
      color: #fff;
      -webkit-text-fill-color: #fff;
   }

.kisaka-home-mission__readmore:active
   {
      -webkit-transform: scale(0.97);
      -ms-transform: scale(0.97);
      transform: scale(0.97);
   }

.kisaka-home-mission__visual
   {
      position: relative;
      overflow: hidden;
      background: radial-gradient(circle at 72% 38%, rgba(255, 255, 255, 0.22) 0, transparent 36%), linear-gradient(145deg, #d8ccb4 0%, #c9bc9f 52%, #bfb092 100%);
   }

/* Draw-on-scroll: lines collapse to their midpoint until the panel enters view. */
.kisaka-home-mission__visual.is-armed
   {
      --kh-draw: 0;
   }

.kisaka-home-mission__visual.is-armed.is-drawn
   {
      --kh-draw: 1;
   }

.kisaka-home-mission__visual::before
   {
      width: 1px;
      height: 130%;
      left: 64%;
      top: -15%;
      --kh-rot: 60deg;
      -webkit-transition-delay: 0s;
      -o-transition-delay: 0s;
      transition-delay: 0s;
   }

.kisaka-home-mission__visual::after
   {
      width: 1px;
      height: 120%;
      right: 18%;
      top: -8%;
      --kh-rot: -60deg;
      -webkit-transition-delay: 0.22s;
      -o-transition-delay: 0.22s;
      transition-delay: 0.22s;
   }

.kisaka-home-mission__line--one
   {
      width: 1px;
      height: 120%;
      left: 46%;
      top: 0;
      --kh-rot: 90deg;
      -webkit-transition-delay: 0.11s;
      -o-transition-delay: 0.11s;
      transition-delay: 0.11s;
   }

.kisaka-home-mission__line--two
   {
      width: 1px;
      height: 88%;
      left: 68%;
      bottom: -16%;
      --kh-rot: 0deg;
      -webkit-transition-delay: 0.33s;
      -o-transition-delay: 0.33s;
      transition-delay: 0.33s;
   }

.kisaka-home-mission__line--three
   {
      width: 1px;
      height: 72%;
      left: 34%;
      bottom: -20%;
      --kh-rot: -60deg;
      -webkit-transition-delay: 0.44s;
      -o-transition-delay: 0.44s;
      transition-delay: 0.44s;
   }

/* Mask reveal: each line clips its own text, and the words rise up out of
   the line as the panel enters view — echoing the red guide lines drawing in.
   The clip is the line's box (overflow hidden); the inner .reveal slides up. */
.kisaka-home-mission__copy .kisaka-home-mission__eyebrow, .kisaka-home-mission__copy h2 span
   {
      overflow: hidden;

      /* Small buffer so descenders/italics aren't shaved by the clip at rest. */
      padding-bottom: 0.1em;
      margin-bottom: -0.1em;
   }

/* The button clips its own reveal but must keep its symmetric padding,
   otherwise the label sits below the vertical centre. */
.kisaka-home-mission__copy .kisaka-home-mission__readmore
   {
      overflow: hidden;
   }

/* Breathing room under the eyebrow before the statement (the mask rule above
   collapses its margin to a descender buffer, so restore a real gap here). */
.kisaka-home-mission__copy .kisaka-home-mission__eyebrow
   {
      margin-bottom: clamp(30px, 3.2vw, 44px);
   }

.kisaka-home-mission__reveal
   {
      display: block;
      -webkit-transition: -webkit-transform 0.95s cubic-bezier(0.22, 1, 0.36, 1);
      -o-transition: transform 0.95s cubic-bezier(0.22, 1, 0.36, 1);
      transition: transform 0.95s cubic-bezier(0.22, 1, 0.36, 1);
      transition: transform 0.95s cubic-bezier(0.22, 1, 0.36, 1), -webkit-transform 0.95s cubic-bezier(0.22, 1, 0.36, 1);
      will-change: transform;
   }

/* Button: keep label + arrow on one line while the whole lockup rises. */
.kisaka-home-mission__readmore .kisaka-home-mission__reveal
   {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex;
      -webkit-box-align: center;
      -ms-flex-align: center;
      align-items: center;
      gap: 8px;
   }

.kisaka-home-mission__readmore .kisaka-home-mission__reveal > span:first-child
   {
      color: inherit;
      font-weight: inherit;
      white-space: nowrap;
   }

/* Armed: each line's words wait fully below its own clip edge. Scroll-up
   flips the origin so the same reveal falls in from above. */
.kisaka-home-mission__copy.is-armed .kisaka-home-mission__reveal
   {
      -webkit-transform: translateY(115%);
      -ms-transform: translateY(115%);
      transform: translateY(115%);
   }

html[data-kisaka-scroll-dir="up"] .kisaka-home-mission__copy.is-armed:not(.is-drawn) .kisaka-home-mission__reveal
   {
      -webkit-transform: translateY(-115%);
      -ms-transform: translateY(-115%);
      transform: translateY(-115%);
   }

/* Button label sits centred in a taller box, so it needs more travel to
   clear its own clip edge before rising. */
.kisaka-home-mission__copy.is-armed .kisaka-home-mission__readmore .kisaka-home-mission__reveal
   {
      -webkit-transform: translateY(200%);
      -ms-transform: translateY(200%);
      transform: translateY(200%);
   }

html[data-kisaka-scroll-dir="up"] .kisaka-home-mission__copy.is-armed:not(.is-drawn) .kisaka-home-mission__readmore .kisaka-home-mission__reveal
   {
      -webkit-transform: translateY(-200%);
      -ms-transform: translateY(-200%);
      transform: translateY(-200%);
   }

/* Drawn: words rise back up into the line. The button rule above is equally
   specific, so the drawn state has to name the button to win. */
.kisaka-home-mission__copy.is-armed.is-drawn .kisaka-home-mission__reveal
   {
      -webkit-transform: translateY(0);
      -ms-transform: translateY(0);
      transform: translateY(0);
   }

.kisaka-home-mission__copy.is-armed.is-drawn .kisaka-home-mission__readmore .kisaka-home-mission__reveal
   {
      -webkit-transform: translateY(0);
      -ms-transform: translateY(0);
      transform: translateY(0);
   }

/* Stagger the rise so it flows with the line-draw delays (0 -> 0.44s). */
.kisaka-home-mission__eyebrow .kisaka-home-mission__reveal
   {
      -webkit-transition-delay: 0.05s;
      -o-transition-delay: 0.05s;
      transition-delay: 0.05s;
   }

.kisaka-home-mission__copy h2 span:nth-child(1) .kisaka-home-mission__reveal
   {
      -webkit-transition-delay: 0.14s;
      -o-transition-delay: 0.14s;
      transition-delay: 0.14s;
   }

.kisaka-home-mission__copy h2 span:nth-child(2) .kisaka-home-mission__reveal
   {
      -webkit-transition-delay: 0.21s;
      -o-transition-delay: 0.21s;
      transition-delay: 0.21s;
   }

.kisaka-home-mission__copy h2 span:nth-child(3) .kisaka-home-mission__reveal
   {
      -webkit-transition-delay: 0.28s;
      -o-transition-delay: 0.28s;
      transition-delay: 0.28s;
   }

.kisaka-home-mission__copy h2 span:nth-child(4) .kisaka-home-mission__reveal
   {
      -webkit-transition-delay: 0.35s;
      -o-transition-delay: 0.35s;
      transition-delay: 0.35s;
   }

.kisaka-home-mission__copy h2 span:nth-child(5) .kisaka-home-mission__reveal
   {
      -webkit-transition-delay: 0.42s;
      -o-transition-delay: 0.42s;
      transition-delay: 0.42s;
   }

.kisaka-home-mission__readmore .kisaka-home-mission__reveal
   {
      -webkit-transition-delay: 0.52s;
      -o-transition-delay: 0.52s;
      transition-delay: 0.52s;
   }

/* Leave Mission through the same masks, in reverse reading order.
   Keeping these as transitions lets a changed gesture restore the live frame. */
@media (prefers-reduced-motion: no-preference)
   {
      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion] .kisaka-home-mission__reveal,
      .kisaka-home-mission__visual[data-kisaka-mission-motion]::before,
      .kisaka-home-mission__visual[data-kisaka-mission-motion]::after,
      .kisaka-home-mission__visual[data-kisaka-mission-motion] .kisaka-home-mission__line
         {
            transition-duration: var(--kisaka-dur-reveal);
            transition-timing-function: var(--kisaka-ease-out);
            transition-delay: 0s;
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] .kisaka-home-mission__reveal
         {
            transform: translateY(115%);
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] .kisaka-home-mission__readmore .kisaka-home-mission__reveal
         {
            transform: translateY(200%);
         }

      .kisaka-home-mission__copy[data-kisaka-mission-motion] .kisaka-home-mission__readmore
         {
            transition: border-color 200ms ease, color 200ms ease, background-color 200ms ease, opacity var(--kisaka-dur-reveal) var(--kisaka-ease-out), transform var(--kisaka-dur-reveal) var(--kisaka-ease-out);
         }

      .kisaka-home-mission__copy[data-kisaka-mission-motion^="exit"] .kisaka-home-mission__readmore
         {
            opacity: 0;
            transform: translateY(10px);
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] .kisaka-home-mission__eyebrow .kisaka-home-mission__reveal
         {
            transition-delay: 0.42s;
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] h2 > span:nth-child(1) > .kisaka-home-mission__reveal
         {
            transition-delay: 0.35s;
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] h2 > span:nth-child(2) > .kisaka-home-mission__reveal
         {
            transition-delay: 0.28s;
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] h2 > span:nth-child(3) > .kisaka-home-mission__reveal
         {
            transition-delay: 0.21s;
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] h2 > span:nth-child(4) > .kisaka-home-mission__reveal
         {
            transition-delay: 0.14s;
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion^="exit"] h2 > span:nth-child(5) > .kisaka-home-mission__reveal
         {
            transition-delay: 0.07s;
         }

      /* Downward navigation retracts toward the top of each mask, matching
         the edge Mission reveals from when returning from Sustainability. */
      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion="exit-down"] .kisaka-home-mission__reveal
         {
            transform: translateY(-115%);
         }

      .kisaka-home-mission__copy.is-armed[data-kisaka-mission-motion="exit-down"] .kisaka-home-mission__readmore .kisaka-home-mission__reveal
         {
            transform: translateY(-200%);
         }

      .kisaka-home-mission__copy[data-kisaka-mission-motion="exit-down"] .kisaka-home-mission__readmore
         {
            transform: translateY(-10px);
         }

      .kisaka-home-mission__visual[data-kisaka-mission-motion^="exit"]::before,
      .kisaka-home-mission__visual[data-kisaka-mission-motion^="exit"]::after,
      .kisaka-home-mission__visual[data-kisaka-mission-motion^="exit"] .kisaka-home-mission__line
         {
            transform: rotate(var(--kh-rot, 0deg)) scaleY(0);
         }

      /* Scroll arrow: arrives after Read more, and leaves first on the way out
         (it is last in reading order). It enters from the same edge as the copy. */
      .kisaka-home-mission__scroll-cue.is-armed
         {
            opacity: 0;
            pointer-events: none;
            transform: translate3d(-50%, 10px, 0);
            transition: color 220ms ease, opacity var(--kisaka-dur-reveal) var(--kisaka-ease-out), transform var(--kisaka-dur-reveal) var(--kisaka-ease-out);
         }

      html[data-kisaka-scroll-dir="up"] .kisaka-home-mission__scroll-cue.is-armed:not(.is-drawn)
         {
            transform: translate3d(-50%, -10px, 0);
         }

      .kisaka-home-mission__scroll-cue.is-armed.is-drawn
         {
            opacity: 1;
            pointer-events: auto;
            transform: translate3d(-50%, 0, 0);
            transition-delay: 0s, 0.6s, 0.6s;
         }

      .kisaka-home-mission__scroll-cue.is-armed[data-kisaka-mission-motion]
         {
            transition-delay: 0s;
         }

      .kisaka-home-mission__scroll-cue.is-armed[data-kisaka-mission-motion^="exit"]
         {
            opacity: 0;
            pointer-events: none;
            transform: translate3d(-50%, 10px, 0);
         }

      .kisaka-home-mission__scroll-cue.is-armed[data-kisaka-mission-motion="exit-down"]
         {
            transform: translate3d(-50%, -10px, 0);
         }
   }

@media (prefers-reduced-motion: reduce)
   {
      .kisaka-home-mission__visual::before,
      .kisaka-home-mission__visual::after,
      .kisaka-home-mission__line
         {
            -webkit-transition: none;
            -o-transition: none;
            transition: none;
         }

      .kisaka-home-mission__visual.is-armed
         {
            --kh-draw: 1;
         }

      .kisaka-home-mission__reveal
         {
            -webkit-transition: none;
            -o-transition: none;
            transition: none;
         }

      .kisaka-home-mission__copy.is-armed .kisaka-home-mission__reveal
         {
            -webkit-transform: none;
            -ms-transform: none;
            transform: none;
         }

      .kisaka-home-mission__readmore:active
         {
            -webkit-transform: none;
            -ms-transform: none;
            transform: none;
         }
   }

.kisaka-home-mission__stats
   {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: clamp(16px, 3vw, 32px);
      padding: clamp(28px, 4.2vw, 52px) clamp(24px, 5vw, 80px);
      border-top: 1px solid rgba(32, 27, 29, 0.08);
   }

.kisaka-home-mission__stat
   {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 8px;
      text-align: center;
   }

.kisaka-home-mission__stat-value
   {
      color: #000;
      font-family: var(--kisaka-font-accent);
      font-size: clamp(2.75rem, 3.2vw, 3rem);
      line-height: 1;
      font-weight: 600;
      letter-spacing: -.045em;
      font-optical-sizing: auto;
      font-variant-numeric: tabular-nums;
   }

.kisaka-home-mission__stat-digits
   {
      display: inline-block;
      min-width: 2ch;
   }

.kisaka-home-mission__stat:nth-child(2) .kisaka-home-mission__stat-digits
   {
      min-width: 1ch;
   }

.kisaka-home-mission__stat-suffix
   {
      display: inline-block;
      color: var(--kisaka-red);
      -webkit-text-fill-color: var(--kisaka-red);
      margin-left: .12em;
      font-size: .5em;
      vertical-align: top;
      line-height: 1.2;
      letter-spacing: 0;
   }

@supports (-webkit-text-stroke: 1px #000)
   {
      .kisaka-home-mission__stat-digits
         {
            color: transparent;
            -webkit-text-fill-color: transparent;
            -webkit-text-stroke: 2px #000;
         }
   }

.kisaka-home-mission__stat-label
   {
      color: #665b55;
      font-family: var(--kisaka-font-accent);
      font-size: clamp(12px, 1vw, 14px);
      line-height: 1.4;
      font-weight: 500;
      text-transform: uppercase;
      letter-spacing: .06em;
   }

.kisaka-home-mission__scroll-cue
   {
      position: absolute;
      left: 50%;
      bottom: 18px;
      z-index: 8;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 34px;
      height: 34px;
      border: 0;
      border-radius: 0;
      background: transparent;
      color: var(--kisaka-red);
      text-decoration: none !important;
      -webkit-box-shadow: none;
      box-shadow: none;
      -webkit-transform: translate3d(-50%, 0, 0);
      transform: translate3d(-50%, 0, 0);
      -webkit-transition: color 220ms ease, border-color 220ms ease, background-color 220ms ease, -webkit-box-shadow 220ms ease;
      transition: color 220ms ease, border-color 220ms ease, background-color 220ms ease, -webkit-box-shadow 220ms ease;
      -o-transition: color 220ms ease, border-color 220ms ease, background-color 220ms ease, box-shadow 220ms ease;
      transition: color 220ms ease, border-color 220ms ease, background-color 220ms ease, box-shadow 220ms ease;
      transition: color 220ms ease, border-color 220ms ease, background-color 220ms ease, box-shadow 220ms ease, -webkit-box-shadow 220ms ease;
   }

.kisaka-home-mission__scroll-cue .kisaka-home-scroll-cue__arrow
   {
      width: 34px;
      height: 34px;
   }

.kisaka-home-mission__scroll-cue:hover, .kisaka-home-mission__scroll-cue:focus-visible
   {
      border-color: transparent;
      background: transparent;
      color: var(--kisaka-red-700);
      -webkit-box-shadow: none;
      box-shadow: none;
   }

.kisaka-home-mission__scroll-cue:focus-visible
   {
      outline: 2px solid rgba(203, 31, 52, 0.38);
      outline-offset: 4px;
      border-radius: 4px;
   }

@media (max-width: 991px)
   {
      .kisaka-home-launch__frame
         {
            min-height: 720px;
         }

      .kisaka-home-launch__photo
         {
            background-position: 66% center;
         }

      .kisaka-home-launch__shade
         {
            background: linear-gradient(90deg, rgba(0, 0, 0, 0.96) 0%, rgba(0, 0, 0, 0.74) 48%, rgba(0, 0, 0, 0.18) 100%), linear-gradient(0deg, rgba(0, 0, 0, 0.86) 0%, rgba(0, 0, 0, 0.18) 55%, rgba(0, 0, 0, 0.5) 100%);
         }

      .kisaka-home-launch__headline
         {
            top: calc(var(--kisaka-header-h) + 82px);
            right: 24px;
            left: 24px;
            width: auto;
         }

      .kisaka-home-launch__headline h1
         {
            font-size: clamp(2rem, 8vw, 3.25rem);
            text-wrap: balance;
         }

      .kisaka-home-launch__frame::after
         {
            top: auto;
            bottom: 0;
            height: 290px;
         }

      .kisaka-home-launch__position
         {
            top: auto;
            left: 24px;
            right: 24px;
            bottom: 226px;
            width: auto;
         }

      .kisaka-home-launch__brief
         {
            top: auto;
            left: 24px;
            right: 24px;
            width: calc(100% - 48px);
            bottom: 30px;
            max-width: none;
         }

      .kisaka-home-scroll-cue
         {
            bottom: 306px;
         }

      .kisaka-home-mission__frame
         {
            grid-template-columns: 1fr;
         }

      .kisaka-home-mission__visual
         {
            min-height: 220px;
         }

      .kisaka-home-mission__stats
         {
            grid-template-columns: repeat(2, minmax(0, 1fr));
         }
   }

@media (max-width: 767px)
   {
      .kisaka-home-redesign
         {
            padding-top: 0;
         }

      .kisaka-home-page .slicknav_menu .slicknav_icon-bar
         {
            background-color: rgba(255, 255, 255, 0.9);
         }

      .kisaka-home-page .slicknav_nav
         {
            margin-top: 52px;
            padding: 14px 18px;
            background: rgba(20, 18, 15, 0.9);
            border: 1px solid rgba(255, 255, 255, 0.14);
            border-radius: 4px;
            -webkit-backdrop-filter: none;
            backdrop-filter: none;
         }

      .kisaka-home-page .slicknav_nav li a,
      .kisaka-home-page .slicknav_nav .slicknav_arrow,
      .kisaka-home-page .slicknav_nav li .dropdown li a
         {
            color: rgba(255, 255, 255, 0.9);
         }

      .kisaka-home-launch__grid
         {
            background-image: linear-gradient(to bottom, transparent 0, transparent calc(58% - 1px), rgba(255, 255, 255, 0.08) calc(58% - 1px), rgba(255, 255, 255, 0.08) 58%, transparent 58%);
         }

      .kisaka-home-launch__grid::before
         {
            inset: 58% 0 0;
            background-image: linear-gradient(to right, transparent 0, transparent calc(50% - 1px), rgba(255, 255, 255, 0.08) calc(50% - 1px), rgba(255, 255, 255, 0.08) 50%, transparent 50%);
         }

      .kisaka-home-launch__actions
         {
            gap: 10px;
         }

      .kisaka-home-mission__copy
         {
            padding: 34px 24px;
         }

      .kisaka-home-mission__stats
         {
            grid-template-columns: 1fr;
            padding: 28px 24px 96px;
         }

      .kisaka-home-mission__scroll-cue
         {
            bottom: 18px;
         }
   }
