html, body { margin: 0; padding: 0; background: #fbfaf7; }
* { box-sizing: border-box; }
#root { width: 100vw; height: 100vh; }

/* ---------- Hamburger button (hidden on desktop) ---------- */
.gl-hamburger { display: none; }

/* ---------- Scroll-reveal animations ---------- */
.gl-reveal,
.gl-section-title,
.gl-section-lead {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.9s cubic-bezier(.2,.7,.3,1), transform 0.9s cubic-bezier(.2,.7,.3,1);
  will-change: opacity, transform;
}
.gl-reveal.in-view,
.gl-section-title.in-view,
.gl-section-lead.in-view {
  opacity: 1;
  transform: translateY(0);
}
.gl-section-lead { transition-delay: 0.12s; }
.gl-reveal-delay-1 { transition-delay: 0.08s; }
.gl-reveal-delay-2 { transition-delay: 0.16s; }
.gl-reveal-delay-3 { transition-delay: 0.24s; }
.gl-reveal-delay-4 { transition-delay: 0.32s; }
.gl-reveal-delay-5 { transition-delay: 0.4s; }
.gl-reveal-delay-6 { transition-delay: 0.48s; }
.gl-reveal-delay-7 { transition-delay: 0.56s; }

/* Hero title gentle letter-spacing/fade entry */
@keyframes glHeroFade {
  from { opacity: 0; transform: translateY(20px); letter-spacing: 0.16em; }
  to   { opacity: 1; transform: translateY(0);    letter-spacing: 0.06em; }
}
.gl-hero-title-anim {
  animation: glHeroFade 1.4s cubic-bezier(.2,.7,.3,1) both;
}

/* Hero CTA gentle pulse */
@keyframes glCtaIn {
  from { opacity: 0; transform: translateY(-14px); }
  to   { opacity: 1; transform: translateY(0); }
}
.gl-recruit-cta { animation: glCtaIn 1.0s cubic-bezier(.2,.7,.3,1) 0.6s both; }

/* Hero footer mission slides in from bottom */
@keyframes glMissionIn {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
.gl-hero-footer { animation: glMissionIn 1.2s cubic-bezier(.2,.7,.3,1) 0.9s both; }

/* Service icon stroke draw-in */
.gl-service-icon svg * {
  stroke-dasharray: 120;
  stroke-dashoffset: 120;
  transition: stroke-dashoffset 1.2s cubic-bezier(.2,.7,.3,1);
}
.gl-service-card.in-view .gl-service-icon svg * {
  stroke-dashoffset: 0;
}
/* Filled shapes (rect with no stroke) — animate opacity instead */
.gl-service-card .gl-service-icon svg [fill]:not([fill="none"]) {
  opacity: 0;
  transition: opacity 0.8s ease 0.4s;
  stroke-dasharray: 0;
}
.gl-service-card.in-view .gl-service-icon svg [fill]:not([fill="none"]) {
  opacity: 1;
}

/* Service card hover lift */
.gl-service-card {
  transition: transform 0.4s cubic-bezier(.2,.7,.3,1), background-color 0.3s;
}
.gl-service-card:hover {
  transform: translateY(-4px);
}
.gl-service-card:hover .gl-service-card-title {
  color: #1e3a6e;
}
.gl-service-card-title {
  transition: color 0.3s;
}

/* Vision image gentle zoom on load */
@keyframes glVisionIn {
  from { opacity: 0; transform: scale(0.96); }
  to   { opacity: 1; transform: scale(1); }
}
.gl-vision-image-wrap img {
  transition: transform 1.4s cubic-bezier(.2,.7,.3,1), opacity 1.4s ease;
}
.gl-vision-image-wrap.in-view img {
  animation: glVisionIn 1.4s cubic-bezier(.2,.7,.3,1) both;
}

/* About row stagger reveal */
.gl-about-row {
  opacity: 0;
  transform: translateX(-12px);
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(.2,.7,.3,1);
}
.gl-about-row.in-view { opacity: 1; transform: translateX(0); }

/* Recruit row stagger reveal */
.gl-recruit-row {
  opacity: 0;
  transform: translateX(-12px);
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(.2,.7,.3,1);
}
.gl-recruit-row.in-view { opacity: 1; transform: translateX(0); }

/* Partner benefit reveal */
.gl-partner-benefit {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s ease, transform 0.7s cubic-bezier(.2,.7,.3,1);
}
.gl-partner-benefit.in-view { opacity: 1; transform: translateY(0); }

/* Nav link hover underline */
.gl-nav-link {
  position: relative;
}
.gl-nav-link::after {
  content: "";
  position: absolute;
  left: 0; right: 100%;
  bottom: 0;
  height: 1px;
  background: #13243d;
  transition: right 0.4s cubic-bezier(.2,.7,.3,1);
}
.gl-nav-link:hover::after {
  right: 0;
}

/* Recruit link arrow rotate on hover */
.gl-recruit-link .nc-arrow {
  transition: transform 0.4s cubic-bezier(.2,.7,.3,1);
  display: inline-block;
}
.gl-recruit-link:hover .nc-arrow {
  transform: translate(4px, -4px);
}

/* Message photo subtle hover */
.gl-message-photo {
  transition: transform 0.5s cubic-bezier(.2,.7,.3,1);
}
.gl-message-photo:hover {
  transform: scale(1.01);
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-delay: 0 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ============ WIDE DESKTOP (≥1400px) — center content with growing side padding ============ */
@media (min-width: 1400px) {
  .gl-section,
  .gl-footer {
    padding-left: max(56px, calc((100vw - 1288px) / 2)) !important;
    padding-right: max(56px, calc((100vw - 1288px) / 2)) !important;
  }
  .gl-vision-text { padding-left: max(56px, calc((100vw - 1288px) / 2)) !important; }
  .gl-vision-image-wrap { padding-right: max(40px, calc((100vw - 1288px) / 2)) !important; }
}

/* ============ TABLET (~1024px) ============ */
@media (max-width: 1024px) {
  .gl-header { padding: 16px 28px !important; }
  .gl-nav { gap: 18px !important; }
  .gl-nav-link { font-size: 10px !important; }

  .gl-hero { height: 620px !important; }
  .gl-hero-content { padding: 56px 28px 100px !important; }
  .gl-hero-title { font-size: 56px !important; }
  .gl-recruit-cta { top: 118px !important; right: 28px !important; padding: 14px 20px !important; }
  .gl-recruit-cta-text { font-size: 13px !important; }
  .gl-hero-footer { padding: 22px 28px !important; }

  .gl-section { padding: 56px 32px !important; }
  .gl-section-title { font-size: 40px !important; }

  .gl-service-grid { grid-template-columns: 1fr !important; }
  .gl-service-card { padding: 32px 8px !important; min-height: 0 !important; border-bottom: 1px solid rgba(19,36,61,0.12); }
  .gl-service-card:last-child { border-bottom: none; }
  .gl-service-card-divider { display: none !important; }

  .gl-vision-layout { grid-template-columns: 1fr !important; }
  .gl-vision-text { padding: 60px 32px !important; }
  .gl-vision-image-wrap { padding: 60px 32px !important; }

  .gl-message-grid { grid-template-columns: 1fr 360px !important; column-gap: 32px !important; }
  .gl-message-photo { width: auto !important; }

  .gl-partner-grid { grid-template-columns: 1fr !important; gap: 32px !important; }

  .gl-about-row { grid-template-columns: 160px 1fr !important; }

  .gl-recruit-row { grid-template-columns: 140px 1fr !important; gap: 16px !important; }

  .gl-footer { padding: 56px 32px 32px !important; }
  .gl-footer-grid { grid-template-columns: 1fr !important; gap: 24px !important; }
}

/* ============ MOBILE (~768px) ============ */
@media (max-width: 768px) {
  .gl-header { padding: 14px 20px !important; }
  .gl-nav { display: none !important; }
  .gl-hamburger {
    display: flex !important;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 32px; height: 32px;
    background: transparent; border: none; cursor: pointer; padding: 0;
  }
  .gl-hamburger span {
    display: block; width: 22px; height: 1.5px;
    background: #13243d; transition: all 0.3s;
  }
  .gl-hamburger.open span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
  .gl-hamburger.open span:nth-child(2) { opacity: 0; }
  .gl-hamburger.open span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

  .gl-mobile-nav {
    position: fixed !important;
    top: 60px !important; left: 0 !important; right: 0 !important;
    background: rgba(251, 250, 247, 0.98) !important;
    backdrop-filter: blur(14px) !important;
    border-bottom: 1px solid rgba(19, 36, 61, 0.08) !important;
    padding: 24px 28px !important;
    display: flex !important; flex-direction: column !important; gap: 0 !important;
    z-index: 99 !important;
  }
  .gl-mobile-nav .gl-nav-link {
    font-size: 13px !important;
    letter-spacing: 0.18em !important;
    padding: 18px 0 !important;
    border-bottom: 1px solid rgba(19, 36, 61, 0.08) !important;
    opacity: 1 !important;
  }

  .gl-hero { height: 540px !important; }
  .gl-hero-content { padding: 70px 20px 90px !important; }
  .gl-hero-title { font-size: 36px !important; line-height: 1.5 !important; margin-bottom: 24px !important; }
  .gl-recruit-cta {
    top: auto !important;
    right: auto !important;
    bottom: 80px !important;
    left: 20px !important;
    padding: 12px 18px !important;
  }
  .gl-recruit-cta-text { font-size: 12px !important; }
  .gl-recruit-cta-label { font-size: 9px !important; }
  .gl-recruit-cta-arrow { width: 30px !important; height: 30px !important; font-size: 12px !important; }
  .gl-hero-footer { padding: 16px 20px !important; gap: 14px !important; flex-wrap: wrap; }
  .gl-hero-footer-statement { font-size: 14px !important; }

  .gl-section { padding: 48px 20px !important; }
  .gl-section-title { font-size: 32px !important; margin-bottom: 16px !important; }
  .gl-section-lead { font-size: 14px !important; line-height: 1.85 !important; margin-bottom: 8px !important; }
  .gl-service-grid { margin-top: 8px !important; }

  .gl-service-card { padding: 20px 4px !important; min-height: 0 !important; }
  .gl-service-card-title { font-size: 20px !important; margin-bottom: 12px !important; }

  .gl-vision-text { padding: 48px 20px !important; }
  .gl-vision-image-wrap { padding: 32px 20px !important; min-height: 320px; }
  .gl-vision-image { width: 100% !important; min-width: 0 !important; max-width: 480px; }

  /* Message: stack photo below text on mobile */
  .gl-message-grid { display: block !important; }
  .gl-message-photo {
    width: 100% !important;
    max-width: 320px !important;
    margin: 32px auto 0 !important;
  }
  .gl-message-photo-caption img { height: 26px !important; }
  .gl-message-photo-caption > div { font-size: 15px !important; }
  .gl-message-photo-caption { gap: 12px !important; }

  .gl-recruit-link { padding: 36px 20px 24px !important; gap: 16px !important; }
  .gl-recruit-link .nc-badge { right: 16px !important; padding: 5px 10px 6px !important; font-size: 9px !important; }
  .gl-recruit-link h3 { font-size: 20px !important; }
  .gl-recruit-link .nc-arrow { font-size: 24px !important; }

  .gl-mid-header h3 { font-size: 22px !important; }
  .gl-recruit-row {
    grid-template-columns: 1fr !important;
    gap: 6px !important;
    padding: 18px 0 !important;
    font-size: 14px !important;
  }
  .gl-recruit-row > div:first-child { font-size: 12px !important; }

  .gl-partner-cta { padding: 14px 20px !important; font-size: 13px !important; }
  .gl-partner-benefit { padding: 22px 20px !important; grid-template-columns: 50px 1fr !important; gap: 12px !important; }
  .gl-partner-benefit-num { font-size: 20px !important; }
  .gl-partner-benefit-title { font-size: 16px !important; }

  .gl-about-row {
    grid-template-columns: 1fr !important;
    gap: 4px !important;
    padding: 16px 4px !important;
  }
  .gl-about-label { font-size: 12px !important; }
  .gl-about-value { font-size: 14px !important; }

  .gl-footer { padding: 32px 20px 20px !important; }
  .gl-footer-grid { grid-template-columns: 1fr !important; gap: 24px !important; }
}
