/* 노크 KNOCK (희성건축) — 네이비 × 브라스 · gdweb 프리셋 light-btnsharp-cardsharp-lg 기반 */
:root{
  --navy:#0f2140;--navy-2:#162c52;--navy-3:#1f3a6b;--navy-line:rgba(255,255,255,.12);
  --brass:#b8925a;--brass-2:#d6b47c;--brass-dim:rgba(184,146,90,.16);
  --cloud:#f3f5f8;--cloud-2:#e9edf3;--paper:#ffffff;
  --ink:#131a26;--ink-2:#4a5364;--ink-3:#7b8494;--line:#dfe4ec;
  --sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,system-ui,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  --serif:var(--sans);
  --mono:"Montserrat",var(--sans);
  /* 타이포 스케일 (root 16) — 9단 */
  --fs-xs:12px;   /* 마이크로 라벨(eyebrow·crumb·번호) */
  --fs-sm:13.5px; /* 캡션·폼 라벨·푸터 */
  --fs-s:15px;    /* 카드 본문·리스트 */
  --fs-base:16px; /* 본문 */
  --fs-md:17.5px; /* 리드 */
  --fs-lg:20px;   /* h3·카드 제목 */
  --fs-xl:24px;   /* 소제목·강조 */
  --fs-2xl:clamp(28px,3.2vw,40px);  /* h2 */
  --fs-3xl:clamp(34px,4.4vw,54px);  /* 서브 페이지 h1 */
  --fs-4xl:clamp(40px,5.4vw,68px);  /* 홈 히어로 h1 */
  --lh-display:1.1;--lh-head:1.22;--lh-body:1.55;--lh-tight:1.4;
  --ls-display:-.03em;--ls-head:-.028em;--ls-sub:-.018em;--ls-body:-.008em;--ls-label:.16em;
  --w:1280px;--r:0px;--r-sm:0px;
  --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);line-height:var(--lh-body);font-size:var(--fs-base);letter-spacing:var(--ls-body);overflow-x:hidden;word-break:keep-all;font-feature-settings:"ss05","tnum"}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
:focus-visible{outline:2px solid var(--brass);outline-offset:3px}
.wrap{width:min(var(--w),calc(100% - 40px));margin:0 auto}
.num{font-family:var(--mono);font-weight:700;letter-spacing:-.01em}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}

/* 타이포 */
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:var(--fs-xs);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--brass);line-height:1}
.eyebrow::before{content:"";width:22px;height:1px;background:var(--brass)}
.h1{font-weight:600;font-size:var(--fs-4xl);line-height:var(--lh-display);letter-spacing:var(--ls-display)}
.h2{font-weight:600;font-size:var(--fs-2xl);line-height:var(--lh-head);letter-spacing:var(--ls-head)}
.h3{font-weight:600;font-size:var(--fs-lg);line-height:var(--lh-tight);letter-spacing:var(--ls-sub)}
.lead{font-size:var(--fs-md);color:var(--ink-2);line-height:var(--lh-body);font-weight:400}
.sec-head{max-width:720px;margin-bottom:52px}
.sec-head .eyebrow{margin-bottom:16px}
.sec-head .h2{margin-bottom:18px}
.sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
.sec-head.center .eyebrow::before{display:none}
.brass{color:var(--brass-2)}
.on-dark{color:#fff}
.on-dark .lead{color:rgba(255,255,255,.72)}
.on-dark .h3{color:#fff}

/* 버튼 — 각진, 높이 고정, 글자 16 고정 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 20px;border-radius:0;font-weight:500;font-size:16px;line-height:1;transition:background .25s,color .25s,border-color .25s;white-space:nowrap}
.btn--brass{background:var(--brass);color:#fff}
.btn--brass:hover{background:#a8834e}
.btn--navy{background:var(--navy);color:#fff}
.btn--navy:hover{background:var(--navy-3)}
.btn--ghost{border:1px solid rgba(255,255,255,.55);color:#fff}
.btn--ghost:hover{border-color:#fff;background:rgba(255,255,255,.08)}
.btn--ghost-dark{border:1px solid var(--navy);color:var(--navy)}
.btn--ghost-dark:hover{background:var(--navy);color:#fff}
.btn--lg{height:52px;padding:0 22px}
.btn--sm{height:40px;padding:0 16px;font-size:15px}

/* 헤더 */
.header{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .35s,box-shadow .35s}
.header__in{display:flex;align-items:center;justify-content:space-between;height:78px;transition:height .3s}
.header.is-scrolled{background:rgba(15,33,64,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--navy-line)}
.header.is-scrolled .header__in{height:64px}
.brand{display:flex;align-items:center;gap:10px;color:#fff}
.brand i{width:30px;height:30px;display:grid;place-items:center;border:1.5px solid var(--brass-2);color:var(--brass-2);flex:0 0 auto}
.brand i svg{width:16px;height:16px}
.brand b{font-family:var(--mono);font-weight:700;font-size:var(--fs-xl);letter-spacing:var(--ls-label);line-height:1}
.brand small{display:block;font-size:var(--fs-xs);letter-spacing:.04em;color:rgba(255,255,255,.62);line-height:1;margin-top:5px;font-family:var(--sans);font-weight:500}
.gnb{display:flex;gap:34px}
.gnb__link{color:rgba(255,255,255,.78);font-weight:500;font-size:var(--fs-s);position:relative;padding:6px 0;transition:color .2s}
.gnb__link::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--brass-2);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.gnb__link:hover,.gnb__link.is-current{color:#fff}
.gnb__link:hover::after,.gnb__link.is-current::after{transform:scaleX(1)}
.header__cta{display:flex;align-items:center;gap:14px}
.header__tel{color:#fff;font-size:var(--fs-s)}
.header .btn{height:40px;padding:0 18px;font-size:15px}
.hamburger{display:none;width:44px;height:44px;flex-direction:column;justify-content:center;align-items:center;gap:6px}
.hamburger span{width:24px;height:2px;background:#fff;transition:transform .3s,opacity .3s}
.hamburger[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.hamburger[aria-expanded="true"] span:nth-child(2){opacity:0}
.hamburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
.mobile-menu{position:fixed;inset:0;z-index:49;pointer-events:none}
.mobile-menu__dim{position:absolute;inset:0;background:rgba(0,0,0,.55);opacity:0;transition:opacity .3s}
.mobile-menu__panel{position:absolute;top:0;right:0;bottom:0;width:min(320px,84vw);background:var(--navy);padding:100px 30px 40px;transform:translateX(100%);transition:transform .38s var(--ease);display:flex;flex-direction:column;gap:6px}
.mobile-menu.is-open{pointer-events:auto}
.mobile-menu.is-open .mobile-menu__dim{opacity:1}
.mobile-menu.is-open .mobile-menu__panel{transform:none}
.mobile-menu__link{color:#fff;font-size:var(--fs-lg);font-weight:700;padding:12px 0;border-bottom:1px solid var(--navy-line);font-family:var(--serif)}
.mobile-menu__link.is-current{color:var(--brass-2)}
.mobile-menu .btn{margin-top:auto}
.mobile-menu__tel{color:rgba(255,255,255,.7);font-size:var(--fs-s);margin-top:18px;text-align:center}

/* 앱 배너 (모바일 전용 · 스토어 URL 있을 때만 script.js가 표시) */
.appbar{display:none;position:fixed;left:0;right:0;top:0;z-index:52;height:60px;background:#fff;border-bottom:1px solid var(--line);padding:0 12px;gap:10px;align-items:center}
body.has-appbar .header{top:60px}
body.has-appbar .mobile-menu__panel{padding-top:150px}
.appbar.is-show{display:flex}
.appbar__ico{width:44px;height:44px;flex:0 0 auto;background:var(--navy);color:var(--brass-2);display:grid;place-items:center}
.appbar__ico svg{width:22px;height:22px}
.appbar__txt{flex:1 1 auto;min-width:0}
.appbar__txt b{display:block;font-size:var(--fs-s);color:var(--navy)}
.appbar__txt span{display:block;font-size:var(--fs-sm);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.appbar .btn{height:38px;padding:0 14px;font-size:14px}
.appbar__x{width:32px;height:32px;display:grid;place-items:center;color:var(--ink-3);flex:0 0 auto}
.appbar__x svg{width:16px;height:16px}
/* 히어로 (시안: 좌 텍스트 · 우 프레임 사진) */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;color:#fff;background:var(--navy);overflow:hidden;padding:150px 0 100px}
.hero__grid{display:grid;grid-template-columns:1fr 1.05fr;gap:60px;align-items:center}
.hero__in{position:relative;z-index:2;max-width:600px}
.hero .eyebrow{margin-bottom:22px}
.hero .h1{margin-bottom:22px;position:relative;padding-top:22px}
.hero .h1::before{content:"";position:absolute;left:2px;top:0;width:64px;height:2px;background:var(--brass-2)}
.hero .h1 em{font-style:normal;color:var(--brass-2)}
.hero__lead{font-size:var(--fs-lg);color:rgba(255,255,255,.78);line-height:1.65;margin-bottom:34px;max-width:520px}
.hero__cta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:46px}
.hero__def{display:flex;gap:30px;flex-wrap:wrap;border-top:1px solid var(--navy-line);padding-top:22px}
.hero__def div{font-size:var(--fs-s);color:rgba(255,255,255,.65)}
.hero__def b{display:block;color:var(--brass-2);font-weight:600;letter-spacing:var(--ls-sub);font-size:var(--fs-md);margin-bottom:2px}
.hero__pic{position:relative;aspect-ratio:4/3;border:1px solid rgba(214,180,124,.55);overflow:hidden;background:var(--navy-2)}
.hero__pic img{width:100%;height:100%;object-fit:cover}
.hero__pic::before{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);z-index:1;pointer-events:none}
.hero__pic small{position:absolute;left:18px;bottom:16px;z-index:2;font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:var(--ls-label);color:rgba(255,255,255,.75);background:rgba(15,33,64,.55);padding:6px 10px}
.hero__scroll{position:absolute;z-index:2;bottom:26px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.3em;color:rgba(255,255,255,.5)}
.hero__scroll::after{content:"";display:block;width:1px;height:34px;margin:8px auto 0;background:linear-gradient(var(--brass-2),transparent);animation:drop 1.8s var(--ease) infinite}
@keyframes drop{0%{transform:scaleY(0);transform-origin:top}55%{transform:scaleY(1);transform-origin:top}56%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* 공간 스트립 */
.strip{background:var(--navy-2);border-top:1px solid rgba(184,146,90,.35);border-bottom:1px solid rgba(184,146,90,.35)}
.strip__grid{display:grid;grid-template-columns:repeat(4,1fr)}
.strip__item{padding:36px 22px 32px;border-right:1px solid rgba(184,146,90,.28);color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;transition:background .25s}
.strip__item:hover{background:rgba(255,255,255,.04)}
.strip__item:last-child{border-right:0}
.strip__item i{flex:0 0 auto;width:52px;height:52px;display:grid;place-items:center;color:var(--brass-2)}
.strip__item i svg{width:38px;height:38px;stroke-width:1.3}
.strip__item b{display:block;font-weight:600;letter-spacing:var(--ls-sub);font-size:var(--fs-lg);margin-bottom:4px;letter-spacing:-.01em}
.strip__item span{font-size:var(--fs-sm);color:rgba(255,255,255,.58)}

/* 섹션 공통 */
.sec{padding:100px 0}
.sec--cloud{background:var(--cloud)}
.sec--navy{background:var(--navy);color:#fff}
.sec--tight{padding:80px 0}

/* 2단 분할 */
.split{display:grid;grid-template-columns:1.05fr 1fr;gap:70px;align-items:center}
.split--rev{grid-template-columns:1fr 1.05fr}
.split--rev .split__img{order:2}
.split__img{position:relative;overflow:hidden;aspect-ratio:4/3;border:1px solid var(--line)}
.split__img img{width:100%;height:100%;object-fit:cover}
.split__img::after{content:"";position:absolute;inset:auto 0 0 0;height:38%;background:linear-gradient(transparent,rgba(15,33,64,.6))}
.split__cap{position:absolute;left:24px;bottom:22px;color:#fff;font-weight:600;letter-spacing:var(--ls-sub);font-size:var(--fs-md);z-index:1}
.split__cap small{display:block;font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:var(--ls-label);color:var(--brass-2);margin-bottom:6px}
.split .lead+.lead{margin-top:16px}
.split .btn{margin-top:30px}
.defs{display:grid;gap:12px;margin-top:34px}
.def{display:flex;gap:18px;padding:20px 22px;background:#fff;border:1px solid var(--line)}
.sec--navy .def{background:rgba(255,255,255,.04);border-color:var(--navy-line)}
.def b{flex:0 0 110px;font-weight:600;letter-spacing:var(--ls-sub);color:var(--navy);font-size:var(--fs-lg);line-height:1.3}
.sec--navy .def b{color:#fff}
.def b small{display:block;color:var(--brass);font-size:var(--fs-xs);font-family:var(--mono);letter-spacing:.1em;font-weight:600;margin-bottom:2px}
.def p{color:var(--ink-2);font-size:var(--fs-s)}
.sec--navy .def p{color:rgba(255,255,255,.7)}

/* 카드 그리드 */
.grid{display:grid;gap:20px}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}
.card{background:#fff;border:1px solid var(--line);padding:34px 30px;transition:border-color .3s,transform .35s var(--ease)}
.card:hover{border-color:var(--brass);transform:translateY(-4px)}
.card__no{font-family:var(--mono);color:var(--brass);font-size:var(--fs-xs);letter-spacing:var(--ls-label);margin-bottom:22px}
.card__ico{width:48px;height:48px;background:var(--navy);color:var(--brass-2);display:grid;place-items:center;margin-bottom:24px}
.card__ico svg{width:22px;height:22px}
.card .h3{margin-bottom:12px;color:var(--navy)}
.card p{color:var(--ink-2);font-size:var(--fs-s)}
.card--dark{background:var(--navy-2);border-color:var(--navy-line);color:#fff}
.card--dark .h3{color:#fff}
.card--dark p{color:rgba(255,255,255,.66)}
.card--dark .card__ico{background:var(--brass-dim)}

/* 사진 카드 (시안: 사진 + 하단 캡션 박스) */
.photo{display:block;background:#fff;border:1px solid var(--line);color:var(--ink);transition:border-color .3s}
.photo:hover{border-color:var(--brass)}
.photo__img{overflow:hidden;aspect-ratio:4/3;background:var(--cloud-2)}
.photo--sq .photo__img{aspect-ratio:1/1}
.photo__img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.photo:hover .photo__img img{transform:scale(1.04)}
.photo__t{padding:16px 18px;border-top:1px solid var(--line);text-align:center}
.photo__t small{display:block;font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:var(--ls-label);color:var(--brass);margin-bottom:4px}
.photo__t b{display:block;font-weight:600;letter-spacing:var(--ls-sub);font-size:var(--fs-lg);color:var(--navy)}
.photo__t span{display:block;font-size:var(--fs-sm);color:var(--ink-3);margin-top:3px}
.photo--left .photo__t{text-align:left}

/* 타임라인 */
.tl{position:relative;display:grid;gap:0}
.tl::before{content:"";position:absolute;left:33px;top:16px;bottom:16px;width:1px;background:linear-gradient(var(--brass),rgba(184,146,90,.15))}
.tl__item{position:relative;display:grid;grid-template-columns:68px 1fr;padding:26px 0 20px}
.tl__no{position:relative;z-index:1;width:68px;display:flex;align-items:flex-start}
.tl__no i{width:12px;height:12px;background:var(--brass);box-shadow:0 0 0 6px var(--paper);margin:8px 14px 0 27px;flex:0 0 auto}
.sec--cloud .tl__no i{box-shadow:0 0 0 6px var(--cloud)}
.tl__no span{position:absolute;left:53px;top:-15px;font-size:var(--fs-xs);font-family:var(--mono);letter-spacing:var(--ls-label);color:var(--brass);opacity:.85;line-height:1;white-space:nowrap}
.tl__body{padding-left:8px;border-bottom:1px solid var(--line);padding-bottom:22px}
.tl__body b{display:block;font-size:var(--fs-md);color:var(--navy);margin-bottom:6px}
.tl__body p{color:var(--ink-2);font-size:var(--fs-s)}
.tl__body small{display:block;margin-top:8px;color:var(--ink-3);font-size:var(--fs-sm)}

/* 스텝 (프로세스 상세) */
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.steps div{background:#fff;padding:32px 24px;position:relative}
.steps b{display:block;font-family:var(--mono);color:var(--brass);letter-spacing:var(--ls-label);font-size:var(--fs-xs);margin-bottom:12px}
.steps strong{display:block;font-weight:600;letter-spacing:var(--ls-sub);color:var(--navy);font-size:var(--fs-xl);margin-bottom:8px}
.steps p{color:var(--ink-2);font-size:var(--fs-s)}

/* 영역 4 (자재 카테고리) */
.areas{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.areas div{background:#fff;padding:34px 28px;position:relative;overflow:hidden;isolation:isolate}
.areas__bg{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center;filter:saturate(.25) contrast(.9);opacity:.16;transform:scale(1);transition:transform 2.4s cubic-bezier(.23,1,.32,1),opacity .6s ease;pointer-events:none}
.areas__item::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,.2));pointer-events:none}
.areas__item>b,.areas__item>strong,.areas__item>p,.areas__item>ul{position:relative;z-index:1}
@media (hover:hover) and (pointer:fine){.areas__item:hover .areas__bg{transform:scale(1.5);opacity:.22}}
@media (prefers-reduced-motion:reduce){.areas__item:hover .areas__bg{transform:none}}
.areas b{display:block;font-family:var(--mono);color:var(--brass);letter-spacing:var(--ls-label);font-size:var(--fs-xs);margin-bottom:12px}
.areas strong{display:block;font-weight:600;letter-spacing:var(--ls-sub);color:var(--navy);font-size:var(--fs-xl);margin-bottom:8px}
.areas p{color:var(--ink-2);font-size:var(--fs-s)}
.areas ul{margin-top:12px;display:grid;gap:5px}
.areas li{font-size:var(--fs-sm);color:var(--ink-2);padding-left:14px;position:relative}
.areas li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:1px;background:var(--brass)}

/* 체크 리스트 */
.checks{display:grid;gap:12px;margin-top:26px}
.checks li{display:flex;gap:14px;align-items:flex-start;color:var(--ink-2);font-size:var(--fs-base)}
.on-dark .checks li{color:rgba(255,255,255,.82)}
.checks li::before{content:"";flex:0 0 auto;width:22px;height:22px;margin-top:1px;background:var(--brass-dim);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b8925a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");background-size:12px;background-position:center;background-repeat:no-repeat}

/* 비교 표 */
.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-s);background:#fff;border:1px solid var(--line)}
.tbl th{background:var(--navy);color:#fff;font-weight:600;padding:14px 16px;text-align:left;font-size:var(--fs-sm);letter-spacing:.02em}
.tbl td{padding:14px 16px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:top}
.tbl td:first-child{color:var(--navy);font-weight:700;white-space:nowrap}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* FAQ */
.faq{max-width:820px;margin:0 auto}
.acc{border-bottom:1px solid var(--line)}
.acc__q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 4px;text-align:left;font-weight:600;font-size:var(--fs-md);letter-spacing:var(--ls-sub);color:var(--navy)}
.acc__q::after{content:"+";font-family:var(--mono);font-size:var(--fs-xl);color:var(--brass);transition:transform .3s var(--ease);flex:0 0 auto}
.acc.is-open .acc__q::after{transform:rotate(45deg)}
.acc__a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s var(--ease)}
.acc__a>div{overflow:hidden}
.acc__a p{padding:0 4px 24px;color:var(--ink-2);line-height:1.65}
.acc.is-open .acc__a{grid-template-rows:1fr}

/* CTA 밴드 */
.cta{position:relative;color:#fff;padding:130px 0;overflow:hidden;background:var(--navy)}
.cta__bg{position:absolute;inset:0;background:url(images/cta.webp) center/cover no-repeat}
.cta__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(15,33,64,.95) 0%,rgba(15,33,64,.82) 50%,rgba(15,33,64,.55) 100%)}
.cta__in{position:relative;max-width:640px}
.cta .h2{margin:16px 0 18px}
.cta p{color:rgba(255,255,255,.75);font-size:var(--fs-md);margin-bottom:32px}
.cta__row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.cta__tel{color:#fff;font-size:var(--fs-md);padding-left:8px}
.cta__tel small{display:block;font-size:var(--fs-xs);color:rgba(255,255,255,.55);letter-spacing:.06em}

/* 페이지 히어로 (서브) */
.page-hero{position:relative;background:var(--navy);color:#fff;padding:170px 0 90px;overflow:hidden}
.page-hero__bg{position:absolute;inset:0;background:url(images/hero-m.webp) center/cover no-repeat;opacity:.3}
.page-hero--video .page-hero__bg{background:url(images/process-poster.webp) center/cover no-repeat;opacity:1}
.page-hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center right;display:block}
@media (prefers-reduced-motion:reduce){.page-hero__video{display:none}}
.page-hero--video .page-hero__bg::after{background:linear-gradient(90deg,rgba(15,33,64,.92) 0%,rgba(15,33,64,.78) 42%,rgba(15,33,64,.35) 75%,rgba(15,33,64,.25) 100%),linear-gradient(180deg,rgba(15,33,64,.35),rgba(15,33,64,0) 40%,rgba(15,33,64,.7) 100%)}
.page-hero--video{padding:200px 0 120px;min-height:72vh;display:flex;align-items:center}
@media (max-width:820px){.page-hero--video{padding:140px 0 70px;min-height:auto}.page-hero--video .page-hero__bg::after{background:linear-gradient(180deg,rgba(15,33,64,.9) 0%,rgba(15,33,64,.82) 60%,rgba(15,33,64,.7) 100%)}}
.page-hero__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,33,64,.6),var(--navy))}
.page-hero .wrap{position:relative}
.page-hero .h1{font-size:var(--fs-3xl);margin:14px 0 16px}
.page-hero p{color:rgba(255,255,255,.72);max-width:640px;font-size:var(--fs-md)}
.page-hero p .hl{color:var(--brass-2);font-weight:700}
.crumb{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:var(--ls-label);color:rgba(255,255,255,.5);margin-bottom:6px}
.crumb a:hover{color:var(--brass-2)}

/* 폼 */
.contact{display:grid;grid-template-columns:1fr 1.35fr;gap:60px;align-items:start}
.contact__side .h2{margin:14px 0 18px}
.contact__side .lead{margin-bottom:30px}
.info{display:grid;gap:12px}
.info>a,.info>div{display:flex;gap:16px;align-items:flex-start;padding:20px 22px;background:#fff;border:1px solid var(--line)}
.info>a>div,.info>div>div{display:block;min-width:0}
.info i{width:40px;height:40px;background:var(--navy);color:var(--brass-2);display:grid;place-items:center;flex:0 0 auto}
.info i svg{width:19px;height:19px}
.info b{display:block;font-size:var(--fs-xs);color:var(--ink-3);font-weight:600;letter-spacing:.04em;margin-bottom:3px}
.info span{font-weight:700;color:var(--navy);font-size:var(--fs-md)}
.info small{display:block;color:var(--ink-3);font-size:var(--fs-sm);margin-top:3px}
.form{background:#fff;border:1px solid var(--line);padding:44px 42px}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{margin-bottom:16px}
.field label{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--ink-2);margin-bottom:8px}
.field label i{color:#c0392b;font-style:normal}
.field input,.field select,.field textarea{width:100%;font:inherit;padding:13px 14px;border:1px solid var(--line);border-radius:0;background:var(--paper);color:var(--ink);transition:border-color .2s,box-shadow .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--brass);box-shadow:0 0 0 3px var(--brass-dim)}
.field textarea{min-height:130px;resize:vertical}
.form .btn{width:100%;margin-top:8px}
.form__note{font-size:var(--fs-sm);color:var(--ink-3);margin-top:14px;text-align:center}
.form__note.is-bad{color:#c0392b}
.form__done{text-align:center;padding:30px 0}
.form__done h2{font-weight:600;letter-spacing:var(--ls-sub);color:var(--navy);margin:12px 0 14px;font-size:var(--fs-2xl)}
.form__done p{color:var(--ink-2);margin-bottom:26px}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:var(--fs-sm);color:var(--ink-2);margin:6px 0 10px}
.consent input{margin-top:4px;accent-color:var(--navy)}

/* 홈 견적 밴드 (시안: 네이비 배경, 좌 카피 · 우 폼) */
.quote{display:grid;grid-template-columns:.8fr 1.4fr;gap:60px;align-items:start}
.quote .form{background:transparent;border:0;padding:0}
.quote .field input,.quote .field select,.quote .field textarea{background:#fff;border-color:#fff}
.quote .field label{color:rgba(255,255,255,.8)}
.quote .consent{color:rgba(255,255,255,.7)}
.quote .form__note{color:rgba(255,255,255,.55)}
.quote .form__done h2{color:#fff}.quote .form__done p{color:rgba(255,255,255,.75)}

/* 푸터 */
.footer{background:#0b1a33;color:rgba(255,255,255,.62);padding:70px 0 34px;font-size:var(--fs-sm)}
.footer__top{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid var(--navy-line)}
.footer .brand{margin-bottom:18px}
.footer__desc{max-width:380px;line-height:1.6}
.footer h4{color:#fff;font-size:var(--fs-sm);letter-spacing:.06em;margin-bottom:16px;font-family:var(--mono)}
.footer li{margin-bottom:9px}
.footer li a:hover{color:var(--brass-2)}
.footer__legal{padding-top:26px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:var(--fs-sm);color:rgba(255,255,255,.45);line-height:1.8}
.footer__legal b{color:rgba(255,255,255,.7);font-weight:600}
.footer__dis{margin-top:14px;font-size:var(--fs-sm);color:rgba(255,255,255,.4);line-height:1.7}

/* 리빌 */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.is-visible{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.12s}.reveal[data-delay="2"]{transition-delay:.24s}.reveal[data-delay="3"]{transition-delay:.36s}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.hero__scroll::after{animation:none}}

/* 플로팅 버튼 */
.float{position:fixed;right:18px;bottom:18px;z-index:40;display:flex;flex-direction:column;gap:10px;align-items:flex-end;transition:bottom .3s}
.float__btn{display:flex;align-items:center;gap:10px;padding:0 16px 0 10px;height:44px;font-weight:600;font-size:15px;border:1px solid rgba(255,255,255,.35);transition:transform .25s var(--ease);white-space:nowrap}
.float__btn:hover{transform:translateY(-3px)}
.float__btn i{width:26px;height:26px;display:grid;place-items:center;background:rgba(255,255,255,.18)}
.float__btn i svg{width:16px;height:16px}
.float__btn--tel{background:var(--navy);color:#fff}
.float__btn--form{background:var(--brass);color:#fff}
.float__btn--form i{background:rgba(15,33,64,.18)}
.float__top{width:44px;height:44px;background:#fff;border:1px solid var(--line);color:var(--navy);display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s var(--ease);transform:translateY(8px)}
.float__top.is-show{opacity:1;pointer-events:auto;transform:none}
.float__top svg{width:16px;height:16px}

/* 반응형 */
@media (max-width:1024px){
  .strip__grid{grid-template-columns:repeat(2,1fr)}
  .strip__item:nth-child(2){border-right:0}.strip__item:nth-child(-n+2){border-bottom:1px solid rgba(184,146,90,.28)}
  .strip__item{padding:28px 14px 24px}.strip__item i svg{width:34px;height:34px}.strip__item b{font-size:var(--fs-base)}
  .grid--4{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(2,1fr)}
  .split,.split--rev,.contact,.quote,.hero__grid{grid-template-columns:1fr;gap:44px}
  .hero__grid{gap:40px}
  .split--rev .split__img{order:0}
  .areas{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,1fr)}
  .footer__top{grid-template-columns:1fr 1fr}
}
@media (max-width:820px){
  :root{--fs-base:15px;--fs-md:16px;--fs-lg:18px;--fs-xl:21px;--fs-2xl:clamp(26px,7vw,30px);--fs-3xl:clamp(30px,8vw,36px)}
  .gnb,.header__tel{display:none}.hamburger{display:flex}
  .header .btn{display:none}
  .sec{padding:64px 0}.sec--tight{padding:52px 0}
  .hero{padding:110px 0 60px;min-height:auto}
  .hero__pic{aspect-ratio:3/2}
  .hero__def{display:none}
  .hero .h1{font-size:clamp(34px,9.2vw,44px)}
  .hero__scroll{display:none}
  .hero__lead br,.cta .h2 br,.page-hero .h1 br,.sec-head .h2 br{display:none}
  .hero__cta .btn{flex:1 1 100%}
  .hero__def{gap:18px}
  .grid--2,.grid--3,.grid--4{grid-template-columns:1fr}
  .areas,.steps{grid-template-columns:1fr}
  .form{padding:30px 20px}.form__row{grid-template-columns:1fr;gap:0}
  .footer__top{grid-template-columns:1fr}
  .cta{padding:80px 0}
  .def{flex-direction:column;gap:8px}.def b{flex:none}
  .page-hero{padding:130px 0 56px}
  .sec-head{margin-bottom:34px}
  .btn{height:44px;font-size:15px;padding:0 16px}.btn--lg{height:48px}
  .float{right:12px;bottom:12px;gap:8px}
  .float__btn{height:42px;padding:0 12px 0 8px;font-size:14px}
  .wrap{width:calc(100% - 40px)}
}

/* 인라인 KNOCK 워드마크 (본문 "노크" 대체) — 주변 글자 크기에 비례 */
.km{display:inline-flex;align-items:center;gap:.22em;font-family:var(--mono);font-weight:700;font-size:.86em;letter-spacing:.1em;line-height:1;vertical-align:-.02em;white-space:nowrap;position:relative}
.km svg{width:.98em;height:.98em;flex:0 0 auto;margin-top:-.04em}
.vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.h1 .km,.h2 .km{font-weight:700;font-size:.9em;letter-spacing:.06em;gap:.18em}
.h1 .km svg,.h2 .km svg{stroke-width:1.6}
.footer .km{font-size:.9em}

/* 모자이크 타일 리빌 v2 (제미나이·아스트라 합의안): 타일 opacity만 1.15s, 휘어진 대각선 파동 0~1.85s, 사진 1.035→1 3s 세틀. 이미지 디코드 후 시작 */
.mosaic{position:relative;overflow:hidden;isolation:isolate}
.mosaic>img{transform-origin:50% 50%}
.mosaic>.mosaic__grid{display:none;position:absolute;inset:-1px;z-index:2;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr));gap:0;pointer-events:none}
.mosaic.is-ready>.mosaic__grid{display:grid}
.mosaic.is-ready>img{transform:scale(1.035)}
.mosaic>.mosaic__grid>i{display:block;background:var(--cloud-2);opacity:1;transform:scale(1.02)}
.mosaic.is-on>.mosaic__grid>i{animation:mosaicTileOut 1150ms cubic-bezier(.4,0,.2,1) var(--d,0ms) both}
.mosaic.is-on>img{animation:mosaicPhotoSettle 3000ms cubic-bezier(.22,.61,.36,1) both}
@keyframes mosaicTileOut{from{opacity:1}to{opacity:0}}
@keyframes mosaicPhotoSettle{from{transform:scale(1.035)}to{transform:scale(1)}}
.mosaic.is-done>.mosaic__grid{display:none}
.mosaic.is-done>img{transform:none;animation:none}
@media (prefers-reduced-motion:reduce){.mosaic.is-ready>.mosaic__grid{display:none}.mosaic.is-ready>img,.mosaic.is-on>img{animation:none;transform:none}.mosaic.is-on>.mosaic__grid>i{animation:none}}

/* 형광펜 — 뷰포트 진입 시 좌→우로 긋기(transform scaleX). 문장 안 순서대로 0.45s 간격 */
.pen{position:relative;background:none;color:inherit;font-weight:600;z-index:0;white-space:nowrap}
.pen::before{content:"";position:absolute;left:-.12em;right:-.12em;bottom:.02em;height:.62em;background:rgba(214,180,124,.42);transform:scaleX(0) skewX(-6deg);transform-origin:left center;z-index:-1;border-radius:2px 6px 3px 5px}
.on-dark .pen::before,.cta .pen::before{background:rgba(214,180,124,.62)}
.pen-group.is-on .pen::before{animation:penDraw .6s cubic-bezier(.23,1,.32,1) forwards;animation-delay:var(--d,0s)}
@keyframes penDraw{to{transform:scaleX(1) skewX(-6deg)}}
@media (prefers-reduced-motion:reduce){.pen-group.is-on .pen::before{animation:penDraw .25s ease-out forwards;animation-delay:0s !important}}

/* 자재 조합 카드 — 기본: 패턴 은은+글자 박스 안 / 호버: 패턴 강렬 + 글자 박스 아래로 슬라이드 */
.combos{align-items:start}
.combo{position:relative}
.combo{--tint:15,33,64;--txt:#fff;--txt2:rgba(255,255,255,.78);--lab:var(--brass-2)}
.combo--bright{--tint:244,246,248;--txt:var(--ink);--txt2:var(--ink-2);--lab:var(--brass)}
.combo--stone{--tint:72,62,54;--txt:#fff;--txt2:rgba(255,255,255,.8);--lab:var(--brass-2)}
.combo__box{position:relative;aspect-ratio:4/3;overflow:hidden;background:rgb(var(--tint));border:1px solid var(--line);isolation:isolate}
.combo__bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.45;transform:scale(1.06);filter:saturate(.8);transition:opacity .5s cubic-bezier(.23,1,.32,1),transform 1.8s cubic-bezier(.23,1,.32,1),filter .5s}
.combo__box::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(var(--tint),.1) 0%,rgba(var(--tint),.35) 45%,rgba(var(--tint),.93) 100%);transition:opacity .45s cubic-bezier(.23,1,.32,1)}
.combo__txt{position:relative;z-index:2;padding:22px 24px 0;color:var(--txt);transform:translateY(-100%);transition:transform .55s cubic-bezier(.23,1,.32,1),color .35s}
.combo__txt .card__no{margin-bottom:12px;color:var(--lab);transition:color .35s}
.combo__txt .h3{margin-bottom:10px;color:inherit}
.combo__txt p:not(.card__no){font-size:var(--fs-s);color:var(--txt2);transition:color .35s}
@media (hover:hover) and (pointer:fine){
  .combo:hover .combo__bg{opacity:1;transform:scale(1);filter:saturate(1.05)}
  .combo:hover .combo__box::after{opacity:0}
  .combo:hover .combo__txt{transform:none;color:var(--ink)}
  .combo:hover .combo__txt .card__no{color:var(--brass)}
  .combo:hover .combo__txt p:not(.card__no){color:var(--ink-2)}
}
@media (hover:none){.combo__txt{transform:none;color:var(--ink);padding-top:18px}.combo__txt p:not(.card__no){color:var(--ink-2)}.combo__txt .card__no{color:var(--brass)}.combo__bg{opacity:1;transform:none;filter:none}.combo__box::after{opacity:0}}
@media (prefers-reduced-motion:reduce){.combo__bg,.combo__txt,.combo__box::after{transition:none}}
