/* ==========================================================================
   바이크랩 (BIKELAB) — 프리셋 P11 개러지 메탈
   Steel #E8E9EB / Surface #D3D6DA / Ink #15181C / Accent #F2C200 / Carbon #0D0F12
   Display: Archivo (Condensed 700~900 UPPERCASE) / Body: Pretendard / Data: Roboto Mono

   ★ 아키타입 D — 비대칭 매거진 그리드 (12칼럼 불규칙, 섹션마다 좌우 반전)
   ========================================================================== */

/* ---------- 0. 토큰 ---------- */
:root{
  --steel:#E8E9EB;
  --surface:#D3D6DA;
  --ink:#15181C;
  --accent:#F2C200;
  --carbon:#0D0F12;

  --ink-70:rgba(21,24,28,.70);
  --ink-52:rgba(21,24,28,.52);
  --ink-16:rgba(21,24,28,.16);
  --ink-09:rgba(21,24,28,.09);
  --steel-72:rgba(232,233,235,.72);
  --steel-46:rgba(232,233,235,.46);
  --steel-14:rgba(232,233,235,.14);

  --disp:'Archivo','Archivo Condensed','Pretendard Variable',Pretendard,sans-serif;
  --body:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  --mono:'Roboto Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  --pad-sec:clamp(90px,13vw,190px);
  --wrap:1360px;
  --gut:clamp(20px,4vw,64px);

  /* 경고 스트라이프 (45° 옐로/카본) */
  --hazard:repeating-linear-gradient(45deg,
            var(--accent) 0 18px, var(--carbon) 18px 36px);
  --hazard-fine:repeating-linear-gradient(45deg,
            var(--accent) 0 9px, var(--carbon) 9px 18px);
  /* 헤어라인 브러시드 메탈 */
  --brushed:repeating-linear-gradient(90deg,
            rgba(255,255,255,.55) 0 1px, rgba(0,0,0,.028) 1px 3px);
}

/* ---------- 1. 리셋 ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:var(--body);
  background:var(--steel);
  color:var(--ink);
  font-size:clamp(15px,1.05vw,17px);
  line-height:1.78;
  letter-spacing:-.008em;
  overflow-x:hidden;
  word-break:keep-all;
}
img{display:block;max-width:100%;height:auto}
h1,h2,h3,h4,p,ul,ol,figure,blockquote{margin:0;padding:0}
ul,ol{list-style:none}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}

.wrap{width:min(100% - var(--gut)*2,var(--wrap));margin-inline:auto}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* 사진 통일 처리 — P11 : contrast 1.16 / saturate .94 + 카본 12% multiply */
.hero-media img,figure img,.spec-shot,.tcard-img img{
  filter:contrast(1.16) saturate(.94);
}
.hero-media,figure,.spec-frame,.tcard-img{position:relative}
.hero-media::after,figure::after,.tcard-img::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:var(--carbon);opacity:.12;mix-blend-mode:multiply;
  z-index:1;   /* ⚠ 불꽃(z-index:6)·캡션(z-index:2) 아래에 깔린다 */
}
figure figcaption{position:relative;z-index:2}

/* ---------- 2. 공통 타이포 ---------- */
.label{
  font-family:var(--mono);font-size:11px;font-weight:500;
  letter-spacing:.20em;text-transform:uppercase;
  color:var(--ink-52);
  display:inline-flex;align-items:center;gap:9px;
  margin-bottom:clamp(18px,2.4vw,30px);
}
.label::before{
  content:"";width:26px;height:9px;flex:none;
  background:var(--hazard-fine);
}
.anim-h,h1,h2,h3{
  font-family:var(--disp);
  font-weight:800;
  font-stretch:condensed;
  /* ⚠ 한글 글리프는 어센더/디센더가 커서 line-height 1.0 미만이면 줄이 겹친다.
        영문 컨덴스드 감을 유지하는 최소 안전값이 1.06 이다. */
  line-height:1.06;
  letter-spacing:-.022em;
}
/* 한글은 대문자 변환이 무의미 → 자간만 조인다 */
h1,h2,h3{text-transform:none}

.sec-lead{
  font-size:clamp(15px,1.35vw,19px);
  line-height:1.85;color:var(--ink-70);
  max-width:52ch;
  margin-top:clamp(16px,2vw,26px);
}

/* ---------- 3. 버튼 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--mono);font-size:12px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;
  padding:16px 30px;border:2px solid var(--ink);
  position:relative;transition:background .22s,color .22s,transform .22s;
  /* 카드 모서리 노치 */
  clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));
}
.btn-solid{background:var(--ink);color:var(--steel)}
.btn-solid:hover{background:var(--accent);color:var(--carbon);border-color:var(--accent)}
.btn-line{background:transparent;color:var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--steel)}
.btn-mini{padding:11px 20px;font-size:11px}

/* ---------- 4. 헤더 ---------- */
.site-head{
  position:fixed;inset:0 0 auto;z-index:60;
  background:rgba(232,233,235,0);
  border-bottom:1px solid transparent;
  transition:background .3s,border-color .3s,backdrop-filter .3s;
}
.site-head.is-stuck{
  background:rgba(232,233,235,.93);
  backdrop-filter:blur(12px);
  border-bottom-color:var(--ink-16);
}
.site-head.on-dark:not(.is-stuck){color:var(--steel)}
.site-head.on-dark:not(.is-stuck) .gnb a{color:var(--steel-72)}
.site-head.on-dark:not(.is-stuck) .btn-mini{border-color:var(--steel);color:var(--steel)}
.site-head.on-dark:not(.is-stuck) .btn-mini:hover{background:var(--accent);color:var(--carbon);border-color:var(--accent)}
.head-inner{
  width:min(100% - var(--gut)*2,var(--wrap));margin-inline:auto;
  display:flex;align-items:center;gap:clamp(16px,3vw,40px);
  height:70px;
}
.logo{display:flex;align-items:baseline;gap:9px;flex:none}
.logo-mark{align-self:center;color:var(--accent);display:block}
.logo-txt{font-family:var(--disp);font-weight:900;font-size:21px;letter-spacing:-.02em}
.logo-en{font-size:10px;letter-spacing:.20em;opacity:.55}
.gnb{display:flex;gap:clamp(12px,1.7vw,26px);margin-left:auto;font-size:13.5px;font-weight:600}
.gnb a{color:var(--ink-70);position:relative;padding-bottom:3px}
.gnb a::after{
  content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;
  background:var(--accent);transform:scaleX(0);transform-origin:left;
  transition:transform .28s cubic-bezier(.16,1,.3,1);
}
.gnb a:hover::after{transform:scaleX(1)}
.site-head .btn-mini{flex:none}

/* ---------- 5. 로딩 커튼 ---------- */
.curtain{
  position:fixed;inset:0;z-index:200;background:var(--carbon);
  display:grid;place-items:center;
}
.curtain-inner{display:grid;justify-items:center;gap:20px;padding:24px}
.curtain-hex svg{width:38px;height:42px;display:block}
.curtain-rule{width:min(300px,64vw);height:22px;display:block}
.curtain-txt{
  font-size:11px;letter-spacing:.26em;color:var(--accent);
  opacity:0;text-transform:uppercase;
}
html.no-anim .curtain{display:none}

/* ==========================================================================
   6. 히어로 — 풀블리드 + 2중 스크림 + 하단 계측 스트립
   ========================================================================== */
.hero{
  position:relative;min-height:100svh;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:120px 0 0;
  background:var(--carbon);
  overflow:hidden;                 /* ⚠ 패럴랙스 scale 확대분 오버플로 차단 */
  isolation:isolate;
}
.hero-media{
  position:absolute;inset:0;z-index:0;
  overflow:hidden;                 /* ⚠ 진범 방지: scale 1.12 확대분을 여기서 자른다 */
}
.hero-media img{
  width:100%;height:100%;object-fit:cover;
  transform-origin:center;
  will-change:transform;
}
/* 2중 스크림 : ①하단 카본 그라데이션 ②좌측 방향 그라데이션 */
.hero-scrim{
  position:absolute;inset:0;
  background:
    linear-gradient(to top,rgba(13,15,18,.96) 0%,rgba(13,15,18,.62) 34%,rgba(13,15,18,.06) 66%),
    linear-gradient(to right,rgba(13,15,18,.88) 0%,rgba(13,15,18,.30) 46%,rgba(13,15,18,0) 78%);
}
.hero-inner{
  position:relative;z-index:2;
  color:var(--steel);
  padding-bottom:clamp(70px,9vw,120px);
  max-width:min(100% - var(--gut)*2,var(--wrap));
}
.hero-kicker{
  font-size:11.5px;letter-spacing:.24em;color:var(--accent);
  text-transform:uppercase;display:block;margin-bottom:clamp(18px,2.6vw,30px);
}
.hero-h{
  font-family:var(--disp);font-weight:900;font-stretch:condensed;
  font-size:clamp(52px,11.4vw,168px);
  line-height:1.02;letter-spacing:-.030em;
  color:var(--steel);
  max-width:14ch;
}
.hero-sub{
  margin-top:clamp(22px,3vw,36px);
  font-size:clamp(15px,1.4vw,19.5px);line-height:1.82;
  color:var(--steel-72);max-width:46ch;
}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(28px,3.6vw,44px)}
.hero .btn-line{border-color:var(--steel-46);color:var(--steel)}
.hero .btn-line:hover{background:var(--steel);color:var(--carbon);border-color:var(--steel)}
.hero .btn-solid{background:var(--accent);color:var(--carbon);border-color:var(--accent)}
.hero .btn-solid:hover{background:var(--steel);border-color:var(--steel)}

/* 히어로 하단 계측 스트립 */
.hero-strip{
  position:relative;z-index:2;
  border-top:1px solid var(--steel-14);border-bottom:1px solid var(--steel-14);
  background:rgba(13,15,18,.55);
  overflow:hidden;padding:12px 0;
}
.hstrip-track{
  display:flex;align-items:center;gap:0;width:max-content;
  font-family:var(--mono);font-size:11px;letter-spacing:.22em;
  color:var(--steel-46);text-transform:uppercase;white-space:nowrap;
}
.hstrip-track span{padding:0 22px}
.hstrip-track i{width:6px;height:6px;background:var(--accent);flex:none;transform:rotate(45deg)}
.hero-scroll{
  position:absolute;right:var(--gut);bottom:calc(clamp(70px,9vw,120px) + 46px);
  z-index:3;font-size:10px;letter-spacing:.3em;color:var(--steel-46);
  writing-mode:vertical-rl;
}

/* ==========================================================================
   7. 매거진 그리드 (아키타입 D) — 12칼럼 불규칙 · 섹션마다 좌우 반전
   ========================================================================== */
.mag{padding-block:var(--pad-sec)}
.mag-grid{
  display:grid;grid-template-columns:1fr;
  gap:clamp(34px,5vw,72px);
}
@media (min-width:900px){
  .mag-grid{
    grid-template-columns:repeat(12,1fr);
    column-gap:clamp(24px,3vw,52px);
  }
  /* 기본 배치 : 좌 4칼럼 / 우 7칼럼(1칼럼 비움) */
  .mag-grid > *:first-child{grid-column:1 / span 4}
  .mag-grid > *:last-child{grid-column:6 / span 7}
  /* 반전 배치 : 좌 7칼럼 이미지 / 우 5칼럼 본문 */
  .mag-flip > *:first-child{grid-column:1 / span 6}
  .mag-flip > *:last-child{grid-column:8 / span 5}
}

/* ---------- 7-1. 작업 원칙 ---------- */
.creed{background:var(--steel);position:relative}
.creed::before{
  content:"";position:absolute;inset:0 0 auto;height:1px;background:var(--ink-16);
}
.creed-h{font-size:clamp(34px,4.6vw,66px);line-height:1.08}
.creed-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:clamp(22px,3vw,34px)}
.creed-tags li{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  padding:7px 13px;border:1px solid var(--ink-16);background:rgba(255,255,255,.4);
  clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px));
}
.creed-list{display:grid;gap:0;border-top:2px solid var(--ink)}
.citem{
  display:grid;grid-template-columns:auto 1fr;
  grid-template-rows:auto 1fr;      /* ⚠ 1행이 늘어나 제목/본문이 벌어지는 것 방지 */
  column-gap:clamp(14px,2.4vw,34px);row-gap:0;
  padding:clamp(24px,3vw,38px) 0;
  border-bottom:1px solid var(--ink-16);
  align-items:start;
}
.cnum{
  grid-row:1 / span 2;grid-column:1;
  font-size:12px;letter-spacing:.1em;color:var(--accent);
  font-weight:700;padding-top:5px;
}
.citem b{
  grid-column:2;
  display:block;font-family:var(--disp);font-weight:800;
  font-size:clamp(19px,1.9vw,26px);letter-spacing:-.018em;line-height:1.22;
  margin-bottom:8px;
}
.citem p{grid-column:2;color:var(--ink-70);font-size:14.8px;line-height:1.8;max-width:56ch}
@media (min-width:900px){
  .citem:nth-child(even){padding-left:clamp(20px,3vw,52px)}
}

/* ==========================================================================
   8. ★ 시그니처 — 파츠 스펙 시트 (카본 다크 챕터 ①)
   ========================================================================== */
.spec{
  background:var(--carbon);color:var(--steel);
  padding-block:var(--pad-sec) clamp(80px,10vw,150px);
  position:relative;overflow:hidden;
}
.spec::before{
  content:"";position:absolute;inset:0 0 auto;height:10px;
  background:var(--hazard);opacity:.9;
}
.spec .label{color:var(--steel-46)}
.spec .sec-lead{color:var(--steel-72)}
.spec-head{padding-top:clamp(10px,2vw,26px)}
.spec-h{
  font-size:clamp(36px,5.4vw,86px);color:var(--steel);
  line-height:1.06;max-width:16ch;
}

/* ⚠ 핀 대상은 ScrollTrigger 가 pin-spacer 로 감싸므로 margin-inline:auto 가 깨진다.
      폭 제한과 가운데 정렬은 반드시 안쪽(.spec-frame)에서 한다.
      또 핀 중에는 스테이지 높이가 뷰포트를 넘지 않아야 위아래 여백이 생기지 않는다. */
.spec-stage{
  margin-top:clamp(44px,6vw,84px);
  width:100%;
}
.spec-frame{
  position:relative;
  /* 5:3 비율을 유지하면서 높이도 78svh 를 넘지 않게 → 폭을 높이에서 역산해 함께 제한 */
  width:min(100% - var(--gut)*2, 1200px, calc(78svh * 5 / 3));
  margin-inline:auto;
  aspect-ratio:5/3;
  background:#000;overflow:hidden;
  border:1px solid var(--steel-14);
  /* 카드 모서리 노치 */
  clip-path:polygon(0 0,calc(100% - 26px) 0,100% 26px,100% 100%,26px 100%,0 calc(100% - 26px));
}
.spec-shots{position:absolute;inset:0}
.spec-shot{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;
}
.spec-shot.is-on{opacity:1}
.spec-vig{
  position:absolute;inset:0;pointer-events:none;z-index:2;
  background:
    radial-gradient(120% 90% at 50% 45%,rgba(0,0,0,0) 38%,rgba(0,0,0,.62) 100%),
    linear-gradient(to top,rgba(13,15,18,.72),rgba(13,15,18,0) 46%);
}
.spec-dims{position:absolute;inset:0;width:100%;height:100%;z-index:3}

/* 스펙 라벨 */
.spec-labels{position:absolute;inset:0;z-index:4;pointer-events:none}
.sl{
  position:absolute;
  background:rgba(13,15,18,.82);
  border-left:3px solid var(--accent);
  padding:9px 14px;
  display:grid;gap:2px;
  backdrop-filter:blur(3px);
  min-width:150px;
}
.sl-code{font-size:10px;letter-spacing:.2em;color:var(--accent)}
.sl-name{font-size:14px;font-weight:700;color:var(--steel);letter-spacing:.02em}
.sl-val{font-size:11px;font-style:normal;color:var(--steel-46);letter-spacing:.08em}
/* 위치 — 기본(우상단) / -b(좌하단) / -l(좌상단) */
.sl{top:16%;right:5%}
.sl-b{top:auto;bottom:16%;right:auto;left:5%}
.sl-l{top:16%;right:auto;left:5%}

/* 계측 HUD */
.spec-hud{
  position:absolute;left:0;right:0;bottom:0;z-index:5;
  display:flex;align-items:center;gap:14px;
  padding:12px clamp(14px,2.4vw,26px);
  background:linear-gradient(to top,rgba(13,15,18,.92),rgba(13,15,18,0));
}
.sh-lbl{font-size:10.5px;letter-spacing:.18em;color:var(--accent);flex:none}
.sh-bar{flex:1;height:3px;background:var(--steel-14);position:relative;overflow:hidden}
.sh-bar i{position:absolute;inset:0 auto 0 0;width:0;background:var(--accent);display:block}
.sh-note{font-size:10px;letter-spacing:.16em;color:var(--steel-46);flex:none}

/* 어셈블리 탭 */
.spec-tabs{
  position:absolute;top:0;left:0;z-index:5;
  display:flex;gap:0;
}
.st{
  font-size:10px;letter-spacing:.18em;
  padding:9px 15px;
  background:rgba(13,15,18,.72);
  color:var(--steel-46);
  border-right:1px solid var(--steel-14);
  border-bottom:1px solid var(--steel-14);
  transition:color .3s,background .3s;
}
.st.is-on{background:var(--accent);color:var(--carbon);font-weight:700}

.spec-scrub{height:0}

/* 시그니처 하단 범례 */
.spec-legend{
  margin-top:clamp(50px,7vw,96px);
  display:grid;gap:clamp(34px,4.4vw,64px);
}
@media (min-width:900px){
  .spec-legend{grid-template-columns:repeat(12,1fr);column-gap:clamp(24px,3vw,52px)}
  .spec-list{grid-column:1 / span 7}
  .spec-outro{grid-column:9 / span 4}
}
.spec-list{display:grid;gap:0;border-top:1px solid var(--steel-14)}
.spitem{
  padding:clamp(22px,2.8vw,32px) 0;
  border-bottom:1px solid var(--steel-14);
  border-left:3px solid transparent;
  padding-left:clamp(14px,2vw,24px);
  transition:border-color .4s,background .4s;
}
.spitem.is-on{border-left-color:var(--accent);background:rgba(242,194,0,.05)}
.spitem > span{
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;
  color:var(--steel-46);display:block;margin-bottom:7px;
}
.spitem.is-on > span{color:var(--accent)}
.spitem b{
  display:block;font-family:var(--disp);font-weight:800;
  font-size:clamp(19px,2vw,27px);letter-spacing:-.018em;margin-bottom:9px;
  color:var(--steel);
}
.spitem p{color:var(--steel-72);font-size:14.6px;line-height:1.82}
.spec-outro{
  border-top:2px solid var(--accent);
  padding-top:clamp(22px,2.6vw,30px);
  align-self:start;
}
.spec-outro .label{color:var(--accent);margin-bottom:16px}
.so-h{
  font-family:var(--disp);font-weight:900;
  font-size:clamp(28px,3.2vw,44px);line-height:1.06;letter-spacing:-.026em;
  color:var(--steel);margin-bottom:14px;
}
.so-sub{color:var(--steel-72);font-size:14.4px;line-height:1.84}

/* ==========================================================================
   9. 정비 메뉴
   ========================================================================== */
.svc{background:var(--surface);position:relative}
.svc-fig{overflow:hidden;position:relative}
.svc-fig img{width:100%;aspect-ratio:4/5;object-fit:cover}
.svc-fig figcaption{
  position:absolute;left:0;bottom:0;
  font-size:10px;letter-spacing:.2em;font-family:var(--mono);
  color:var(--carbon);background:var(--accent);padding:8px 14px;
}
@media (min-width:900px){
  .svc-fig{position:sticky;top:96px}
}
.svc-h{font-size:clamp(34px,4.6vw,68px);line-height:1.08}
.svc-list{margin-top:clamp(28px,3.6vw,46px);border-top:2px solid var(--ink)}
.svc-item{
  display:grid;grid-template-columns:auto 1fr;
  gap:clamp(12px,2vw,24px);
  padding:clamp(20px,2.6vw,30px) 0;
  border-bottom:1px solid var(--ink-16);
  align-items:start;position:relative;
}
.sv-tag{
  font-size:10px;letter-spacing:.16em;font-weight:700;
  background:var(--ink);color:var(--accent);
  padding:5px 9px;flex:none;align-self:start;margin-top:4px;
  clip-path:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,6px 100%,0 calc(100% - 6px));
}
.svc-item b{
  display:block;font-family:var(--disp);font-weight:800;
  font-size:clamp(18px,1.8vw,24px);letter-spacing:-.016em;margin-bottom:7px;
}
.svc-item p{color:var(--ink-70);font-size:14.6px;line-height:1.8;max-width:52ch}
.sv-price{
  grid-column:2;font-size:10.5px;letter-spacing:.14em;
  color:var(--ink-52);margin-top:9px;display:inline-block;
  border-top:1px dashed var(--ink-16);padding-top:8px;
}
.svc-note{
  margin-top:clamp(20px,2.4vw,28px);
  font-size:11.5px;line-height:1.9;color:var(--ink-52);
  background:rgba(255,255,255,.5);border-left:3px solid var(--accent);
  padding:14px 16px;letter-spacing:.01em;
}

/* ==========================================================================
   10. 초대형 타이포 선언 — 페이지당 1곳
   ========================================================================== */
.decl{
  background:var(--ink);color:var(--steel);
  padding-block:clamp(70px,9vw,130px);
  position:relative;overflow:hidden;
}
.decl-stripe{height:14px;background:var(--hazard);position:absolute;left:0;right:0;top:0}
.decl-stripe-b{top:auto;bottom:0}
.decl .label{color:var(--accent)}
.decl-h{
  font-family:var(--disp);font-weight:900;font-stretch:condensed;
  font-size:clamp(58px,15.5vw,232px);
  line-height:1.0;letter-spacing:-.040em;
  display:flex;flex-wrap:wrap;gap:0 clamp(18px,3.4vw,58px);
  color:var(--steel);
}
.dw{display:inline-block;position:relative}
.dw:nth-child(2){color:var(--accent)}
.decl-sub{
  margin-top:clamp(26px,3.4vw,44px);
  font-size:clamp(15px,1.4vw,19px);line-height:1.82;
  color:var(--steel-72);max-width:44ch;
}

/* ==========================================================================
   11. 튜닝 셋업 — 비대칭 카드 그리드
   ========================================================================== */
.tune{background:var(--steel)}
.tune-head{max-width:none}
.tune-h{font-size:clamp(34px,4.8vw,72px);line-height:1.08}
.tune-head .sec-lead{max-width:56ch}
.tune-grid{
  margin-top:clamp(40px,5vw,72px);
  display:grid;grid-template-columns:1fr;gap:clamp(16px,2vw,26px);
}
/* 비대칭 매거진 배치 — 행마다 칼럼 분할 비율이 다르다 (7:5 → 5:4:3)
   ⚠ 행을 명시하지 않으면 row-span 카드 때문에 자동 배치가 빈칸을 만든다.
      각 카드의 grid-row 를 전부 못박는다. */
@media (min-width:900px){
  .tune-grid{grid-template-columns:repeat(12,1fr);grid-auto-rows:minmax(0,auto)}
  /* 넓은 카드는 2행을 차지하되 내용만큼만 높아진다(align-self:start) →
     남는 공간이 카드 안의 빈칸이 아니라 그리드 여백이 된다 = 매거진 리듬 */
  .tcard-wide                    {grid-column:1 / span 7; grid-row:1 / span 2; align-self:start}
  .tune-grid > .tcard:nth-child(2){grid-column:8 / span 5; grid-row:1}
  .tune-grid > .tcard:nth-child(3){grid-column:8 / span 5; grid-row:2}
  .tcard-img                     {grid-column:1 / span 5; grid-row:3}
  .tune-grid > .tcard:nth-child(5){grid-column:6 / span 4; grid-row:3}
  .tcard-note                    {grid-column:10 / span 3;grid-row:3}
}
.tcard{
  background:rgba(255,255,255,.52);
  border:1px solid var(--ink-16);
  padding:clamp(22px,2.6vw,34px);
  position:relative;
  clip-path:polygon(0 0,calc(100% - 18px) 0,100% 18px,100% 100%,18px 100%,0 calc(100% - 18px));
}
.tcard::after{
  content:"";position:absolute;top:0;right:0;
  width:18px;height:18px;background:var(--accent);
  clip-path:polygon(0 0,100% 100%,0 100%);
}
.tno{
  font-size:10.5px;letter-spacing:.2em;color:var(--accent);
  font-weight:700;display:block;margin-bottom:12px;
}
.tcard h3{
  font-family:var(--disp);font-weight:800;
  font-size:clamp(20px,2.1vw,29px);letter-spacing:-.02em;margin-bottom:11px;
}
.tcard p{color:var(--ink-70);font-size:14.6px;line-height:1.8}
.tlist{margin-top:15px;display:grid;gap:6px}
.tlist li{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.02em;
  color:var(--ink-52);padding-left:16px;position:relative;
}
.tlist li::before{
  content:"";position:absolute;left:0;top:.62em;
  width:7px;height:7px;background:var(--accent);transform:rotate(45deg);
}
.tcard-img{padding:0;overflow:hidden;background:var(--carbon);min-height:240px}
.tcard-img::after{
  content:"";position:absolute;inset:0;
  background:var(--carbon);opacity:.12;mix-blend-mode:multiply;
  clip-path:none;width:auto;height:auto;
}
.tcard-img img{width:100%;height:100%;object-fit:cover;min-height:240px}
.tcard-cap{
  position:absolute;left:0;bottom:0;z-index:3;
  font-size:10px;letter-spacing:.18em;
  background:var(--accent);color:var(--carbon);padding:8px 13px;
}
.tcard-note{background:var(--ink);color:var(--steel-72);border-color:var(--ink)}
.tcard-note .label{color:var(--accent);margin-bottom:12px}
.tcard-note p{color:var(--steel-72);font-size:14px}
.tcard-note b{color:var(--accent)}

/* ==========================================================================
   12. 입고 절차
   ========================================================================== */
.flow{background:var(--surface)}
.flow-h{font-size:clamp(34px,4.6vw,66px);line-height:1.08}
.flow-fine{
  margin-top:clamp(20px,2.4vw,30px);font-size:11.5px;line-height:1.9;
  color:var(--ink-52);border-top:1px solid var(--ink-16);padding-top:14px;
}
@media (min-width:900px){
  .flow-l{position:sticky;top:110px;align-self:start}
}
.flow-steps{
  display:grid;gap:0;position:relative;
  border-left:2px solid var(--ink-16);
  padding-left:clamp(22px,3vw,44px);
}
.fstep{
  position:relative;
  padding:clamp(20px,2.6vw,32px) 0;
  display:grid;grid-template-columns:auto 1fr;gap:clamp(14px,2vw,26px);
  align-items:start;
}
.fstep::before{
  content:"";position:absolute;
  left:calc(-1 * clamp(22px,3vw,44px) - 8px);top:calc(clamp(20px,2.6vw,32px) + 8px);
  width:14px;height:14px;background:var(--steel);
  border:2px solid var(--ink);transform:rotate(45deg);
}
.fstep.is-on::before{background:var(--accent);border-color:var(--accent)}
.fs-no{
  font-size:clamp(24px,2.8vw,40px);font-weight:700;line-height:1;
  color:var(--ink-16);letter-spacing:-.03em;
}
.fstep b{
  display:block;font-family:var(--disp);font-weight:800;
  font-size:clamp(18px,1.9vw,25px);letter-spacing:-.018em;margin-bottom:7px;
}
.fstep p{color:var(--ink-70);font-size:14.6px;line-height:1.8;max-width:50ch}

/* ==========================================================================
   13. 보유 장비 — 카본 다크 챕터 ②
   ========================================================================== */
.rig{
  background:var(--carbon);color:var(--steel);
  padding-block:var(--pad-sec);position:relative;overflow:hidden;
}
.rig::before{
  content:"";position:absolute;inset:auto 0 0;height:10px;
  background:var(--hazard);opacity:.9;
}
.rig .label{color:var(--steel-46)}
.rig .sec-lead{color:var(--steel-72)}
.rig-h{font-size:clamp(34px,4.8vw,74px);line-height:1.06;color:var(--steel)}
.rig-grid{
  margin-top:clamp(40px,5vw,74px);
  display:grid;grid-template-columns:1fr;gap:clamp(30px,4vw,58px);
}
@media (min-width:900px){
  .rig-grid{grid-template-columns:repeat(12,1fr);column-gap:clamp(24px,3vw,52px)}
  .rig-fig{grid-column:1 / span 5;position:sticky;top:100px;align-self:start}
  .rig-list{grid-column:7 / span 6}
}
.rig-fig{overflow:hidden;position:relative}
.rig-fig img{width:100%;aspect-ratio:3/4;object-fit:cover}
.rig-fig figcaption{
  position:absolute;left:0;bottom:0;z-index:3;
  font-size:10px;letter-spacing:.2em;
  background:var(--accent);color:var(--carbon);padding:8px 14px;
}
/* Physics2D 불꽃 방출 지점 — 리프트 하부의 어두운 영역 위 */
.spark-src{
  position:absolute;left:46%;top:52%;width:1px;height:1px;z-index:6;
  pointer-events:none;
}
/* 파티클은 어두운 사진 위에서 확실히 보여야 한다 (실측: 4px 은 묻힌다) */
.spark{
  position:absolute;left:0;top:0;
  width:6px;height:6px;border-radius:50%;
  background:#FFF3B0;
  box-shadow:0 0 10px 3px rgba(242,194,0,.9),0 0 22px 6px rgba(242,194,0,.35);
  pointer-events:none;z-index:6;
}
/* 방출 지점의 은은한 작업광 — 불꽃이 "어디서 나오는지" 읽히게 */
.rig-fig::before{
  content:"";position:absolute;left:46%;top:52%;z-index:5;
  width:210px;height:210px;transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(242,194,0,.20) 0%,rgba(242,194,0,0) 68%);
  pointer-events:none;
}
html.no-anim .rig-fig::before{display:none}
.rig-list{display:grid;gap:0;border-top:1px solid var(--steel-14)}
.ritem{
  padding:clamp(20px,2.5vw,30px) 0;
  border-bottom:1px solid var(--steel-14);
  display:grid;grid-template-columns:auto 1fr;
  grid-template-rows:auto 1fr;      /* ⚠ 동일 — 1행 스트레치 방지 */
  column-gap:clamp(12px,2vw,26px);row-gap:0;align-items:start;
}
.ritem > span{
  grid-row:1 / span 2;grid-column:1;
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  color:var(--accent);padding-top:6px;
}
.ritem b{
  grid-column:2;
  display:block;font-family:var(--disp);font-weight:800;
  font-size:clamp(18px,1.85vw,25px);letter-spacing:-.018em;
  margin-bottom:7px;color:var(--steel);
}
.ritem p{grid-column:2;color:var(--steel-72);font-size:14.4px;line-height:1.8}
.rig-flat{
  margin-top:clamp(46px,6vw,86px);
  display:grid;grid-template-columns:1fr;gap:clamp(22px,3vw,42px);align-items:end;
}
@media (min-width:900px){
  .rig-flat{grid-template-columns:repeat(12,1fr);column-gap:clamp(24px,3vw,52px)}
  .flat-fig{grid-column:1 / span 8}
  .flat-cap{grid-column:10 / span 3}
}
.flat-fig{overflow:hidden}
.flat-fig img{width:100%;aspect-ratio:16/9;object-fit:cover}
.flat-cap{
  font-size:15px;line-height:1.82;color:var(--steel-72);
  border-left:3px solid var(--accent);padding-left:16px;
}

/* ==========================================================================
   14. 라이더 투어
   ========================================================================== */
.tour{background:var(--steel)}
.tour-fig{overflow:hidden;position:relative}
.tour-fig img{width:100%;aspect-ratio:4/3;object-fit:cover}
.tour-fig figcaption{
  position:absolute;right:0;top:0;z-index:3;
  font-size:10px;letter-spacing:.2em;font-family:var(--mono);
  background:var(--ink);color:var(--accent);padding:8px 14px;
}
.tour-h{font-size:clamp(32px,4.2vw,60px);line-height:1.08}
.tour-list{margin-top:clamp(26px,3.2vw,42px);border-top:2px solid var(--ink)}
.titem{
  display:grid;grid-template-columns:auto 1fr;gap:clamp(12px,2vw,22px);
  padding:clamp(20px,2.5vw,30px) 0;border-bottom:1px solid var(--ink-16);
  align-items:start;
}
.tt-tag{
  font-size:10px;letter-spacing:.16em;font-weight:700;
  border:2px solid var(--ink);padding:5px 9px;margin-top:3px;
}
.titem b{
  display:block;font-family:var(--disp);font-weight:800;
  font-size:clamp(18px,1.8vw,24px);letter-spacing:-.016em;margin-bottom:7px;
}
.titem p{color:var(--ink-70);font-size:14.5px;line-height:1.8}
.tour-note{
  margin-top:20px;font-size:11.5px;line-height:1.9;color:var(--ink-52);
  border-left:3px solid var(--accent);padding-left:14px;
}

/* ==========================================================================
   15. FAQ
   ========================================================================== */
.qa{background:var(--surface)}
.qa-h{font-size:clamp(32px,4.2vw,58px);line-height:1.08}
.qa-list{display:grid;gap:0;border-top:2px solid var(--ink)}
.qitem{padding:clamp(20px,2.5vw,30px) 0;border-bottom:1px solid var(--ink-16)}
.qitem b{
  display:block;font-family:var(--disp);font-weight:800;
  font-size:clamp(17px,1.7vw,23px);letter-spacing:-.016em;margin-bottom:8px;
}
.qitem b::before{
  content:"Q";font-family:var(--mono);font-size:11px;color:var(--accent);
  margin-right:9px;vertical-align:2px;letter-spacing:.1em;
}
.qitem p{color:var(--ink-70);font-size:14.6px;line-height:1.8;max-width:58ch;padding-left:22px}

/* ==========================================================================
   16. 예약 폼
   ========================================================================== */
.book{background:var(--ink);color:var(--steel);padding-block:var(--pad-sec)}
.book .label{color:var(--steel-46)}
.book .sec-lead{color:var(--steel-72)}
.book-h{font-size:clamp(34px,4.4vw,64px);line-height:1.08;color:var(--steel)}
.book-info{margin-top:clamp(26px,3vw,40px);display:grid;gap:11px}
.book-info li{
  font-size:14.4px;color:var(--steel-72);
  display:grid;grid-template-columns:74px 1fr;gap:12px;align-items:baseline;
  border-bottom:1px solid var(--steel-14);padding-bottom:11px;
}
.book-info span{
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--accent);
}
.book-info a{border-bottom:1px solid var(--accent)}

.book-form{
  display:grid;grid-template-columns:1fr;gap:16px;
  background:rgba(232,233,235,.05);
  border:1px solid var(--steel-14);
  padding:clamp(22px,3vw,40px);
  clip-path:polygon(0 0,calc(100% - 22px) 0,100% 22px,100% 100%,22px 100%,0 calc(100% - 22px));
}
@media (min-width:640px){
  .book-form{grid-template-columns:1fr 1fr}
  .bf-full,.bf-agree,.bf-submit,.bf-done{grid-column:1 / -1}
}
.bf-row{display:grid;gap:7px}
.bf-row label{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--steel-46);
}
.bf-row input,.bf-row select,.bf-row textarea{
  background:rgba(13,15,18,.5);
  border:1px solid var(--steel-14);
  color:var(--steel);padding:12px 14px;
  font-size:14.5px;width:100%;
  transition:border-color .2s;
}
.bf-row input:focus,.bf-row select:focus,.bf-row textarea:focus{
  border-color:var(--accent);outline:none;
}
.bf-row textarea{resize:vertical;line-height:1.7}
.bf-row input::placeholder,.bf-row textarea::placeholder{color:rgba(232,233,235,.3)}
.bf-agree{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--steel-72)}
.bf-agree input{width:17px;height:17px;accent-color:var(--accent);flex:none}
.bf-agree label{font-size:13px;letter-spacing:0;text-transform:none;font-family:var(--body)}
.bf-submit{
  background:var(--accent);color:var(--carbon);border-color:var(--accent);
  justify-self:start;padding:16px 34px;cursor:pointer;
}
.bf-submit:hover{background:var(--steel);border-color:var(--steel)}
.bf-done{font-size:12px;letter-spacing:.06em;color:var(--accent)}
.bf-done[hidden]{display:none}

/* ==========================================================================
   17. 푸터
   ========================================================================== */
.site-foot{background:var(--carbon);color:var(--steel-46);position:relative}
.foot-stripe{height:10px;background:var(--hazard)}
.foot-inner{
  width:min(100% - var(--gut)*2,var(--wrap));margin-inline:auto;
  padding:clamp(46px,6vw,84px) 0 clamp(90px,8vw,80px);
  display:grid;grid-template-columns:1fr;gap:clamp(26px,3.4vw,50px);
}
@media (min-width:900px){
  .foot-inner{grid-template-columns:repeat(12,1fr);column-gap:clamp(24px,3vw,52px)}
  .foot-brand{grid-column:1 / span 3}
  .foot-info{grid-column:5 / span 3}
  .foot-note{grid-column:9 / span 4}
}
.foot-brand .logo-txt{color:var(--steel);display:block;margin-bottom:8px;font-size:25px}
.foot-brand p{font-size:10px;letter-spacing:.18em;color:var(--accent)}
.foot-info p,.foot-note p{font-size:12.8px;line-height:1.9;margin-bottom:7px}
.demo-badge{
  color:var(--steel);border-left:3px solid var(--accent);
  padding-left:12px;margin-bottom:14px !important;
}
.made-by{font-size:9.5px;letter-spacing:.16em;color:rgba(232,233,235,.24);margin-top:16px}

/* ---------- 18. 모바일 하단 바 ---------- */
.mobile-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:80;
  display:none;grid-template-columns:1fr 1fr;
  border-top:2px solid var(--carbon);
}
.mobile-bar a{
  text-align:center;padding:15px 0;
  font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.1em;
}
.mb-call{background:var(--ink);color:var(--steel)}
.mb-form{background:var(--accent);color:var(--carbon)}

/* ==========================================================================
   19. GSAP 초기 숨김 — 반드시 html.js-anim 하위에만
        ⚠ GSAP 차단/실패 시 클래스 제거만으로 전부 살아나야 한다
   ========================================================================== */
html.js-anim .fade-up,
html.js-anim .citem,
html.js-anim .svc-item,
html.js-anim .tcard,
html.js-anim .fstep,
html.js-anim .ritem,
html.js-anim .titem,
html.js-anim .qitem,
html.js-anim .spitem,
html.js-anim .book-info li,
html.js-anim .book-form{
  opacity:0;
}
html.js-anim .hero-h,
html.js-anim .anim-h,
html.js-anim .dw{opacity:0}
html.js-anim .sl{opacity:0}
html.js-anim .spec-dims .sd-rig{opacity:0}
html.js-anim .hero-cta,
html.js-anim .hero-sub{opacity:0}

/* 폴백 상태 — no-anim 이 붙으면 무조건 보인다 */
html.no-anim *{opacity:1 !important;transform:none !important;visibility:visible !important}
html.no-anim .spec-shot{opacity:0 !important}
html.no-anim .spec-shot.is-on{opacity:1 !important}
html.no-anim .curtain{display:none !important}
html.no-anim .spark{display:none !important}

/* SplitText 라인 마스크 */
.sp-line{will-change:transform}

/* ==========================================================================
   20. 반응형
   ========================================================================== */
@media (max-width:1080px){
  .gnb{display:none}
}
@media (max-width:900px){
  /* ⚠ 핀 해제 분기 — 핀 의존 요소를 CSS 로 살린다 */
  .spec-stage{position:relative !important;transform:none !important}
  .spec-frame{aspect-ratio:4/3}
  /* 모바일에서는 라벨이 겹치므로 사진 아래 스택 */
  .spec-labels{
    position:static;display:grid;grid-template-columns:1fr 1fr;gap:8px;
    margin-top:10px;pointer-events:auto;
  }
  .sl{
    position:static;opacity:1;min-width:0;
    background:rgba(13,15,18,.55);border:1px solid var(--steel-14);border-left:3px solid var(--accent);
  }
  html.js-anim .sl{opacity:1}
  .spec-tabs{position:static;display:flex;margin-bottom:10px;flex-wrap:wrap}
  .st{border:1px solid var(--steel-14);background:rgba(13,15,18,.5)}
  /* 모바일은 3개 어셈블리 전부 보여준다 (핀 스크럽 없음) */
  .spec-shot{position:relative;opacity:1;height:auto;aspect-ratio:5/3}
  .spec-shots{position:static;display:grid;gap:8px}
  .spec-frame{aspect-ratio:auto;clip-path:none;background:transparent;border:0}
  .spec-vig,.spec-dims{display:none}
  .spec-hud{position:static;background:none;padding:12px 0}
  .rig-flat,.rig-grid{gap:26px}
  .flat-cap{border-left:0;border-top:3px solid var(--accent);padding:14px 0 0}
}
@media (max-width:760px){
  .mobile-bar{display:grid}
  body{padding-bottom:52px}
  .hero{min-height:92svh}
  .hero-scroll{display:none}
  .hero-inner{padding-bottom:56px}
  .citem,.svc-item,.fstep,.ritem,.titem{grid-template-columns:1fr;gap:9px}
  .fstep::before{left:calc(-1 * clamp(22px,3vw,44px) - 8px)}
  .sv-price{grid-column:1}
  .qitem p{padding-left:0}
  .book-info li{grid-template-columns:1fr;gap:3px}
  .decl-h{gap:0 14px}
  html{scroll-behavior:smooth}   /* Lenis 미사용 구간(모바일)에서만 허용 */
}
@media (max-width:480px){
  .spec-labels{grid-template-columns:1fr}
  .creed-tags li{font-size:10px}
}

/* ---------- 21. 접근성 · 모션 축소 ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  html{scroll-behavior:auto !important}
  .spark{display:none !important}
}
