/* ============================================================
   코데라플로우 홈페이지 v2 — 스타일
   ============================================================ */

*{box-sizing:border-box}
html{scroll-behavior:auto}
/* Lenis 관성 스크롤 필수 CSS (native smooth-scroll 충돌 방지) */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
.lenis.lenis-smooth iframe{pointer-events:none}
body{
  margin:0;color:#191921;
  background:
    radial-gradient(760px 560px at 14% 3%, rgba(139,91,255,.15), transparent 68%),
    radial-gradient(820px 620px at 88% 7%, rgba(88,133,255,.13), transparent 66%),
    radial-gradient(680px 520px at 60% 17%, rgba(214,107,255,.10), transparent 68%),
    linear-gradient(180deg,#ffffff 0%,#f7f5fc 58%,#f1eef9 100%);
  background-repeat:no-repeat;
  font-family:"Pretendard Variable","Pretendard","Apple SD Gothic Neo","Malgun Gothic",-apple-system,system-ui,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;font-weight:400;
}
a{color:#5b4bff;text-decoration:none}
::selection{background:#5b4bff;color:#fff}
h1,h2,h3,p{margin:0}
img{max-width:100%}

.wrap-narrow{max-width:900px;margin:0 auto}
.wrap-wide{max-width:1200px;margin:0 auto;padding:0 28px}
.center{text-align:center}

/* ── 공통 섹션 헤드 ── */
.eyebrow{font-size:13px;font-weight:600;letter-spacing:.16em;margin-bottom:16px}
.eyebrow-purple{color:#5b4bff}
.eyebrow-light{color:#a99bff}
.section-title{font-size:clamp(30px,4.2vw,50px);font-weight:700;letter-spacing:-.03em;line-height:1.1}
.section-title.light{color:#fff}
.section-desc{margin-top:20px;font-size:17px;line-height:1.7;color:#57575f}
.section-desc.light{color:#a3a3ae}
.section-desc.center{margin-left:auto;margin-right:auto;max-width:52ch}
.purple{color:#5b4bff}
.grad{background:linear-gradient(120deg,#5b4bff,#8b5bff 45%,#c869ff);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ── 스크롤 등장(reveal) — JS 있을 때만 숨김 ── */
.anim .reveal{opacity:0;transform:translateY(34px);filter:blur(6px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1),filter .9s ease}
.anim .reveal.is-visible{opacity:1;transform:none;filter:none}
.anim .stagger > *{opacity:0;transform:translateY(34px);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}
.anim .stagger.is-visible > *{opacity:1;transform:none}

/* ============ HEADER (확실한 스크롤 변형) ============ */
.site-header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(255,255,255,.5);backdrop-filter:blur(3px) saturate(1.1);-webkit-backdrop-filter:blur(3px) saturate(1.1);border-bottom:1px solid rgba(25,25,33,0);transition:transform .45s cubic-bezier(.16,1,.3,1),background .35s ease,box-shadow .35s ease,border-color .35s ease,backdrop-filter .35s ease}
.header-inner{max-width:1200px;margin:0 auto;padding:0 28px;height:84px;display:flex;align-items:center;justify-content:space-between;gap:24px;transition:height .4s cubic-bezier(.16,1,.3,1)}
.site-header.scrolled{background:rgba(255,255,255,.9);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:0 12px 40px -22px rgba(25,25,33,.4);border-bottom-color:rgba(25,25,33,.08)}
.site-header.scrolled .header-inner{height:62px}
.site-header.hidden{transform:translateY(-102%)}

.brand{display:flex;align-items:center;gap:11px;color:#191921}
.brand-logo{flex:none;transition:transform .4s cubic-bezier(.16,1,.3,1)}
.site-header.scrolled .brand-logo{transform:scale(.84)}
.brand-word{display:flex;align-items:baseline;font-size:20px;line-height:1;transition:font-size .4s ease}
.site-header.scrolled .brand-word{font-size:18px}
.bw-a{font-family:Archivo,sans-serif;font-weight:900;letter-spacing:-.02em}
.bw-b{font-family:'JetBrains Mono',monospace;font-weight:600;letter-spacing:.05em;margin-left:1px}

.desktop-nav{display:flex;align-items:center;gap:4px}
.nav-link{padding:9px 15px;font-size:15px;font-weight:500;color:#44444d;border-radius:9px;transition:color .2s ease,background .2s ease}
.nav-link:hover{color:#191921;background:rgba(91,75,255,.08)}
.nav-careers{color:#5b4bff;font-weight:600}

.menu-btn{display:none;width:42px;height:42px;border:none;background:transparent;color:#191921;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:5px}
.menu-btn span{width:20px;height:2px;background:currentColor;border-radius:2px;transition:transform .3s ease,opacity .2s ease}
.menu-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.menu-btn[aria-expanded="true"] span:nth-child(2){opacity:0}
.menu-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.mobile-menu{display:none;border-top:1px solid rgba(25,25,33,.07);background:#fff;padding:8px 20px 18px;flex-direction:column;gap:2px}
.mobile-menu a{padding:13px 8px;font-size:16px;font-weight:500;color:#191921;border-bottom:1px solid rgba(25,25,33,.05)}
.mobile-menu .mm-careers{color:#5b4bff;font-weight:600}

/* ============ HERO — 전체화면 Spline 씬 ============ */
.hero-full{position:relative;width:100%;height:100vh;height:100dvh;overflow:hidden}
.hero-scene{display:block;width:100%;height:100%;pointer-events:auto;touch-action:pan-y}

/* ============ HERO (레거시 — 주석 보존용 스타일) ============ */
.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(24px,4.5vh,54px);text-align:center;padding:140px 24px 90px}
.blob{position:absolute;border-radius:50%;pointer-events:none;will-change:transform}
.blob-1{top:-6%;left:6%;width:min(46vw,560px);height:min(46vw,560px);background:radial-gradient(circle at 30% 30%,rgba(139,91,255,.4),rgba(139,91,255,0) 70%)}
.blob-2{top:0;right:0;width:min(50vw,620px);height:min(50vw,620px);background:radial-gradient(circle at 60% 40%,rgba(88,133,255,.36),rgba(88,133,255,0) 70%)}
.blob-3{bottom:-12%;left:34%;width:min(44vw,540px);height:min(44vw,540px);background:radial-gradient(circle at 50% 50%,rgba(214,107,255,.28),rgba(214,107,255,0) 70%)}
.hero-title{position:relative;z-index:2;font-family:Archivo,"Pretendard Variable",sans-serif;font-weight:800;text-transform:uppercase;letter-spacing:-.015em;line-height:1.04;font-size:clamp(32px,5.8vw,72px);max-width:18ch}

.hero-orb-wrap{position:relative;z-index:1;width:clamp(280px,42vw,500px);height:clamp(280px,42vw,500px);will-change:transform}
.hero-orb-wrap::before{content:"";position:absolute;inset:-14%;border-radius:50%;background:radial-gradient(circle,rgba(123,75,255,.4),rgba(123,75,255,0) 62%);filter:blur(26px);z-index:0}
.orb-spline{position:relative;z-index:2;display:block;width:100%;height:100%;pointer-events:none}
/* 히어로 CSS 오브 — 기하학적 구체(정원 + 규칙적 회전 광택) */
.orb-fallback{position:absolute;inset:0;z-index:1;border-radius:50%;overflow:hidden;
  background:radial-gradient(circle at 34% 28%,#f3efff 0%,#c3aaff 20%,#8b5bff 48%,#5b4bff 68%,#2a1c66 100%);
  box-shadow:inset -16px -22px 60px rgba(18,8,54,.5),inset 20px 18px 50px rgba(255,255,255,.28),0 40px 90px -34px rgba(74,55,242,.6);
  animation:orbFloat 7s ease-in-out infinite}
.orb-fallback::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(255,255,255,.30) 42deg,transparent 120deg,rgba(150,190,255,.22) 210deg,transparent 320deg);
  mix-blend-mode:screen;animation:orbSpin 16s linear infinite}
@keyframes orbSpin{to{transform:rotate(360deg)}}
@keyframes orbFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}

.scroll-ind{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);z-index:2;font-size:12px;letter-spacing:.2em;color:#9a9aa2;font-weight:500;animation:scrollBob 2s ease-in-out infinite}
@keyframes scrollBob{0%,100%{transform:translateX(-50%) translateY(0);opacity:.7}50%{transform:translateX(-50%) translateY(6px);opacity:1}}

/* ============ PHILOSOPHY ============ */
.philosophy{padding:clamp(90px,12vw,160px) 26px;text-align:center}
.phil-lead{font-size:clamp(22px,3vw,36px);line-height:1.5;font-weight:600;letter-spacing:-.02em;color:#191921;text-wrap:balance}
.phil-sub{margin:28px auto 0;max-width:56ch;font-size:16.5px;line-height:1.75;color:#57575f}

/* ============ HOW WE WORK (마퀴 1행, 카드 2배 높이) ============ */
.howwework{padding:clamp(80px,10vw,130px) 0;overflow:hidden}
.howwework .section-head{max-width:1200px;margin:0 auto 52px;padding:0 28px}
.marquee-mask{overflow:hidden;padding:10px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.process-track{display:flex;width:max-content;gap:24px;animation:marquee 46s linear infinite}
.marquee-mask:hover .process-track{animation-play-state:paused}
@keyframes marquee{to{transform:translateX(-50%)}}
.process-card{width:330px;height:520px;flex:none;display:flex;flex-direction:column;justify-content:space-between;
  border-radius:24px;border:1px solid rgba(25,25,33,.09);background:linear-gradient(170deg,#ffffff,#f7f6fb);
  padding:34px 30px;box-shadow:0 30px 60px -40px rgba(40,25,90,.35);transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease,border-color .4s ease}
.process-card:hover{transform:translateY(-8px);box-shadow:0 40px 70px -34px rgba(74,55,242,.4);border-color:rgba(139,91,255,.35)}
.pc-top{display:flex;align-items:center;justify-content:space-between}
.pc-num{font-family:'JetBrains Mono',monospace;font-size:52px;font-weight:600;letter-spacing:-.02em;background:linear-gradient(120deg,#5b4bff,#c869ff);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1}
.pc-dot{width:12px;height:12px;border-radius:50%;background:linear-gradient(120deg,#5b4bff,#c869ff);box-shadow:0 0 0 6px rgba(91,75,255,.1)}
.pc-body h3{font-size:24px;font-weight:700;letter-spacing:-.02em;margin-bottom:14px}
.pc-body p{font-size:15.5px;line-height:1.7;color:#57575f}
.pc-bar{height:4px;border-radius:999px;background:linear-gradient(90deg,#5b4bff,#c869ff);opacity:.85}

/* ============ SERVICES (dark) ============ */
.services{position:relative;padding:clamp(80px,11vw,140px) 26px;background:#0e0e14;color:#fff;overflow:hidden}
.svc-blob{position:absolute;border-radius:50%;pointer-events:none;will-change:transform}
.svc-blob-1{top:-10%;right:-6%;width:560px;height:560px;background:radial-gradient(circle,rgba(139,91,255,.4),transparent 70%)}
.svc-blob-2{bottom:-16%;left:-8%;width:520px;height:520px;background:radial-gradient(circle,rgba(88,133,255,.34),transparent 70%)}
.services-inner{position:relative;max-width:1200px;margin:0 auto}
.services-inner .section-head{max-width:640px;margin-bottom:56px}
.solutions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.solution-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:20px;padding:34px 30px 32px;transition:transform .4s cubic-bezier(.16,1,.3,1),background .3s ease,border-color .3s ease}
.solution-card:hover{transform:translateY(-6px);background:rgba(139,91,255,.1);border-color:rgba(139,91,255,.4)}
.sc-icon{width:48px;height:48px;border-radius:13px;background:linear-gradient(135deg,rgba(91,75,255,.9),rgba(200,105,255,.85));display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:24px}
.solution-card h3{font-size:21px;font-weight:600;letter-spacing:-.01em}
.solution-card p{margin:12px 0 20px;font-size:14.5px;line-height:1.65;color:#a3a3ae}
.sc-tags{display:flex;flex-wrap:wrap;gap:7px}
.sc-tags span{font-size:11.5px;font-weight:500;letter-spacing:.03em;color:#c8c1ff;padding:5px 11px;border:1px solid rgba(169,155,255,.35);border-radius:999px}

/* ============ PARTNERS ============ */
.partners{padding:clamp(80px,10vw,130px) 26px}
.partners .section-head{margin-bottom:52px}
.partners-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.partner-logo{aspect-ratio:16/9;border-radius:14px;background:#f6f5f8;border:1px solid rgba(25,25,33,.06);display:flex;align-items:center;justify-content:center;transition:transform .3s ease,border-color .3s ease}
.partner-logo:hover{transform:translateY(-3px);border-color:rgba(91,75,255,.3)}
.partner-logo span{font-family:'JetBrains Mono',monospace;font-size:12px;color:#b4b3bd;letter-spacing:.06em}

/* ============ JOIN CTA ============ */
.join{padding:0 26px clamp(70px,9vw,110px)}
.join-card{position:relative;max-width:1200px;margin:0 auto;border-radius:32px;overflow:hidden;padding:clamp(60px,8vw,110px) clamp(28px,6vw,80px);text-align:center;background:linear-gradient(120deg,#4a37f2 0%,#7b4bff 45%,#c869ff 100%)}
.join-glow{position:absolute;border-radius:50%;pointer-events:none}
.join-glow-1{top:-30%;left:-10%;width:480px;height:480px;background:radial-gradient(circle,rgba(255,255,255,.28),transparent 66%)}
.join-glow-2{bottom:-34%;right:-8%;width:520px;height:520px;background:radial-gradient(circle,rgba(255,255,255,.18),transparent 66%)}
.join-inner{position:relative}
.join-mono{font-family:'JetBrains Mono',monospace;font-size:clamp(15px,2vw,21px);font-weight:600;color:rgba(255,255,255,.82);letter-spacing:.02em;margin-bottom:22px}
.join-title{font-size:clamp(32px,5vw,58px);font-weight:700;color:#fff;letter-spacing:-.03em;line-height:1.12}
.join-sub{margin:24px auto 0;max-width:44ch;font-size:clamp(16px,1.8vw,19px);line-height:1.65;color:rgba(255,255,255,.86)}
.join-btn{margin-top:40px;padding:17px 36px;font:inherit;font-size:17px;font-weight:700;cursor:pointer;color:#4a37f2;background:#fff;border:none;border-radius:999px;box-shadow:0 18px 40px -16px rgba(0,0,0,.4);display:inline-flex;align-items:center;gap:10px;transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s ease}
.join-btn span{transition:transform .25s ease}
.join-btn:hover{transform:translateY(-3px);box-shadow:0 24px 46px -16px rgba(0,0,0,.5)}
.join-btn:hover span{transform:translateX(4px)}

/* ============ CAREERS ============ */
.careers{padding:clamp(80px,10vw,130px) 26px;text-align:center}
.careers-placeholder{margin:40px auto 0;max-width:520px;padding:38px 28px;border-radius:22px;border:1.5px dashed rgba(91,75,255,.35);background:rgba(91,75,255,.04);color:#5b4bff;font-size:16px;font-weight:600}

/* ============ FOOTER ============ */
.site-footer{padding:70px 26px 44px;background:#0e0e14;color:#fff}
.footer-inner{max-width:1200px;margin:0 auto}
.footer-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:40px;padding-bottom:50px;border-bottom:1px solid rgba(255,255,255,.1)}
.footer-brandmark{margin-bottom:22px;color:#fff}
.footer-brandmark .brand-word{font-size:19px}
.footer-tagline{font-size:14.5px;line-height:1.75;color:#9a9aa4;max-width:36ch}
.footer-h{font-size:12px;font-weight:600;letter-spacing:.12em;color:#6e6e78;margin-bottom:18px}
.footer-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;font-size:14.5px;color:#c4c4cc}
.footer-col b{color:#fff;font-weight:600}
.footer-col .dim{color:#9a9aa4;line-height:1.5}
.footer-col a{color:#c4c4cc;display:inline-flex;align-items:center;gap:6px;transition:color .2s ease}
.footer-col a:hover{color:#fff}
.footer-col a .ext{color:#a99bff;font-size:12px}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding-top:26px}
.footer-bottom .mono{font-size:12.5px;color:#6e6e78;font-family:'JetBrains Mono',monospace}
.footer-bottom .dim{font-size:12.5px;color:#6e6e78}

/* ============ 반응형 ============ */
@media (max-width:820px){
  .desktop-nav{display:none}
  .menu-btn{display:flex}
  .mobile-menu.open{display:flex}
  .footer-grid{grid-template-columns:1fr;gap:34px}
}
@media (max-width:480px){
  .header-inner{padding:0 18px}
  .hero{padding:120px 20px 80px}
  .process-card{width:270px;height:440px;padding:28px 24px}
  .pc-num{font-size:44px}
}
@media (max-width:360px){
  .process-card{width:250px}
}

/* ── 모션 최소화 ── */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .anim .reveal,.anim .stagger > *{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
  .process-track,.orb-fallback,.orb-fallback::after,.scroll-ind{animation:none!important}
  .blob,.svc-blob,.hero-orb-wrap{transform:none!important}
}
