:root{--bg:#0a0a0b;--fg:#ededed;--mut:#8a8a90;--dim:#55555c;--line:#1f1f23;--ac:#ff5a1f;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font-family:"Pretendard Variable",Pretendard,system-ui,sans-serif;line-height:1.7;-webkit-font-smoothing:antialiased;word-break:keep-all;overflow-x:hidden}
::selection{background:var(--ac);color:#000}
a{color:inherit}.mono{font-family:var(--mono);letter-spacing:.02em}
.wrap{max-width:1360px;margin:0 auto;padding:0 48px}
.progress{position:fixed;top:0;left:0;right:0;height:2px;background:var(--ac);transform-origin:0 50%;transform:scaleX(0);z-index:50}
.nav{position:fixed;top:0;left:0;right:0;z-index:40;background:rgba(10,10,11,.72);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.navin{display:flex;align-items:center;height:64px;gap:40px}
.logo{text-decoration:none;font-size:13px;letter-spacing:.14em}.logo b{font-weight:700}.logo span{color:var(--dim);margin-left:8px;font-family:var(--mono);letter-spacing:0}
.links{margin-left:auto;display:flex;gap:32px}.links a{text-decoration:none;font-size:13px;color:var(--mut);transition:color .2s}.links a:hover{color:var(--fg)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:52px;padding:0 26px;border:1px solid var(--ac);background:var(--ac);color:#0a0a0b;font:600 15px/1 inherit;font-family:inherit;text-decoration:none;cursor:pointer;transition:background .25s,color .25s,transform .25s;border-radius:0}
.btn:hover{background:transparent;color:var(--ac)}.btn .arr{transition:transform .25s}.btn:hover .arr{transform:translateY(3px)}
.btn.ghost{background:transparent;border-color:#333;color:var(--fg);font-family:var(--mono);font-size:13px;font-weight:400}.btn.ghost:hover{border-color:var(--fg)}
.btn.sm{height:38px;padding:0 16px;font-size:13px}
.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;justify-content:flex-end;padding:140px 0 48px;overflow:hidden;border-bottom:1px solid var(--line)}
.topo{position:absolute;inset:0;width:100%;height:100%;color:#fff;will-change:transform}
.links-g path{fill:none;stroke:#3a3a40;stroke-width:1;stroke-dasharray:4 6;animation:dash 20s linear infinite}@keyframes dash{to{stroke-dashoffset:-400}}
.pk circle{fill:var(--ac)}
.nodes rect{fill:#0f0f11;stroke:#3a3a40}.nodes text{fill:#8a8a90;font:11px var(--mono);letter-spacing:.06em}
.nodes .hub rect{stroke:var(--ac)}.nodes .hub text{fill:var(--ac)}
.hero-in{position:relative}
.kicker{font-size:12px;color:var(--mut);text-transform:uppercase;display:flex;align-items:center;gap:10px;margin:0 0 28px}
.dot{width:7px;height:7px;background:var(--ac);display:inline-block;animation:blink 1.6s steps(1) infinite}@keyframes blink{50%{opacity:.2}}
h1{font-size:clamp(56px,11.2vw,184px);line-height:.9;letter-spacing:-.055em;font-weight:800;margin:0 0 56px}
h1 .line{display:block;overflow:hidden;animation:up 1.1s cubic-bezier(.2,.8,.2,1) both}h1 .line:nth-child(2){animation-delay:.08s}h1 .line:nth-child(3){animation-delay:.16s}
@keyframes up{from{transform:translateY(40%);opacity:0}}
h1 em{font-style:normal;color:var(--ac)}
.hero-foot{display:grid;grid-template-columns:minmax(0,1.1fr) auto;gap:48px;align-items:end;border-top:1px solid var(--line);padding-top:32px}
.lead{font-size:18px;color:#b9b9bf;max-width:620px;margin:0}
.cta{display:flex;gap:12px;flex-wrap:wrap}
.scroll{position:relative;font-size:11px;color:var(--dim);margin-top:40px}
.sec{border-bottom:1px solid var(--line);padding:140px 0}
.grid{display:grid;grid-template-columns:3fr 9fr;gap:48px}
.label .sticky{position:sticky;top:110px}.label span{font-size:12px;color:var(--ac)}.label h2{font-size:40px;letter-spacing:-.04em;line-height:1.05;margin:10px 0 8px;font-weight:700}.label p{margin:0;color:var(--dim);font-size:14px}
.nums{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.n{display:flex;flex-direction:column;align-items:flex-start;text-align:left;min-width:0;padding:40px 36px 36px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .3s}.n:hover{background:#111113}
.n b{font-size:clamp(80px,9vw,140px);font-weight:800;letter-spacing:-.04em;line-height:.9;font-variant-numeric:lining-nums proportional-nums}.n i{font-style:normal;font-size:clamp(36px,4vw,56px);font-weight:700;color:var(--ac);margin-left:4px}
.n .v{display:flex;align-items:baseline;margin-left:-.04em;white-space:nowrap}.n b,.n i{display:block}.n i{line-height:0;align-self:baseline}.n b.o1{margin-left:-.09em}.n span{display:block;margin-top:18px;line-height:1.45;color:var(--mut);font-size:15px}
.caps{display:grid;grid-template-columns:repeat(4,1fr);margin-top:72px;gap:32px}
.caps h3{font-size:15px;margin:0 0 10px;padding-top:16px;border-top:2px solid var(--fg);font-weight:700}.caps p{margin:0;color:var(--mut);font-size:14px}
.stack{margin:72px 0 0;font-size:12px;color:var(--dim);line-height:2.2}
.tl{list-style:none;margin:0;padding:0}
.tl>li{position:relative;padding:36px 0 36px 40px;border-top:1px solid var(--line)}
.tl>li::before{content:"";position:absolute;left:0;top:46px;width:9px;height:9px;border:1px solid var(--dim)}
.tl>li.now::before{background:var(--ac);border-color:var(--ac)}
.tl>li:hover::before{border-color:var(--ac)}
.tl .h{display:flex;justify-content:space-between;align-items:baseline;gap:24px}
.tl h3{font-size:28px;letter-spacing:-.03em;margin:0;font-weight:700}.tl time{font-size:12px;color:var(--mut);white-space:nowrap}
.tl .role{margin:4px 0 16px;color:var(--ac);font-size:14px}
.tl ul{margin:0;padding:0;list-style:none}.tl ul li{color:#b9b9bf;font-size:15.5px;padding-left:22px;position:relative;margin:6px 0}.tl ul li::before{content:"—";position:absolute;left:0;color:var(--dim)}
.tl .past{opacity:.55}.tl .past .role{color:var(--mut);margin-bottom:0}
.cases{display:grid;gap:24px}
.case{border:1px solid var(--line);padding:44px;background:linear-gradient(180deg,#0e0e10,#0a0a0b);transition:border-color .3s}
.case:hover{border-color:#3a3a40}.case header span{font-size:11px;color:var(--ac)}.case h3{font-size:clamp(26px,2.6vw,36px);letter-spacing:-.035em;margin:10px 0 32px;line-height:1.2}
.case dl{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin:0}.case dt{font-size:11px;color:var(--dim);text-transform:uppercase;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--line)}.case dd{margin:0;color:#b9b9bf;font-size:14.5px}.case dd b{color:var(--fg);font-size:16px}
.end{padding:160px 0 0;border:0}.big{font-size:clamp(44px,7vw,112px);line-height:1;letter-spacing:-.05em;font-weight:800;margin:24px 0 56px}
footer{display:flex;justify-content:space-between;margin-top:160px;padding-top:28px;padding-bottom:40px;border-top:1px solid var(--line);font-size:11px;color:var(--dim)}
dialog{border:1px solid #2a2a2f;background:#0e0e10;color:var(--fg);padding:0;width:min(520px,calc(100vw - 32px));border-radius:0}
dialog::backdrop{background:rgba(0,0,0,.7);backdrop-filter:blur(6px)}
dialog[open]{animation:pop .35s cubic-bezier(.2,.8,.2,1)}@keyframes pop{from{opacity:0;transform:translateY(16px)}}
#rf{padding:40px;position:relative}.x{position:absolute;right:16px;top:12px;background:none;border:0;color:var(--mut);font-size:26px;cursor:pointer}
#rf h3{font-size:28px;margin:6px 0 6px;letter-spacing:-.03em}#rf .sub{color:var(--mut);margin:0 0 28px;font-size:15px}#rf .kicker{margin:0}
#rf label{display:block;font-size:12px;color:var(--mut);margin-bottom:16px}#rf label em{color:var(--ac);font-style:normal}
#rf input{display:block;width:100%;margin-top:8px;height:48px;padding:0 14px;background:#0a0a0b;border:1px solid #2a2a2f;color:var(--fg);font:inherit;font-size:15px;outline:none;transition:border-color .2s}#rf input:focus{border-color:var(--ac)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hp{position:absolute!important;left:-9999px}
.msg{color:#ff6b6b;font-size:13px;min-height:18px;margin:4px 0 12px}.full{width:100%}.fine{font-size:12px;color:var(--dim);margin:14px 0 0}
.done-s{display:none}#rf.done .form-s{display:none}#rf.done .done-s{display:block}
.sp{display:none;width:14px;height:14px;border:2px solid rgba(0,0,0,.3);border-top-color:#000;border-radius:50%;animation:s .8s linear infinite}.load .sp{display:inline-block}@keyframes s{to{transform:rotate(360deg)}}
.rv{opacity:0;transform:translateY(32px);transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform .9s cubic-bezier(.2,.8,.2,1)}.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none}h1 .line{animation:none}}
@media(max-width:1000px){.caps{grid-template-columns:1fr 1fr}.case dl{grid-template-columns:1fr;gap:20px}}
@media(max-width:760px){.wrap{padding:0 20px}.links{display:none}.navin{justify-content:space-between}.logo span{display:none}
.hero{min-height:auto;padding:120px 0 32px}.topo{opacity:.45}h1{font-size:clamp(40px,13.4vw,80px);margin-bottom:36px}
.hero-foot{grid-template-columns:1fr;gap:28px}.lead{font-size:16px}.cta .btn{width:100%}
.sec{padding:88px 0}.grid{grid-template-columns:1fr;gap:28px}.label .sticky{position:static}.label h2{font-size:34px}
.nums{grid-template-columns:1fr 1fr}.n{padding:24px 20px 26px}.n b{font-size:56px}.n i{font-size:26px;margin-left:3px}.n span{font-size:13px;margin-top:12px}
.caps{grid-template-columns:1fr;gap:24px;margin-top:48px}.tl>li{padding:28px 0 28px 26px}.tl>li::before{top:38px}.tl .h{flex-direction:column;gap:2px}.tl h3{font-size:23px}
.case{padding:26px 22px}.end{padding-top:96px}.big{font-size:44px}footer{flex-direction:column;gap:6px;margin-top:96px}#rf{padding:28px 22px}.two{grid-template-columns:1fr}}
.hero-foot{position:relative;background:linear-gradient(90deg,var(--bg) 55%,rgba(10,10,11,.6))}
footer.wrap{margin-top:160px}
@media(max-width:760px){footer.wrap{margin-top:88px}}
footer.wrap{padding-top:28px;padding-bottom:40px}
/* round 4 */
h1{font-size:clamp(38px,6.2vw,100px);line-height:1.08;letter-spacing:-.045em}
.kicker{text-transform:none;font-size:14px;letter-spacing:0}
.logo{letter-spacing:0;font-size:15px}.logo span{font-family:inherit;font-size:13px;margin-left:10px}
.case dt{text-transform:none;font-size:12px;color:var(--ac);font-weight:600;letter-spacing:.04em}
.summary{margin-top:56px;max-width:860px}.summary p{color:#c4c4ca;font-size:16.5px;line-height:1.85;margin:0 0 18px}
.skills{display:grid;gap:0}
.sk{display:grid;grid-template-columns:200px 1fr;gap:24px;padding:24px 0;border-top:1px solid var(--line)}.sk:last-child{border-bottom:1px solid var(--line)}
.sk h3{margin:4px 0 0;font-size:15px;font-weight:600;color:var(--fg)}
.sk ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.sk li{font-size:13.5px;padding:6px 12px;border:1px solid #2a2a2f;background:#111113;color:#d6d6db;transition:border-color .2s,color .2s}.sk li:hover{border-color:var(--ac);color:#fff}
.tl h4{font-size:16px;font-weight:600;margin:22px 0 8px;color:var(--fg);display:flex;justify-content:space-between;gap:16px}.tl h4 time{font-size:11.5px;color:var(--dim);font-weight:400;white-space:nowrap;padding-top:3px}
.tl .role{margin-bottom:4px}.tl ul li{line-height:1.75}
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#141416;border:1px solid #2a2a2f;padding:14px 20px;z-index:60;transition:all .3s;min-width:260px;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}.toast.err{border-color:#ff6b6b}.toast.err .dlmsg{color:#ff8b8b}
.dlmsg{margin:0;font-size:14px}#ts:empty{display:none}#ts{margin-bottom:10px}.btn.load{opacity:.7;cursor:wait}
@media(max-width:760px){h1{font-size:clamp(30px,8.6vw,48px)}.logo span{display:none}.sk{grid-template-columns:1fr;gap:12px}.tl h4{flex-direction:column;gap:2px}.summary p{font-size:15px}}
