/* J.J폼테크 부대토목기초공사 — 공통 디자인 시스템 */
:root{
  --navy-900:#0d2438;
  --navy-800:#123a5c;
  --navy-700:#1c4f78;
  --blue-600:#2563eb;
  --blue-500:#3b82f6;
  --gray-900:#1a202c;
  --gray-700:#4a5568;
  --gray-500:#718096;
  --gray-100:#f4f6f9;
  --gray-50:#fafbfc;
  --white:#ffffff;
  --radius:14px;
  --shadow:0 10px 30px rgba(13,36,56,.12);
  --shadow-lg:0 20px 50px rgba(13,36,56,.18);
  --maxw:1180px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"Noto Sans KR","Malgun Gothic",system-ui,-apple-system,sans-serif;color:var(--gray-900);background:var(--white);line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block;image-rendering:-webkit-optimize-contrast}
a{color:inherit;text-decoration:none}
ul{list-style:none;margin:0;padding:0}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.3}
p{margin:0 0 1em}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.skip-link{position:absolute;left:-999px;top:0;background:var(--blue-600);color:#fff;padding:10px 16px;z-index:999}
.skip-link:focus{left:10px;top:10px}

/* 버튼 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 28px;border-radius:999px;font-weight:700;font-size:1rem;border:none;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}
.btn-cta{background:var(--blue-600);color:#fff}
.btn-cta:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(37,99,235,.35)}
.btn-outline{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.7)}
.btn-outline:hover{background:rgba(255,255,255,.12)}
.btn-white-cta{background:#fff;color:var(--navy-800)}
.btn-white-cta:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,.25)}
.btn-tel{background:#16a34a;color:#fff}
.btn-sms{background:var(--blue-600);color:#fff}

/* 헤더 */
.site-header{position:fixed;top:0;left:0;right:0;z-index:500;background:rgba(13,36,56,.55);backdrop-filter:blur(10px);transition:background .3s ease}
.site-header.scrolled{background:rgba(13,36,56,.92);box-shadow:0 4px 20px rgba(0,0,0,.15)}
.header-inner{display:flex;align-items:center;gap:28px;height:76px}
.logo-text{font-size:1.3rem;font-weight:800;color:#fff;letter-spacing:-.02em}
.footer-logo{font-size:1.15rem;color:#fff;margin:0 0 6px}
.main-nav{display:flex;align-items:center;gap:26px;margin-left:auto;font-weight:600;color:#fff}
.main-nav a{opacity:.88;padding:6px 2px;border-bottom:2px solid transparent}
.main-nav a:hover,.main-nav a.active{opacity:1;border-color:var(--blue-500)}
.header-cta{margin-left:6px;padding:10px 22px;font-size:.92rem}
.hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;padding:8px;margin-left:auto;cursor:pointer}
.hamburger span{width:24px;height:2px;background:#fff}
.mobile-nav{display:none;flex-direction:column;background:var(--navy-900);padding:10px 20px 20px}
.mobile-nav a{padding:12px 4px;border-bottom:1px solid rgba(255,255,255,.08);color:#fff;font-weight:600}
.mobile-nav .btn{margin-top:12px;width:100%}
@media (max-width:860px){
  .main-nav,.header-cta{display:none}
  .hamburger{display:flex}
  .mobile-nav.open{display:flex}
}

/* 브레드크럼 */
.breadcrumb{background:var(--gray-100);padding:14px 0;font-size:.88rem;color:var(--gray-500);margin-top:76px}
.breadcrumb .wrap{display:flex;gap:8px;align-items:center}
.breadcrumb a{color:var(--blue-600);font-weight:600}
.breadcrumb .current{color:var(--gray-900);font-weight:600}

/* 히어로(메인) */
.hero{position:relative;min-height:clamp(640px,86vh,840px);display:flex;align-items:center;color:#fff;overflow:hidden;isolation:isolate}
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(13,36,56,0),rgba(18,58,92,0));z-index:-1}
.hero-content{padding-top:76px;max-width:680px}
.badge{display:inline-block;background:rgba(59,130,246,.22);border:1px solid rgba(59,130,246,.5);color:#bfdbfe;padding:6px 16px;border-radius:999px;font-size:.85rem;font-weight:700;margin-bottom:18px}
.hero-content h1,.hero-content .desc,.hero-content .badge{text-shadow:0 2px 10px rgba(0,0,0,.55)}
.hero-content h1{font-size:clamp(2rem,4.6vw,3.2rem);font-weight:800}
.hero-content .desc{font-size:1.1rem;color:#dbeafe;max-width:560px}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:22px}

/* 파생 페이지 히어로 (작은 버전) */
.page-hero{position:relative;min-height:clamp(420px,62vh,560px);display:flex;align-items:center;color:#fff;overflow:hidden}
.page-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.page-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(13,36,56,0),rgba(18,58,92,0));z-index:-1}
.page-hero .wrap{padding-top:60px}
.page-hero.align-center{text-align:center}
.page-hero.align-center .wrap{display:flex;flex-direction:column;align-items:center}
.page-hero.align-right .hero-content{margin-left:auto;text-align:right}
.page-hero h1{font-size:clamp(1.8rem,4vw,2.7rem);font-weight:800;text-shadow:0 2px 10px rgba(0,0,0,.55)}
.page-hero .desc,.page-hero .badge{text-shadow:0 2px 10px rgba(0,0,0,.55)}

/* 섹션 공통 */
.section{padding:78px 0}
.section-alt{background:var(--gray-50)}
.section-head{max-width:640px;margin:0 auto 44px;text-align:center}
.section-head.left{margin:0 0 40px;text-align:left}
.eyebrow{color:var(--blue-600);font-weight:800;letter-spacing:.04em;font-size:.85rem;text-transform:uppercase}
.section-head h2{font-size:clamp(1.6rem,3vw,2.2rem)}
.section-head p{color:var(--gray-700)}

/* 시공사례 캐러셀 카드 (섹션 A) */
.case-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.case-card{background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .25s ease,box-shadow .25s ease;display:block}
.case-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.case-thumb{aspect-ratio:4/3;overflow:hidden;background:var(--gray-100)}
.case-thumb img{width:100%;height:100%;object-fit:cover}
.case-body{padding:20px 22px 24px}
.case-tag{display:inline-block;background:var(--gray-100);color:var(--navy-800);font-size:.78rem;font-weight:700;padding:4px 10px;border-radius:999px;margin-bottom:10px}
.case-body h3{font-size:1.12rem}
.case-body p{color:var(--gray-700);font-size:.92rem;margin-bottom:0}
@media (max-width:860px){.case-grid{grid-template-columns:1fr 1fr;gap:14px}}
@media (max-width:560px){.case-grid{grid-template-columns:1fr}}

/* 서비스 소개 (B) */
.service-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.service-item{text-align:center;padding:30px 18px;border:1px solid #e6eaf0;border-radius:var(--radius);transition:.25s}
.service-item:hover{border-color:var(--blue-500);box-shadow:var(--shadow)}
.service-icon{font-size:2.1rem;margin-bottom:12px}
.service-item h3{font-size:1.02rem}
.service-item p{color:var(--gray-700);font-size:.88rem;margin-bottom:0}
@media (max-width:860px){.service-strip{grid-template-columns:1fr 1fr}}

/* 신뢰/실적 (C) */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;text-align:center}
.stat-item .num{font-size:2.4rem;font-weight:800;color:var(--navy-800)}
.stat-item .label{color:var(--gray-700);font-weight:600}
@media (max-width:860px){.stat-grid{grid-template-columns:1fr 1fr}}

/* 프로세스 (D) */
.process-row{display:flex;gap:0;counter-reset:step}
.process-step{flex:1;position:relative;padding:0 16px;text-align:center}
.process-step::before{counter-increment:step;content:counter(step);width:44px;height:44px;line-height:44px;border-radius:50%;background:var(--navy-800);color:#fff;font-weight:800;display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}
.process-step::after{content:"";position:absolute;top:22px;left:calc(50% + 34px);right:calc(-50% + 34px);height:2px;background:#dbe3ec}
.process-step:last-child::after{display:none}
.process-step h3{font-size:1rem}
.process-step p{color:var(--gray-700);font-size:.86rem}
@media (max-width:860px){
  .process-row{flex-direction:column;gap:26px}
  .process-step::after{display:none}
}

/* Before/After 슬라이더 */
.ba-slider{position:relative;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);max-width:760px;margin:0 auto}
.ba-slider img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ba-slider .ba-after{clip-path:inset(0 0 0 50%)}
.ba-slider .ba-handle{position:absolute;top:0;bottom:0;left:50%;width:4px;background:#fff;cursor:ew-resize;transform:translateX(-2px)}
.ba-slider .ba-handle::after{content:"⇔";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:40px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow)}
.ba-label{position:absolute;top:12px;background:rgba(13,36,56,.75);color:#fff;font-size:.78rem;font-weight:700;padding:4px 10px;border-radius:999px;z-index:3}
.ba-label.before{left:12px}.ba-label.after{right:12px}

/* 현장사진 5x2 그리드 */
.site-photo-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.site-photo-grid img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:10px;box-shadow:var(--shadow);transition:transform .25s ease}
.site-photo-grid img:hover{transform:translateY(-4px)}
@media (max-width:860px){.site-photo-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.site-photo-grid{grid-template-columns:repeat(2,1fr)}}

/* 파생 페이지 본문 블록 */
.content-block{padding:70px 0}
.photo-block .section-head{text-align:center;margin-left:auto;margin-right:auto}
.photo-block .grid{display:flex;flex-wrap:wrap;justify-content:center;gap:18px}
.photo-block figure{margin:0;flex:0 1 320px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:transform .25s}
.photo-block figure:hover{transform:translateY(-5px)}
.photo-block figure img{width:100%}
.photo-block figcaption{padding:12px 14px;font-size:.9rem;color:var(--gray-700);background:#fff;text-align:center}
.photo-block.ratio-16-9 .grid img{aspect-ratio:16/9;object-fit:cover}
.photo-block.ratio-4-3 .grid img{aspect-ratio:4/3;object-fit:cover}
.photo-block.ratio-1-1 .grid img{aspect-ratio:1/1;object-fit:cover}
@media (max-width:860px){.photo-block figure{flex:0 1 100%;max-width:420px}}

.seo-block{max-width:820px}
.seo-block.centered{margin:0 auto;text-align:center}
.seo-block h2{font-size:1.6rem}
.seo-block .phone-highlight{color:var(--blue-600);font-weight:800}
.seo-block.wide{max-width:var(--maxw)}
.seo-intro{max-width:760px;margin:0 auto 36px;text-align:center;color:var(--gray-700)}
.breakdown-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.breakdown-item{background:#fff;border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}
.breakdown-item h3{font-size:1.02rem;color:var(--navy-800);display:flex;align-items:center;gap:8px}
.breakdown-item p{font-size:.92rem;color:var(--gray-700);margin-bottom:0}
.seo-closing{max-width:760px;margin:36px auto 0;text-align:center;color:var(--gray-700)}
@media (max-width:860px){.breakdown-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.breakdown-grid{grid-template-columns:1fr}}
.feature-list{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:20px}
.feature-list li{background:var(--gray-100);border-radius:10px;padding:14px 16px;font-weight:600;font-size:.92rem}
@media (max-width:640px){.feature-list{grid-template-columns:1fr}}

/* 관련 페이지 */
.related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.related-card{border:1px solid #e6eaf0;border-radius:var(--radius);padding:22px;transition:.2s}
.related-card:hover{border-color:var(--blue-500);transform:translateY(-4px);box-shadow:var(--shadow)}
.related-card .tag{color:var(--blue-600);font-weight:700;font-size:.82rem}
@media (max-width:860px){.related-grid{grid-template-columns:1fr}}

/* CTA 섹션 */
.cta-section{position:relative;padding:90px 0;text-align:center;color:#fff;overflow:hidden;background:radial-gradient(circle at 30% 20%,var(--navy-700),var(--navy-900) 65%)}
.cta-inner h2{font-size:clamp(1.5rem,3vw,2.1rem)}
.cta-inner p{color:#cfe0f5}
.trust-badges{display:flex;justify-content:center;gap:22px;margin-top:26px;flex-wrap:wrap;font-size:.9rem;color:#dbeafe}

/* 상담 페이지 */
.consult-actions{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;margin:34px 0}
.consult-actions .btn{font-size:1.1rem;padding:18px 34px}
.process-timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.process-timeline .step{background:#fff;border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}
.process-timeline .step .n{color:var(--blue-600);font-weight:800;font-size:1.3rem}
@media (max-width:860px){.process-timeline{grid-template-columns:1fr 1fr}}
.faq-list details{border-bottom:1px solid #e6eaf0;padding:16px 0}
.faq-list summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:"+";font-size:1.3rem;color:var(--blue-600)}
.faq-list details[open] summary::after{content:"–"}
.faq-list p{color:var(--gray-700);margin-top:10px}

/* 사이트맵 페이지 */
.sitemap-hero{background:linear-gradient(120deg,var(--navy-900),var(--navy-700));color:#fff;padding:150px 0 60px;text-align:center}
.sitemap-hero .count-badge{display:inline-block;margin-top:14px;background:rgba(255,255,255,.15);padding:6px 16px;border-radius:999px;font-weight:700}
.sitemap-tools{padding:30px 0;border-bottom:1px solid #e6eaf0}
.search-box{position:relative;max-width:480px;margin:0 auto 20px}
.search-box input{width:100%;padding:14px 44px 14px 18px;border-radius:999px;border:1px solid #d7dee7;font-size:1rem}
.search-box::before{content:"🔍";position:absolute;right:16px;top:50%;transform:translateY(-50%)}
.filter-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.filter-btn{padding:8px 18px;border-radius:999px;border:1px solid #d7dee7;background:#fff;font-weight:600;cursor:pointer;font-size:.9rem}
.filter-btn.active{background:var(--navy-800);color:#fff;border-color:var(--navy-800)}
.result-count{text-align:center;color:var(--gray-500);margin:18px 0;font-size:.9rem}
.sitemap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}
.sitemap-card{border:1px solid #e6eaf0;border-radius:var(--radius);padding:24px 18px;text-align:center;transition:.25s;display:block}
.sitemap-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--blue-500)}
.sitemap-card .icon{font-size:1.8rem;margin-bottom:10px}
.sitemap-card .t{font-weight:700}
.sitemap-card .d{color:var(--gray-500);font-size:.84rem;margin-top:4px}
.no-result{text-align:center;padding:40px;color:var(--gray-500)}

/* 404 */
.notfound{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:140px 20px 60px}
.notfound .code{font-size:5rem;font-weight:800;color:var(--navy-800)}
.notfound .actions{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:22px}

/* 푸터 */
.site-footer{background:var(--gray-900);color:#cbd5e1;padding:60px 0 0}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:32px}
.footer-col h3{color:#fff;font-size:1rem;margin-bottom:14px}
.footer-col ul li{margin-bottom:9px;font-size:.9rem}
.footer-col a:hover{color:#fff}
.footer-desc{font-size:.88rem;color:#94a3b8;margin-top:14px}
.biz-info li{color:#94a3b8}
.footer-bottom{border-top:1px solid rgba(255,255,255,.08);margin-top:40px;padding:20px 0;font-size:.82rem;color:#64748b}
@media (max-width:860px){.footer-grid{grid-template-columns:1fr 1fr;gap:26px}}
@media (max-width:560px){.footer-grid{grid-template-columns:1fr}}

/* 플로팅 버튼 */
.floating-buttons{position:fixed;right:22px;bottom:26px;z-index:600;display:flex;flex-direction:column;gap:12px;align-items:flex-end}
.fab{position:relative;display:flex;align-items:center;gap:8px;background:var(--blue-600);color:#fff;border:none;border-radius:999px;padding:14px 20px;box-shadow:var(--shadow-lg);cursor:pointer;font-weight:700}
.fab-consult .pulse-ring{position:absolute;inset:-6px;border-radius:999px;border:2px solid var(--blue-500);animation:pulse 3s infinite}
@keyframes pulse{0%{transform:scale(.9);opacity:.8}70%{transform:scale(1.25);opacity:0}100%{opacity:0}}
.fab-top{background:var(--navy-800);width:48px;height:48px;padding:0;justify-content:center;font-size:1.1rem}
@media (max-width:560px){.fab-label{display:none}.fab{padding:14px;width:52px;height:52px;justify-content:center}}

/* 유틸 */
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
