/* ABOUT 세트장 투어(about-world.js + about-world/world.mjs). PC·휴대폰 공통. 세로 목록(is-linear)일 때는 정본 글 목록을 그대로 보인다. */
#about.about-world .about-camera{background:#faf8f3}
#about.about-world .about-camera:before,#about.about-world .world-canvas,#about.about-world .studio-object,#about.about-world .intro-worktable,#about.about-world .material-pie,#about.about-world .studio-ledge,#about.about-world .studio-host,#about.about-world .exit-arrow{display:none!important}
#about.about-world.is-world-ready .about-topline{visibility:hidden}
#about.about-world .studio-station:before{display:none}
#about.about-world.is-world-ready:not(.is-linear) .studio-track{visibility:hidden}   /* 엔진이 준비되기 전에는 정본 글이 그대로 보이고, 준비되면 엔진이 글을 놓는다 */
#about.about-world:not(.is-world-ready) .about-world__stage{visibility:hidden}
#about.about-world .about-world__stage{position:absolute;inset:0;z-index:4;overflow:clip;background:#faf8f3}
#about.about-world .about-world__canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none;opacity:0;transition:opacity .4s}
#about.about-world .about-world__stage[data-ready=true] .about-world__canvas{opacity:1}
#about.about-world .about-world__copies{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
#about.about-world .about-world__stage[data-ready=false] .about-world__copies{visibility:hidden}
#about.about-world .about-world__wash{position:absolute;inset:0;z-index:3;display:block;background:radial-gradient(transparent 52%,rgba(4,7,5,.62) 100%);opacity:0;pointer-events:none;will-change:transform}
#about.about-world .about-world__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
/* 자리마다 다시 놓는 글: 정본 .station-copy 와 같은 글꼴·크기 */
#about.about-world .scene-copy{position:absolute;left:0;top:0;width:min(34vw,520px);transform-origin:0 0;pointer-events:auto;will-change:transform;color:var(--about-ink,#171923);word-break:keep-all;overflow-wrap:break-word}
#about.about-world .scene-copy[aria-hidden=true]{pointer-events:none}
#about.about-world .scene-copy .eyebrow{display:block;margin:0;font:11px/24px var(--mono);letter-spacing:.045em;color:var(--about-ink,#171923)}
#about.about-world .scene-copy h1{width:100%;margin:12px 0 16px;font-family:var(--sans);color:var(--about-ink,#171923);font-size:clamp(36px,3.8vw,56px);font-weight:400;line-height:.98;letter-spacing:-.055em;white-space:pre-line}
#about.about-world .scene-copy[data-scene="7"] h1{font-size:clamp(40px,4.4vw,66px);margin:16px 0 20px}
#about.about-world .scene-copy .body,#about.about-world .scene-copy .english,#about.about-world .scene-copy .scope{max-width:min(30vw,420px);margin:0}
#about.about-world .scene-copy .body{font:16px/1.46 var(--sans);white-space:pre-line}
#about.about-world .scene-copy .english{margin-top:8px;color:var(--about-muted,#55565b);font:13px/1.5 var(--sans)}
#about.about-world .scene-copy .scope{margin-top:16px;color:var(--about-muted,#55565b);font:11px/1.8 var(--mono);letter-spacing:.015em}
#about.about-world .scene-copy .phrase{white-space:nowrap}
@media(min-width:768px) and (max-height:780px){#about.about-world .scene-copy h1{margin:12px 0 16px;font-size:clamp(32px,3.4vw,48px)}}
#about.about-world.is-linear .about-world__stage{display:none}
#about.about-world.is-linear .studio-track{visibility:visible}
#about.about-world.is-linear .about-topline{visibility:visible}
@media(max-width:700px){
 #about.about-world .scene-copy{width:calc(100vw - 48px)}
 #about.about-world .scene-copy h1{font-size:36px;margin:12px 0 18px}
 #about.about-world .scene-copy h1.long{font-size:29px}
 #about.about-world .scene-copy[data-scene="7"] h1{font-size:36px;margin:12px 0 18px}
 #about.about-world .scene-copy .body,#about.about-world .scene-copy .english,#about.about-world .scene-copy .scope{max-width:none}
}
#about.about-world .studio-controls{background:transparent;box-shadow:none}
/* r63 (#71): 조종줄(← 이름 ——— →)이 나무 바닥 위에 그대로 얹혀 1px 옅은 선(#d6d7db)·11px 글자가 바닥 결에 묻혔다 → 줄 뒤에만 가장자리가 흐린 반투명 종이 띠, 선은 2px 진갈색(지나온 만큼 더 진하게). 선 시작 = 정본 고정 폭 이름 칸(92·56·48px) — 이름이 길어도 칸이 늘지 않게 잠근다 */
#about.about-world:not(.is-linear) .studio-controls:before{content:"";position:absolute;z-index:-1;inset:-4px -20px -24px;background:rgba(250,248,243,.8);filter:blur(9px);pointer-events:none}
#about.about-world:not(.is-linear) .studio-progress{height:2px;background:rgba(58,42,30,.3)}
#about.about-world:not(.is-linear) .studio-progress i{height:2px;background:#3a2a1e}
#about.about-world:not(.is-linear) .studio-stop-label{flex:none;overflow:hidden;white-space:nowrap}
#about.about-world .scene-copy p:empty{display:none}
#about.about-world.is-world-entering:not(.is-linear) .about-camera{background:#0b0c0b}
#about.about-world .about-world__stage{transition:none}   /* r51 (A2): 막이 걷힐 때 0.35초 페이드 동안 크림색 카메라 바탕이 번쩍이던 것 — 검정에서 방으로 바로 */
#about.about-world.is-world-entering .about-world__stage{opacity:0}
#about.about-world.is-world-entering:not(.is-linear) .studio-controls,#about.about-world.is-world-entering:not(.is-linear) .studio-track{visibility:hidden}
/* r49 (포트폴리오 세션 관찰 #5, 1440x540): 세로 목록(is-linear)에서는 들어가는 막이 끝나지 않으므로 막을 걸지 않는다 — 검은 화면 대신 정본 글 목록 */
/* r54 (d): 느린 회선 — 엔진 준비 전에는 소파 방 정지 그림(캐릭터 없음). 캔버스가 위에서 떠오르면(opacity .4s) 자연스럽게 덮는다 */
#about.about-world .about-world__poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none;transition:opacity 0s linear .5s}   /* 꺼질 때는 캔버스가 0.4초에 다 떠오른 뒤 */
#about.about-world.is-world-poster .about-world__poster{opacity:1;transition:opacity .25s linear}   /* A″-1 (landing-fix A″ ①): 검은 통로 → 정지 그림이 한 프레임에 켜지던 것(밝기 +170) — 0.25초에 떠오름 · A″-12: ease-out → linear(첫 프레임 증가가 평균의 1.7배였음) */
/* r54: 엔진도 정지 그림도 아직이면 빈 크림 대신 낙하 통로와 같은 검은 바탕(세로 목록 모드 제외) */
#about.about-world:not(.is-world-ready):not(.is-linear) .about-camera{background:#0b0c0b}   /* A″-1: 정지 그림을 받아 둔 뒤에도 준비 전 바탕은 검정(느린 회선 6Mbps 534: ABOUT 로 옮긴 첫 프레임에 크림 바탕이 비쳤다 — 정지 그림은 다음 프레임에 켜짐) */
#about.about-world:not(.is-world-ready):not(.is-linear) .about-world__stage{background:#0b0c0b}   /* A″-1: 정지 그림이 떠오르는 동안 무대 바탕도 검정(크림 #faf8f3 은 준비 뒤에만) */
/* r54: 정지 그림을 보이는 동안에는 무대를 드러내고(준비 전 숨김 규칙보다 뒤) 정본 글 목록은 잠시 접는다 */
#about.about-world.is-world-poster .about-world__stage{visibility:visible}
#about.about-world.is-world-poster .studio-track{visibility:hidden}
/* WELCOME 안 3 (C) — 포스터 글자 = 물건 (W-BUILD 2026-10-10). 소유: 회사소개 세션.
   큰 TVA(세 글자 = 세트장 세 원색, 잉크 테두리 + 잉크 두께 돌출) 아래 같은 폭으로 벌린 OFFICE, 맨 위 고정폭 WELCOME TO.
   글자마다 조금씩 다른 기울기(CONTACT 글자와 같은 ±2° 범위). 글 자리(y)는 엔진 copyPosition(0) → WL_Y.
   나타나는 시각은 착지 엔진 몫: data-wl-in="1" 일 때만 글자가 하나씩 튀어 나온다. */
#about.about-world .scene-copy.scene-copy--welcome{width:max-content;max-width:calc(100vw - 48px);color:#3d281d}
#about.about-world .scene-copy--welcome .wl-in{display:inline-grid;justify-items:stretch}
#about.about-world .scene-copy.scene-copy--welcome .eyebrow{margin:0 0 6px;font:500 clamp(10px,.85vw,12px)/1 var(--mono);letter-spacing:.32em;text-transform:uppercase;color:#3d281d}
#about.about-world .scene-copy.scene-copy--welcome h1{width:auto;margin:0;display:grid;justify-items:stretch;font:400 clamp(58px,7vw,100px)/.86 "Archivo Black",Impact,sans-serif;color:#3d281d;white-space:nowrap;letter-spacing:0}
#about.about-world .scene-copy--welcome .wl-word{display:flex;justify-content:space-between}
#about.about-world .scene-copy--welcome .wl-word--0 .wl-l{display:inline-block;-webkit-text-stroke:.05em #3d281d;paint-order:stroke fill;text-shadow:.02em .02em 0 #3d281d,.04em .04em 0 #3d281d,.06em .06em 0 #3d281d,.075em .075em 0 #3d281d}
#about.about-world .scene-copy--welcome .wl-word--0 .wl-l:nth-child(1){color:#2446ed;rotate:-2deg;translate:0 .02em}
#about.about-world .scene-copy--welcome .wl-word--0 .wl-l:nth-child(2){color:#ec5c4e;rotate:1.6deg;translate:0 -.03em}
#about.about-world .scene-copy--welcome .wl-word--0 .wl-l:nth-child(3){color:#f8d93e;rotate:-1.2deg;translate:0 .01em}
#about.about-world .scene-copy--welcome .wl-word--1{margin-top:.12em;font-size:.47em;line-height:.9;letter-spacing:0}
#about.about-world .scene-copy--welcome .wl-word--1 .wl-l{display:inline-block;color:#3d281d}
@media(max-width:700px){
 #about.about-world .scene-copy.scene-copy--welcome .eyebrow{font-size:11px;letter-spacing:.24em;margin-bottom:5px}   /* A‴-W: 라벨 9·10px → 11px(534·390, 심사 W2 필수 조건) */
 #about.about-world .scene-copy.scene-copy--welcome h1{font-size:min(14vw,56px)}
}
/* A‴-W (landing-fix a3): 534 류(폭 700 이하·세로가 덜 긴 창 — 사장님 534×773·534×873)는 착지 구도의 메뉴 아래 빈 벽 띠(약 75px, 엔진 sofaCam A‴-H)에
   쌓기(TVA 위·OFFICE 아래, 약 100px)가 들어가지 않아 창틀 위에 얹혔다 → 같은 부품(고정폭 라벨·세 원색 TVA·잉크 OFFICE)을 한 줄로: 두 줄 라벨 | TVA | OFFICE(기준선 맞춤). */
@media(max-width:700px) and (min-aspect-ratio:601/1000){
 #about.about-world .scene-copy--welcome .wl-in{grid-template-columns:auto auto;column-gap:12px;align-items:end}
 #about.about-world .scene-copy.scene-copy--welcome .eyebrow{line-height:1.3;letter-spacing:.22em;margin:0 0 .3em;white-space:nowrap}   /* P13-3(2026-10-13 다듬기): 두 줄 라벨(폭 6.2em) → 한 줄 'WELCOME TO' | TVA | OFFICE. 글자 아래끝(잉크)이 그대로라 엔진의 소파 창·빈 벽 계산(sofaCam, 잉크 기준)은 안 바뀜, 글 폭만 약 +22px */
 #about.about-world .scene-copy.scene-copy--welcome h1{display:flex;align-items:baseline;column-gap:.2em;font-size:min(10vw,52px)}
 #about.about-world .scene-copy--welcome .wl-word--1{margin-top:0}
}
@media(max-width:700px) and (max-aspect-ratio:3/5){
 #about.about-world .scene-copy.scene-copy--welcome .eyebrow{font-size:11px}
 #about.about-world .scene-copy.scene-copy--welcome h1{font-size:min(22vw,92px)}
}
/* 나타나는 모양: 글자가 하나씩 톡톡(기울기는 rotate 낱개 속성, 튀기는 scale 만 움직여 서로 안 덮음) — TVA 다음 OFFICE */
@keyframes wl-pop{0%{opacity:0;scale:.3}70%{opacity:1;scale:1.08}100%{opacity:1;scale:1}}
@keyframes wl-fade{0%{opacity:0}100%{opacity:1}}
#about.about-world .scene-copy--welcome[data-wl-in="1"] .wl-l{animation:wl-pop .34s cubic-bezier(.3,1.4,.5,1) both;animation-delay:calc((var(--w) * 3 + var(--i)) * 45ms)}
#about.about-world .scene-copy--welcome[data-wl-in="1"] .eyebrow{animation:wl-fade .3s ease-out both}
@media(prefers-reduced-motion:reduce){#about.about-world .scene-copy--welcome[data-wl-in] :is(.wl-l,.eyebrow){animation:none}}
.reduced-motion #about.about-world .scene-copy--welcome[data-wl-in] :is(.wl-l,.eyebrow){animation:none}
