/* ---- BOOTH · 3D scene (덱 FRONT · TOP VIEW 기준 · JS 생성) ---- */
.b3-wrap{background:#000;border:1px solid var(--line);position:relative;overflow:hidden}
.b3-stage{position:relative;width:100%;height:640px;perspective:1600px;perspective-origin:50% 40%;display:flex;align-items:center;justify-content:center;cursor:grab;
  background:radial-gradient(70% 70% at 50% 80%, rgba(232,52,28,.16), transparent 70%),linear-gradient(#000,#0d0d0d)}
.b3-stage:active{cursor:grabbing}
.b3-stage.sm{height:500px}
.b3-z{position:relative;width:330px;height:330px;flex:0 0 auto}
.b3{position:relative;width:330px;height:330px;transform-style:preserve-3d;transform-origin:165px 200px 0;
  transform:translateY(var(--ty,96px)) scale(var(--s,1)) rotateX(var(--rx,-26deg)) rotateY(var(--ry,34deg));will-change:transform}
.b3 *{transform-style:preserve-3d}
.b3 .f{position:absolute;backface-visibility:hidden}
.b3 .floor{left:0;top:35px;width:330px;height:330px;transform:rotateX(90deg);background:#C9C5B9;
  background-image:linear-gradient(rgba(0,0,0,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.07) 1px,transparent 1px);background-size:33px 33px;
  box-shadow:0 0 0 2px #111, 0 40px 90px rgba(0,0,0,.9)}
.b3 .floor svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.b3 .floor .path{fill:none;stroke:#111;stroke-width:2.2;stroke-dasharray:7 6;animation:b3dash 1.4s linear infinite}
.b3 .floor .path.red{stroke:#E8341C;stroke-width:3;stroke-dasharray:none;opacity:.55;animation:none}
@keyframes b3dash{to{stroke-dashoffset:-26}}
.b3 .floor .gate{fill:#000}
.b3 .floor .gate-t{fill:#fff;font:800 9px var(--big);letter-spacing:.14em}
/* 벽 2,370 → 260px */
.b3 .wall{top:-60px;height:260px;background:#C9C5B9;border:1.5px solid #111;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.b3 .wall.back{left:0;width:330px;transform:translateZ(-165px)}
.b3 .wall.right{left:165px;width:330px;transform:rotateY(-90deg)}
.b3 .panel{position:absolute;top:0;bottom:0;border-right:1.5px solid #111;overflow:hidden}
.b3 .panel:last-child{border-right:none}
.b3 .panel.grey{background:#CFCBC0;background-image:linear-gradient(180deg,rgba(255,255,255,.18),rgba(0,0,0,.06))}
.b3 .panel.red{background:#D9331D;background-image:linear-gradient(180deg,rgba(255,255,255,.1),rgba(0,0,0,.14))}
.b3 .panel.rcpt{background:#F4F2EC}
.b3 .wall.back .panel{width:110px} .b3 .wall.back .p1{left:0}.b3 .wall.back .p2{left:110px}.b3 .wall.back .p3{left:220px}
.b3 .wall.right .panel{width:165px} .b3 .wall.right .p4{left:0}.b3 .wall.right .p5{left:165px}
.b3 .wall-logo{position:absolute;left:8px;top:22px;width:96px;color:#ED0000;--logo-stroke:#000;--logo-sw:7px}
.b3 .wall-logo svg{width:100%;height:auto;display:block}
.b3 .wall-logo.span{left:81px;top:8px;width:150px;color:#B52412;--logo-stroke:#7A1408}
.b3 .banner{top:-84px;width:96px;height:284px;transform-origin:left center;background:#F6F4EE;box-shadow:0 10px 24px rgba(0,0,0,.45);overflow:hidden}
.b3 .banner img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}
.b3 .wall-rc{position:absolute;left:50%;top:6px;transform:translateX(-50%);width:52px;height:250px;object-fit:cover;object-position:top;box-shadow:0 8px 18px rgba(0,0,0,.35)}
.b3 .wall-steps{position:absolute;left:12px;top:22px;right:10px;color:#fff;font-family:var(--big)}
.b3 .wall-steps .h{font-family:var(--title);font-weight:500;font-size:11px;letter-spacing:.02em;line-height:1.15}
.b3 .wall-steps .g{display:grid;grid-template-columns:1fr 1fr;gap:12px 8px;margin-top:16px}
.b3 .wall-steps .g b{display:block;font-size:6.5px;letter-spacing:.14em;opacity:.85}
.b3 .wall-steps .g span{display:block;font-size:7px;font-weight:700;margin-top:2px;font-family:var(--small)}
.b3 .wall-steps .lg{position:absolute;right:0;bottom:-120px;width:70px;color:#fff;--logo-stroke:#B52412}
.b3 .wall-steps .lg svg{width:100%;height:auto;display:block}
.b3 .wall-small{position:absolute;left:10px;bottom:10px;width:64px;color:#fff;--logo-stroke:#B52412;opacity:.9}
.b3 .wall-small svg{width:100%;height:auto}
/* 코엑스 기본부스 포스트 */
.b3 .post{width:7px;height:262px;top:-62px;background:#1a1a1a;border:1px solid #333}
/* 크레이트 (JS) — 520×360×330mm → 57×40×36px */
.b3 .cr{position:absolute;left:0;top:0;width:0;height:0}
.b3 .cr .fc{position:absolute;border:1px solid rgba(80,10,4,.9);box-sizing:border-box}
.b3 .cr .fr{background:#DE3A22;background-image:linear-gradient(rgba(255,255,255,.16),rgba(0,0,0,.08)),
  repeating-linear-gradient(90deg,rgba(0,0,0,.2) 0 1px,transparent 1px 5px),repeating-linear-gradient(0deg,rgba(0,0,0,.2) 0 1px,transparent 1px 5px)}
.b3 .cr .fr:after{content:"";position:absolute;left:50%;top:5px;transform:translateX(-50%);width:20px;height:5px;border-radius:3px;background:rgba(0,0,0,.4)}
.b3 .cr .sd{background:#B32A15;background-image:repeating-linear-gradient(90deg,rgba(0,0,0,.2) 0 1px,transparent 1px 5px),repeating-linear-gradient(0deg,rgba(0,0,0,.2) 0 1px,transparent 1px 5px)}
.b3 .cr .tp{background:#E8452C;background-image:radial-gradient(rgba(0,0,0,.4) 1px,transparent 1.4px);background-size:5px 5px}
.b3 .cr.open .tp{background:#BE2B17;box-shadow:inset 0 0 0 5px #E2432A}
.b3 .cr .fr.dark{background:#1a1a1a;border-color:#000}.b3 .cr .sd.dark{background:#0f0f0f;border-color:#000}.b3 .cr .tp.dark{background:#222;border-color:#000;background-image:none}
/* 크레이트 앞면 카테고리 라벨 (평면) */
.b3 .flab{position:absolute;width:52px;text-align:center;background:#000;color:#fff;font-family:var(--big);font-weight:800;font-size:5.5px;letter-spacing:.1em;padding:2px 0;border:.5px solid rgba(255,255,255,.4)}
/* 빌보드 (항상 카메라를 향함) */
.b3 .bb{position:absolute;width:0;height:0;transform-style:preserve-3d}
.b3 .bb>*{position:absolute;bottom:0;left:0;transform:translateX(-50%)}
.b3 .bb img{display:block;height:auto;max-width:none;transition:none;filter:drop-shadow(0 5px 5px rgba(0,0,0,.45))}
.gitem:hover .b3 img{transform:translateX(-50%)}
.b3 .bb .lab{white-space:nowrap;background:#000;color:#fff;font-family:var(--big);font-weight:800;font-size:7.5px;letter-spacing:.14em;padding:3px 7px;border:1px solid rgba(255,255,255,.35)}
.b3 .bb .lab.red{background:#E8341C;border-color:#E8341C}
.b3 .bb .lab.w{background:#fff;color:#000;border-color:#fff}
.b3 .bb .lab.big{font-size:9.5px;padding:4px 9px}
.b3 .sh{position:absolute;border-radius:50%;background:radial-gradient(rgba(0,0,0,.5),transparent 70%);transform:rotateX(90deg)}
.b3-hint{font-size:11px;color:var(--ink-4);padding:10px 16px 12px;font-weight:700;border-top:1px solid var(--line-2);display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.b3-hint i{display:inline-block;width:9px;height:9px;margin-right:5px;vertical-align:-1px}
.b3-hint .sp{margin-left:auto}
.b3-hint button{background:transparent;border:1px solid var(--line);color:var(--ink-3);font-family:var(--big);font-weight:800;font-size:10.5px;padding:4px 9px;cursor:pointer}
.b3-hint button:hover{border-color:var(--ink);color:var(--ink)}
@media(max-width:640px){.b3{--s:.7}.b3-stage{height:380px}}
/* ---- BOOTH · 벽면 인쇄 시안 (v17 재적용 · 0914) ---- */
.b3 .wall.art-wall{background:#FCFCFB}
.b3 .wall.ar-wall{background:#BB252A}
.b3 .panel.art{background-repeat:no-repeat;background-size:100% 100%;border-right:1px solid rgba(0,0,0,.28)}
.b3 .panel.art.aw{background-color:#FCFCFB}
.b3 .panel.art.ar{background-color:#BB252A;background-size:auto 100%;border-right-color:rgba(0,0,0,.35)}
.b3 .wall.right .panel.art.p4{background-position:right center}
.b3 .wall.right .panel.art.p5{background-position:left center}
.dv-front2 .pn.art{background-repeat:no-repeat;background-size:100% auto;background-position:center bottom}
.dv-front2 .pn.art.aw{background-color:#FCFCFB}
.dv-front2 .pn.art.ar{background-color:#BB252A}
.dv-front2 .pn.art .cap{z-index:1}
.dv-front2 .pn.art.ar .cap{color:rgba(255,255,255,.8)}
.dv-front2 .rcpt{left:52%;width:13.6%}
.p-wall{flex-direction:row;align-items:flex-start;justify-content:center;gap:10px;padding:22px 22px 16px;background:#EDEDEC}
.p-wall figure{margin:0;flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:7px}
.p-wall figure img{display:block;width:100%;height:auto;aspect-ratio:700/1621;box-shadow:0 8px 18px -6px rgba(0,0,0,.28)}
.gitem:hover .p-wall figure img{transform:none}
.p-wall figcaption{font-family:var(--title);font-weight:400;font-size:10px;letter-spacing:.1em;color:var(--ink-3);text-align:center;white-space:nowrap}
.p-wall .pw-corner{flex:0 0 6px;align-self:stretch;margin:0 2px 20px;border-left:1px dashed rgba(17,17,17,.3)}
.gal .gitem{min-width:0}
@media(max-width:560px){.p-wall{gap:8px;padding:14px 12px 10px;justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch}.p-wall figure{flex:0 0 96px}.p-wall figcaption{font-size:9px;letter-spacing:.04em}}

/* ---- 3D 부스 스테이지 — 라이트 ---- */
.b3-wrap{background:var(--paper);border:1px solid var(--line)}
.b3-stage{background:radial-gradient(70% 70% at 50% 82%, rgba(232,52,28,.10), transparent 70%),linear-gradient(#FFFFFF,#EFEFEC)}
.b3 .floor{box-shadow:0 0 0 2px #111, 0 40px 90px rgba(0,0,0,.28)}
.b3 .wall{box-shadow:inset 0 0 0 1px rgba(255,255,255,.2), 0 20px 50px -20px rgba(0,0,0,.3)}
.b3 .banner{box-shadow:0 10px 24px rgba(0,0,0,.25)}
.b3-hint{color:var(--ink-4);border-top:1px solid var(--line-2)}
.b3-hint button{background:var(--paper);border:1px solid var(--line);color:var(--ink-3)}
.b3-hint button:hover{border-color:var(--accent);color:var(--accent)}

/* ---- v14 · 3D 벽면 메시지 (P3) · 리플렛 선반 · 2D FRONT P3 ---- */
.b3 .wall-msg{position:absolute;left:70px;top:72px;width:172px;text-align:center;color:#111;font-family:var(--title);font-weight:500;line-height:1.2}
.b3 .wall-msg .r{display:block;width:26px;height:1.5px;background:#E8341C;margin:0 auto 6px}
.b3 .wall-msg .t{display:block;font-size:8.5px;letter-spacing:.14em;color:#111}
.b3 .wall-msg .c{display:block;font-family:var(--small);font-weight:600;font-size:5.4px;letter-spacing:.12em;color:#B52412;margin-top:3px}
.b3 .wall-msg .k{display:block;font-family:var(--small);font-weight:600;font-size:6.6px;line-height:1.5;color:rgba(0,0,0,.78);margin-top:6px;letter-spacing:-.01em;word-break:keep-all}
.b3 .bb .lab.leaf{background:#fff;color:#111;border-color:#111;font-size:6px;letter-spacing:.1em}
.b3 .cr .fr.cream{background:#EDEAE1;background-image:linear-gradient(rgba(255,255,255,.4),rgba(0,0,0,.05))}
.b3 .cr .sd.cream{background:#D8D4C8}
.b3 .cr .tp.cream{background:#F5F3EE;background-image:none}
.b3 .cr .fc.cream{border-color:rgba(0,0,0,.45)}
/* 9/15 화이트 크레이트 (보유 7 — 앞쪽 COUNTER · TEST 체크보드) */
.b3 .cr .fc.white{border-color:rgba(70,64,52,.6)}
.b3 .cr .fr.white{background:#F3F1EC;background-image:linear-gradient(rgba(255,255,255,.35),rgba(0,0,0,.06)),
  repeating-linear-gradient(90deg,rgba(0,0,0,.09) 0 1px,transparent 1px 5px),repeating-linear-gradient(0deg,rgba(0,0,0,.09) 0 1px,transparent 1px 5px)}
.b3 .cr .fr.white:after{background:rgba(0,0,0,.22)}
.b3 .cr .sd.white{background:#D6D2C8;background-image:repeating-linear-gradient(90deg,rgba(0,0,0,.1) 0 1px,transparent 1px 5px),repeating-linear-gradient(0deg,rgba(0,0,0,.1) 0 1px,transparent 1px 5px)}
.b3 .cr .tp.white{background:#FAF9F6;background-image:radial-gradient(rgba(0,0,0,.2) 1px,transparent 1.4px);background-size:5px 5px}
.b3 .cr.open .tp.white{background:#DAD7CF;background-image:none;box-shadow:inset 0 0 0 5px #F6F5F1}
:root{--big:Arial,sans-serif;--title:Arial,sans-serif;--small:Arial,sans-serif;--line:#ddd}body{margin:0;background:#faf9f6}*{box-sizing:border-box}.b3-stage{height:560px}.b3-hint{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:15px}.b3-hint button{padding:10px 14px;border:1px solid #777;background:#fff;color:#111;border-radius:24px;cursor:pointer}@media(max-width:600px){.b3-stage{height:420px}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}