/* ================================================================
   올빼미청소 ui-polish-v2.css — 2026-04-17
   Round 2: 전환 최적화 고급 컴포넌트
   ================================================================ */

/* ── 1. 사이드 FAB (Floating Action Button) 데스크톱 ────── */
.fab-stack{
  position:fixed;right:20px;bottom:100px;z-index:850;
  display:flex;flex-direction:column;gap:10px;
}
.fab{
  width:56px;height:56px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:24px;text-decoration:none;color:#fff;
  box-shadow:0 8px 24px rgba(0,0,0,.2);
  transition:transform .2s,box-shadow .2s;position:relative;
}
.fab:hover{transform:scale(1.1);box-shadow:0 12px 32px rgba(0,0,0,.25)}
.fab.phone{background:linear-gradient(135deg,#03C75A,#018a40)}
.fab.kakao{background:#FEE500;color:#191919}
.fab.sms{background:linear-gradient(135deg,#3b82f6,#1e40af)}
.fab.top{background:#1a4a7a;font-size:20px}
.fab .hours-label{
  position:absolute;top:-6px;right:-10px;
  background:#fff;color:#018a40;
  font-size:10px;font-weight:800;letter-spacing:-.02em;
  padding:2px 6px;border-radius:10px;
  border:2px solid #018a40;
  box-shadow:0 2px 6px rgba(1,138,64,.25);
  line-height:1.2;
}
/* Legacy class kept for backward compatibility but restyled */
.fab .badge{
  position:absolute;top:-6px;right:-10px;
  background:#fff;color:#018a40;
  font-size:10px;font-weight:800;letter-spacing:-.02em;
  padding:2px 6px;border-radius:10px;
  border:2px solid #018a40;
  box-shadow:0 2px 6px rgba(1,138,64,.25);
  line-height:1.2;
  animation:none;
}
.fab-tooltip{
  position:absolute;right:66px;top:50%;transform:translateY(-50%);
  background:#1a1a1a;color:#fff;padding:8px 14px;border-radius:8px;
  font-size:12px;font-weight:600;white-space:nowrap;
  opacity:0;pointer-events:none;transition:opacity .2s;
}
.fab:hover .fab-tooltip{opacity:1}
.fab-tooltip::after{
  content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);
  border:6px solid transparent;border-left-color:#1a1a1a;
}
@media(max-width:900px){.fab-stack{display:none}}

/* ── 2. 견적 요청 임베디드 카드 ────────────────────────── */
.quick-quote-card{
  background:linear-gradient(135deg,#ffffff 0%,#f8f9fb 100%);
  border:2px solid var(--green);border-radius:18px;
  padding:28px;margin:32px 0;box-shadow:0 8px 28px rgba(3,199,90,.12);
  position:relative;overflow:hidden;
}
.quick-quote-card::before{
  content:"";position:absolute;top:-30px;right:-30px;width:150px;height:150px;
  background:radial-gradient(circle,rgba(3,199,90,.1) 0%,transparent 70%);
  pointer-events:none;
}
.quick-quote-card h3{
  color:var(--navy);font-size:22px;font-weight:900;margin:0 0 8px;
  letter-spacing:-.03em;position:relative;
}
.quick-quote-card .subtitle{
  color:var(--text2);font-size:14px;margin:0 0 20px;line-height:1.65;
}
.quick-quote-card .steps{
  display:flex;gap:12px;flex-wrap:wrap;margin:16px 0 20px;
}
.quick-quote-card .step{
  flex:1;min-width:120px;display:flex;align-items:center;gap:8px;
  background:#fff;padding:10px 14px;border-radius:10px;
  border:1px solid var(--bd);
}
.quick-quote-card .step-num{
  width:26px;height:26px;background:var(--green);color:#fff;
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:800;flex-shrink:0;
}
.quick-quote-card .step-label{font-size:13px;color:var(--navy);font-weight:600}
.quick-quote-card .cta-row{
  display:flex;gap:10px;flex-wrap:wrap;
}
.quick-quote-card .cta-row .btn{flex:1;min-width:120px}
.quick-quote-card .guarantee{
  margin-top:14px;font-size:12.5px;color:var(--text3);
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.quick-quote-card .guarantee span{display:inline-flex;align-items:center;gap:3px}

/* ── 3. 실시간 영업시간 배지 (도메인 특화) ─────────────── */
.hours-badge{
  display:inline-flex;align-items:center;gap:8px;padding:6px 14px;
  background:#e6f9f0;border:1px solid #86d4a8;border-radius:999px;
  font-size:12.5px;color:#065f36;font-weight:700;
}
.hours-badge .pulse{
  width:8px;height:8px;background:#0f7a3c;border-radius:50%;
  animation:livepulse 1.4s infinite;
}

/* ── 4. 인증·자격 스트립 (카드 형태) ──────────────────── */
.credentials-strip{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:12px;margin:24px 0;
}
.credential-card{
  background:#fff;border:1px solid var(--bd);border-radius:12px;
  padding:16px;display:flex;align-items:center;gap:12px;
  transition:all .2s;
}
.credential-card:hover{border-color:var(--green);transform:translateY(-2px);box-shadow:var(--shadow-h)}
.credential-card .cred-icon{
  width:44px;height:44px;background:linear-gradient(135deg,#03C75A,#018a40);
  color:#fff;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-size:20px;flex-shrink:0;
}
.credential-card .cred-text strong{
  display:block;color:var(--navy);font-size:14px;font-weight:800;margin-bottom:2px;
}
.credential-card .cred-text small{color:var(--text3);font-size:12px}

/* ── 5. 전후 비교 이미지 슬라이더 ────────────────────── */
.ba-slider{
  position:relative;overflow:hidden;border-radius:14px;margin:20px 0;
  aspect-ratio:16/9;background:var(--bg2);box-shadow:var(--shadow);cursor:col-resize;
  user-select:none;
}
.ba-slider img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  pointer-events:none;
}
.ba-slider .ba-after{clip-path:inset(0 0 0 50%)}
.ba-slider .ba-line{
  position:absolute;top:0;bottom:0;left:50%;width:3px;
  background:#fff;box-shadow:0 0 12px rgba(0,0,0,.3);
  transform:translateX(-50%);pointer-events:none;
}
.ba-slider .ba-handle{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;border-radius:50%;background:#fff;
  box-shadow:0 4px 12px rgba(0,0,0,.3);display:flex;align-items:center;
  justify-content:center;color:var(--navy);font-size:16px;font-weight:900;
  pointer-events:none;
}
.ba-slider .ba-label{
  position:absolute;top:12px;padding:4px 10px;border-radius:6px;
  font-size:11.5px;font-weight:800;color:#fff;letter-spacing:.02em;
}
.ba-slider .ba-label.before{left:12px;background:rgba(239,68,68,.9)}
.ba-slider .ba-label.after{right:12px;background:rgba(3,199,90,.9)}

/* ── 6. 탭 네비게이션 ─────────────────────────────────── */
.tabs{
  display:flex;gap:4px;background:var(--bg2);padding:4px;border-radius:10px;
  margin:20px 0;overflow-x:auto;
}
.tab{
  padding:10px 18px;border-radius:8px;font-size:14px;font-weight:700;
  color:var(--text2);cursor:pointer;white-space:nowrap;transition:all .2s;
}
.tab:hover{color:var(--navy)}
.tab.active{background:#fff;color:var(--navy);box-shadow:0 2px 6px rgba(0,0,0,.06)}
.tab-panel{display:none;padding:20px 0}
.tab-panel.active{display:block}

/* ── 7. 리뷰 카드 그리드 ──────────────────────────────── */
.review-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:14px;margin:20px 0;
}
.review-card{
  background:#fff;border:1px solid var(--bd);border-radius:12px;
  padding:18px;transition:all .2s;
}
.review-card:hover{border-color:var(--green-bd);box-shadow:var(--shadow-h);transform:translateY(-2px)}
.review-card .review-header{
  display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;
}
.review-card .reviewer{display:flex;align-items:center;gap:10px}
.review-card .avatar{
  width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#03C75A,#018a40);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:14px;
}
.review-card .name{font-weight:700;color:var(--navy);font-size:14px;margin:0;line-height:1.2}
.review-card .meta{font-size:11.5px;color:var(--text3)}
.review-card .stars{color:#fbbf24;letter-spacing:-1px;font-size:13px;margin:0}
.review-card .body{color:var(--text2);font-size:13.5px;line-height:1.7;margin:10px 0 0}
.review-card .badge{
  display:inline-block;background:var(--green-bg);color:#0f7a3c;
  font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;margin-top:8px;
}

/* ── 8. 스크롤 리빌 애니메이션 ────────────────────────── */
.reveal{opacity:0;transform:translateY(20px);transition:opacity .6s ease, transform .6s ease}
.reveal.in-view{opacity:1;transform:translateY(0)}
@media(prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none}
}

/* ── 9. 비교 테이블 ──────────────────────────────────── */
.compare-table{
  width:100%;border-collapse:separate;border-spacing:0;
  background:#fff;border-radius:12px;overflow:hidden;
  box-shadow:var(--shadow);margin:20px 0;
}
.compare-table th,.compare-table td{
  padding:14px 16px;text-align:left;font-size:14px;line-height:1.6;
  border-bottom:1px solid var(--bd);
}
.compare-table th{
  background:var(--bg2);color:var(--navy);font-weight:800;font-size:13px;
  text-transform:uppercase;letter-spacing:.02em;
}
.compare-table tr:last-child td{border-bottom:none}
.compare-table .us{background:#f0fdf6;color:#065f36;font-weight:700}
.compare-table .them{color:var(--text3)}
.compare-table .check{color:#0f7a3c;font-weight:800;font-size:16px}
.compare-table .cross{color:#ef4444;font-weight:800;font-size:16px}
@media(max-width:640px){
  .compare-table,.compare-table thead,.compare-table tbody,
  .compare-table th,.compare-table td,.compare-table tr{display:block}
  .compare-table thead{display:none}
  .compare-table tr{margin-bottom:14px;border-radius:10px;border:1px solid var(--bd)}
  .compare-table td{border:none;padding:10px 14px}
  .compare-table td:first-child{background:var(--bg2);font-weight:800;color:var(--navy);border-radius:10px 10px 0 0}
}

/* ── 10. 전화번호 클릭 이펙트 ────────────────────────── */
.tel-emphasis{
  display:inline-block;background:linear-gradient(135deg,#03C75A,#018a40);
  color:#fff !important;padding:8px 14px;border-radius:8px;font-weight:900;
  font-size:inherit;letter-spacing:-.02em;box-shadow:0 2px 8px rgba(3,199,90,.3);
  text-decoration:none !important;
}
.tel-emphasis:hover{box-shadow:0 4px 14px rgba(3,199,90,.45);transform:translateY(-1px)}

/* ── 11. 이미지 로드 페이드인 ─────────────────────────── */
img[loading="lazy"]{opacity:0;transition:opacity .4s ease}
img[loading="lazy"].loaded,img[loading="lazy"][data-loaded]{opacity:1}

/* ── 12. 드래그 가능 갤러리 ───────────────────────────── */
.gallery-scroller{
  display:flex;gap:12px;overflow-x:auto;padding:8px 0 16px;
  -webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;
}
.gallery-scroller::-webkit-scrollbar{height:6px}
.gallery-scroller::-webkit-scrollbar-track{background:var(--bg2);border-radius:3px}
.gallery-scroller::-webkit-scrollbar-thumb{background:var(--bd2);border-radius:3px}
.gallery-scroller .gallery-item{
  flex:0 0 260px;scroll-snap-align:start;
  border-radius:10px;overflow:hidden;border:1px solid var(--bd);
  background:#fff;transition:transform .2s;
}
.gallery-scroller .gallery-item:hover{transform:scale(1.02)}
.gallery-scroller .gallery-item img{width:100%;height:180px;object-fit:cover}
.gallery-scroller .gallery-item .caption{padding:10px 14px;font-size:13px;color:var(--text2)}

/* ── 13. 마이크로 인터랙션 — 체크 리스트 ──────────────── */
.check-list{list-style:none;padding:0;margin:16px 0}
.check-list li{
  position:relative;padding:8px 0 8px 30px;font-size:14.5px;color:var(--text2);
  line-height:1.7;
}
.check-list li::before{
  content:"";position:absolute;left:0;top:12px;width:20px;height:20px;
  background:var(--green);border-radius:50%;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z'/%3E%3C/svg%3E");
  background-size:14px;background-position:center;background-repeat:no-repeat;
}

/* ── 14. 배지·태그 ───────────────────────────────────── */
.badge-primary,.badge-secondary,.badge-warning,.badge-info{
  display:inline-block;padding:3px 9px;border-radius:999px;
  font-size:11.5px;font-weight:700;letter-spacing:.01em;
}
.badge-primary{background:var(--green);color:#fff}
.badge-secondary{background:var(--navy);color:#fff}
.badge-warning{background:#fbbf24;color:#78350f}
.badge-info{background:#dbeafe;color:#1e40af}

/* ── 15. 결제수단 배지 ────────────────────────────────── */
.payment-badges{
  display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;
}
.payment-badge{
  display:inline-flex;align-items:center;gap:6px;padding:6px 12px;
  background:#fff;border:1px solid var(--bd);border-radius:8px;
  font-size:12px;font-weight:600;color:var(--text2);
}
