/* ===== 상생집수리 · 조립식선반설치 — DESIGN 09 (CATEGORY INDEX + EDITORIAL GRID)
   색상/타이포는 참고사이트(cf.jibsuriworld.com) 실제 계산값을 그대로 가져와 사용한다. ===== */
:root{
  --color-bg:#EFE6D3; --color-bg-alt:#E4D8BD; --color-bg-alt-2:#D9CBA8; --color-bg-alt-3:#CCBB90;
  --color-ink:#1C1410; --color-ink-alt:#241A14;
  --color-text:#241A12; --color-text-alt:#332419; --color-text-muted:#5C4A3A; --color-text-subtle:#7B6A56; --color-text-faint:#B8A98F;
  --color-border:#CDBFA0; --color-border-alt:#B8A87D;
  --color-accent:#8F6B1E; --color-accent-soft:#C9A227;
  --color-tape:#B8321F; --color-tape-soft:#D9694A;
  --color-bg-invert:#1C1410; --color-text-invert:#E8DCC4;
  --text-on-light:#241A12; --text-on-dark:#E8DCC4;
  --font-heading:'SUIT Variable',system-ui,-apple-system,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  --font-body:'SUIT Variable',system-ui,-apple-system,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  --tracking-tight:-0.02em;
  --container-max:1280px; --container-wide:1440px;
  --gutter:clamp(20px,4vw,48px); --section-pad:clamp(56px,9vw,108px);
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-snap:cubic-bezier(.34,1.56,.64,1);
  --radius-sm:3px; --radius-pill:999px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body,p,h1,h2,h3,h4,h5,h6,li,td,th,a,span,div,button{word-break:keep-all;overflow-wrap:break-word}
body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none;margin:0;padding:0}
.container{max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter)}
.container-wide{max-width:var(--container-wide);margin:0 auto;padding:0 var(--gutter)}
main>section{padding:var(--section-pad) 0}

h1,h2,h3{font-family:var(--font-heading);font-weight:800;letter-spacing:var(--tracking-tight);line-height:1.25;margin:0;color:var(--color-text)}
.fs-h1{font-size:clamp(2rem,5vw,3.4rem)}
.fs-h2{font-size:clamp(1.6rem,3.4vw,2.5rem)}
.fs-h3{font-size:clamp(1.1rem,1.8vw,1.3rem)}
.fs-lede{font-size:clamp(1.02rem,1.4vw,1.15rem);color:var(--color-text-muted);line-height:1.8}

.fs-num{display:inline-flex;align-items:center;gap:.65rem;font-family:var(--font-heading);font-weight:700;font-size:.82rem;letter-spacing:.16em;color:var(--color-accent);margin-bottom:1rem}
.fs-num::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--color-tape);flex:none}
.fs-num::after{content:'';height:1.5px;width:52px;background:var(--color-accent);flex:none;transform-origin:left;transform:scaleX(0)}
.reveal.in .fs-num::after{transform:scaleX(1);transition:transform .55s var(--ease-snap) .15s}

.breadcrumb{font-size:.85rem;color:var(--color-text-subtle);margin-bottom:1rem}
.breadcrumb a{color:var(--color-text-subtle)}
.breadcrumb a:hover{color:var(--color-accent)}

/* ===== 헤더 ===== */
.hdr{position:fixed;top:0;left:0;right:0;z-index:50;padding:1rem 0;background:rgba(32,29,24,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-ink-alt)}
.hdr-inner{display:flex;align-items:center;justify-content:space-between}
.hdr-logo{font-family:var(--font-heading);font-weight:800;font-size:1.15rem;letter-spacing:0;color:var(--text-on-dark)}
.hdr-logo span{color:var(--color-tape-soft)}
.hdr-nav{display:flex;gap:1.8rem;font-size:.9rem;color:var(--color-text-faint)}
.hdr-nav a{transition:color .25s var(--ease)}
.hdr-nav a:hover{color:var(--text-on-dark)}
.hdr-cta{padding:.6rem 1.2rem;border:1px solid var(--color-tape-soft);border-radius:var(--radius-sm);font-size:.86rem;font-weight:700;color:var(--color-tape-soft);display:inline-flex;align-items:center;gap:.4rem}
.hdr-cta .arrow{display:none}
.hdr-burger{display:none;position:relative;width:34px;height:34px;background:none;border:0;cursor:pointer;padding:0}
.hdr-burger::before{content:'';position:absolute;left:6px;right:6px;top:16px;height:2px;background:var(--text-on-dark);box-shadow:0 -7px 0 var(--text-on-dark),0 7px 0 var(--text-on-dark)}
#mob-nav{position:fixed;inset:0 0 0 auto;width:78vw;max-width:340px;background:var(--color-ink);transform:translateX(100%);transition:transform .35s var(--ease);z-index:60;padding:5rem 1.8rem 2rem;border-left:1px solid var(--color-ink-alt)}
#mob-nav.open{transform:translateX(0)}
#mob-nav a{display:block;padding:.9rem 0;border-bottom:1px solid var(--color-ink-alt);font-size:1.05rem;color:var(--text-on-dark)}
#nav-backdrop{position:fixed;inset:0;background:rgba(10,9,6,.6);z-index:55;opacity:0;pointer-events:none;transition:opacity .3s}
#nav-backdrop.open{opacity:1;pointer-events:auto}

/* ===== 버튼 ===== */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:1rem 1.9rem;min-height:52px;border-radius:var(--radius-sm);background:var(--color-tape);color:var(--text-on-dark);border:1px solid var(--color-tape);font-weight:700;transition:.3s var(--ease)}
.btn .arrow{transition:transform .3s var(--ease)}
.btn-ghost{background:transparent;color:var(--color-text);border:1px solid var(--color-border-alt)}
@media (hover:hover) and (pointer:fine){
  .btn:hover{background:transparent;color:var(--color-tape)}
  .btn:hover .arrow{transform:translateX(6px)}
  .btn-ghost:hover{background:var(--color-ink);color:var(--text-on-dark);border-color:var(--color-ink)}
  .hdr-cta:hover{background:var(--color-tape-soft);color:var(--text-on-dark)}
  .card:hover{background:var(--color-ink);color:var(--text-on-dark)}
  .card:hover h3{color:var(--text-on-dark)}
  .card:hover p{color:var(--color-text-faint)}
  .card:hover .fs-num{color:var(--color-accent-soft)}
  .dp-card:hover img{transform:scale(1.06)}
}

/* ===== 히어로 ===== */
.detail-hero{padding:calc(var(--section-pad) + 3rem) 0 calc(var(--section-pad) * .5);background-color:var(--color-bg);background-size:cover;background-position:center}
.hero{position:relative;background:var(--color-bg);overflow:hidden}
.hero-inner{position:relative;max-width:var(--container-wide);margin:0 auto;padding:calc(var(--section-pad) + 3.2rem) var(--gutter) var(--section-pad);display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(28px,5vw,64px);align-items:center}
.hero-text{min-width:0}
.hero-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--radius-sm);background:var(--color-ink);font-family:var(--font-heading);font-weight:600;font-size:.85rem;letter-spacing:.02em;color:var(--color-accent-soft);margin-bottom:1.4rem}
.hero-badge::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--color-tape-soft)}
.hero h1{color:var(--color-text);font-size:clamp(2.2rem,5.4vw,3.9rem);position:relative;padding-bottom:1.2rem}
.hero h1::after{content:'';position:absolute;left:2px;bottom:0;height:3px;width:104px;background:var(--color-tape)}
.hero-sub{color:var(--color-text-muted);font-size:clamp(1rem,1.5vw,1.15rem);margin-top:1.2rem;max-width:540px}
.hero-cta{display:flex;gap:1rem;margin-top:2.1rem;flex-wrap:wrap}
.hero-frame{position:relative;aspect-ratio:4/5;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--color-border-alt);box-shadow:0 30px 60px -28px rgba(32,29,24,.45)}
.hero-frame img{width:100%;height:100%;object-fit:cover}
@media(max-width:900px){
  .hero-inner{grid-template-columns:1fr;padding-top:calc(var(--section-pad) + 2rem)}
  .hero-frame{aspect-ratio:16/10;order:-1}
}

/* ===== 카드/그리드 ===== */
.dp-g2{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.dp-g3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.dp-g4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
@media(max-width:1024px){.dp-g3,.dp-g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){.dp-g2,.dp-g3,.dp-g4{grid-template-columns:1fr}}

.card{background:var(--color-bg-alt);border:1px solid var(--color-border);padding:clamp(24px,3vw,36px);transition:.35s var(--ease)}
.card h3{margin-bottom:.5rem}
.card p{color:var(--color-text-muted);font-size:.95rem;margin:0}

.dp-card{display:block;background:var(--color-bg-alt);border:1px solid var(--color-border);overflow:hidden}
.dp-card img{transition:transform .5s var(--ease);aspect-ratio:4/3;object-fit:cover;width:100%}
.dp-card-body{padding:1.1rem 1.3rem 1.4rem}
.dp-card-cat{display:inline-block;padding:.25rem .6rem;border-radius:var(--radius-sm);background:var(--color-ink);font-family:var(--font-heading);font-weight:600;font-size:.72rem;color:var(--color-accent-soft);letter-spacing:.04em}
.dp-card h3{font-size:1.05rem;margin-top:.4rem}

/* 카테고리 모자이크 — 좌측 위 2 / 아래 2, 우측에 큰 카드 1개.
   사진이 카드 전체를 채우고, 글씨는 사진 위에 그라디언트로 얹는다(별도 텍스트 섹션 없음 → 세로 공간을 사진에 최대로 준다). */
.dp-mosaic{display:grid;grid-template-columns:1fr 1fr 1.3fr;grid-template-rows:repeat(2,clamp(190px,22vw,280px));gap:20px}
.dp-mosaic .dp-card{position:relative;display:block;height:100%}
.dp-mosaic .dp-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;margin:0}
.dp-mosaic .dp-card-body{position:absolute;left:0;right:0;bottom:0;padding:1rem 1.2rem 1.2rem;background:linear-gradient(to top,rgba(20,14,10,.92) 0%,rgba(20,14,10,.55) 60%,transparent 100%)}
.dp-mosaic .dp-card-body h3{color:var(--text-on-dark)}
.dp-mosaic .dp-card:nth-child(5){grid-column:3;grid-row:1/3}
@media(max-width:1024px){
  .dp-mosaic{grid-template-columns:1fr 1fr;grid-template-rows:repeat(2,clamp(170px,24vw,230px)) clamp(200px,32vw,280px)}
  .dp-mosaic .dp-card:nth-child(5){grid-column:1/-1;grid-row:3}
}
@media(max-width:640px){
  .dp-mosaic{grid-template-columns:1fr;grid-template-rows:none;gap:16px}
  .dp-mosaic .dp-card{height:auto;aspect-ratio:4/3}
  .dp-mosaic .dp-card:nth-child(5){grid-column:auto;grid-row:auto;aspect-ratio:16/10}
}

.more-ico{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1px solid var(--color-tape);color:var(--color-tape);font-size:1.1rem;transition:.3s var(--ease)}
.card-more{display:grid;grid-template-columns:1fr auto;align-items:start;column-gap:1rem;row-gap:.3rem;border-style:dashed;border-color:var(--color-border-alt);transition:.3s var(--ease)}
.card-more .more-ico{grid-column:2;grid-row:1;align-self:center;flex:none}
.card-more h3{grid-column:1;grid-row:1;align-self:center;margin:0}
.card-more p{grid-column:1/-1;grid-row:2;margin:0}
@media (hover:hover) and (pointer:fine){
  .card-more:hover{border-color:var(--color-tape);background:var(--color-bg-alt-2)}
  .card-more:hover .more-ico{background:var(--color-tape);color:var(--text-on-dark)}
}

/* Before/After 비교 컴포넌트 */
.ba-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:0}
.ba-shot{position:relative;display:block;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}
.ba-shot img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5}
.ba-shot em{position:absolute;left:12px;top:12px;font-style:normal;font-family:var(--font-heading);font-weight:700;font-size:.72rem;letter-spacing:.08em;padding:.3rem .7rem;border-radius:var(--radius-pill);background:var(--color-ink);color:var(--text-on-dark)}
.ba-shot.ba-after em{background:var(--color-tape)}
figure.ba-pair figcaption{grid-column:1/-1;margin-top:.8rem;color:var(--color-text-subtle);font-size:.88rem}
.site-photo{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}
.site-photo img{width:100%;height:auto;display:block}

/* 뱃지 */
.card-badges{display:flex;flex-wrap:wrap;gap:8px}
.badge{padding:.35rem .9rem;background:var(--color-bg-alt-2);border:1px solid var(--color-border-alt);border-radius:var(--radius-sm);font-family:var(--font-heading);font-weight:600;font-size:.82rem;color:var(--color-text-muted)}

/* 진행 과정 */
.proc-list{display:flex;list-style:none;margin:0;padding:0}
.proc-step{flex:1;position:relative;padding:0 12px;text-align:center}
.proc-step:not(:last-child)::after{content:'';position:absolute;top:24px;left:50%;width:100%;height:2px;background:var(--color-border-alt);z-index:0}
.proc-num{position:relative;z-index:1;margin:0 auto 14px;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--color-ink);border:2px solid var(--color-tape);color:var(--color-accent-soft);font-family:var(--font-heading);font-weight:700}
.proc-step p{color:var(--color-text-muted);font-size:.92rem;margin:0}
.proc-step h4{font-size:1rem;margin:0 0 .3rem;font-family:var(--font-heading)}
@media(max-width:768px){.proc-list{flex-direction:column;gap:10px}.proc-step{padding:24px 0}.proc-step::after{display:none}}

/* 체크리스트 */
.checklist li{position:relative;padding:.6rem 0 .6rem 1.8rem;border-bottom:1px solid var(--color-border);color:var(--color-text-muted)}
.checklist li::before{content:'✓';position:absolute;left:0;color:var(--color-tape);font-weight:700}

/* 비용/절차 표 */
.table-scroll{overflow-x:auto;margin-top:2rem}
.cost-table{width:100%;border-collapse:collapse;min-width:480px}
.cost-table th,.cost-table td{border:1px solid var(--color-border);padding:.9rem 1.1rem;text-align:left;font-size:.92rem}
.cost-table th{background:var(--color-bg-alt-2);font-family:var(--font-heading);color:var(--color-text);width:34%}
.cost-table td{color:var(--color-text-muted)}

/* invert 섹션 */
.section-invert{background:var(--color-bg-invert);color:var(--color-text-invert)}
.section-invert h2,.section-invert h3{color:var(--color-text-invert)}
.section-invert .fs-lede{color:var(--color-text-faint)}
.section-invert .fs-num{color:var(--color-accent-soft)}
.section-invert .card{background:var(--color-ink-alt);border-color:#3a352c}
.section-invert .card p{color:var(--color-text-faint)}
.section-invert .proc-step p{color:var(--color-text-faint)}
.section-invert .proc-step h4{color:var(--color-text-invert)}
@media (hover:hover) and (pointer:fine){
  .section-invert .card:hover{background:var(--color-bg-alt);color:var(--color-text)}
  .section-invert .card:hover h3{color:var(--color-text)}
  .section-invert .card:hover p{color:var(--color-text-muted)}
}

/* CTA 배너 */
.cta-banner{background-color:var(--color-ink);color:var(--text-on-dark);text-align:center}
.cta-banner h2{color:var(--text-on-dark);margin-bottom:1rem}
.cta-banner .fs-lede{color:var(--color-text-faint);margin-bottom:2rem}

/* FAQ */
.faq details{border-bottom:1px solid var(--color-border);padding:1.3rem 0}
.faq summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;font-weight:700;list-style:none;font-family:var(--font-heading)}
.faq summary::-webkit-details-marker{display:none}
.faq summary .ico{font-size:1.3rem;color:var(--color-tape);transition:transform .3s var(--ease);flex:none}
.faq details[open] summary .ico{transform:rotate(45deg)}
.faq .faq-a{color:var(--color-text-muted);margin-top:1rem;line-height:1.8}

/* 푸터 */
.ftr{background:var(--color-ink);color:var(--text-on-dark);border-top:1px solid var(--color-ink-alt);padding:4rem 0 2rem}
.ftr-grid{display:grid;grid-template-columns:1.2fr .8fr 1fr 1fr;gap:2rem}
.ftr h4{font-family:var(--font-heading);font-size:.82rem;color:var(--color-accent-soft);margin-bottom:1rem;letter-spacing:.1em;text-transform:uppercase}
.ftr address{font-style:normal;color:var(--color-text-faint);font-size:.9rem;line-height:2}
.ftr-links li{margin-bottom:.7rem}
.ftr-links a{color:var(--color-text-faint);font-size:.92rem}
.ftr-links a:hover{color:var(--text-on-dark)}
.ftr-cats a{color:var(--color-text-faint);font-size:.88rem;display:block;margin-bottom:.6rem}
.ftr-cats a:hover{color:var(--text-on-dark)}
.ftr-copy{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--color-ink-alt);color:var(--color-text-subtle);font-size:.8rem}
@media(max-width:768px){.ftr-grid{grid-template-columns:1fr;gap:2rem}}
@media(max-width:1024px){.ftr-grid{grid-template-columns:1fr 1fr}}

/* 모바일 스티키 CTA */
#mob-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;background:var(--color-ink);border-top:1px solid var(--color-ink-alt);transform:translateY(110%);transition:transform .4s var(--ease)}
#mob-bar.show{transform:translateY(0)}
#mob-bar a{display:block;padding:1rem;text-align:center;font-weight:700;color:var(--text-on-dark);background:var(--color-tape)}
#float-cta{position:fixed;right:28px;bottom:28px;z-index:40;padding:1rem 1.4rem;border-radius:var(--radius-sm);background:var(--color-tape);color:var(--text-on-dark);font-weight:700;box-shadow:0 10px 30px rgba(32,29,24,.35);display:flex;align-items:center;gap:.6rem}
#float-cta::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--color-ink);animation:pulse 1.9s infinite}
@keyframes pulse{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}
@media(max-width:768px){
  #mob-bar{display:block}
  #float-cta{display:none}
  .hdr-nav,.hdr-cta{display:none}
  body{padding-bottom:64px}
  .hdr-burger{display:flex}
}

/* 스크롤 리빌 */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.in{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}
