:root{--line:hsla(60,7%,95%,.12);--line2:hsla(60,7%,95%,.3);--line-soft:hsla(60,7%,95%,.08);--stroke-ghost:hsla(60,7%,95%,.16);--card:rgba(13,13,20,.55);--neon-bd:rgba(198,255,74,.38);--bg:#08080c;--fg:#f2f2f0;--dim:#8a8a95;--neon:#c6ff4a;--neon-dim:rgba(198,255,74,.12);--violet:#8b5cf6}*{margin:0;padding:0;box-sizing:border-box}html{background:var(--bg)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{background:var(--bg);color:var(--fg);font-family:Pretendard Variable,Pretendard,sans-serif;overflow-x:hidden;-webkit-font-smoothing:antialiased}a,body,button{cursor:none}@media (pointer:coarse){a,body,button{cursor:auto}}::selection{background:var(--neon);color:var(--bg)}.en{font-family:Space Grotesk,Pretendard Variable,sans-serif}#cursor{position:fixed;z-index:200;width:36px;height:36px;border:1px solid hsla(60,7%,95%,.5);border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);transition:width .3s,height .3s,border-color .3s,border-width .3s;mix-blend-mode:difference}#cursor.hot{width:64px;height:64px;border-color:var(--neon);border-width:2.5px}#cursorDot{position:fixed;z-index:200;width:5px;height:5px;background:var(--neon);border-radius:50%;pointer-events:none;transform:translate(-50%,-50%)}@media (pointer:coarse){#cursor,#cursorDot{display:none}}#loader{position:fixed;inset:0;z-index:100;background:var(--bg);display:flex;flex-direction:column;gap:20px;align-items:center;justify-content:center;transition:opacity 1s ease,visibility 1s}#loader.done{opacity:0;visibility:hidden}#loader .drop{width:10px;height:10px;border-radius:50%;background:var(--neon);animation:dropIn 1.4s ease-in-out infinite}@keyframes dropIn{0%{transform:translateY(-40px) scale(.6);opacity:0}45%{transform:translateY(0) scale(1);opacity:1}60%{transform:scale(2.4);opacity:.35}to{transform:scale(4);opacity:0}}#loader .logo-draw{width:min(400px,62vw);height:auto;overflow:visible}#loader .logo-draw path{stroke:var(--fg);stroke-width:.7;fill:var(--fg);fill-opacity:0}#gl{position:fixed;inset:0;z-index:0;width:100vw;height:100vh}nav{position:fixed;top:0;left:0;right:0;z-index:50;justify-content:space-between;padding:28px clamp(20px,4vw,56px);mix-blend-mode:difference}nav,nav .logo{display:flex;align-items:center}nav .logo{text-decoration:none}nav .logo img{height:22px;width:auto;display:block}html[data-theme=light] nav .logo img{filter:invert(1)}nav .menu{display:flex;gap:6px;font-size:13px;letter-spacing:.08em}nav .menu a{color:inherit;text-decoration:none;opacity:.7;transition:opacity .3s;padding:12px 14px}nav .menu a:hover{opacity:1}#hud{position:fixed;bottom:0;left:0;right:0;z-index:50;display:flex;justify-content:space-between;align-items:flex-end;padding:24px clamp(20px,4vw,56px);pointer-events:none;mix-blend-mode:difference;font-family:Space Grotesk;font-size:11px;letter-spacing:.22em;color:var(--dim)}#hud .prog b{color:var(--fg);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:760px){#hud .geo,nav .menu{display:none}}main{position:relative;z-index:1;pointer-events:none}main .project,main a,main button,main form,main input,main textarea,nav{pointer-events:auto}section{position:relative}#hero{height:100vh;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;text-align:center;padding-bottom:13vh}#hero h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}#hero .kicker{font-size:clamp(11px,1.2vw,13px);letter-spacing:.45em;color:var(--neon);text-transform:uppercase;margin-bottom:22px}#hero .sub{font-size:clamp(14px,1.6vw,18px);font-weight:300;color:var(--dim);line-height:1.8}#hero .sub strong{color:var(--fg);font-weight:500}#hero .hint{margin-top:26px;font-size:11px;letter-spacing:.3em;color:var(--dim)}#hero .hint b{color:var(--neon);font-weight:500}#hero .edge{position:absolute;top:50%;font-family:Space Grotesk;font-size:10px;letter-spacing:.3em;color:hsla(240,5%,56%,.5);writing-mode:vertical-rl}#hero .edge.l{left:clamp(16px,3vw,44px)}#hero .edge.r{right:clamp(16px,3vw,44px)}#statement{padding:10vh 6vw 34vh}#statement .num{font-family:Space Grotesk;font-size:12px;letter-spacing:.4em;color:var(--neon);margin-bottom:6vh}#statement .line{font-size:clamp(38px,7.2vw,104px);font-weight:700;line-height:1.18;letter-spacing:-.03em;overflow:hidden}#statement .line .word{display:inline-block;will-change:transform}#statement .line .accent{color:var(--neon);font-family:Space Grotesk;font-style:italic;font-weight:500}#statement .caption{margin-top:8vh;max-width:520px;color:var(--dim);font-weight:300;font-size:clamp(14px,1.5vw,17px);line-height:1.9;border-left:1px solid var(--neon-bd);padding-left:24px}#marquee{padding:8vh 0;overflow:hidden;white-space:nowrap}#marquee .track{display:inline-block;animation:slide 26s linear infinite}#marquee .row2 .track{animation:slide 34s linear infinite reverse}#marquee .row2{margin-top:1.2vh;opacity:.55}#marquee span{font-family:Space Grotesk;font-size:clamp(40px,6vw,88px);font-weight:600;margin-right:6vw;color:transparent;-webkit-text-stroke:1px var(--line2)}#marquee span.fill{color:var(--neon);-webkit-text-stroke:0}#marquee span.vio{color:var(--violet);-webkit-text-stroke:0;opacity:.85}@keyframes slide{to{transform:translateX(-50%)}}#work{height:100vh;padding:10vh 6vw 5vh;display:flex;flex-direction:column}#work .sec-label{font-size:12px;letter-spacing:.4em;color:var(--neon);margin-bottom:4vh;text-transform:uppercase;display:flex;align-items:center;gap:18px}#work .sec-label:after{content:"";flex:1 1;height:1px;background:linear-gradient(90deg,var(--neon-bd),transparent)}#work .stage{position:relative;flex:1 1;min-height:0}.project{position:absolute;inset:0;display:grid;grid-template-columns:1fr minmax(280px,42%);grid-gap:6vw;gap:6vw;align-items:center;perspective:800px;visibility:hidden}.project .info,.project .visual{will-change:transform,opacity}#work .stage-hud{margin-top:3vh;display:flex;align-items:center;gap:14px;font-family:Space Grotesk;font-size:12px;letter-spacing:.3em;color:var(--dim)}#work .stage-hud #workIdx{color:var(--neon)}#work .stage-hud .bar{flex:1 1;height:1px;background:var(--line);position:relative}#work .stage-hud .bar b{position:absolute;left:0;top:-.5px;height:2px;width:0;background:var(--neon);display:block}#work.flow{height:auto;padding:14vh 6vw 8vh}#work.flow .sec-label{margin-bottom:10vh}#work.flow .project{position:relative;inset:auto;visibility:visible;border-top:1px solid var(--line);padding:8vh 0}#work.flow .project:last-of-type{border-bottom:1px solid var(--line)}#work.flow .stage-hud{display:none}.project .idx{font-family:Space Grotesk;color:var(--dim);font-size:13px;letter-spacing:.2em;margin-bottom:18px}.project h3{font-size:clamp(30px,4.4vw,60px);font-weight:700;letter-spacing:-.02em;line-height:1.15;transition:color .3s}.project:hover h3{color:var(--neon)}.project h3 .en{color:var(--dim);font-weight:400;display:block;font-size:.45em;letter-spacing:.1em;margin-top:10px}.project p{margin-top:22px;color:var(--dim);font-weight:300;line-height:1.85;max-width:440px}.project .tags{margin-top:26px;display:flex;gap:10px;flex-wrap:wrap}.project .tags i{font-style:normal;font-size:11px;letter-spacing:.12em;border:1px solid var(--neon-bd);color:var(--neon);padding:6px 14px;border-radius:100px}.project .visual{aspect-ratio:4/3;border-radius:8px;position:relative;overflow:hidden;background:var(--card);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line-soft);transition:border-color .4s}.project:hover .visual{border-color:var(--neon-bd)}.project .visual:before{content:"";position:absolute;inset:0;background:radial-gradient(600px circle at var(--mx,50%) var(--my,50%),var(--neon-dim),transparent 45%)}.project .visual .glow{position:absolute;inset:-18%;background:radial-gradient(58% 58% at 50% 44%,var(--neon-dim),transparent 72%)}.project .visual .plate{position:absolute;inset:14px;border:1px solid var(--line-soft);border-radius:6px;background:linear-gradient(160deg,hsla(60,7%,95%,.045),transparent 55%)}.project .visual .ghost{position:absolute;right:20px;bottom:6px;font-family:Space Grotesk;font-style:normal;font-size:120px;font-weight:700;color:transparent;-webkit-text-stroke:1px var(--stroke-ghost)}.project .visual .sheen2{background:linear-gradient(80deg,transparent,hsla(60,7%,95%,.09),transparent);transform:rotate(12deg) translateX(-130%)}.project .visual .sheen,.project .visual .sheen2{position:absolute;inset:-60% auto auto -60%;width:60%;height:220%}.project .visual .sheen{background:linear-gradient(80deg,transparent,hsla(60,7%,95%,.06),transparent);transform:rotate(12deg) translateX(-120%);transition:transform 1s ease}.project:hover .visual .sheen{transform:rotate(12deg) translateX(420%)}.project .arrow{position:absolute;top:2vh;right:0;font-family:Space Grotesk;font-size:22px;color:var(--dim);transition:color .3s,transform .4s}#work.flow .project .arrow{top:8vh}.project:hover .arrow{color:var(--neon);transform:translate(6px,-6px)}#contact{min-height:95vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:10vh 6vw}#contact .small{font-size:13px;letter-spacing:.35em;color:var(--dim);margin-bottom:5vh;text-transform:uppercase}#contact a.big{font-family:Space Grotesk;text-decoration:none;font-size:clamp(56px,11vw,150px);font-weight:600;letter-spacing:-.02em;color:var(--fg);line-height:1;position:relative;transition:color .4s;display:inline-block;will-change:transform}#contact a.big:hover{color:var(--neon)}#contact a.big:after{content:"";position:absolute;left:0;bottom:-8px;height:2px;width:100%;background:var(--neon);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.7,0,.2,1)}#contact a.big:hover:after{transform:scaleX(1)}#contact .mail{margin-top:6vh;font-size:13px;letter-spacing:.15em;color:var(--dim)}footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:32px clamp(20px,4vw,56px) 76px;font-size:12px;color:var(--dim);letter-spacing:.08em}@media (max-width:760px){.project{grid-template-columns:1fr}.project .visual{order:-1}}@media (prefers-reduced-motion:reduce){#marquee .track{animation:none}}.contact-form{margin-top:6vh;width:min(560px,88vw);flex-direction:column;text-align:left}.contact-form,.contact-form .row{display:flex;gap:14px}.contact-form .row input{flex:1 1;min-width:0}.contact-form input,.contact-form textarea{background:var(--card);border:1px solid var(--line);border-radius:8px;color:var(--fg);font-family:inherit;font-size:15px;font-weight:300;padding:16px 18px;outline:none;transition:border-color .3s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);resize:vertical}.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--dim)}.contact-form input:focus,.contact-form textarea:focus{border-color:rgba(198,255,74,.55)}.contact-form button{align-self:flex-end;background:var(--neon);color:var(--bg);border:0;border-radius:100px;font-size:13px;font-weight:600;letter-spacing:.15em;padding:14px 34px;transition:transform .3s,opacity .3s}.contact-form button:hover{transform:translateY(-2px)}.contact-form button:disabled{opacity:.5}.form-error{color:#ff7a7a;font-size:13px}.form-done{margin-top:6vh;text-align:center;display:flex;flex-direction:column;gap:14px}.form-done p{color:var(--dim);font-weight:300}.contact-form .field{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:6px}.contact-form input.invalid,.contact-form textarea.invalid{border-color:hsla(0,100%,74%,.7)}.field-error{color:#ff7a7a;font-size:12px;padding-left:4px}html[data-theme=light]{--bg:#f5f4f0;--fg:#16161c;--dim:#6f6f78;--neon:#65a30d;--neon-dim:rgba(101,163,13,.12);--violet:#7c3aed;--line:rgba(22,22,28,.16);--line2:rgba(22,22,28,.38);--line-soft:rgba(22,22,28,.1);--stroke-ghost:rgba(22,22,28,.14);--card:hsla(0,0%,100%,.6);--neon-bd:rgba(101,163,13,.5)}html[data-theme=light] #hud,html[data-theme=light] nav{mix-blend-mode:normal}html[data-theme=light] #cursor{mix-blend-mode:normal;border-color:rgba(22,22,28,.55)}.navr{gap:24px}.navr,.tbtn{display:flex;align-items:center}.tbtn{width:34px;height:34px;border-radius:50%;border:1px solid;background:none;color:inherit;font-size:15px;line-height:1;justify-content:center;opacity:.75;transition:opacity .3s,transform .4s}.tbtn:hover{opacity:1;transform:rotate(180deg)}