@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;font-family:'DM Sans',Arial,sans-serif;color:#e9ede9;background:#101619;--accent:#ec623e;--line:#ffffff24}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button{border:0;background:none}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid #ffc894;outline-offset:6px}button:disabled{opacity:.4;cursor:default}::selection{background:var(--accent);color:#fff}#studio{height:100svh;min-height:480px;position:relative;isolation:isolate;overflow:hidden}#scene{position:absolute;inset:0;touch-action:none}#scene canvas{display:block;width:100%;height:100%;outline-offset:-8px}.scene-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 42%,transparent 35%,#061e3025 100%);z-index:1}.topbar{position:absolute;top:0;left:0;right:0;padding:28px 32px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;z-index:4}.topbar>*{pointer-events:auto}.wordmark{display:flex;gap:15px;align-items:center;position:relative;font-family:'Manrope',Arial,sans-serif;font-size:39px;font-weight:800;letter-spacing:-3px;line-height:1}.wordmark span{font-family:'DM Sans',Arial,sans-serif;font-size:11px;font-weight:500;letter-spacing:2px;max-width:55px;line-height:1.35}.wordmark sup{font-size:9px;position:absolute;left:72px;top:-3px;letter-spacing:0}.top-center{font-size:11px;letter-spacing:1.8px;opacity:.65;margin-left:35px}.top-controls{display:flex;gap:12px}.round-button{border:1px solid #d2e0e341;width:48px;height:48px;border-radius:50%;display:flex;justify-content:center;align-items:center;background:#173c4f0c;backdrop-filter:blur(3px);transition:background .2s,border .2s}.round-button:hover{background:#ffffff18;border-color:#ffffff90}.sound-wave{display:flex;gap:3px;align-items:center;height:18px}.sound-wave i{width:2px;height:5px;background:#d5e3e6}.sound-wave i:nth-child(2){height:13px}.sound-wave i:nth-child(3){height:9px}.sound-wave i:nth-child(4){height:15px}[aria-pressed=true] .sound-wave i{animation:wave .65s ease-in-out infinite alternate}[aria-pressed=true] .sound-wave i:nth-child(2){animation-delay:-.2s}[aria-pressed=true] .sound-wave i:nth-child(3){animation-delay:-.5s}@keyframes wave{to{height:3px}}.menu-button{flex-direction:column;gap:5px}.menu-button span{height:1px;width:17px;background:currentColor}.intro{position:absolute;bottom:94px;left:32px;z-index:2;pointer-events:none}.eyebrow{font-size:10px;letter-spacing:1.7px;margin:0 0 18px;opacity:.7}.intro h1{font-family:'Manrope',Arial,sans-serif;font-size:clamp(25px,2.7vw,43px);font-weight:400;line-height:1.18;letter-spacing:-1.8px;margin:0}.intro-ko{font-size:13px;margin:18px 0 0;opacity:.7;letter-spacing:-.4px}.scene-footer{position:absolute;bottom:25px;left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;gap:20px;z-index:4;pointer-events:none;font-size:11px;color:#d2e0e4}.scene-footer button{pointer-events:auto;font-size:11px;padding:10px 0;letter-spacing:.5px}.interaction-hint{display:flex;align-items:center;gap:12px;opacity:.7}.interaction-hint i{font-style:normal;padding:0 7px}.drag-icon{font-size:22px}.footer-controls{display:flex;align-items:center;gap:24px}.footer-controls>span{font-size:10px;opacity:.55;letter-spacing:.4px}#scene-status{position:absolute;left:50%;bottom:78px;transform:translateX(-50%);z-index:5;font-size:12px;padding:12px 18px;background:#132c3ccb;backdrop-filter:blur(5px);border-radius:3px;opacity:0;transition:opacity .3s;pointer-events:none}#scene-status.visible{opacity:1}.loader{position:absolute;inset:0;z-index:10;background:#101619;display:flex;justify-content:center;align-items:center;flex-direction:column;transition:opacity .6s,visibility .6s}.loader strong{font-family:Manrope,sans-serif;font-size:62px;letter-spacing:-5px}.loader strong>span{display:block;font-family:'DM Sans',sans-serif;text-align:center;letter-spacing:5px;font-size:11px;margin-top:5px}.loader p{font-size:12px;letter-spacing:1px;opacity:.7;margin-top:35px}.load-track{height:1px;width:140px;background:#ffffff25;overflow:hidden;margin-top:7px}.load-track i{display:block;height:1px;background:#d9e6e6;animation:load 1.5s ease-in-out infinite;width:80px}@keyframes load{from{transform:translateX(-80px)}to{transform:translateX(140px)}}.scene-ready .loader{opacity:0;visibility:hidden}.scene-error{position:absolute;z-index:9;inset:20%;background:#163746ef;padding:30px;border:1px solid var(--line);text-align:center}.scene-error h2{font-size:20px}.scene-error p{font-size:14px;line-height:1.7}.scene-error button{padding:15px;border:1px solid var(--line);margin:10px}
dialog{border:1px solid var(--line);background:#101717;color:#edf0ea;padding:0;max-width:calc(100vw - 50px);max-height:90svh;overscroll-behavior:contain}dialog::backdrop{background:#0c1a22b8;backdrop-filter:blur(12px)}dialog[open]{animation:panel-in .45s cubic-bezier(.2,.7,.2,1)}@keyframes panel-in{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:none}}.panel-top{padding:25px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px;position:sticky;top:0;z-index:2;background:#101717ec;backdrop-filter:blur(10px);font-size:12px;letter-spacing:1px}.panel-top h2{font-size:14px;font-weight:500;margin:0 0 8px}.panel-top p{font-size:11px;margin:0;opacity:.5}.close{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;font-size:27px;line-height:1;font-weight:400;flex-shrink:0}.close:hover{background:#ffffff15}.reel-dialog{width:1200px}.reel-dialog video{width:100%;display:block;max-height:69svh;background:#030809}.reel-bottom{display:flex;justify-content:space-between;align-items:center;gap:25px;padding:22px 32px;font-size:11px;letter-spacing:.6px;color:#95a6a9}.reel-bottom button{font-size:12px;color:#ecedeb;padding:10px 0}.video-status{padding:0 32px;font-size:14px}.menu-dialog{width:min(1050px,92vw);padding-bottom:35px}.menu-dialog nav{padding:20px 50px}.menu-dialog nav button{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line);width:100%;padding:23px 0;text-align:left}.menu-dialog nav span{font-family:Manrope,sans-serif;font-size:clamp(26px,4.2vw,60px);letter-spacing:-2px}.menu-dialog nav small{font-size:10px;letter-spacing:1px;opacity:.45}.menu-dialog nav button:hover span{color:var(--accent)}.menu-note{font-size:13px;line-height:1.9;color:#91a2a5;margin:25px 50px 0}.work-dialog{width:1200px}.work-heading{padding:30px 45px 50px;display:flex;align-items:flex-end;justify-content:space-between;gap:30px}.work-heading h2{font-family:Manrope,sans-serif;font-size:55px;line-height:1.05;font-weight:400;letter-spacing:-3px;margin:0}.work-heading p{font-size:14px;color:#91a2a5}.work-list{padding:0 45px 50px;display:grid;grid-template-columns:1fr 1fr;gap:35px 24px}.work-list>button{padding:0;text-align:left}.work-list>button:first-child{grid-column:1/-1}.work-list img{width:100%;aspect-ratio:1.6;object-fit:cover;display:block}.work-list>button:first-child img{aspect-ratio:2.4}.work-list>button>span{display:flex;justify-content:space-between;align-items:center;padding:19px 0;gap:20px}.work-list strong{font-size:23px;font-weight:400;letter-spacing:-.8px}.work-list small{font-size:10px;letter-spacing:1px;color:#8e9b9e}.work-list button:hover strong{color:var(--accent)}.about-dialog{width:1020px}.about-content{padding:10px 60px 60px}.asterisk{display:block;font-size:75px;color:var(--accent);margin-bottom:22px}.about-content h2{font-family:Manrope,sans-serif;font-size:clamp(34px,4.7vw,65px);line-height:1.16;font-weight:400;letter-spacing:-3px;margin:0 0 40px}.about-content h2 em{font-family:Georgia,serif;color:#94a7ab}.about-content p{font-size:16px;line-height:1.9;color:#92a5a9}.about-content .about-lead{font-size:24px;color:#e1e6e0;line-height:1.6;letter-spacing:-.8px}.disciplines{display:flex;gap:30px;border-top:1px solid var(--line);margin-top:40px;padding-top:25px;font-size:11px;letter-spacing:.8px}.project-dialog{width:1050px}.project-dialog>img{width:100%;max-height:57svh;object-fit:cover;display:block}.project-details{padding:30px 35px}.project-details h2{font-family:Manrope,sans-serif;font-size:45px;font-weight:400;letter-spacing:-2px;margin:0 0 15px}.project-details p{font-size:16px;line-height:1.8;color:#95a5a6;max-width:650px}.project-details button{padding:15px 0;font-size:12px;letter-spacing:1px;border-bottom:1px solid var(--line);margin-right:25px}.project-details button span{padding-left:20px}.back-work{color:#91a0a3}
@media(max-width:700px){.topbar{padding:23px 21px}.wordmark{font-size:33px;gap:13px}.wordmark span{font-size:9px;letter-spacing:1.3px}.wordmark sup{left:62px;font-size:8px}.top-center{display:none}.round-button{width:42px;height:42px}.top-controls{gap:9px}.intro{left:23px;bottom:104px}.intro h1{font-size:28px;letter-spacing:-1.2px}.eyebrow{font-size:9px;letter-spacing:1px;margin-bottom:13px}.intro-ko{font-size:12px;margin-top:14px}.scene-footer{bottom:18px;left:23px;right:23px;display:block}.interaction-hint{font-size:10px;gap:7px;margin-bottom:6px}.drag-icon{font-size:17px}.footer-controls{gap:20px;justify-content:space-between}.footer-controls button{font-size:10px}.footer-controls>span{font-size:9px}#scene-status{bottom:200px;width:max-content;max-width:85vw;font-size:11px;text-align:center}dialog{max-width:calc(100vw - 20px);max-height:94svh}.panel-top{padding:15px 20px;font-size:10px}.panel-top h2{font-size:11px}.panel-top p{font-size:9px}.close{width:37px;height:37px;font-size:24px}.reel-dialog{max-width:100vw}.reel-bottom{padding:18px 20px;display:block;font-size:9px;line-height:1.6}.reel-bottom button{display:block;margin-top:10px;font-size:11px}.menu-dialog nav{padding:15px 25px}.menu-dialog nav button{display:block;padding:18px 0}.menu-dialog nav span{font-size:32px;letter-spacing:-1.5px}.menu-dialog nav small{display:block;margin-top:10px;font-size:10px}.menu-note{margin:20px 25px 0;font-size:12px}.work-heading{padding:25px;display:block}.work-heading h2{font-size:39px;letter-spacing:-2px}.work-heading p{font-size:13px;line-height:1.7;margin-top:23px}.work-list{padding:0 25px 30px;grid-template-columns:1fr;gap:20px}.work-list>button:first-child{grid-column:auto}.work-list>button:first-child img{aspect-ratio:1.6}.work-list>button>span{display:block}.work-list strong{font-size:23px}.work-list small{display:block;margin-top:8px}.about-content{padding:5px 28px 40px}.asterisk{font-size:55px}.about-content h2{font-size:32px;letter-spacing:-1.5px}.about-content .about-lead{font-size:21px}.about-content p{font-size:14px}.disciplines{flex-direction:column;gap:15px;font-size:11px}.project-details{padding:24px}.project-details h2{font-size:34px}.project-details p{font-size:14px}.project-dialog>img{aspect-ratio:1.2}.scene-error{inset:20% 20px;padding:20px}.scene-error h2{font-size:18px}}
#studio{min-height:0}.top-center,.eyebrow,.scene-footer,.scene-footer button,.footer-controls>span,.menu-dialog nav small,.work-list small,.disciplines,.panel-top p,.reel-bottom{font-size:12px}.intro-ko{font-size:14px}.round-button,.close{min-width:44px;min-height:44px}
@media(max-width:700px){.wordmark span{font-size:10px}.intro .eyebrow{font-size:10px}.footer-controls{gap:14px;flex-wrap:wrap}.footer-controls>span{font-size:10px}.footer-controls button{font-size:11px}.interaction-hint{font-size:11px}.intro-ko{font-size:13px}}
@media(max-height:500px){.topbar{padding:15px 24px}.intro{bottom:68px;left:24px}.intro h1{font-size:23px}.intro .eyebrow,.intro-ko{display:none}.scene-footer{bottom:12px;left:24px;right:24px}.interaction-hint{display:none}.footer-controls{margin-left:auto}.top-center{display:none}.footer-controls>span{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
.scene-ready .loader{pointer-events:none}
.entry-pending:not(.scene-ready) .loader{opacity:1;visibility:visible}



/* The room is the interface: no floating tips or automatic guide panels. */
.tv-button{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid #e1e6db70;border-radius:24px;background:#17201ee8;color:#f1f0e5;font-size:12px;letter-spacing:.3px;white-space:nowrap}.tv-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linejoin:round}.tv-button:hover{background:#2c3832}.tv-button[aria-pressed=true]{border-color:#a8c5ac;color:#d9ebd7}.tv-button[hidden]{display:none}
#factory-transfer{position:fixed;left:50%;bottom:max(36px,6svh);transform:translateX(-50%);z-index:10002;pointer-events:none;width:min(230px,55vw);text-align:center;color:#dcded8}#factory-transfer[hidden]{display:none}#factory-transfer>span{font-size:11px;font-weight:500;letter-spacing:3px}.factory-transfer-track{height:1px;background:#e4ebe324;margin-top:17px;overflow:hidden}.factory-transfer-track i{display:block;height:100%;background:#d5e1d3;transform:scaleX(0);transform-origin:left;transition:transform .2s linear}#factory-transfer small{display:block;margin-top:13px;font-size:11px;font-weight:400;color:#b5bcb5}.factory-transferring .topbar,.factory-transferring #computer-exit{visibility:hidden}
@media(max-width:700px){.tv-button{padding:0 12px;gap:6px;font-size:11px}.top-controls{gap:6px}.topbar{padding:15px 14px}.wordmark{gap:8px}.wordmark span{max-width:37px}}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.topbar{padding:22px 26px}.wordmark{font-size:27px;gap:11px;letter-spacing:-2px}.wordmark span{font-size:9px;letter-spacing:1.2px}.wordmark sup{display:none}.round-button{width:42px;height:42px;background:#10141638;border-color:#ffffff25;backdrop-filter:blur(8px)}.top-controls{gap:9px}.reset-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.scene-vignette{background:radial-gradient(ellipse at center,transparent 45%,#00000018)}
.menu-dialog #object-nav{margin:22px 50px 0;padding-top:20px;border-top:1px solid var(--line)}.menu-dialog #object-nav p{font-size:11px;color:#a3afaf;letter-spacing:1px}.menu-dialog #object-nav>div{display:flex;flex-wrap:wrap;gap:6px}.menu-dialog .object-control{width:auto;min-width:76px;display:inline-flex;padding:12px 14px;min-height:44px;font-size:13px;border:1px solid #ffffff20;border-radius:4px}.menu-dialog .object-control:hover{background:#ffffff0b}.menu-dialog #object-nav[hidden]{display:none}
@media(max-width:700px){.topbar{padding:17px}.wordmark{font-size:26px}.wordmark span{font-size:8px;max-width:45px}.menu-dialog #object-nav{margin:18px 25px 0}}

#navigation-fade{position:fixed;inset:0;background:#000;z-index:10000;opacity:0;visibility:hidden;pointer-events:none}.studio-navigating #navigation-fade{pointer-events:auto}.studio-navigating .topbar,.studio-navigating #computer-exit,.studio-navigating #notebook-pages{pointer-events:none}.quality-control{margin:10px 50px 0;display:flex;justify-content:space-between;align-items:center;font-size:13px}.quality-control select{font:inherit;color:inherit;background:#1b2424;border:1px solid var(--line);border-radius:4px;padding:10px 25px 10px 12px;min-height:44px}@media(max-width:700px){.quality-control{margin:10px 25px 0}}

#entry-splash{display:none;position:fixed;inset:0;z-index:10001;background:transparent;align-items:end;justify-items:center;padding-bottom:max(22px,4svh)}.entry-pending #entry-splash:not([hidden]){display:grid;cursor:pointer}#studio-enter{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-width:180px;min-height:90px;padding:16px 24px;color:#dededb;background:transparent;text-shadow:0 2px 12px #000;opacity:0;transition:opacity .6s}#studio-enter>span{font-size:12px;font-weight:500;letter-spacing:2.4px;margin-bottom:3px}#studio-enter strong{font-size:15px;font-weight:400;letter-spacing:.5px}#studio-enter small{font-size:12px;font-weight:400;color:#969696}#studio-enter:disabled{visibility:hidden;cursor:wait}.scene-ready #studio-enter:not(:disabled){opacity:.85}.entry-pending .topbar{visibility:hidden}
@media(max-width:480px){.topbar{padding:15px 14px}.top-controls{gap:6px}.wordmark span{display:none}.tv-button{padding:0 12px}}

/* The 3D viewport is not a keyboard target worth framing: Escape from the TV view returned focus here and drew a 2px gold frame around the whole screen. Buttons/links keep their outline. */
#scene canvas:focus-visible{outline:none}

/* Entry business card: shown only on the waiting screen, gone with it. */
.entry-card{position:absolute;left:max(28px,env(safe-area-inset-left));bottom:max(26px,4svh);width:256px;aspect-ratio:1.75;box-sizing:border-box;padding:18px 20px 17px 24px;display:flex;flex-direction:column;font-style:normal;color:#1c2124;background:linear-gradient(135deg,#fbf8f1 0%,#f1ece0 60%,#e9e2d3 100%);border-radius:7px;box-shadow:0 22px 46px #00000085,0 3px 8px #00000060,inset 0 1px 0 #ffffffb0;transform:rotate(-2deg);cursor:pointer;overflow:hidden;animation:entry-card-in .9s .25s cubic-bezier(.2,.8,.2,1) both}
.entry-card:before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:#e95436}
.entry-card:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(115deg,#7a6a4a08 0 1px,transparent 1px 3px);pointer-events:none}
.entry-card-mark{display:flex;align-items:center;gap:8px;font:800 22px/1 Manrope,Arial,sans-serif;letter-spacing:-1.6px;color:#1c2124}
.entry-card-mark small{font:500 7.5px/1.3 'DM Sans',Arial,sans-serif;letter-spacing:1.5px;max-width:44px;color:#4a4f50}
.entry-card-name{margin-top:auto;font:700 19px/1.15 Manrope,Arial,sans-serif;letter-spacing:-.3px}
.entry-card-mail{position:relative;z-index:1;align-self:flex-start;margin-top:6px;font:500 12.5px/1.3 'DM Sans',Arial,sans-serif;letter-spacing:.2px;color:#55595a;text-decoration:none;border-bottom:1px solid #55595a40;cursor:pointer;user-select:text}
.entry-card-mail:hover,.entry-card-mail:focus-visible{color:#e95436;border-bottom-color:#e95436}
@keyframes entry-card-in{from{opacity:0;transform:translateY(14px) rotate(-2deg)}to{opacity:1;transform:rotate(-2deg)}}
@media (max-width:640px){
  #entry-splash{padding-bottom:calc(max(20px,3svh) + 150px)}
  .entry-card{left:50%;bottom:max(20px,3svh);width:224px;padding:15px 17px 14px 21px;transform:translateX(-50%) rotate(-1.5deg);animation-name:entry-card-in-m}
  .entry-card-mark{font-size:19px}.entry-card-name{font-size:17px}.entry-card-mail{font-size:11.5px}
  @keyframes entry-card-in-m{from{opacity:0;transform:translateX(-50%) translateY(14px) rotate(-1.5deg)}to{opacity:1;transform:translateX(-50%) rotate(-1.5deg)}}
}

/* Touch walking stick: bottom-left, lifted above the factory's ← 작업실로 row. */
#touch-joystick{position:fixed;left:calc(18px + env(safe-area-inset-left));bottom:calc(26px + env(safe-area-inset-bottom));z-index:12;pointer-events:none}
#touch-joystick[hidden]{display:none}
#touch-joystick[data-room=factory]{bottom:calc(84px + env(safe-area-inset-bottom))}
#touch-joystick .joy-base{position:relative;width:118px;height:118px;border-radius:50%;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:radial-gradient(circle,#0d141880 0 55%,#0d141866 56% 100%);box-shadow:inset 0 0 0 1px #e8eadf33,0 6px 20px #0006;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:transform .15s}
#touch-joystick .joy-ring{position:absolute;inset:16px;border-radius:50%;border:1px dashed #e8eadf2e}
#touch-joystick .joy-knob{position:absolute;left:50%;top:50%;width:50px;height:50px;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 38% 32%,#ffffff 0,#e9e6dc 45%,#bdb8aa 100%);box-shadow:0 4px 12px #0008,inset 0 -2px 4px #0003}
#touch-joystick.active .joy-base{transform:scale(1.04);box-shadow:inset 0 0 0 1px #e95436aa,0 6px 24px #0008}
.entry-pending #touch-joystick,body.camera-view #touch-joystick{display:none}
