
  #bt3dLayer{
    position:fixed;inset:0;z-index:9000;display:none;
    background:#eef1f4;flex-direction:column;
  }
  #bt3dLayer.on{display:flex}
  /* 헤더(남색 띠)에는 조작 설명과 닫기 버튼만 둔다. 제목(2026-08-14 1차)과
     임대/판매 배지(2차)를 없애 빈 띠가 됐던 자리에, 화면 안에 떠 있던
     조작 안내를 옮겨 넣었다(3차 오너 지시 — "화면설명을 남색탭위에 넣자")
     — 3D 위에 겹쳐 있던 안내가 사라져 모형을 가리지 않는다. */
  .b3-head{
    display:flex;align-items:center;gap:8px;position:relative;min-height:52px;
    padding:6px 106px 6px 12px;background:#173b63;flex:none;
  }
  /* 가운데 닫기 버튼과 겹치지 않게 안내 글은 왼쪽 절반 안에만 둔다(2026-09-24 폰에서 겹침 신고). */
  .b3-head-hint{
    flex:0 1 auto;max-width:calc(50% - 64px);min-width:0;color:#c8d7ea;font-size:11.5px;font-weight:700;
    line-height:1.35;overflow-wrap:anywhere
  }
  /* 닫기 버튼 — 위 중간, 솔리드 빨강 알약. 관리자 3D(.a3-close)와 통일. 최상단·확실히 클릭. */
  /* 닫기 — 오른쪽 위 정상 위치(요청서 #3). 관리자 3D와 통일. */
  .b3-close{
    position:fixed;left:50%;top:12px;transform:translateX(-50%);margin:0;z-index:2147483000;
    display:inline-flex;align-items:center;justify-content:center;
    flex:none;height:44px;min-height:44px;padding:0 32px;border-radius:12px;
    border:0;background:#dc2626 !important;color:#fff !important;pointer-events:auto;
    font-size:16px;font-weight:800;letter-spacing:1px;white-space:nowrap;cursor:pointer;
    box-shadow:0 2px 10px rgba(15,23,42,.22);
  }
  .b3-close:hover{background:#b91c1c !important}
  /* 누르는 동안 버튼이 옆으로 튀어 손을 떼면 버튼 밖이라 클릭이 안 되던 것(2026-09-23 오너 신고).
     styles.html 의 button:not(:disabled):active{transform:translateY(1px)} 가 더 강해서
     가운데 맞춤용 translateX(-50%) 를 지웠다 → 반 폭만큼 오른쪽으로 점프. !important 로 고정. */
  .b3-close,.b3-close:hover{transform:translateX(-50%) !important}
  .b3-close:active,.b3-close:not(:disabled):active{transform:translateX(-50%) translateY(1px) !important}
  .b3-main{flex:1;display:flex;flex-direction:column;min-height:0}

  /* ── 3D 뷰포트 ── */
  /* 화면의 절반을 차지하던 것을 1/3 정도로 줄이고(2026-08-14 오너 지시 —
     "화면에 3D는 지금 절반정도 차지하는데 1/3 정도만 차지하게 해"),
     헤더도 최소화해 3D가 화면 맨 위로 최대한 붙게 했다. */
  .b3-vp{
    position:relative;flex:none;height:33vh;height:33dvh;min-height:220px;
    background:radial-gradient(ellipse at 50% 40%,#f7f9fb 0%,#dfe5ea 70%,#cfd6dd 100%);
    overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;
  }
  .b3-stage{position:absolute;inset:0;perspective:1100px}
  .b3-scene{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;will-change:transform}
  .b3-part{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d;
    transition:transform .5s cubic-bezier(.4,.1,.2,1)}
  .b3-box{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}
  .b3-face{
    position:absolute;backface-visibility:hidden;
    border:1px solid rgba(10,20,30,.16);cursor:pointer;
    transition:filter .25s,border-color .25s,box-shadow .25s;
  }
  .b3-part.sel .b3-face{border-color:rgba(232,132,44,.55)}
  /* 눈부시던 밝기 번쩍임 대신 옅은 파란 막이 천천히 숨 쉬듯(관리자 3D와 같게, 2026-09-24). */
  .b3-part.focus .b3-face{
    border-color:#3b82f6;
    animation:b3Glow 1.6s ease-in-out infinite;
  }
  /* 2026-09-24 오너 "빛나는 거 너무 안 보인다" — 짚은 부품은 진한 파랑으로 크게 깜박이고,
     나머지 부품은 흐리게 빠져서 어디인지 바로 보이게 한다(밝기 번쩍임은 쓰지 않는다 — 눈부시다는 지적). */
  /* 2026-09-24 오너 "선택은 형광색으로 깜박대게" — 형광 연두로 진해졌다 옅어진다. 목록의 선택 줄도 같은 색. */
  /* 녹색 ↔ 핑크로 번갈아 빛난다(2026-09-24 오너 "녹색과 레드 핑크 계열로, 잘 보이게") */
  /* 은은하게(2026-09-24 오너 "빛이 너무 강하다, 적당히, 세련된 불빛") — 옅게 물들이고 가장자리만 살짝 번진다 */
  @keyframes b3Glow{0%,100%{box-shadow:inset 0 0 0 999px rgba(34,197,94,.38),0 0 6px 1px rgba(34,197,94,.45)}50%{box-shadow:inset 0 0 0 999px rgba(236,72,153,.40),0 0 8px 2px rgba(236,72,153,.45)}}
  .b3-part.focus .b3-face{border:1.5px solid rgba(255,255,255,.85) !important;animation-duration:1.4s !important}
  /* 나머지 부품은 투명하게 빼지 않는다(2026-09-24 오너 "투명하게 만들지 말고 빛나게") — 선택한 것만 빛난다. */
  .b3-row.row-flash{animation:b3RowFlash 1s ease}
  @keyframes b3RowFlash{0%{background:#fff7d6}100%{background:transparent}}
  .b3-set-card{cursor:default !important}
  .b3-row{cursor:pointer}

  .b3-part.pulse .b3-face{animation:b3Pulse .6s ease}
  @keyframes b3Pulse{0%{box-shadow:inset 0 0 0 999px rgba(236,72,153,.5),0 0 10px 3px rgba(236,72,153,.5)}100%{box-shadow:inset 0 0 0 999px rgba(34,197,94,.38),0 0 6px 1px rgba(34,197,94,.45)}}
  .b3-floor{
    position:absolute;width:640px;height:480px;left:-320px;top:-240px;
    transform:rotateX(90deg) translateZ(-15px);border:none;pointer-events:none;
    background:
      radial-gradient(ellipse at center,rgba(0,0,0,.3) 0%,rgba(0,0,0,.1) 42%,rgba(0,0,0,0) 68%),
      repeating-linear-gradient(0deg,rgba(30,45,60,.1) 0 1px,transparent 1px 40px),
      repeating-linear-gradient(90deg,rgba(30,45,60,.1) 0 1px,transparent 1px 40px);
    -webkit-mask-image:radial-gradient(ellipse at center,#000 40%,transparent 72%);
    mask-image:radial-gradient(ellipse at center,#000 40%,transparent 72%);
  }
  /* 세트 기준보다 더 담은 부품 — 탑 옆 공중에 작게 띄우고 개수를 붙인다
     (2026-08-11 오너 지시 — "부품이 추가되면 옆에 따로 3D모델링을 추가해서
     공중에 떠보이게 하고... 부품위에 개수숫자까지 띄워주면 될듯"). */
  /* 완성된 세트를 옆으로 늘어놓는 줄. ⚠ 부품 목록 줄이 이미 .b3-row를 쓰고
     있어 이름을 .b3-setrow로 구분한다.
     예전엔 복사본 탑을 pointer-events:none으로 막아 원본 탑만 터치 대상이었다
     — 세트를 여러 개(높이가 다른 탑들) 늘어놓게 되면서 원본이 아닌 탑을
     누르면 반응이 없는 문제가 됐다(admin_bt3d.html과 같은 원인, 2026-08-11
     오너 지적). 이제 복사본도 터치를 받는다 — bt3dSyncCloneFocus_가 부품
     id로 모든 탑에 반짝임을 동기화하므로 이 스위치 하나로 충분하다. */
  .b3-setrow,.b3-tower{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}
  .b3-clone{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}

  .b3-extras{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}
  .b3-extra{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d;
    animation:b3Float 2.6s ease-in-out infinite}
  @keyframes b3Float{0%,100%{margin-top:0}50%{margin-top:-7px}}
  .b3-extra .b3-face{border-color:rgba(21,128,61,.5);cursor:default}
  .b3-extra-tag{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d;pointer-events:none}
  .b3-extra-tag i{
    display:block;transform:translate(-50%,-50%);white-space:nowrap;font-style:normal;
    background:#15803d;color:#fff;font-size:13px;font-weight:900;
    padding:4px 10px;border-radius:999px;box-shadow:0 3px 10px rgba(0,0,0,.3)
  }
  .b3-extra-tag i small{display:block;font-size:10.5px;font-weight:700;opacity:.85}

  /* 분해도·자동회전 버튼은 없앴다(2026-08-14 오너 지시 — "분해도 자동회전
     버튼도 없애") — 확대/축소 버튼처럼 두 손가락 제스처로 대신하고,
     자동회전은 열 때 자동으로 시작해 화면을 건드리면 스스로 멈춘다
     (기존 동작 그대로, bt3dBindPointer_ 참고). 화면을 건드는 버튼 줄
     자체가 사라져 3D 공간이 그만큼 넓어졌다. */
  .b3-toast{
    position:absolute;left:10px;top:64px;display:none;max-width:75%;
    font-size:12.5px;font-weight:700;background:#fff;border:1px solid #d7dde3;
    border-left:4px solid #e8842c;padding:7px 11px;border-radius:6px;
  }
  .b3-toast.on{display:block}
  .b3-toast small{display:block;font-weight:400;color:#5a6672;font-size:11.5px;margin-top:1px}

  /* ── 부품 수량 패널 ── */
  .b3-panel{flex:1;min-height:0;overflow-y:auto;background:#fff;
    border-top:1px solid #d7dde3;padding:12px 14px 14px;display:flex;flex-direction:column;gap:8px}
  .b3-panel h3{margin:0;font-size:13.5px;display:flex;justify-content:space-between;align-items:baseline}
  .b3-panel h3 small{color:#5a6672;font-weight:400;font-size:11.5px}
  /* 세트로 담기: 카드마다 자기만의 −/＋ 스테퍼가 있다(2026-08-14 — 관리자
     화면처럼 간결하게, 오너 지시 "세트로담기 버튼이 너무 복잡해 pc버전처럼
     간결하게"). 여러 카드가 동시에 0보다 큰 값을 가질 수 있다 — 1단+3단을
     같이 담는 것도 이 카드들만으로 된다(장바구니 없이). 가격은 고객
     화면이라 어디에도 안 넣는다(7절 보안 불변조건). bt3dRenderSetCards_가
     채운다. */
  /* 세트 칸은 따뜻한 주황, 낱개 칸은 차분한 파랑 — 두 담는 방법을 색으로
     확실히 갈라 준다(2026-08-14 오너 지시 — "카테고리를 확실하게 ui를
     만들자 세트로담기 와 낱개로 담기로 하고"). 관리자 화면과 같은 구분법이다. */
  .b3-setpick{border:1px solid #fbbf7a;border-radius:10px;background:#fff7ed;
    padding:10px 11px;display:flex;flex-direction:column;gap:8px}
  .b3-setpick-head{font-size:13px;font-weight:900;color:#9a3412}
  .b3-set-cards{display:flex;flex-direction:column;gap:6px}
  /* 카드마다 "N단세트" 글자 + 스테퍼 한 줄뿐이다 — 구성 설명은 뺐다
     (2026-08-14 오너 지시 — "아래 세트로 담기 도 최대한 심플하게 정리해"). */
  .b3-set-card{display:flex;align-items:center;gap:8px;font:inherit;
    border:1px solid #d7dde3;border-radius:8px;background:#fff;padding:8px 10px}
  .b3-set-card.has{border-color:#e8842c;background:#fdf3e7;box-shadow:0 0 0 1px #e8842c inset}
  .b3-set-card b{flex:1 1 auto;min-width:0;font-size:14px;color:#173b63}
  .b3-set-card.has b{color:#8a4a10}
  /* 스테퍼 크기는 부품 낱개 줄(.b3-row .st)과 똑같이 --qstep-*를 따른다. */
  .b3-set-card-stepper{
    display:inline-flex;align-items:stretch;flex:none;
    width:var(--qstep-w);min-width:var(--qstep-w);height:var(--qstep-h);
    border:1px solid #cbd5e1;border-radius:9px;overflow:hidden;background:#fff
  }
  .b3-set-card-stepper button{
    width:var(--qstep-btn-w);min-width:var(--qstep-btn-w);height:100%;
    border:0;border-radius:0;padding:0;flex:none;
    font-family:inherit;font-size:var(--qstep-btn-font);font-weight:900;line-height:1;cursor:pointer
  }
  .b3-set-card-stepper button.minus{background:#fef2f2;color:#dc2626}
  .b3-set-card-stepper button.plus{background:#eff6ff;color:#1d4ed8}
  .b3-set-card-stepper button:active{transform:translateY(1px)}
  .b3-set-card-stepper .n{
    width:var(--qstep-num-w);min-width:var(--qstep-num-w);flex:none;
    display:flex;align-items:center;justify-content:center;
    border-left:1px solid #e2e8f0;border-right:1px solid #e2e8f0;
    font-size:var(--qstep-num-font);font-weight:900;font-variant-numeric:tabular-nums;color:#1c242c
  }
  /* 낱개로 담기 칸 — 일반견적서와 같은 분류 버튼·검색으로 전체 품목을
     보여준다(2026-08-14 오너 지시). 세트 칸(주황)과 색으로 갈라 둔다. */
  .b3-piecepick{border:1px solid #bfdbfe;border-radius:10px;background:#f4f8ff;
    padding:10px 11px;display:flex;flex-direction:column;gap:8px}
  .b3-piece-head{font-size:13px;font-weight:900;color:#1d4ed8}
  /* 분류 버튼은 한 줄에 다 안 들어가면 줄바꿈한다 — 가로 스크롤 없이 다 보인다
     (일반견적서 .pick-cats와 같은 방식). */
  /* '분류' 라벨 — 일반 견적서와 통일(2026-09-16 오너 지시). 좁은 패널이라 라벨을
     버튼 위 줄에 둔다(일반 견적서도 폰에서 라벨이 위로 간다). */
  .b3-cat-row{display:flex;flex-direction:column;gap:5px}
  .b3-cat-label{font-size:12px;font-weight:900;color:#64748b}
  .b3-cats{display:flex;flex-wrap:wrap;gap:5px}
  .b3-cat{
    flex:none;font:inherit;font-size:12px;font-weight:800;white-space:nowrap;cursor:pointer;
    border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#5a6672;padding:7px 11px
  }
  .b3-cat.on{background:#173b63;border-color:#173b63;color:#fff}
  .b3-search{
    width:100%;border:1px solid #cbd5e1;border-radius:9px;background:#fff;
    padding:9px 11px;font:inherit;font-size:13px;min-height:0
  }
  .b3-empty{display:none;font-size:12px;color:#5a6672;text-align:center;padding:14px 0}
  .b3-empty.on{display:block}
  .b3-rows{display:flex;flex-direction:column;gap:4px}
  .b3-row{display:flex;align-items:center;gap:9px;border:1px solid #d7dde3;border-radius:8px;
    padding:5px 9px 5px 11px;background:#f2f5f7;cursor:pointer}
  .b3-row.sel{border-color:#e8842c;background:#ffe6c9;box-shadow:inset 4px 0 0 #e8842c}
  .b3-row.miss{opacity:.55}
  /* 규격·품목명이 길어도 …으로 자르지 않고 줄바꿈한다 — 치수까지 다 보여야 한다.
     글씨는 한 번 키웠다가 "너무 커졌다"는 지적으로 다시 줄였다(2026-08-11). */
  .b3-row .nm{flex:1;min-width:0;font-size:13.5px;font-weight:700;line-height:1.35}
  .b3-row .nm small{display:block;font-size:11.5px;font-weight:400;color:#5a6672;margin-top:2px;
    white-space:normal;overflow-wrap:anywhere;line-height:1.4}
  /* 규격은 분홍색으로 눈에 띄게 — 일반 견적서와 통일(2026-09-16 오너 지시). */
  .b3-row .nm small b.b3-size{color:#db2777;font-weight:800;font-size:12.5px}
  .b3-dev-badge{flex:none;font-size:11px;font-weight:800;padding:2px 7px;border-radius:999px;white-space:nowrap}
  .b3-dev-badge:empty{display:none}
  .b3-dev-badge.short{background:#fee2e2;color:#b91c1c}
  .b3-dev-badge.extra{background:#dcfce7;color:#15803d}
  .b3-dev-banner{font-size:12px;padding:8px 10px;border-radius:8px;line-height:1.55;
    background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}
  .b3-dev-banner:empty{display:none;padding:0;border:0}
  .b3-dev-banner.ok{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}
  .b3-dev-banner b{font-weight:800}
  @keyframes b3RowBlink{0%,100%{background:#eef4ff}50%{background:#dbe8ff}}
  .b3-row.row-focus{border-color:#e8842c;animation:b3RowBlink 1.1s ease-in-out infinite}
  /* ── 수량 −/＋ ──
     관리자 직접입력 표(.qty-stepper)·관리자 3D와 완전히 같은 모양·크기다.
     크기는 styles.html의 --qstep-* 하나가 기준이다(2026-08-11 오너 지시 —
     "딱 요렇게 -+버튼 나오게 모두다 적절한 사이즈로 글씨 안잘리게 기본으로
     조절해줘라"). 고객 화면이라 단가만 안 보일 뿐, 조작 모양은 같아야 한다. */
  .b3-row .st{
    display:inline-flex;align-items:stretch;flex:none;
    width:var(--qstep-w);min-width:var(--qstep-w);height:var(--qstep-h);
    border:1px solid #cbd5e1;border-radius:9px;overflow:hidden;background:#fff
  }
  /* 높이는 테두리를 포함해 --qstep-h로 딱 떨어져야 관리자 표와 같아진다. */
  .b3-row .st button{
    width:var(--qstep-btn-w);min-width:var(--qstep-btn-w);height:100%;
    border:0;border-radius:0;padding:0;flex:none;
    font-family:inherit;font-size:var(--qstep-btn-font);font-weight:900;line-height:1;cursor:pointer
  }
  .b3-row .st button:first-child{background:#fef2f2;color:#dc2626}
  .b3-row .st button:last-child{background:#eff6ff;color:#1d4ed8}
  .b3-row .st button:active{transform:translateY(1px)}
  .b3-row .q{
    width:var(--qstep-num-w);min-width:var(--qstep-num-w);flex:none;
    display:flex;align-items:center;justify-content:center;
    border-left:1px solid #e2e8f0;border-right:1px solid #e2e8f0;
    font-size:var(--qstep-num-font);font-weight:900;font-variant-numeric:tabular-nums;color:#1c242c
  }
  .b3-row.sel .q{color:#8a4a10}
  .b3-finish{font:inherit;font-size:15px;font-weight:800;color:#fff;cursor:pointer;
    background:#173b63;border:1px solid #173b63;border-radius:12px;padding:14px;min-height:50px}
  .b3-note{font-size:11.5px;color:#5a6672;line-height:1.55}
  /* 같은 단수가 여럿일 때 탑 옆에 붙는 "×N" 안내판 — 부품 초과분을 알리는
     기존 .b3-extra-tag 뼈대를 그대로 쓰되(2026-08-14), 의미가 다르니(추가
     부품이 아니라 세트 개수) 색만 파란 계열로 바꾼다.
     글자를 한 줄로 쓰고 알약이 그 줄 전체를 넉넉히 감싸게 한다 — 예전엔
     개수가 아랫줄로 떨어져 배경이 어정쩡하게 걸쳤다(오너 지적 — "파란색바가
     폰트 전체를 감싸서 잘보이게 해주자"). */
  .b3-extra-tag.count i{
    background:#1d4ed8;font-size:14px;padding:7px 14px;
    border:2px solid rgba(255,255,255,.9);box-shadow:0 4px 14px rgba(15,23,42,.4)
  }
  .b3-extra-tag.count i b{font-weight:900;color:#fff}

  @media (min-width:880px){
    .b3-main{flex-direction:row}
    .b3-vp{flex:1;height:auto;min-height:0}
    /* 규격·수량이 한 줄에 다 들어가야 해서 넓게 잡는다(2026-08-11 오너 지시) */
    .b3-panel{flex:none;width:min(520px,42vw);border-top:none;border-left:1px solid #d7dde3}
  }
  @media (min-width:1400px){
    .b3-panel{width:560px}
  }
  /* 폰에서는 버튼 줄이 두세 줄로 접히며 3D를 가렸다(2026-08-11 오너 지적).
     맨 위에 한 줄짜리 띠로 붙여 두고, 넘치면 가로로 밀어서 본다. */
  @media (max-width:760px){
    .b3-toast{top:60px}
  }

  @media (prefers-reduced-motion:reduce){
    .b3-part{transition:none}
    .b3-part.focus .b3-face,.b3-part.pulse .b3-face{animation:none}
    .b3-part.focus .b3-face{box-shadow:inset 0 0 0 999px rgba(59,130,246,.30)}
    .b3-row.row-focus{animation:none;background:#dbe8ff}
    .b3-extra{animation:none}
  }
  .b3-head{padding-right:12px}
  #bt3dLayer .b3-finish{display:flex;align-items:center;justify-content:center;gap:8px;line-height:1}
  #bt3dLayer .b3-finish-ic{width:22px;height:22px;flex:none}
  .b3-set-card{cursor:pointer}
  .b3-row.row-focus{border-color:#3b82f6 !important;box-shadow:0 0 0 2px rgba(59,130,246,.30) !important}
  /* ── 보기 전용(2026-09-24 오너 "견적서 기능이 아니라 품목 확인 용도") ── */
  #bt3dLayer .b3-setpick,#bt3dLayer .b3-dev-banner,#bt3dLayer .b3-piece-head,#bt3dLayer .b3-cat-row,
  #bt3dLayer .b3-search,#bt3dLayer .b3-empty,#bt3dLayer .b3-finish,#bt3dLayer .b3-note,
  #bt3dLayer .b3-row .st,#bt3dLayer .b3-dev-badge,#bt3dLayer .b3-row.is-cat{display:none !important}
  #bt3dLayer .b3-row{min-height:50px}
  .b3-viewbar{display:flex;align-items:center;gap:8px;margin:2px 0 8px}
  .b3-viewbar span{font-weight:800;color:#4b5563;margin-right:2px}
  .b3-viewbar button{min-height:40px;padding:0 18px;border-radius:10px;border:1px solid #cfd7e2;background:#fff;font-weight:800;font-size:15px}
  .b3-viewbar button.on{background:#1d4ed8;border-color:#1d4ed8;color:#fff}
  .b3-viewhelp{font-size:13.5px;color:#374151;background:#eef4ff;border-radius:10px;padding:8px 11px;margin-bottom:8px}
  /* 보기 전용이라 '담김' 노란색·주황 표시는 쓰지 않는다 */
  #bt3dLayer .b3-row.sel{background:#fff !important;border-color:#e0e7f1 !important;box-shadow:none !important}
  #bt3dLayer .b3-row.row-focus{background:#dbe8ff !important;border-color:#3b82f6 !important}
  /* 목록: 전부 흰색, 선택한 줄만 형광 연두로 깜박(2026-09-24 오너 "수직사다리만 왜 하얀 거냐, 전부 하얗게") */
  #bt3dLayer .b3-row,#bt3dLayer .b3-row.sel{background:#fff !important;border-color:#e0e7f1 !important;box-shadow:none !important}
  #bt3dLayer .b3-row.row-focus{border:2px solid #22c55e !important;box-shadow:0 0 0 3px rgba(236,72,153,.25) !important;animation:b3NeonRow 1s ease-in-out infinite !important}
  @keyframes b3NeonRow{0%,100%{background:#dcffd6;border-color:#22c55e}50%{background:#ffd6ea;border-color:#ec4899}}
  /* 머리(설명 띠)는 없앴다 — 닫기는 모양 보기 줄 오른쪽(2026-09-24 오너) */
  #bt3dLayer .b3-head{display:none !important}
  #bt3dLayer .b3-close.b3-close-inline{position:static !important;transform:none !important;left:auto;top:auto;margin-left:auto !important;height:40px;min-height:40px;padding:0 20px}
  #bt3dLayer .b3-close.b3-close-inline:active{transform:translateY(1px) !important}
  #bt3dLayer{overscroll-behavior:none;touch-action:pan-y}
  #bt3dLayer .b3-panel{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  html.b3-open,html.b3-open body{overflow:hidden !important;overscroll-behavior:none;height:100%}
