/* ===== Design tokens ===== */
:root{
  --bg:#F8F9FA;
  --bg-sub:#E9ECEF;
  --accent:#06B6D4;
  --text:#111827;
  --white:#FFFFFF;
  --radius:12px;
  --gap-img-text:16px;
  --side-pad:24px;
  --section-gap:48px;
  --icon:24px;
  --btn-pad-x:20px;
  --touch-min:44px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:'Pretendard',-apple-system,BlinkMacSystemFont,sans-serif;
  font-size:16px;
  line-height:1.6;
  color:var(--text);
  background:var(--bg);
}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none;margin:0;padding:0}
button{font-family:inherit;cursor:pointer;border:none;background:none}
h1,h2,h3,h4{margin:0;font-weight:700}
h1{font-size:29px;line-height:1.4}
h2{font-size:22px;line-height:1.4}
h3{font-size:18px;line-height:1.4}
p{margin:0}

.container{max-width:1120px;margin:0 auto;padding:0 var(--side-pad)}
.section{padding:var(--section-gap) 0}
.section-head{margin-bottom:32px}
.section-title{font-weight:700}
.section-subtitle{font-weight:400;color:#4B5563;margin-top:8px}

/* ===== Buttons ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:var(--touch-min);
  padding:12px var(--btn-pad-x);
  border-radius:var(--radius);
  font-size:16px;font-weight:700;
  white-space:nowrap;
}
.btn-primary{background:var(--accent);color:var(--white)}
.btn-outline{background:var(--white);color:var(--text);border:1px solid var(--bg-sub)}
.cta-group{display:flex;flex-wrap:wrap;gap:12px}

/* ===== Header ===== */
.site-header{
  position:sticky;top:0;z-index:100;
  background:var(--white);
  border-bottom:1px solid var(--bg-sub);
}
.site-header .container{display:flex;align-items:center;justify-content:space-between;height:64px}
.site-logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px}
.site-logo img{width:32px;height:32px}
.nav-pc{display:none}
.nav-pc ul{display:flex;align-items:center;gap:28px}
.nav-pc a{display:flex;align-items:center;gap:6px;font-weight:500}
.nav-pc svg{width:var(--icon);height:var(--icon)}
.header-cta{display:none}

.hamburger{
  width:var(--touch-min);height:var(--touch-min);
  display:flex;align-items:center;justify-content:center;
}
.hamburger svg{width:var(--icon);height:var(--icon)}

.mobile-menu{
  max-height:0;overflow:hidden;
  transition:max-height .3s ease;
  background:var(--white);border-bottom:1px solid var(--bg-sub);
}
.mobile-menu.is-open{max-height:400px}
.mobile-menu ul{padding:8px var(--side-pad) 16px}
.mobile-menu li{border-top:1px solid var(--bg-sub)}
.mobile-menu a{display:flex;align-items:center;gap:10px;min-height:var(--touch-min)}
.mobile-menu svg{width:var(--icon);height:var(--icon)}

@media(min-width:1024px){
  .nav-pc{display:block}
  .header-cta{display:inline-flex}
  .hamburger,.mobile-menu{display:none}
}

/* ===== Hero ===== */
.hero{
  position:relative;color:var(--white);
  padding:88px 0 64px;
  background-size:cover;background-position:center;
}
.hero::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(17,24,39,.55) 0%,rgba(17,24,39,.35) 100%);
}
.hero .container{position:relative}
.hero h1{margin-bottom:16px}
.hero-copy{position:relative;min-height:58px;font-size:18px;margin:16px 0 24px}
.hero-copy span{position:absolute;top:0;left:0;width:100%;display:block;opacity:0;transition:opacity .6s ease}
.hero-copy span.is-active{opacity:1}

/* ===== Cards grid ===== */
.card-grid{display:grid;grid-template-columns:1fr;gap:20px}
@media(min-width:640px){.card-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.card-grid{grid-template-columns:repeat(3,1fr)}}

.card{
  position:relative;background:var(--white);border-radius:var(--radius);overflow:hidden;
  box-shadow:0 1px 3px rgba(17,24,39,.08);
  transition:transform .25s ease;
}
.card:hover{transform:translateY(-4px)}
.card-media{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--bg-sub)}
.card-media img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.card:hover .card-media img{transform:scale(1.06)}
.card-body{padding:var(--gap-img-text)}
.card-body h3{margin-bottom:8px}
.card-body p{color:#4B5563;font-size:15px}
.card-link-indicator{
  position:absolute;right:12px;bottom:12px;
  width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,.9);
  display:flex;align-items:center;justify-content:center;
}
.card-link-indicator svg{width:18px;height:18px}

/* portfolio cards: no link/indicator, image overlay on hover */
.portfolio-card .card-media::after{
  content:"";position:absolute;inset:0;
  background:rgba(17,24,39,0);transition:background .25s ease;
}
.portfolio-card:hover .card-media::after{background:rgba(17,24,39,.25)}

/* ===== Swipe slider (mobile) ===== */
.swipe-track{
  display:flex;overflow-x:auto;scroll-snap-type:x mandatory;
  -ms-overflow-style:none;scrollbar-width:none;gap:16px;
  padding-bottom:4px;
}
.swipe-track::-webkit-scrollbar{display:none}
.swipe-track > *{flex:0 0 100%;scroll-snap-align:start}
.swipe-dots{display:flex;justify-content:center;gap:8px;margin-top:16px}
.swipe-dots span{width:8px;height:8px;border-radius:50%;background:rgba(17,24,39,0.22)}
.swipe-dots span.is-active{background:var(--accent)}

@media(min-width:768px){
  .swipe-track{display:grid;grid-template-columns:repeat(3,1fr);overflow:visible}
  .swipe-track > *{flex:none}
  .swipe-dots{display:none}
}

/* ===== About strengths ===== */
.strength-item{display:flex;flex-direction:column;gap:12px;padding:24px;background:var(--white);border-radius:var(--radius)}
.strength-icon{width:48px;height:48px;border-radius:50%;background:var(--bg-sub);display:flex;align-items:center;justify-content:center}
.strength-icon svg{width:var(--icon);height:var(--icon);color:var(--accent)}

/* ===== FAQ accordion ===== */
.faq-item{border-bottom:1px solid var(--bg-sub)}
.faq-q{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:20px 0;text-align:left;font-weight:700;font-size:16px;
  min-height:var(--touch-min);color:var(--text);
}
.faq-q svg{width:var(--icon);height:var(--icon);flex:none;color:var(--accent);transition:transform .25s ease}
.faq-item.is-open .faq-q svg{transform:rotate(180deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .3s ease}
.faq-item.is-open .faq-a{max-height:600px}
.faq-a p{padding:0 0 20px;color:#4B5563}

/* ===== Consult CTA ===== */
.consult-cta{background:var(--bg-sub)}
.consult-cta .container{text-align:center}
.consult-cta .cta-group,
.text-center .cta-group{justify-content:center}

/* ===== Footer ===== */
.site-footer{background:var(--text);color:var(--bg-sub);padding:var(--section-gap) 0 32px}
.footer-info p{margin-bottom:6px;font-size:14px}
.footer-nav{display:flex;flex-wrap:wrap;gap:20px;margin:24px 0}
.footer-nav a{display:flex;align-items:center;gap:6px;font-size:14px}
.footer-nav svg{width:20px;height:20px}
.footer-copy{font-size:13px;color:#9CA3AF;border-top:1px solid #374151;padding-top:20px}

/* ===== Fade-in on scroll ===== */
.fade-in{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.fade-in.is-visible{opacity:1;transform:none}

/* ===== Utility classes (인라인 스타일 대체) ===== */
.section-alt{background:var(--bg-sub)}
.mb-16{margin-bottom:16px}
.mb-24{margin-bottom:24px}
.mt-24{margin-top:24px}
.mb-40{margin-bottom:40px}
.list-grid{display:grid;gap:12px}
.list-grid-lg{display:grid;gap:16px}
.text-center{text-align:center}
.w-full{width:100%}

/* ===== Breadcrumb-free page header ===== */
.page-hero{padding:56px 0 32px;background:var(--bg-sub)}
.page-hero h1{margin-bottom:12px}

@media(min-width:768px){
  h1{font-size:40px}
  h2{font-size:30px}
  h3{font-size:20px}
  .hero{padding:140px 0 100px}
}
