
.db-totop{
  position: fixed; right: 24px; bottom: 32px; z-index: 8999;
  width: 52px; height: 52px;
  display: flex; align-items: center; justify-content: center;
  background: #0D0D0D; border: 1px solid rgba(255,255,255,.15);
  border-radius: 2px; cursor: pointer; color: rgba(255,255,255,.8);
  box-shadow: 0 8px 30px rgba(0,0,0,.6);
  opacity: 0; visibility: hidden; transform: translateY(12px);
  transition: opacity .35s, transform .35s, border-color .3s, background .3s, color .3s;
}
.db-totop.show{ opacity: 1; visibility: visible; transform: translateY(0); }
.db-totop:hover{ border-color: #e63946; background: #e63946; color: #fff; }
.db-totop svg{ width: 20px; height: 20px; }
@media(max-width:768px){ .db-totop{ right: 16px; bottom: 84px; width: 46px; height: 46px; } }

/* ── 모바일 햄버거 메뉴 + 하단 고정 CTA 바 (하위 페이지: header.php/footer.php 마크업,
   홈: db-mobile-fixes와 디자인·동작 동일) ─────────────────────────────── */
.db-nav-toggle{
  display: none;
  position: absolute; right: 24px; top: 50%; transform: translateY(-50%);
  width: 36px; height: 36px;
  flex-direction: column; justify-content: center; align-items: center; gap: 5px;
  background: none; border: none; cursor: pointer; padding: 0; z-index: 10;
}
.db-nav-toggle span{
  display: block; width: 22px; height: 2px; background: #fff;
  transition: background .4s, transform .3s, opacity .3s;
}
.site-header.is-scrolled .db-nav-toggle span{ background: #111; }
.db-nav-toggle.open{ display: none !important; }

.db-mobile-nav-backdrop{
  position: fixed; inset: 0; z-index: 1098;
  background: rgba(0,0,0,.55);
  opacity: 0; visibility: hidden; transition: opacity .3s;
}
.db-mobile-nav-backdrop.open{ opacity: 1; visibility: visible; }

.db-mobile-nav{
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 1099;
  width: 78%; max-width: 320px;
  background: rgba(10,10,10,.98);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: -8px 0 30px rgba(0,0,0,.5);
  padding: 6.5rem 2rem 2.5rem;
  display: flex; flex-direction: column;
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  transform: translateX(100%); transition: transform .35s ease;
}
.db-mobile-nav.open{ transform: translateX(0); }
.db-mobile-nav-links{ display: flex; flex-direction: column; gap: 1.7rem; }
.db-mobile-nav-links a{
  font-family: 'Syne', sans-serif; font-size: 1.05rem; font-weight: 600;
  color: rgba(255,255,255,.88); text-decoration: none; letter-spacing: .02em;
}
.db-mobile-nav-links a.is-current{ color: #e63946; }
.db-mobile-nav-close{
  position: absolute; top: 20px; right: 24px;
  background: none; border: none; color: #fff; font-size: 24px; cursor: pointer;
  line-height: 1; padding: 4px;
}

.db-bottom-cta{
  display: none;
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 997;
  background: rgba(10,10,10,.98);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  box-shadow: 0 -4px 20px rgba(0,0,0,.25);
}
.db-bottom-cta .db-quote-btn{
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%; padding: 14px;
  background: #e63946; color: #fff;
  font-family: 'Syne', sans-serif; font-size: 14px; font-weight: 700; letter-spacing: .04em;
  border-radius: 4px; text-decoration: none;
}

/* 모바일 전용 의도적 줄바꿈([mo] 마커) — 데스크톱에서는 기본적으로 숨김,
   모바일 미디어쿼리에서만 다시 노출 */
br.mo-only {
  display: none;
}

/* 모바일 전용 문구 오버라이드(예: hero_title_mobile) — 필드가 비어있으면
   이 클래스들 자체가 아예 안 쓰이니(else 분기) 영향 없음. 채워졌을 때만
   PC/모바일 버전을 둘 다 렌더링해두고 미디어쿼리로 하나만 보이게 토글한다. */
.mo-only-block {
  display: none;
}

/* ── AUTO TEXT WRAP (데스크톱+모바일 공통) ───────
   마커 없이 편집해도 웬만큼 자연스러운 줄바꿈이 나오도록 하는 브라우저 자동 처리.
   미지원 브라우저(Firefox 등)에서는 이 선언만 무시되고 기존 기본 줄바꿈으로 동작 —
   레이아웃이 깨지지 않는 순수 점진적 개선(progressive enhancement). */
h1, h2, h3,
.about-title, .criteria-title, .page-title, .sec-title, .section-title,
.cert-group-title, .db-cert-group-title, .hero-slide-title, .timeline-title,
.value-title, .mission-text, .cta-card-title, .cta-headline, .hero-headline,
.hero-title, .db-hero__title {
  text-wrap: balance;
}
p, dd,
.about-text, .catalog-desc, .hero-slide-desc, .mission-sub, .page-subtitle,
.perf-desc, .prod-tagline, .proj-card-desc, .proj-desc, .promise-desc,
.sec-desc, .step-desc, .tech-step-desc, .timeline-desc, .value-desc,
.loc-info-row dd,
.addr-sub, .app-desc, .caption-text, .cta-card-desc, .cta-sub,
.db-hero__desc, .db-sublink, .dbhc-sub, .lf-int-desc, .lf-int-sub,
.mech-desc, .product-desc, .section-lead, .test-desc {
  text-wrap: pretty;
}
@media(max-width:768px){
  /* 한글 본문/제목이 음절 단위로 잘리는 것 방지 — 어절(띄어쓰기) 단위로만 줄바꿈.
     특허번호 등 공백 없는 긴 토큰만 overflow-wrap이 예외적으로 끊음(안전장치). */
  body {
    word-break: keep-all;
    overflow-wrap: break-word;
  }
  /* 데스크톱 전용 의도적 줄바꿈 — 모바일에서는 자동 줄바꿈에 맡기고 숨김 */
  br.pc-only {
    display: none;
  }
  br.mo-only {
    display: inline;
  }
  .pc-only-block {
    display: none;
  }
  .mo-only-block {
    display: inline;
  }

  /* 하위 페이지 헤더: 견적문의 버튼 제거, 햄버거 노출 */
  .nav-cta{ display: none !important; }
  .db-nav-toggle{ display: flex !important; }

  /* 우측 세로 퀵메뉴 — 화면을 크게 가려서 모바일에서 숨김 */
  .db-qm{ display: none !important; }

  /* 하단 고정 CTA 바 노출 + 바에 가려지는 만큼 본문 하단 여백 확보 */
  .db-bottom-cta{ display: block !important; }
  body{ padding-bottom: 84px !important; }
}



  .lf-interstitial{
    position:fixed !important;
    top:0 !important;left:0 !important;
    right:0 !important;bottom:0 !important;
    width:100vw !important;height:100vh !important;
    z-index:999999 !important;
    background:rgba(10,10,10,0.96) !important;
    -webkit-backdrop-filter:blur(20px);
    backdrop-filter:blur(20px);
    display:flex !important;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    color:#fff;
    text-align:center;
    opacity:0;
    transition:opacity 0.35s;
    pointer-events:none;
    font-family:'Pretendard',sans-serif;
    padding:24px;
  }
  .lf-interstitial.lf-show{
    opacity:1 !important;
    pointer-events:auto !important;
  }
  .lf-int-flow{
    display:flex;
    align-items:center;
    gap:32px;
    font-size:clamp(28px, 5vw, 56px);
    font-weight:800;
    letter-spacing:-0.02em;
    margin-bottom:20px;
  }
  .lf-int-from{color:rgba(255,255,255,0.55)}
  .lf-int-arrow{
    color:#e63946;
    font-weight:300;
    font-size:1.15em;
    display:inline-block;
    animation:lf-arrow-pulse 1.2s ease-in-out infinite;
  }
  @keyframes lf-arrow-pulse{
    0%, 100% { transform: translateX(0); opacity: 1; }
    50% { transform: translateX(8px); opacity: 0.7; }
  }
  .lf-int-to{color:#fff}
  .lf-int-desc{
    font-size:15px;
    color:rgba(255,255,255,0.6);
    margin-top:8px;
    margin-bottom:40px;
    line-height:1.6;
  }
  .lf-int-buttons{
    display:flex;
    gap:14px;
    flex-wrap:wrap;
    justify-content:center;
  }
  .lf-int-btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:16px 32px;
    font-size:14px;
    font-weight:700;
    letter-spacing:-0.01em;
    border-radius:2px;
    cursor:pointer;
    border:none;
    transition:all 0.2s;
    font-family:inherit;
  }
  .lf-int-btn-primary{
    background:#e63946;
    color:#fff;
  }
  .lf-int-btn-primary:hover{
    background:#d32f3f;
    transform:translateX(4px);
  }
  .lf-int-btn-secondary{
    background:transparent;
    color:#fff;
    border:1px solid rgba(255,255,255,0.25);
  }
  .lf-int-btn-secondary:hover{
    border-color:#fff;
    background:rgba(255,255,255,0.05);
  }
  .lf-int-sub{
    margin-top:36px;
    font-size:11px;
    letter-spacing:0.2em;
    color:rgba(255,255,255,0.3);
    font-family:'Syne',sans-serif;
    text-transform:uppercase;
  }
