/* Chaotic Fish Design — homepage section modules */


/*=== 2. Hero ===*/
.cf-sec-hero{background:var(--cf-ink);min-height:90vh;position:relative}
.cf-sec-hero .cf-hero-inner{align-items:center;display:flex;flex-direction:column;gap:clamp(1rem,3vw,2rem);justify-content:flex-start;padding:var(--section-pad-y) var(--section-pad-x) 0}
.cf-sec-hero .cf-hero-mark{margin-top:1rem;width:min(75%, 1000px)}
.cf-sec-hero .cf-hero-mark svg{display:block;height:auto;max-height:calc(70vh - var(--header-height));overflow:visible;width:100%}
.cf-sec-hero .cf-hero-mark img{display:block;height:auto;max-height:calc(70vh - var(--header-height));width:100%}
.cf-sec-hero .cf-hero-tagline{color:var(--cf-cream);font-family:var(--font-brush);font-size:clamp(1.75rem,4vw,2.75rem);line-height:1.2;margin:0;max-width:min(80%, 1060px);opacity:0;text-align:center}
.cf-sec-hero .cf-hero-tagline.is-in{animation:cf-fade-in-down .7s ease forwards}
@keyframes cf-fade-in-down{
  from{opacity:0;transform:translateY(-24px) rotate(-2.5deg)}
  to{opacity:1;transform:translateY(0) rotate(-2.5deg)}
}
.cf-sec-hero .cf-hero-tagline .cf-emphasis-orange{color:var(--cf-orange)}
.cf-sec-hero .cf-hero-tagline .cf-emphasis-purple{color:var(--cf-purple)}
.cf-sec-hero .cf-hero-cta-row{align-items:center;display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:center}
.cf-sec-hero .cf-hero-cta{opacity:0;transform-origin:center}
.cf-sec-hero .cf-hero-cta.is-in{animation:cf-grow-center .5s cubic-bezier(.34,1.56,.64,1) forwards}
.cf-sec-hero .cf-hero-cta.is-in-done{opacity:1;transform:scale(1)}
@keyframes cf-grow-center{
  from{opacity:0;transform:scale(.4)}
  to{opacity:1;transform:scale(1)}
}
.cf-sec-hero .cf-scroll-cue{width:140px}
.cf-sec-hero .cf-scroll-cue svg{display:block;height:auto;width:100%}

/*=== 3. Chaos intro statement ===*/
.cf-sec-chaos-intro{background:var(--cf-cream);margin-top:-2px}
.cf-sec-chaos-intro .cf-chaos-inner{display:flex;flex-wrap:wrap;gap:2rem;padding:var(--section-pad-y) var(--section-pad-x)}
.cf-sec-chaos-intro .cf-chaos-headline{flex:1;font-family:var(--font-brush);font-size:clamp(3.375rem,7.5vw,5.25rem);line-height:1.15;margin:0;min-width:280px;text-align:right;transform:rotate(-2.5deg)}
.cf-sec-chaos-intro .cf-word-accent--orange{font-size:1.15em}
.cf-sec-chaos-intro .cf-chaos-body{flex:1;min-width:280px;padding-left:1.75rem;position:relative;transform:rotate(1deg)}
.cf-sec-chaos-intro .cf-chaos-body-divider{height:100%;left:0;position:absolute;top:0;width:16px}
.cf-sec-chaos-intro .cf-chaos-body-divider path{fill:none;stroke:var(--cf-purple);stroke-width:2.5}
.cf-sec-chaos-intro .cf-chaos-subhead{font-family:var(--font-ui);font-size:1.15rem;font-weight:600;margin:0 0 .5rem}
.cf-sec-chaos-intro .cf-chaos-copy{color:var(--cf-text-muted);font-family:var(--font-ui);line-height:1.5;margin:0 0 1.25rem}

/*=== 4. Featured work ===*/
.cf-sec-featured-work{background:var(--cf-ink-soft);margin-top:-1px}
.cf-sec-featured-work .cf-fw-inner{padding:var(--section-pad-y) var(--section-pad-x)}
.cf-sec-featured-work .cf-fw-label{color:var(--cf-orange);font-family:var(--font-mono);font-weight:700;letter-spacing:.06em}
.cf-sec-featured-work .cf-fw-heading{color:var(--cf-cream);font-family:var(--font-voice);margin:.5rem 0 0}
.cf-sec-featured-work .cf-fw-grid{display:grid;gap:1.5rem;grid-template-columns:repeat(4,1fr);margin-top:2rem;}
@media (max-width: 1100px) {
  .cf-sec-featured-work .cf-fw-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 600px) {
  .cf-sec-featured-work .cf-fw-grid {
    grid-template-columns: 1fr;
  }
}
.cf-sec-featured-work .cf-fw-card{background:var(--cf-cream);border-radius:8px;box-shadow:0 4px 8px rgba(0,0,0,.25);flex:0 1 240px;overflow:hidden;transition:box-shadow .3s ease,transform .3s ease;}
.cf-sec-featured-work .cf-fw-card--1{transform:rotate(-5deg)}
.cf-sec-featured-work .cf-fw-card--2{transform:rotate(3deg)}
.cf-sec-featured-work .cf-fw-card--3{transform:rotate(-2deg)}
.cf-sec-featured-work .cf-fw-card--4{transform:rotate(4deg)}
.cf-sec-featured-work .cf-fw-card:hover{transform:rotate(0deg) scale(1.1)}
.cf-sec-featured-work .cf-fw-card--1:hover,.cf-sec-featured-work .cf-fw-card--3:hover{box-shadow:0 10px 20px rgba(247,118,5,.4)}
.cf-sec-featured-work .cf-fw-card--2:hover,.cf-sec-featured-work .cf-fw-card--4:hover{box-shadow:0 10px 20px rgba(114,26,130,.4)}
.cf-sec-featured-work .cf-fw-card-thumb{align-items:center;aspect-ratio:4/3;background:var(--cf-ink);display:flex;justify-content:center}
.cf-sec-featured-work .cf-fw-card-thumb svg{height:32px;width:32px}
.cf-sec-featured-work .cf-fw-card-thumb svg path{stroke:var(--cf-text-muted)}
.cf-sec-featured-work .cf-fw-card-body{padding:1rem}
.cf-sec-featured-work .cf-fw-card-label{color:var(--cf-orange);font-family:var(--font-mono);font-weight:700;letter-spacing:.05em}
.cf-sec-featured-work .cf-fw-card-title{color:var(--cf-ink);font-family:var(--font-voice);font-size:1.1rem;margin:.25rem 0 0}

/*=== 5. How we work ===*/
.cf-sec-process{background:var(--cf-cream);margin-top:-1px;}
.cf-sec-process .cf-process-heading{color:var(--cf-orange);font-family:var(--font-brush);font-size:clamp(2rem,4vw,2.75rem);margin:0;text-align:center}
.cf-sec-process .cf-process-steps{align-items:flex-start;display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:center}
.cf-sec-process .cf-process-step{text-align:center;width:220px}
.cf-sec-process .icon{align-items:center;display:flex;justify-content:center;margin:0 auto .5rem;width:clamp(72px, 9vw, 200px)}
.cf-sec-process .icon img{aspect-ratio:1/1;object-fit:contain;width:100%}
.cf-sec-process .cf-process-step-title{color:var(--cf-ink);font-family:var(--font-voice);font-size:1.2rem;margin:0 0 .35rem;}
.cf-sec-process .cf-process-step-text{color:var(--cf-text-muted);font-family:var(--font-ui);line-height:1.4;margin:0}
.cf-sec-process .cf-process-connector{align-items:center;align-self:flex-start;display:flex;flex-shrink:0;height:clamp(72px, 9vw, 200px);justify-content:center}
.cf-sec-process .cf-process-connector svg{display:block;height:clamp(28px, 4vw, 56px);transform:rotate(-90deg);width:clamp(28px, 4vw, 56px)}
.cf-sec-process .cf-process-connector--orange svg{color:var(--cf-orange)}
.cf-sec-process .cf-process-connector--purple svg{color:var(--cf-purple)}
@media (max-width: 560px) {
  .cf-sec-process .cf-process-connector {
    display: none;
  }
}

/*=== 6. Services ===*/
.cf-sec-services{background:var(--cf-ink);margin-top:-1px;padding:var(--section-pad-y) var(--section-pad-x);}
.cf-sec-services .cf-services-row{align-items:center;display:flex;flex-wrap:wrap;gap:2.5rem;}
.cf-sec-services .cf-services-copy{flex:1;min-width:260px;}
.cf-sec-services .cf-services-heading{color:var(--cf-cream);font-family:var(--font-voice);}
.cf-sec-services .cf-services-subhead{color:var(--cf-cream);font-family:var(--font-ui);margin-top:.75rem;}
.cf-sec-services .cf-services-grid{display:grid;flex:1.5;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));min-width:280px;text-align:center;}
.cf-sec-services .cf-service-item{color:inherit;display:block;text-decoration:none;}
.cf-sec-services .cf-service-item:focus-visible{outline:3px solid var(--cf-cream);outline-offset:4px;}
.cf-sec-services .cf-service-icon{aspect-ratio:1/1;margin:0 auto .75rem;position:relative;width:clamp(72px, 9vw, 150px);}
.cf-sec-services .cf-service-bg{display:block;inset:0;opacity:1;position:absolute;transition:opacity .35s ease;width:100%;}
.cf-sec-services .cf-service-bg.is-hover{opacity:0;}
.cf-sec-services .cf-service-item:hover .cf-service-bg.is-base,
.cf-sec-services .cf-service-item:focus-visible .cf-service-bg.is-base{opacity:0;}
.cf-sec-services .cf-service-item:hover .cf-service-bg.is-hover,
.cf-sec-services .cf-service-item:focus-visible .cf-service-bg.is-hover{opacity:1;}
.cf-sec-services .cf-service-overlay{display:block;inset:0;position:absolute;transition:transform .35s ease;width:100%;z-index:1;}
.cf-sec-services .cf-service-item:hover .cf-service-overlay,
.cf-sec-services .cf-service-item:focus-visible .cf-service-overlay{transform:scale(1.15);}
.cf-sec-services .cf-service-title{color:var(--cf-cream);font-family:var(--font-ui);font-weight:600;}

/*=== 7. About ===*/
.cf-sec-about{background:var(--cf-cream);margin-top:-1px;}
.cf-sec-about .cf-about-inner{align-items:center;display:flex;flex-wrap:wrap;gap:2rem;padding:var(--section-pad-y) var(--section-pad-x);}
.cf-sec-about .cf-about-image{flex:1 1 20%;min-width:280px;position:relative;}
.cf-sec-about .cf-about-image img{aspect-ratio:3/2;display:block;height:auto;width:100%;}
.cf-sec-about .cf-about-copy{flex:1 1 35%;min-width:260px;}
.cf-sec-about .cf-about-fish-cue{filter:drop-shadow(2px 5px 3px rgba(0,0,0,.35));height:90px;opacity:0;position:absolute;right:28px;top:16px;transform:translateY(-60%);width:90px;}
.cf-sec-about .cf-about-fish-cue svg{display:block;height:auto;width:100%;}

.cf-sec-about .cf-about-heading{font-family:var(--font-voice);font-size:clamp(2rem, 4vw, 2.75rem);margin:0 0 1rem;}
.cf-sec-about .cf-about-lead{font-family:var(--font-ui);font-size:1.2rem;font-weight:600;line-height:1.4;margin:0 0 1rem;}
.cf-sec-about .cf-about-body{color:var(--cf-text-muted);font-family:var(--font-ui);line-height:1.6;margin:0 0 1.5rem;}
.cf-sec-about .cf-about-cta{--btn-min-w:260px;}

/*=== 8. Testimonials ===*/
.cf-sec-testimonials{background:var(--cf-ink-soft);margin-top:-1px;}
.cf-sec-testimonials .cf-testimonials-inner{box-sizing:border-box;margin:0 auto;max-width:calc(1100px + var(--section-pad-x) * 2);padding:var(--section-pad-y) var(--section-pad-x);}
.cf-sec-testimonials .cf-testimonials-heading{color:var(--cf-cream);font-family:var(--font-voice);font-size:clamp(1.75rem, 3.5vw, 2.5rem);line-height:1.15;margin:0;max-width:26ch;}
.cf-sec-testimonials .cf-testimonials-asterisk{color:var(--cf-orange);}
.cf-sec-testimonials .cf-testimonial-thread{display:grid;gap:1.5rem 3rem;grid-template-columns:1fr 1fr;margin-top:2.5rem;padding-bottom:3rem;}
.cf-sec-testimonials .cf-testimonial{align-items:flex-end;display:flex;gap:.75rem;margin:0;}
.cf-sec-testimonials .cf-testimonial:nth-child(even){flex-direction:row-reverse;translate:0 3rem;}
.cf-sec-testimonials .cf-testimonial-avatar{background:#000;border:3px solid var(--cf-cream);border-radius:50%;flex:0 0 64px;height:64px;object-fit:cover;width:64px;}
.cf-sec-testimonials .cf-testimonial-card{background:var(--cf-cream);border-radius:18px 18px 18px 4px;color:var(--cf-ink);flex:1 1 auto;max-width:30rem;padding:1rem 1.25rem;}
.cf-sec-testimonials .cf-testimonial:nth-child(even) .cf-testimonial-card{border-radius:18px 18px 4px 18px;}
.cf-sec-testimonials .cf-testimonial-card.is-accent{background:var(--cf-purple);color:var(--cf-cream);}
.cf-sec-testimonials .cf-testimonial-card.is-accent-orange{background:var(--cf-orange);color:var(--cf-ink);}
.cf-sec-testimonials .cf-testimonial-quote{font-family:var(--font-ui);font-size:1.05rem;line-height:1.5;margin:0;}
.cf-sec-testimonials .cf-testimonial-quote p{margin:0;}
.cf-sec-testimonials .cf-testimonial-author{display:flex;flex-wrap:wrap;font-family:var(--font-ui);font-weight:600;gap:0 .5rem;margin-top:.6rem;}
.cf-sec-testimonials .cf-testimonial-title{font-weight:400;opacity:.75;}
.cf-sec-testimonials .cf-testimonial--typing .cf-testimonial-card{align-items:center;display:flex;flex:0 1 auto;gap:.75rem;}
.cf-sec-testimonials .cf-typing-dots{display:inline-flex;gap:4px;}
.cf-sec-testimonials .cf-typing-dots span{animation:cf-typing-bounce 1.2s ease-in-out infinite;background:var(--cf-ink);border-radius:50%;height:8px;opacity:.5;width:8px;}
.cf-sec-testimonials .cf-typing-dots span:nth-child(2){animation-delay:.15s;}
.cf-sec-testimonials .cf-typing-dots span:nth-child(3){animation-delay:.3s;}
.cf-sec-testimonials .cf-typing-label{font-family:var(--font-ui);font-size:.9rem;font-style:italic;margin:0;opacity:.75;}
.cf-sec-testimonials .cf-testimonials-fineprint{color:rgba(248,240,234,.6);font-family:var(--font-ui);font-size:.8rem;margin:2rem 0 0;}

@keyframes cf-typing-bounce {
  0%, 60%, 100% {
    transform: translateY(0);
  }
  30% {
    transform: translateY(-5px);
  }
}

@media (max-width: 700px) {
  .cf-sec-testimonials .cf-testimonial-thread {
    grid-template-columns: 1fr;
    padding-bottom: 0;
  }
  .cf-sec-testimonials .cf-testimonial:nth-child(even) {
    translate: none;
  }
  .cf-sec-testimonials .cf-testimonial-avatar {
    flex-basis: 48px;
    height: 48px;
    width: 48px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cf-sec-testimonials .cf-typing-dots span {
    animation: none;
  }
}

/*=== 9. Closing CTA banner ===*/
.cf-sec-cta-banner{background:var(--cf-orange);margin-top:-1px;}
.cf-sec-cta-banner .cf-cta-banner-inner{align-items:center;display:flex;flex-wrap:wrap;gap:1.5rem 3rem;justify-content:center;padding:var(--section-pad-y) var(--section-pad-x);}
.cf-sec-cta-banner .cf-cta-heading{color:var(--cf-ink);font-family:var(--font-brush);font-size:clamp(1.75rem, 4vw, 2.75rem);line-height:1.15;margin:0;text-align:center;}
.cf-sec-cta-banner .cf-cta-action{position:relative;}
.cf-sec-cta-banner .cf-cta-kokido{align-items:flex-end;bottom:calc(100% - 16px);display:flex;height:100px;left:14%;overflow:hidden;position:absolute;width:100px;z-index:0;}
.cf-sec-cta-banner .cf-cta-kokido img{display:block;height:79px;transform:translateY(100%);transition:transform .45s cubic-bezier(.34,1.56,.64,1);width:100px;}
.cf-sec-cta-banner .cf-cta-action:hover .cf-cta-kokido img,.cf-sec-cta-banner .cf-cta-action:focus-within .cf-cta-kokido img{transform:translateY(0);}
.cf-sec-cta-banner .cf-cta-button{z-index:1;}


@media (prefers-reduced-motion: reduce) {
  .cf-sec-cta-banner .cf-cta-kokido img {
    transition: none;
  }
}

/*=== 10. Footer ===*/
.cf-sec-footer{background:var(--cf-ink);color:var(--cf-cream);margin-top:-1px;}
.cf-sec-footer .cf-footer-inner{box-sizing:border-box;margin:0 auto;max-width:calc(1100px + var(--section-pad-x) * 2);padding:var(--section-pad-y) var(--section-pad-x) 1.5rem;}
.cf-sec-footer .cf-footer-cols{display:flex;flex-wrap:wrap;gap:2.5rem 3rem;justify-content:space-between;}
.cf-sec-footer .cf-footer-brand{flex:1 1 280px;max-width:360px;}
.cf-sec-footer .cf-footer-logo{align-items:center;color:var(--cf-cream);display:inline-flex;font-family:var(--font-voice);font-size:1.5rem;gap:.75rem;text-decoration:none;}
.cf-sec-footer .cf-footer-logo img{height:auto;width:56px;}
.cf-sec-footer .cf-footer-tagline{font-family:var(--font-ui);line-height:1.5;margin:1rem 0 0;opacity:.8;}
.cf-sec-footer .cf-footer-sanctuary{font-family:var(--font-ui);font-size:.9rem;line-height:1.5;margin:.5rem 0 0;opacity:.8;}
.cf-sec-footer .cf-footer-col{flex:0 1 auto;min-width:160px;}
.cf-sec-footer .cf-footer-heading{color:var(--cf-orange);font-family:var(--font-ui);font-size:.95rem;font-weight:700;margin:0 0 .75rem;}
.cf-sec-footer .cf-footer-links{display:flex;flex-direction:column;font-family:var(--font-ui);gap:.5rem;list-style:none;margin:0;padding:0;}
.cf-sec-footer a{color:inherit;text-decoration-color:rgba(248,240,234,.35);text-underline-offset:3px;transition:color .2s ease;}
.cf-sec-footer .cf-footer-links a{text-decoration:none;}
.cf-sec-footer a:hover,.cf-sec-footer a:focus-visible{color:var(--cf-orange);}
.cf-sec-footer a:focus-visible{border-radius:2px;outline:2px solid var(--cf-orange);outline-offset:3px;}
.cf-sec-footer .cf-footer-bottom{border-top:1px solid rgba(248,240,234,.1);display:flex;flex-wrap:wrap;font-family:var(--font-ui);font-size:.8rem;gap:.75rem 2rem;justify-content:space-between;line-height:1.5;margin-top:3rem;padding-top:1.25rem;}
.cf-sec-footer .cf-footer-copy{margin:0;opacity:.6;}
.cf-sec-footer .cf-footer-gag{margin:0;opacity:.6;text-align:right;}
.cf-sec-footer .cf-footer-gag-note{display:block;font-style:italic;margin-top:.25rem;}
.cf-sec-footer .cf-footer-asterisk{color:var(--cf-orange);}

@media (max-width: 700px) {
  .cf-sec-footer .cf-footer-gag {
    text-align: left;
  }
}


@media (prefers-reduced-motion: reduce) {
  .cf-sec-footer a {
    transition: none;
  }
}

/*=== Accessibility ===*/
@media (prefers-reduced-motion: reduce) {
  .cf-sec-hero .cf-hero-tagline,
  .cf-sec-hero .cf-hero-cta {
    animation: none;
    opacity: 1;
  }
  .cf-sec-hero .cf-hero-tagline {
    transform: rotate(-2.5deg);
  }
  .cf-sec-hero .cf-hero-cta {
    transform: scale(1);
  }
  .cf-sec-featured-work .cf-fw-card {
    transition: none;
  }
  .cf-sec-services .cf-service-bg,
  .cf-sec-services .cf-service-overlay {
    transition: none;
  }
  .cf-sec-about .cf-about-fish-cue {
    display: none;
  }
}