/* 현암 광고 전용 페이지(/apply) 스타일
   빚탈길(bittalgil.com) 2문항 퍼널의 스타일시트를 그대로 옮겨 왔다 — 출처:
   bittalgil-web 커밋 5bd5413 prototypes/bittal-template.html 의 <style>.
   "빚탈길 모양에 로고만 현암으로"가 요구사항이라 손대지 않고 통째로 가져왔고,
   쓰지 않는 규칙(배선도·결과 화면 등)도 남아 있다. 이 페이지 전용 보정은
   맨 아래 '현암 보정' 블록에만 둔다. (2026-10-16) */
  

  /* ══════════════════════════════════════════════════════════════
     빚탈길 디자인 시스템 — 라이트
     근거: docs/blueprint.md · docs/teardown/ 11개 실측 보고서
     색은 전부 대비를 재서 통과한 값이다(흰 지면 / 스테이지 #F2F4F6 양쪽).
     ══════════════════════════════════════════════════════════════ */
  :root{
    /* 토스 베이스 — 순백 지면 + 쿨 그레이 무대. 웜 오프화이트는 되돌렸다.
       지면 텍스처는 두지 않는다(토스 10개 페이지 전부 0종). 밀도는 색이 아니라
       컴포넌트가 만든다 */
    --bg:#FFFFFF; --stage:#F2F4F6; --card:#FFFFFF;
    --dash:#D1D6DB;   /* 미확정·예시 파선. 쿨 그레이 */
    --t1:#191F28;      /* 제목 16.56:1 */
    --t2:#333D4B;      /* 본문 11.00:1 */
    --t3:#646B74;      /* 보조·법정고지 5.39 / 4.89:1 */
    --t4:#8B95A1;      /* 장식·비활성 3.04:1 — 텍스트에 쓰지 않는다 */
    --line:rgba(0,0,0,.07); --line2:rgba(0,0,0,.13);
    --brand:#3182F6;      /* 면·바·강조. 작은 글자에 쓰지 않는다(3.71:1) */
    --brand-ink:#286BCA;  /* 본문 링크·작은 글자 5.19:1 */
    /* 흰 글자를 얹는 유일한 파랑. #3182F6 면은 흰 글자가 3.71:1 로 AA 미달이다 */
    --brand-face:#0B4FA8;
    /* 오렌지 폐기 — 액센트 2색은 파랑 하나짜리 식별자를 흐린다.
       '안 갚아도 되는 돈'은 색이 아니라 자리와 크기로 구분한다 */
    --cut-ink:var(--brand-ink); --cut:var(--brand);
    --brand-ink:#286BCA;  /* 본문 링크·작은 글자 5.19:1 */
    --ok:#15803D; --warn:#B91C1C;

    --fs-b:16px; --fs-m:14px;
    --ls:-.02em;
    --lh1:1.2; --lh2:1.28; --lh3:1.4; --lh4:1.48; --lh5:1.6;

    --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;
    --s7:28px;--s8:32px;--s9:44px;--s10:56px;--s11:64px;--s12:80px;
    --pad:20px; --sec:48px; --gapblock:64px;
    /* 하단 고정 실행바가 푸터를 덮지 않게 비워 두는 높이.
       바는 폭이 넓을수록 두꺼워진다(390에서 146px, 1440에서 222px) */
    --footpad:170px;

    --r-sm:6px; --r:16px; --r-lg:22px; --r-xl:28px; --r-pill:999px;

    --t-fast:.15s; --t-press:.2s; --t-slow:.3s; --t-in:.5s; --t-draw:1.1s;
    --e-in:cubic-bezier(.25,.46,.45,.94); --e-st:cubic-bezier(.4,0,.2,1);
    --spring:cubic-bezier(.34,1.56,.64,1);

    --lift:0 8px 24px rgba(19,32,60,.10);
    --lift-lg:0 22px 48px rgba(19,32,60,.14);
    --w-page:1280px; --w-read:560px; --w-art:720px; --w-tab:620px;
  }
  @media (min-width:640px){:root{--pad:32px;--sec:64px;--gapblock:88px;--footpad:200px}}
  @media (min-width:1025px){:root{--pad:56px;--sec:96px;--gapblock:140px;--footpad:250px}}

  *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;letter-spacing:var(--ls)}
  html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
  body{background:var(--bg);color:var(--t2);
    font-family:'Pretendard Variable',Pretendard,-apple-system,'Noto Sans KR','Malgun Gothic',sans-serif;
    font-size:var(--fs-b);font-weight:500;line-height:var(--lh5);word-break:keep-all;overflow-x:hidden;
    -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
  svg{display:block}
  button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit}
  img{max-width:100%}
  .num{font-variant-numeric:tabular-nums}
  a{color:var(--brand-ink)}
  :focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:4px}

  /* ── 타입 사다리 ── */
  .d1{font-size:32px;font-weight:800;color:var(--t1);line-height:1.12;letter-spacing:-.035em}
  .d2{font-size:26px;font-weight:800;color:var(--t1);line-height:var(--lh2);letter-spacing:-.035em}
  .d3{font-size:20px;font-weight:800;color:var(--t1);line-height:var(--lh3);letter-spacing:-.03em}
  .bd{font-size:var(--fs-b);font-weight:500;color:var(--t2);line-height:var(--lh5)}
  .cap{font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .kick{font-size:var(--fs-m);font-weight:800;color:var(--brand-ink)}
  @media (min-width:640px){.d1{font-size:44px}.d2{font-size:30px}}
  @media (min-width:1025px){.d1{font-size:56px;letter-spacing:-.04em}.d2{font-size:36px}.d3{font-size:20px}}

  .wrap{max-width:var(--w-page);margin:0 auto;padding:0 var(--pad);width:100%}
  @media (min-width:640px){.wrap{max-width:var(--w-tab)}}
  @media (min-width:1025px){.wrap{max-width:var(--w-page)}}
  .stack{display:flex;flex-direction:column;gap:var(--s6)}
  .sec{padding:var(--sec) 0 0}

  /* ══ 지면 리듬 — 톤 변화는 정확히 2회. 셋 이상은 리듬이 아니라 얼룩이다 ══ */

  /* 다크 슬래브 폐기 — 토스는 흰 지면 위 회색 무대 하나로 리듬을 만든다.
     사례 섹션은 같은 문법의 옅은 밴드로 되돌렸다 */
  .slab{background:var(--stage);padding:var(--s9) 0;margin-top:var(--sec);border-radius:var(--r-xl);
    max-width:calc(var(--w-page) - var(--pad) * 2);margin-left:auto;margin-right:auto}
  .slab .case{background:var(--card)}
  .slab .lk{background:var(--card)}
  .slab .lk:active{background:#E6EAEE}

  /* KPI 4열 — 카드 없음. 룰 2줄과 숫자만. 지어낸 수치는 한 칸도 넣지 않는다 */
  .kpi{display:grid;grid-template-columns:repeat(2,1fr);
    border-top:1.4px solid var(--t1);margin-top:var(--s5)}
  @media (min-width:640px){.kpi{grid-template-columns:repeat(4,1fr)}}
  .kpi div{padding:var(--s4) var(--s3) var(--s4) 0;border-bottom:1px solid var(--line2)}
  .kpi b{display:block;font-size:30px;font-weight:800;color:var(--t1);letter-spacing:-.04em;
    line-height:1.05;font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1}
  .kpi span{display:block;margin-top:6px;font-size:var(--fs-s);font-weight:600;color:var(--t3)}

  /* 마감 밴드도 라이트로. 카드가 밴드를 뚫고 내려오는 구조는 유지한다 */
  .close{background:var(--stage);margin-top:var(--sec);border-radius:var(--r-xl);
    max-width:calc(var(--w-page) - var(--pad) * 2);margin-left:auto;margin-right:auto;
    padding:var(--s9) 0 calc(var(--s9) + 72px);position:relative}
  .close .bd{color:var(--t3)}
  /* 카드 하나가 밴드 하단 경계를 72px 뚫고 내려간다. 3D 도 사진도 없이 깊이가 생긴다 */
  .close .punch{position:absolute;left:0;right:0;bottom:-72px;padding:0 var(--pad)}
  .close .punch .in{max-width:var(--w-tab);margin:0 auto;background:var(--card);
    border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s5);
    box-shadow:var(--lift-lg);display:flex;align-items:center;gap:var(--s4)}
  .close .punch .in b{font-size:var(--fs-b);font-weight:800;color:var(--t1)}
  .close .punch .in span{display:block;margin-top:4px;font-size:var(--fs-m);
    font-weight:500;color:var(--t3);line-height:1.5}
  .close .punch .in .n{margin-left:auto;flex:none;display:inline-flex;align-items:center;min-height:44px;
    font-size:20px;font-weight:800;color:var(--t1);
    font-variant-numeric:tabular-nums;text-decoration:none;white-space:nowrap}
  @media (min-width:1025px){.close{padding-bottom:calc(var(--s9) + 72px)}}

  /* ── 36칸 계단 차트 — 변제는 36번 일어나는 이산 사건이다.
     토스는 베지어 곡선을 쓴다. 우리는 계단을 쓴다 ── */
  .steps{margin-top:var(--s5)}
  .steps svg{width:100%;height:auto}
  .steps .sax{stroke:var(--line2);stroke-width:1}
  .steps .sbar{fill:var(--brand)}
  .steps .scut{fill:none;stroke:var(--t4);stroke-width:1.4;stroke-dasharray:4 4}
  .steps .sl{font-size:11px;font-weight:700;fill:var(--t3)}
  .steps .slc{font-size:12px;font-weight:800;fill:var(--t2)}

  /* 36회차 스트립 (S축척) — 같은 36을 결과 화면에서 한 줄로 되짚는다 */
  .strip{margin-top:var(--s4);display:grid;grid-template-columns:repeat(18,1fr);gap:3px}
  .strip i{display:block;height:14px;background:var(--brand);opacity:.9}
  .strip i:nth-child(n+19){opacity:.55}
  .striplb{margin-top:8px;display:flex;justify-content:space-between;
    font-size:var(--fs-s);font-weight:600;color:var(--t3)}

  /* ── 진입 리빌 — 이동거리는 요소 크기에 비례한 4단 ── */
  .rv{opacity:0;transform:translateY(var(--rv-d,24px));
      transition:opacity var(--t-in) var(--e-in),transform var(--t-in) var(--e-in)}
  .rv.d1t{--rv-d:16px}.rv.d2t{--rv-d:24px}.rv.d3t{--rv-d:40px}.rv.d4t{--rv-d:64px}
  .rv.shown{opacity:1;transform:none}
  /* 첫 화면 전용 — 전환을 아예 끄고 즉시 보인다.
     연출을 얻으려다 백지를 보여주는 것보다 낫다 */
  .rv.instant{opacity:1;transform:none;transition:none}
  .seq > *{opacity:0;transform:translateY(16px)}
  .seq.nomo > *{opacity:1;transform:none;animation:none}
  .seq.go > *{animation:pop .7s var(--e-in) forwards}
  .seq.go > *:nth-child(1){animation-delay:0s}.seq.go > *:nth-child(2){animation-delay:.1s}
  .seq.go > *:nth-child(3){animation-delay:.2s}.seq.go > *:nth-child(4){animation-delay:.3s}
  .seq.go > *:nth-child(5){animation-delay:.4s}.seq.go > *:nth-child(6){animation-delay:.5s}
  @keyframes pop{to{opacity:1;transform:none}}

  /* ── C10 CTA · 버튼 ── */
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);
    min-height:52px;padding:var(--s4) var(--s7);border-radius:var(--r);border:0;cursor:pointer;
    background:var(--t1);color:#fff;font-family:inherit;font-size:var(--fs-b);font-weight:800;
    text-decoration:none;letter-spacing:-.03em;transition:opacity var(--t-press) var(--e-st)}
  .btn:active{opacity:.6}
  .btn.full{display:flex;width:100%}
  .btn.g{background:var(--stage);color:var(--t1)}
  .btn.o{background:transparent;color:var(--t1);border:1.5px solid var(--line2)}
  .fine{margin-top:var(--s3);font-size:var(--fs-m);font-weight:600;color:var(--t3);text-align:center}

  /* ── C3 PILL — 알약 + 검은 원형 화살표 ── */
  /* 알약 + 검은 원형 화살표. 토스 실측 지배 부품이라 되돌렸다 */
  .lk{display:inline-flex;align-items:center;gap:var(--s3);min-height:48px;
    padding:var(--s2) var(--s2) var(--s2) 18px;border-radius:var(--r-pill);background:var(--stage);
    font-size:var(--fs-b);font-weight:700;color:var(--t1);text-decoration:none;
    transition:background var(--t-fast) var(--e-st)}
  .lk:active{background:#E6EAEE}
  .lk i{font-style:normal;width:34px;height:34px;border-radius:50%;flex:none;background:var(--t1);
    color:#fff;display:flex;align-items:center;justify-content:center}

  /* ── C5 BADGE ── */
  .bdg{display:inline-flex;align-items:center;gap:var(--s2);padding:7px 13px 7px 10px;
    border-radius:var(--r-pill);background:var(--stage);border:1px solid var(--line);
    font-size:var(--fs-m);font-weight:700;color:var(--t2)}
  .bdg i{width:6px;height:6px;border-radius:50%;background:var(--brand);flex:none}

  /* ── C9 TAG ── */
  .tag{font-size:var(--fs-m);font-weight:700;border-radius:var(--r-sm);padding:5px 10px;
    border:1px solid currentColor;flex:none;white-space:nowrap}
  .tag.y{color:#166534;background:rgba(21,128,61,.07)}   /* 칩 배경 위 4.94:1 */
  .tag.n{color:var(--warn);background:rgba(185,28,28,.06)}

  /* ══ 네비 ══ */
  .nav{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.82);
    backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
    transition:background var(--t-slow) var(--e-st),backdrop-filter var(--t-slow) var(--e-st)}
  .nav .in{max-width:var(--w-page);margin:0 auto;padding:0 var(--pad);
    display:flex;align-items:center;gap:var(--s4);min-height:56px}
  /* 글자는 반드시 한 엘리먼트 안에. inline-flex + gap 이면 '빚탈 길' 로 갈라진다 */
  .brand{display:inline-flex;align-items:center;gap:9px;text-decoration:none;min-height:44px}
  .brand span{font-size:20px;font-weight:800;color:var(--t1);letter-spacing:-.065em}
  .brand i{font-style:normal;color:inherit}
  .brand svg{flex:none}
  .nmenu{display:none;gap:var(--s5);margin-left:var(--s8)}
  .nmenu a{font-size:var(--fs-b);font-weight:600;color:var(--t2);text-decoration:none}
  .nmenu a.on{color:var(--t1);font-weight:700}
  .nav .sp{flex:1}
  .nav .ncta{font-size:14px;font-weight:700;color:var(--t1);text-decoration:none;
    border:1px solid var(--line2);border-radius:var(--r-pill);padding:9px 15px;min-height:40px;
    display:inline-flex;align-items:center}
  .burger{display:inline-flex;align-items:center;justify-content:center;
    min-height:44px;min-width:44px;margin-right:-10px;border:0;background:none;color:var(--t1);cursor:pointer}
  @media (min-width:1025px){.nmenu{display:flex}.burger{display:none}}

  .drawer{position:fixed;inset:0;z-index:80;background:var(--bg);
    transform:translateX(100%);transition:transform var(--t-slow) var(--e-st);
    display:flex;flex-direction:column;padding:var(--s3) var(--pad) var(--s8)}
  .drawer.on{transform:none}
  .drawer .top{display:flex;justify-content:flex-end;min-height:48px;align-items:center}
  .drawer button{width:44px;height:44px;border:0;background:none;color:var(--t1);cursor:pointer;
    display:flex;align-items:center;justify-content:center}
  .drawer nav{display:flex;flex-direction:column;gap:var(--s1);margin-top:var(--s5)}
  .drawer nav a{padding:var(--s4) 0;font-size:20px;font-weight:700;color:var(--t1);text-decoration:none}

  /* ══ 하단 고정 실행바 — 본문 CTA 가 화면을 벗어난 뒤에만 올라온다 ══ */
  .fbar{position:fixed;left:0;right:0;bottom:0;z-index:50;padding:var(--s3) var(--pad) 18px;
    background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.94) 26%,var(--bg));
    transform:translateY(130%);transition:transform var(--t-slow) var(--e-st)}
  .fbar.show{transform:none}
  .fbar .in{max-width:var(--w-read);margin:0 auto;display:flex;gap:var(--s2)}

  /* ══ C1 STAGE + C2 SCREEN ══
     무대와 카드는 한 쌍이다. 무대만 유동으로 두면 카드가 구석에 남는다(390 85% → 1000 32%).
     무대에 상한을 걸고 배율을 밴드별로 올려 비율을 붙들어 둔다. */
  .stage{position:relative;border-radius:var(--r-xl);overflow:hidden;
    background:var(--stage);border:1px solid var(--line);
    padding:var(--s4) var(--s3);max-width:420px;margin-left:auto;margin-right:auto}
  /* 지면은 같은 RGB 하나에서 알파만 떨어뜨린다. 2색 이상 램프는 AI 그라디언트 카드 문법이다 */
  .stage::before{content:'';position:absolute;inset:0;pointer-events:none}
  /* 파스텔 4색 분류색 폐기 - 색이 4개면 그중 무엇도 브랜드가 아니다.
     스테이지는 같은 지면이고, 무엇에 관한 블록인지는 안에 든 화면이 말한다.
     대신 상단 1.4px 선이 블록 순번을 절차 진행률로 보여준다 */
  /* 무대는 같은 회색 하나다. 파스텔 4색 분류색은 되살리지 않는다 —
     색이 4개면 그중 무엇도 브랜드가 아니다. 대신 옅은 단색 램프만 남긴다 */
  .stage.c1::before,.stage.c2::before,.stage.c3::before,.stage.c4::before{
    background:linear-gradient(212deg,rgba(49,130,246,.10) 8%,rgba(49,130,246,0) 82%)}
  /* 제품 화면은 폰 실치수 400px 로 저작하고 통째로 축소한다.
     그래야 전역 타입 스케일에 12~15px 단이 생기지 않는다 */
  /* 실치수. 무대가 카드를 감싸고, 카드 안 글자는 전역 타입 스케일 그대로 읽힌다 */
  .ui{position:relative;z-index:1;width:100%;
    background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
    box-shadow:var(--lift-lg);overflow:hidden}
  @media (min-width:640px){.stage{max-width:520px;padding:var(--s6) var(--s5)}}

  /* ══ 블록 — 페이지의 기본 단위 ══ */
  .blk{padding:0 var(--pad);margin-top:var(--gapblock);max-width:var(--w-page);
    margin-left:auto;margin-right:auto;width:100%}
  .blk h2{margin-top:var(--s6)}
  .blk .lk{margin-top:var(--s4)}
  @media (min-width:640px){.blk{max-width:var(--w-tab)}}
  @media (min-width:1025px){
    /* 행·열을 명시 배치한다. order 로 뒤집으면 열이 따라오지 않아 블록마다 정렬이 달라졌다.
       align-content:center 로 [제목+알약] 두 행을 한 덩어리로 무대 높이 가운데에 맞춘다 */
    .blk{max-width:var(--w-page);display:grid;grid-template-columns:1.05fr 1fr;
      grid-template-rows:auto auto;column-gap:64px;align-content:center}
    .blk .stage{grid-column:1;grid-row:1/span 2;max-width:none;
      margin-left:0;margin-right:0;justify-self:stretch;padding:var(--s7) var(--s6)}
    .blk h2{grid-column:2;grid-row:1;margin-top:0;align-self:end}
    /* align-self 는 세로축이다. 가로로 늘어나는 걸 막는 건 justify-self 다 —
       이게 없어서 알약이 컬럼 폭까지 늘어났다 */
    .blk .lk{grid-column:2;grid-row:2;justify-self:start;align-self:start;margin-top:var(--s4)}
    .blk:nth-of-type(even) .stage{grid-column:2}
    .blk:nth-of-type(even) h2,
    .blk:nth-of-type(even) .lk{grid-column:1}
  }

  /* ══ 히어로 ══ */
  .hero{padding:var(--s7) var(--pad) 0;max-width:var(--w-page);margin:0 auto;width:100%}
  .hero .sub{margin-top:var(--s3);font-size:var(--fs-b);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .hero .d1{margin-top:var(--s4)}
  /* .hlead 를 display:contents 로 풀어 자식들이 히어로의 직접 항목이 된다.
     그래야 데모를 CTA 위로 끌어올릴 수 있다 */
  .hero{display:flex;flex-direction:column;align-items:flex-start}
  .hlead{display:contents}
  .hero > .hlead > .bdg{order:1}
  .hero > .hlead > .d1{order:2}
  .hero > .hlead > .sub{order:3}
  .hero > .hdemo{order:4;align-self:stretch}
  .hero > .hlead > .hcta{order:5;align-self:stretch}
  .hero > .hlead > .hfine{order:6}
  .hdemo{margin-top:var(--s6);display:flex;flex-direction:column;gap:var(--s4)}
  .q1card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
    padding:var(--s4) var(--s4) var(--s4);box-shadow:var(--lift-lg)}
  .q1h{display:flex;align-items:baseline;justify-content:space-between;
    font-size:var(--fs-m);font-weight:700;color:var(--t3);font-variant-numeric:tabular-nums}
  .q1q{margin-top:var(--s3);font-size:20px;font-weight:800;color:var(--t1);
    line-height:1.32;letter-spacing:-.03em}
  .q1q{min-height:2.64em}
  /* 두 장면을 같은 그리드 칸에 겹친다. 예전엔 나가는 장면을 position:absolute;inset:0
     으로 띄웠는데, 그러면 칸 높이가 '들어온 장면' 하나로 정해진다.
     접수 장면(156px)이 문항 장면(241px)보다 낮아지면서 문항 3개가 카드 밖으로 새어
     CTA 버튼 위에 겹쳐 찍혔다. 겹쳐 두면 칸 높이가 둘 중 큰 쪽으로 고정돼
     새지도 않고, 사이클마다 카드가 85px 씩 들썩이던 것도 같이 멎는다 */
  .hscenes{display:grid}
  .hscn{grid-area:1/1;display:flex;flex-direction:column;
    transition:opacity var(--t-slow) var(--e-in),transform var(--t-slow) var(--e-in)}
  .hscn.out{opacity:0;transform:translateY(-10px);pointer-events:none}
  .hscn.in{opacity:1;transform:none}
  .q1opts{margin-top:var(--s4);display:flex;flex-direction:column;gap:8px}
  .q1o[hidden]{display:none}
  .hrk{font-size:var(--fs-m);font-weight:600;color:var(--t3)}
  /* 금액 카운트업 자리였다. 숫자가 사라졌으므로 같은 높이를 문장이 쓴다 */
  .hdone{margin-top:6px}
  .hdone b{display:block;font-size:40px;font-weight:800;color:var(--t1);line-height:1.1;
    letter-spacing:-.05em}
  .hdone span{display:block;margin-top:10px;font-size:var(--fs-b);font-weight:700;
    color:var(--brand-ink);line-height:var(--lh3)}
  .hfin{margin-top:auto;padding-top:var(--s3);border-top:1px solid var(--line);
    font-size:var(--fs-m);font-weight:500;color:var(--t3)}
  .q1o{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;
    width:100%;padding:0 14px;border:1px solid var(--line2);border-radius:var(--r);
    background:var(--card);font-size:var(--fs-b);font-weight:600;color:var(--t1);
    text-align:left;cursor:pointer;font-family:inherit;
    transition:border-color var(--t-fast) var(--e-st),background var(--t-fast) var(--e-st)}
  .q1o.on{border-color:var(--brand);box-shadow:inset 0 0 0 .4px var(--brand);
    background:rgba(49,130,246,.06)}
  .q1o .ck{color:var(--brand);opacity:0;transform:scale(.5);flex:none;
    transition:opacity var(--t-fast) var(--e-st),transform var(--t-fast) var(--e-st)}
  .q1o.on .ck{opacity:1;transform:none}

  /* ── 산식 배선도 (M축척) — 90°로만 꺾인다. 마디는 전부 산식의 항이다 ── */
  .wirebox{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);
    padding:var(--s4) var(--s4) var(--s3)}
  .wirebox .wcap{font-size:var(--fs-m);font-weight:600;color:var(--t3);margin-top:var(--s2);line-height:1.4}
  svg.wire{width:100%;max-width:344px;height:auto}
  .wire .wl{font-size:12.5px;font-weight:700;fill:var(--t3)}
  .wire .wv{font-size:12px;font-weight:600;fill:var(--t3);font-variant-numeric:tabular-nums}
  .wire .wp,.wire .wbus{fill:none;stroke:var(--dash);stroke-width:1.4;stroke-dasharray:4 4}
  .wire .wd{fill:var(--bg);stroke:var(--dash);stroke-width:1.4}
  .wire .wbox{fill:none;stroke:var(--dash);stroke-width:1.4;stroke-dasharray:4 4}
  /* 진입 시 1회 — 배선도가 스스로 그려진다. 무한 반복이 아니라 한 번이다 */
  .wire.draw .wp,.wire.draw .wbus,.wire.draw .wbox{
    stroke-dasharray:220;stroke-dashoffset:220;animation:wdraw .9s var(--e-in) forwards}
  .wire.draw .wn:nth-child(1) .wp{animation-delay:.05s}
  .wire.draw .wn:nth-child(2) .wp{animation-delay:.15s}
  .wire.draw .wn:nth-child(3) .wp{animation-delay:.25s}
  .wire.draw .wn:nth-child(4) .wp{animation-delay:.35s}
  .wire.draw .wbus{animation-delay:.5s}
  .wire.draw .wbox{animation-delay:.75s}
  @keyframes wdraw{to{stroke-dashoffset:0}}
  /* 그리기가 끝나면 파선 상태로 되돌아간다 — 파선은 '아직 미확정'이라는 뜻이라
     연출 때문에 의미가 바뀌면 안 된다 */
  .wire.drawn .wp,.wire.drawn .wbus,.wire.drawn .wbox{stroke-dasharray:4 4;stroke-dashoffset:0}

  /* 배선도가 다 차면 잠금이 풀린다 */
  .wire.done .wbox{stroke:var(--brand);stroke-dasharray:none}
  .wire.done .wv{fill:var(--brand-ink);font-weight:800}
  @media (prefers-reduced-motion:reduce){
    .wire.draw .wp,.wire.draw .wbus,.wire.draw .wbox{
      animation:none;stroke-dasharray:4 4;stroke-dashoffset:0}
  }

  /* 3상태: 파선=미확정 / 실선=확정 / 파랑=지금 여기 */
  .wire .wn.on .wp{stroke:var(--brand);stroke-dasharray:none}
  .wire .wn.on .wd{fill:var(--brand);stroke:var(--brand)}
  .wire .wn.on .wl{fill:var(--t1)}
  .wire .wn.on .wv{fill:var(--brand-ink)}
  .wire.done .wbus{stroke:var(--t1);stroke-dasharray:none}
  .hero .hcta{margin-top:18px}
  @media (min-width:640px){
    .hero{max-width:var(--w-tab);padding-top:var(--s8)}
    .hero .sub{font-size:var(--fs-b)}
  }
  @media (min-width:1025px){
    .hero{max-width:var(--w-page);padding:var(--s11) var(--pad) 0;
      display:grid;grid-template-columns:minmax(0,1fr) minmax(470px,1.02fr);
      column-gap:64px;align-items:center;min-height:560px}
    /* 데스크톱은 2열 — contents 를 되돌려 좌측 한 덩어리로 만든다 */
    .hero{display:grid;align-items:center}
    .hero .hlead{display:flex;flex-direction:column;align-items:flex-start;grid-column:1}
    .hero .hlead .hcta{align-self:stretch}
    .hero .bdg{font-size:14px}
    .hero .d1{margin-top:22px}
    .hero .sub{margin-top:18px;max-width:24em}
    .hero .hcta{margin-top:var(--s7);max-width:320px}
    .hero .hfine{margin-top:var(--s3);text-align:left}
    .hdemo{grid-column:2;margin-top:0;gap:var(--s4)}
  }

  /* ══ 문법 B — 퍼널 ══ */
  .qtop{position:sticky;top:0;z-index:40;background:var(--bg);padding:var(--s3) var(--pad) 0}
  .qtop .row{display:flex;align-items:center;gap:var(--s3);min-height:48px;
    max-width:var(--w-page);margin:0 auto}
  .qtop .bk{width:44px;height:44px;margin-left:-10px;border:0;background:none;color:var(--t1);
    display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--s3)}
  .qtop .bk:active{background:var(--stage)}
  .qtop .n{font-size:var(--fs-b);font-weight:700;color:var(--t3);font-variant-numeric:tabular-nums}
  /* 9칸 연속 바는 한 칸이 11.1%라 답해도 안 움직이는 것처럼 보인다.
     빚3·소득2·살림2·이력2 네 챕터로 묶으면 체감 단위가 25%가 된다 */
  .qtop .segs{display:flex;gap:6px;margin:var(--s2) auto 0;max-width:var(--w-page)}
  .qtop .sg{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0}
  .qtop .sg .tk{height:4px;background:var(--stage);overflow:hidden;position:relative}
  .qtop .sg .tk i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--brand);
    transition:width var(--t-in) var(--e-in)}
  .qtop .sg em{font-style:normal;font-size:11px;font-weight:700;color:var(--t3);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .qtop .sg.on em{color:var(--brand-ink)}
  .qtop .sg.done em{color:var(--t3)}
  .qbody{flex:1;padding:var(--s7) var(--pad) var(--s8);display:flex;flex-direction:column;
    max-width:var(--w-page);margin:0 auto;width:100%}
  /* 문항은 넓힐 이유가 없다. 안 잡으면 1,168px 가로 막대가 된다 */
  #qStage{width:100%}
  @media (min-width:640px){#qStage .qbody{max-width:var(--w-read)}}
  h1.q{font-size:30px;font-weight:800;color:var(--t1);line-height:1.18;letter-spacing:-.035em}

  /* ── 답변 로그 — 지나온 답이 화면에 남는다. 아바타·캐릭터는 안 쓴다 ── */
  .qlog{display:flex;flex-direction:column;align-items:flex-end;gap:6px;margin-bottom:var(--s4)}
  .qlog .lg{max-width:80%;padding:8px 12px;border-radius:var(--r) var(--r) 2px var(--r);
    background:var(--stage);font-size:var(--fs-s);font-weight:600;color:var(--t3);
    line-height:1.4;text-align:right}
  /* 오래된 답일수록 흐려진다 — 토스 포커스 스택을 세로로 세운 것 */
  .qlog .lg:nth-last-child(n+3){opacity:.45}
  .qlog .lg:nth-last-child(2){opacity:.72}

  /* ── 2레이어 전환 — innerHTML 통짜 교체는 0ms 하드컷이고,
     페이드아웃 후 페이드인은 중간에 공백 프레임을 만든다. 겹쳐서 넘긴다 ── */
  .qswap{position:relative}
  .qswap > .qbody{width:100%}
  .qswap > .qbody.leave{position:absolute;left:0;top:0;pointer-events:none;
    opacity:0;transform:translateY(-12px);
    transition:opacity var(--t-in) var(--e-in),transform var(--t-in) var(--e-in)}
  .qswap > .qbody.enter{animation:qin var(--t-slow) var(--e-in) both}
  @keyframes qin{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

  /* ── 문항 하단 배선도 — 힌트 아래 600px 빈 판을 메운다. 히어로 자산 재사용 ── */
  .qwire{margin-top:var(--s6)}
  .qwire .wirebox{background:transparent;border-color:var(--line)}
  .qwire svg.wire{max-width:344px}
  .qfoot{margin-top:auto;padding-top:var(--s6);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .qhint{margin-top:var(--s3);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}

  /* C6 OPTION */
  .opts{margin-top:var(--s6);display:flex;flex-direction:column;gap:10px}
  .opt{position:relative;overflow:hidden;
    display:flex;align-items:center;gap:var(--s3);min-height:64px;padding:18px 20px;
    border-radius:var(--r);background:var(--stage);border:1.5px solid transparent;width:100%;
    font-family:inherit;font-size:var(--fs-b);font-weight:600;color:var(--t1);text-align:left;cursor:pointer;
    transition:border-color var(--t-press) var(--e-st),background var(--t-press) var(--e-st)}
  .opt > span:first-child{flex:1;min-width:0}
  .opt .r{font-size:var(--fs-m);font-weight:500;color:var(--t3);flex:none;
    text-align:right;min-width:3.5em}
  .opt .ck{color:var(--brand);opacity:0;transform:scale(.5);flex:none;width:22px;
    transition:opacity var(--t-fast) linear,transform var(--t-slow) var(--spring)}
  .opt.on{border-color:var(--brand);background:rgba(49,130,246,.07)}
  .opt.on .ck{opacity:1;transform:scale(1)}
  .opt.on .r{color:var(--brand-ink)}
  /* 누른 순간 물리적으로 눌린다. 340ms 는 배지 스프링이 끝나는 시간이다 */
  .opt:active{transform:scale(.985)}
  .opt.on{box-shadow:inset 0 0 0 .4px var(--brand)}
  .opt .bg{position:absolute;right:-1px;top:-1px;width:0;height:0;overflow:hidden;
    background:var(--brand-face);color:#fff;font-size:10.5px;font-weight:800;
    display:flex;align-items:center;justify-content:center;letter-spacing:-.02em}
  .opt.on .bg{width:34px;height:20px;animation:bgpop .3s var(--e-in) both}
  @keyframes bgpop{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}
  .opt:active{background:#E9EDF1}

  /* 입력 */
  .fields{margin-top:var(--s5);display:flex;flex-direction:column;gap:10px}
  .fi input{width:100%;height:56px;padding:0 18px;border-radius:var(--r);border:1.5px solid var(--line2);
    background:var(--card);font-size:var(--fs-b);font-weight:600;color:var(--t1);font-family:inherit}
  .fi input::placeholder{color:var(--t4);font-weight:500}
  .fi input:focus{outline:2px solid var(--brand);outline-offset:0;border-color:transparent}
  .fi{position:relative}
  .fi.bad input{border-color:var(--warn)}
  .fi.bad input:focus{outline-color:var(--warn)}
  .fi .msg{margin-top:7px;font-size:var(--fs-m);font-weight:600;color:var(--warn);
    line-height:1.4;display:none}
  .fi.bad .msg{display:block}
  .fi.ok input{border-color:var(--brand)}
  /* 제출 버튼은 세 조건이 다 맞기 전까지 눌리지 않는다.
     누르고 나서 튕기는 것보다 못 누르는 게 먼저 보인다 */
  .btn[disabled]{opacity:.38;pointer-events:none}
  /* 통화 가능 시간 — 2×2 칩. 모바일에서 타이핑시키지 않는다.
     레퍼런스는 '예시) 오늘 오후 2시' 자유 입력인데, 입력칸이 하나 더 느는 것보다
     한 번 누르는 쪽이 짧다. 값은 DB·알림이 글자 그대로 쓴다 */
  .ctlb{margin-top:var(--s5);font-size:var(--fs-m);font-weight:700;color:var(--t2)}
  .ctimes{margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .ct{height:52px;border-radius:var(--r);border:1.5px solid var(--line2);background:var(--card);
    font-size:var(--fs-b);font-weight:600;color:var(--t2);letter-spacing:var(--ls);cursor:pointer;
    transition:border-color .16s,color .16s,background .16s}
  .ct.on{border-color:var(--brand);color:var(--brand-ink);background:rgba(49,130,246,.06);font-weight:700}
  .agree.bad{color:var(--warn)}
  .agree{margin-top:var(--s3);display:flex;gap:10px;align-items:flex-start;
    font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .agree input{width:20px;height:20px;margin-top:2px;flex:none;accent-color:var(--brand)}

  /* 게이트 — 수치만 잠그고 판정은 공개한다 */
  .lockwrap{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--stage);
    padding:var(--s6) var(--s5);margin-top:var(--s6)}
  .lockwrap::before{content:'';position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(212deg,rgba(49,130,246,.22) 8%,rgba(49,130,246,0) 82%)}
  .lockwrap > *{position:relative}
  .lockamt{display:flex;align-items:baseline;gap:var(--s2);margin-top:6px}
  .lockamt b{font-size:42px;font-weight:800;color:var(--t1);line-height:1;letter-spacing:-.045em;
    filter:blur(9px);user-select:none}
  .lockamt span{font-size:20px;font-weight:700;color:var(--t1)}
  .lockbar{margin-top:18px;height:12px;border-radius:var(--r-pill);background:#E3E7EB;overflow:hidden}
  .lockbar i{display:block;height:100%;width:74%;border-radius:var(--r-pill);background:var(--brand);
    filter:blur(6px);opacity:.55}
  .lockmsg{margin-top:var(--s4);display:flex;gap:9px;align-items:flex-start;
    font-size:var(--fs-m);font-weight:600;color:var(--t2);line-height:var(--lh5)}
  .lockmsg svg{flex:none;margin-top:2px;color:var(--t3)}

  /* C8 REPORT */
  .rtop{padding:var(--s6) var(--pad) 0;max-width:var(--w-page);margin:0 auto;width:100%}
  .rmain{padding:var(--s5) var(--pad) 0;max-width:var(--w-page);margin:0 auto;width:100%}
  .panel{border-radius:var(--r-lg);background:var(--stage);padding:var(--s6) var(--s5);
    position:relative;overflow:hidden}
  /* 파랑 그라디언트 폐기 — 이 패널 안에 오렌지(안 갚아도 되는 돈)가 들어온다.
     파랑 면 위에 오렌지를 얹으면 두 의미색이 서로를 흐린다 */
  .panel::before{content:'';position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(212deg,rgba(25,31,40,.04) 8%,rgba(25,31,40,0) 82%)}
  .panel > *{position:relative}
  .rk{font-size:var(--fs-m);font-weight:600;color:var(--t3)}
  .ramt{display:flex;align-items:baseline;gap:6px;margin-top:6px}
  .ramt b{font-size:clamp(46px,13.5vw,64px);font-weight:800;color:var(--t1);line-height:1;
    letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1;
    filter:blur(9px);opacity:.35;transition:filter .5s var(--e-in),opacity .5s var(--e-in)}
  .ramt.open b{filter:none;opacity:1}
  .ramt span{font-size:20px;font-weight:700;color:var(--t1)}
  .rrow{margin-top:10px;display:flex;justify-content:space-between;gap:var(--s3);
    font-size:var(--fs-m);font-weight:600;color:var(--t3)}
  .rnote{margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line2);
    font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}

  /* ── 계산 중 산식 원장 — 마지막 클릭과 게이트 사이가 통째로 비어 있었다.
     경쟁사 전원이 비워 둔 칸이고, 하필 우리 유일한 기능 차별점이 여기 들어간다 ── */
  .ledger{margin-top:var(--s5);border:1px solid var(--line);border-radius:var(--r-lg);
    background:var(--card);overflow:hidden}
  .ledger .lr{display:flex;align-items:baseline;gap:var(--s3);padding:13px var(--s4);
    border-bottom:1px solid var(--line);opacity:0;transform:translateY(6px);
    transition:opacity .34s var(--e-in),transform .34s var(--e-in)}
  .ledger .lr.on{opacity:1;transform:none}
  .ledger .lr:last-child{border-bottom:0}
  .ledger .lr .op{width:1.2em;flex:none;font-size:var(--fs-m);font-weight:700;color:var(--t4);
    font-variant-numeric:tabular-nums}
  .ledger .lr .lb{flex:1;min-width:0;font-size:var(--fs-m);font-weight:600;color:var(--t3)}
  .ledger .lr .vl{font-size:var(--fs-b);font-weight:700;color:var(--t1);
    font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1;white-space:nowrap}
  /* 마지막 행은 결론이라 잉크가 아니라 파랑이다 — 파랑 = 앞으로 낼 돈 */
  .ledger .lr.sum{background:var(--stage)}
  .ledger .lr.sum .lb{color:var(--t2);font-weight:700}
  .ledger .lr.sum .vl{color:var(--brand-ink)}
  /* 부적격 3분기 — 계산은 돌았지만 결론이 '실익 없음'인 상태 */
  .ledger.off .lr .vl{color:var(--t3)}
  .ledger.off .lr.sum .vl{color:var(--warn)}
  .calcnote{margin-top:var(--s3);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}

  /* ── 감액 사다리 — 총 채무에서 무엇이 남고 무엇이 사라지는지 세로로 ── */
  .ladder{margin-top:var(--s5);display:grid;grid-template-columns:14px 1fr auto;
    row-gap:0;align-items:center}
  .ladder .ln{grid-column:1;width:9px;height:9px;justify-self:center;
    background:var(--card);border:1.4px solid var(--t1)}
  .ladder .lk2{grid-column:2;font-size:var(--fs-m);font-weight:600;color:var(--t3);padding-left:var(--s3)}
  .ladder .lv{grid-column:3;font-size:var(--fs-b);font-weight:800;color:var(--t1);
    font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1;white-space:nowrap}
  .ladder .rail{grid-column:1;width:1.4px;height:26px;justify-self:center;background:var(--t1)}
  /* '안 갚아도 되는 돈'은 마지막 마디다. 색을 하나 더 들이지 않고
     노드를 채우고 글자를 키워 구분한다 */
  .ladder .ln.cutrow{border-color:var(--brand);background:var(--brand)}
  .ladder .lv.cutrow{color:var(--brand-ink);font-size:19px}
  .ladder .lk2.cutrow{color:var(--t1);font-weight:700}
  .ladder .rail.cut{background:var(--brand)}

  /* ── 헤어라인 표 — 선이 정보를 나른다. 카드도 배경도 쓰지 않는다 ── */
  .htab{border-top:1.4px solid var(--t1);margin-top:var(--s4)}
  .htab .hr{display:flex;align-items:baseline;gap:var(--s3);padding:11px 2px;
    border-bottom:1px solid var(--line)}
  .htab .hr .hk{flex:1;min-width:0;font-size:var(--fs-m);font-weight:600;color:var(--t3)}
  .htab .hr .hv{font-size:var(--fs-b);font-weight:700;color:var(--t1);white-space:nowrap;
    font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1}
  .htab .hr.tot .hk{color:var(--t1);font-weight:700}
  .htab .hr.tot .hv{color:var(--brand-ink)}
  .htab .hr:last-child{border-bottom:1.4px solid var(--t1)}
  .htab .src{margin-top:var(--s3);font-size:var(--fs-s);font-weight:500;color:var(--t3);line-height:1.5}

  /* ── 판정 2x2 격자 — 4행 세로 나열은 '네 가지'라는 사실이 안 읽힌다 ── */
  .conds{margin-top:var(--s3);display:flex;flex-direction:column;gap:var(--s2)}
  @media (min-width:480px){
    .conds{display:grid;grid-template-columns:1fr 1fr;gap:0;
      border-top:1.4px solid var(--t1);border-left:1px solid var(--line)}
    .conds .cond{border-radius:0;background:transparent;
      border-right:1px solid var(--line);border-bottom:1px solid var(--line);
      align-items:flex-start;flex-direction:column;gap:var(--s2);min-height:104px}
    .conds .cond .tag{margin-left:0;margin-top:auto}
  }
  .cond{display:flex;align-items:center;gap:var(--s3);padding:var(--s4) 18px;border-radius:var(--r);
    background:var(--stage);font-size:var(--fs-b);font-weight:700;color:var(--t1)}
  .cond .s{font-size:var(--fs-m);font-weight:500;color:var(--t3)}
  .cond .tag{margin-left:auto}

  /* 결과에서 나가는 길 — 상담 말고도 갈 곳이 있어야 한다 */
  .rnav{margin-top:var(--s5);border-top:1px solid var(--line);display:flex;flex-direction:column}
  .rnav a{display:flex;align-items:center;gap:var(--s3);min-height:56px;
    border-bottom:1px solid var(--line);color:var(--t1);text-decoration:none;
    font-size:var(--fs-b);font-weight:700}
  .rnav a span{flex:1}
  .rnav a:first-child span{flex:1}
  .rnav a svg{flex:none;color:var(--t4)}
  .rnav a:first-child svg{color:var(--t1)}
  .rnav a:active{color:var(--brand-ink)}
  @media (min-width:640px){.rnav{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--s5)}}

  .doneline{margin-top:var(--s4);padding:14px 18px;border-radius:var(--r);
    background:rgba(49,130,246,.07);font-size:var(--fs-m);font-weight:600;
    color:var(--t2);line-height:var(--lh5)}
  .doneline b{color:var(--brand-ink);font-weight:800}

  .gate{margin-top:var(--s6);padding:var(--s5);border-radius:var(--r-lg);
    background:var(--stage);border:1px solid var(--line)}
  .gate h2{font-size:20px;font-weight:800;color:var(--t1);line-height:var(--lh3);letter-spacing:-.03em}
  .gate p{margin-top:var(--s2);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .legal{margin-top:var(--s3);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}

  /* ══ 문법 A/C 공용 ══ */
  .phead{padding:var(--s6) var(--pad) 0;max-width:var(--w-page);margin:0 auto;width:100%}
  .phead .d2{margin-top:var(--s2)}
  .phead .bd{margin-top:var(--s3);color:var(--t3)}
  .art{padding:var(--s6) var(--pad) var(--s9);max-width:var(--w-art);margin:0 auto;width:100%}
  .art p{margin:var(--s3) 0;font-size:var(--fs-b);font-weight:500;color:var(--t2);line-height:var(--lh5)}
  .art h2{margin:var(--s8) 0 0;font-size:20px;font-weight:800;color:var(--t1);letter-spacing:-.03em;line-height:var(--lh3)}
  .art ul{margin:var(--s3) 0;padding-left:18px}
  .art li{margin:7px 0;font-size:var(--fs-b);color:var(--t2);line-height:var(--lh5)}
  .art b{color:var(--t1);font-weight:700}
  .meta{margin-top:10px;display:flex;gap:var(--s2);flex-wrap:wrap}
  .meta span{font-size:var(--fs-m);font-weight:700;color:var(--t3);background:var(--stage);
    border-radius:var(--r-sm);padding:5px 10px}
  .note{margin-top:18px;padding:var(--s4) 18px;border-radius:var(--r);background:var(--stage);
    font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .note b{color:var(--t1);font-weight:700}
  .facts{margin-top:var(--s6);display:flex;border-top:1px solid var(--line)}
  .facts div{flex:1;padding:18px 0 0}
  .facts b{display:block;font-size:26px;font-weight:800;color:var(--t1);letter-spacing:-.04em;line-height:var(--lh1)}
  .facts span{display:block;margin-top:6px;font-size:var(--fs-m);font-weight:600;color:var(--t3)}

  /* 절차 타임라인 */
  .tl{margin-top:var(--s5);position:relative;padding-left:26px}
  .tl::before{content:'';position:absolute;left:7px;top:6px;bottom:14px;width:2px;background:var(--line2)}
  .tl .st{position:relative;padding-bottom:var(--s6)}
  .tl .st::before{content:'';position:absolute;left:-26px;top:5px;width:16px;height:16px;border-radius:50%;
    background:var(--brand);box-shadow:0 0 0 4px var(--bg)}
  .tl .st b{display:block;font-size:var(--fs-b);font-weight:700;color:var(--t1)}
  .tl .st .d{display:block;margin-top:var(--s1);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .tl .st .when{display:inline-block;margin-top:var(--s2);font-size:var(--fs-m);font-weight:700;color:var(--t3);
    background:var(--stage);border-radius:var(--r-sm);padding:4px 10px}

  /* 목록 — 사례 · 칼럼 · 해법 */
  .grid{padding:var(--s5) var(--pad) var(--s9);display:flex;flex-direction:column;gap:10px;
    max-width:var(--w-page);margin:0 auto;width:100%}
  @media (min-width:640px){.grid{max-width:var(--w-tab)}}
  @media (min-width:1025px){.grid{max-width:1080px;display:grid;grid-template-columns:repeat(2,1fr);
    gap:var(--s4);align-content:start}.grid > .legal{grid-column:1/-1}}
  /* 왼쪽은 유형+설명 한 덩어리, 오른쪽은 [값 / 단위] 두 줄. 둘 다 세로 가운데.
     오른쪽 열 폭을 고정해 카드 네 장의 오른쪽 축을 하나로 맞춘다 */
  .case{border-radius:var(--r-lg);background:var(--stage);padding:var(--s5);
    display:flex;align-items:center;gap:var(--s4)}
  .case .ct{flex:1;min-width:0}
  .case .ty{font-size:var(--fs-m);font-weight:700;color:var(--t3)}
  .case .why{margin-top:5px;font-size:var(--fs-b);font-weight:600;color:var(--t1);
    line-height:1.45;letter-spacing:-.015em}
  .case .cut{flex:none;width:5.2em;text-align:right;display:block}
  .case .cut b{display:block;font-size:32px;font-weight:800;color:var(--brand-ink);
    letter-spacing:-.05em;line-height:1;font-variant-numeric:tabular-nums}
  .case .cut em{display:block;margin-top:4px;font-style:normal;font-size:var(--fs-m);
    font-weight:700;color:var(--brand-ink);letter-spacing:-.02em}
  @media (min-width:640px){.case .cut{width:5.6em}.case .cut b{font-size:38px}}
  .case .nums{margin-top:var(--s3);display:flex;flex-wrap:wrap;gap:6px}
  .case .nums span{font-size:var(--fs-m);font-weight:700;color:var(--t2);background:var(--card);
    border-radius:var(--r-sm);padding:5px 10px}

  .caselist{display:flex;flex-direction:column;gap:10px}
  @media (min-width:1025px){.caselist{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s4)}}
  .post{border-radius:var(--r-lg);background:var(--stage);padding:var(--s5);
    text-decoration:none;display:block}
  .post h3{margin-top:6px;font-size:20px;font-weight:800;color:var(--t1);letter-spacing:-.03em;line-height:var(--lh3)}
  .post p{margin-top:var(--s2);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .post .rd{margin-top:var(--s3);font-size:var(--fs-m);font-weight:700;color:var(--t3)}
  .scard{border-radius:var(--r-lg);background:var(--stage);padding:var(--s6) var(--s5)}
  .scard h3{margin-top:6px;font-size:20px;font-weight:800;color:var(--t1);letter-spacing:-.03em}
  .scard p{margin-top:var(--s2);font-size:var(--fs-b);font-weight:500;color:var(--t2);line-height:var(--lh5)}
  .scard .foot2{margin-top:var(--s3);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .scard .go{margin-left:auto;width:40px;height:40px;border-radius:50%;background:var(--t1);color:#fff;
    display:flex;align-items:center;justify-content:center;text-decoration:none;flex:none}

  /* FAQ */
  .faqs{padding:18px var(--pad) var(--s9);max-width:var(--w-art);margin:0 auto;width:100%}
  .faqg{margin-top:18px}
  .faqg .gl{font-size:var(--fs-m);font-weight:800;color:var(--brand-ink)}
  .faq{border-bottom:1px solid var(--line)}
  .faq .q{display:flex;gap:var(--s3);align-items:center;padding:18px 0;min-height:60px;width:100%;
    border:0;background:none;font-family:inherit;text-align:left;cursor:pointer;
    font-size:var(--fs-b);font-weight:700;color:var(--t1)}
  .faq .q svg{margin-left:auto;flex:none;color:var(--t3);transition:transform var(--t-slow) var(--e-st)}
  .faq.open .q svg{transform:rotate(180deg)}
  .faq .a{padding:0 0 18px;font-size:var(--fs-b);font-weight:500;color:var(--t2);line-height:var(--lh5)}
  .faq:not(.open) .a{display:none}

  /* 변호사·회사 정보 */
  .prof{margin-top:var(--s5);border-radius:var(--r-lg);background:var(--stage);padding:var(--s6) var(--s5)}
  .prof .hd{display:flex;gap:var(--s4);align-items:center}
  .prof .ph{width:76px;height:76px;border-radius:50%;background:#DDE3E9;flex:none;overflow:hidden;
    display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;color:var(--t3)}
  .prof .ph img{width:100%;height:100%;object-fit:cover;display:block}
  .prof .nm{font-size:20px;font-weight:800;color:var(--t1)}
  .prof .ro{margin-top:var(--s1);font-size:var(--fs-m);font-weight:600;color:var(--t3)}
  .prof dl{margin-top:18px;border-top:1px solid var(--line2)}
  .prof .r{display:flex;justify-content:space-between;gap:var(--s3);padding:11px 0;border-bottom:1px solid var(--line)}
  .prof dt{font-size:var(--fs-m);font-weight:500;color:var(--t3);flex:none}
  .prof dd{font-size:var(--fs-m);font-weight:700;color:var(--t1);text-align:right}

  /* 상담 선택 */
  .cchoice{margin-top:var(--s5);display:flex;flex-direction:column;gap:10px}
  .cch{display:flex;align-items:center;gap:var(--s3);padding:18px;border-radius:var(--r);
    background:var(--stage);text-decoration:none}
  .cch b{font-size:var(--fs-b);font-weight:700;color:var(--t1)}
  .cch span{display:block;margin-top:3px;font-size:var(--fs-m);font-weight:500;color:var(--t3)}
  .cch i{font-style:normal;margin-left:auto;width:36px;height:36px;border-radius:50%;
    background:var(--t1);color:#fff;display:flex;align-items:center;justify-content:center;flex:none}

  /* ══ 제품 화면 부품 — 저작 400px 기준. 여기 폰트는 전역 사다리와 무관하다 ══ */
  .uh{display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:20px 22px;border-bottom:1px solid var(--line)}
  .uh b{font-size:20px;font-weight:700;color:var(--t1)}
  .uh span{font-size:16px;font-weight:600;color:var(--t3);font-variant-numeric:tabular-nums}
  .ub{padding:20px 22px;display:flex;flex-direction:column;gap:14px}
  .uprog{height:6px;border-radius:var(--r-pill);background:var(--stage);overflow:hidden}
  .uprog i{display:block;height:100%;width:33%;background:var(--brand);border-radius:var(--r-pill);
    transition:width var(--t-in) var(--e-in)}
  .uq{font-size:24px;font-weight:700;color:var(--t1);line-height:1.35;min-height:2.7em}
  .uopt{display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:18px;border-radius:var(--r);background:var(--stage);border:1.5px solid transparent;
    font-size:20px;font-weight:600;color:var(--t1);
    transition:border-color var(--t-press) var(--e-st),background var(--t-press) var(--e-st)}
  .uopt.on{border-color:var(--brand);background:rgba(49,130,246,.07)}
  .uopt .ck{color:var(--brand);opacity:0;transform:scale(.5);
    transition:opacity var(--t-fast) linear,transform var(--t-slow) var(--spring)}
  .uopt.on .ck{opacity:1;transform:scale(1)}
  .urk{font-size:16px;font-weight:600;color:var(--t3)}
  .uamt{display:flex;align-items:baseline;gap:6px}
  .uamt b{font-size:40px;font-weight:800;color:var(--t1);line-height:1;letter-spacing:-.045em}
  .uamt span{font-size:22px;font-weight:700;color:var(--t1)}
  .ubar{height:12px;border-radius:var(--r-pill);background:var(--stage);overflow:hidden}
  .ubar i{display:block;height:100%;width:0;border-radius:var(--r-pill);background:var(--brand);
    transition:width var(--t-draw) var(--e-in)}
  .ubrow{font-size:16px;font-weight:600;color:var(--t3)}
  .ucd{display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:16px 18px;border-radius:var(--r);background:var(--stage);
    font-size:19px;font-weight:700;color:var(--t1)}
  .ucd .tag{font-size:15px;padding:5px 11px}
  .umsg{max-width:88%;padding:15px 17px;border-radius:18px 18px 18px 5px;background:var(--stage);
    font-size:18px;font-weight:600;color:var(--t1);line-height:var(--lh5)}
  .umsg b{color:var(--brand-ink);font-weight:800}
  .umt{font-size:15px;font-weight:600;color:var(--t3)}
  .ufine{font-size:14px;font-weight:500;color:var(--t3);line-height:var(--lh5)}
  /* 두 장면을 겹쳐두고 교차 */
  .scenes{position:relative}
  .scn{transition:opacity var(--t-slow) var(--e-in),transform var(--t-slow) var(--e-in)}
  .scn.out{position:absolute;inset:0;opacity:0;transform:translateY(-10px);pointer-events:none}
  .scn.in{opacity:1;transform:none}

  /* ══ 푸터 ══ */
  .foot nav a,.foot .cols a{padding:7px 0;display:inline-block}
  .foot{margin-top:var(--gapblock);padding:var(--s7) var(--pad) var(--footpad);border-top:1px solid var(--line);
    max-width:var(--w-page);margin-left:auto;margin-right:auto;width:100%}
  .foot .cols{display:flex;flex-wrap:wrap;gap:var(--s8)}
  .foot h4{font-size:var(--fs-m);font-weight:700;color:var(--t1);margin-bottom:var(--s2)}
  .foot ul{list-style:none;display:flex;flex-direction:column;gap:6px}
  .foot ul a{font-size:14px;font-weight:500;color:var(--t3);text-decoration:none}
  .foot .biz{margin-top:var(--s7);font-size:var(--fs-m);font-weight:500;color:var(--t3);line-height:var(--lh5)}
  .foot .biz b{color:var(--t2);font-weight:700}

  /* ══ 판정 중 오버레이 ══ */
  .anly{position:fixed;inset:0;z-index:90;background:var(--bg);display:none;
    align-items:center;justify-content:center;text-align:center;padding:0 var(--pad)}
  .anly.on{display:flex}
  .anly .bars{display:flex;gap:var(--s1);justify-content:center;margin-bottom:var(--s6)}
  .anly .bars i{width:3px;height:28px;background:var(--brand);opacity:.25;border-radius:2px;
    animation:bp var(--t-draw) infinite}
  .anly .bars i:nth-child(2){animation-delay:.12s}
  .anly .bars i:nth-child(3){animation-delay:.24s}
  .anly .bars i:nth-child(4){animation-delay:.36s}
  @keyframes bp{0%,100%{opacity:.25;transform:scaleY(.6)}50%{opacity:1;transform:scaleY(1)}}

  /* ══ 동작 최소화 ══ */
  @media (prefers-reduced-motion:reduce){
    *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
    .rv{opacity:1;transform:none}
    .seq > *{opacity:1;transform:none}
  }

/* ══ 현암 보정 ══ */
/* 로고 안의 '법무법인' 두 줄이 로고 높이의 1/3 남짓이다. 30px 이면 글자가 8px 대로 뭉개진다 */
.brand img{display:block;height:38px;width:auto}
@media (min-width:1025px){.brand img{height:44px}}
.lpfoot{margin-top:var(--gapblock);padding:var(--s7) var(--pad) var(--s9);border-top:1px solid var(--line);
  max-width:var(--w-page);margin-left:auto;margin-right:auto;font-size:13px;line-height:1.7;color:var(--t3)}
.lpfoot dl{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;margin:0}
.lpfoot dt{font-weight:700;color:var(--t2)}
.lpfoot dd{margin:0}
.lpfoot .c{margin-top:var(--s4)}
/* 동의 고지 — 법정 고지 4항목(항목·목적·보유기간·거부권)을 접어 둔다 */
.pnote{margin-top:6px;font-size:13px;line-height:1.65;color:var(--t3)}
.pnote summary{cursor:pointer;color:var(--brand-ink);font-weight:600;list-style:none;display:inline}
.pnote summary::-webkit-details-marker{display:none}
.pnote dl{margin:8px 0 0;padding:12px 14px;background:var(--stage);border-radius:var(--r);
  display:grid;grid-template-columns:auto 1fr;gap:4px 12px}
.pnote dt{font-weight:700;color:var(--t2)}
.pnote dd{margin:0}
