:root{
  --ink:hsl(220 26% 11%);--ink-2:hsl(218 14% 30%);--sub:hsl(216 10% 50%);
  --line:hsl(216 18% 91%);--gray:hsl(216 25% 96.5%);--gray-2:hsl(216 22% 93%);
  --blue:#1a72d6;--blue-2:#0a96e0;--blue-soft:hsl(212 90% 96%);
  --orange:#f08a2c;--orange-soft:#fff3e6;
  --navy:hsl(216 60% 10%);
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --ease:cubic-bezier(.22,.9,.24,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html.js .rv{opacity:0;transform:translateY(36px)}
body{font-family:'Pretendard Variable',Pretendard,'Noto Sans KR',sans-serif;color:var(--ink);background:#fff;-webkit-font-smoothing:antialiased;word-break:keep-all;overflow-x:hidden;letter-spacing:-.01em}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul,ol{list-style:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 28px}
.tnum{font-variant-numeric:tabular-nums}
.skip{position:absolute;left:-9999px}

/* header */
.hdr{position:fixed;inset:0 0 auto;z-index:100;background:rgba(255,255,255,.85);backdrop-filter:blur(20px) saturate(1.6);transition:box-shadow .3s}
.hdr.sh{box-shadow:0 1px 0 var(--line)}
.hdr .wrap{height:64px;display:flex;align-items:center;justify-content:space-between;max-width:1280px}
.hdr .logo{height:34px;width:auto}
.hdr nav{display:flex;gap:2px}
.hdr nav a{padding:8px 13px;border-radius:10px;font-size:15px;font-weight:500;color:var(--ink-2);transition:background .2s}
.hdr nav a:hover{background:var(--gray)}
@media(max-width:1000px){.hdr nav{display:none}}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:56px;padding:0 28px;border-radius:16px;font-size:17px;font-weight:600;transition:transform .18s cubic-bezier(.3,1.6,.5,1),background .2s}
.btn:active{transform:scale(.95)}
.btn-ink{background:var(--ink);color:#fff}.btn-ink:hover{background:#000}
.btn-gray{background:var(--gray);color:var(--ink)}.btn-gray:hover{background:var(--gray-2)}
.btn-blue{background:var(--blue);color:#fff}.btn-blue:hover{background:#1663bd}
.btn-sm{height:38px;padding:0 16px;font-size:14px;border-radius:10px}

.eyebrow{font-size:17px;font-weight:700;color:var(--blue);margin-bottom:14px}
.h2{font-size:clamp(34px,4vw,54px);line-height:1.25;font-weight:800;letter-spacing:-.04em}
.lead{font-size:clamp(17px,1.4vw,20px);line-height:1.7;color:var(--sub);margin-top:20px;font-weight:500}
section{position:relative}

/* ===== HERO: symbol assembly ===== */
.hero{height:280vh}
.hero-pin{position:sticky;top:0;height:100vh;overflow:hidden;display:grid;place-items:center}
.sym{position:absolute;left:50%;top:50%;width:min(46vh,420px);aspect-ratio:5/4;transform:translate(-50%,-50%);will-change:transform}
.sym img{position:absolute;inset:0;width:100%;height:100%;will-change:transform,opacity}
.hero-t{position:relative;z-index:2;text-align:center;pointer-events:none}
.hero-t .t1{font-size:clamp(44px,6.8vw,96px);line-height:1.12;font-weight:800;letter-spacing:-.05em}
.hero-t .t1 .ln{display:block;overflow:hidden}
.hero-t .t1 .ln>span{display:inline-block;transform:translateY(110%);animation:up 1.1s var(--ease) forwards}
.hero-t .t1 .ln:nth-child(2)>span{animation-delay:.12s}
.hero-t .t1 em{font-style:normal;color:var(--blue)}
.hero-t .kick{font-size:clamp(15px,1.3vw,18px);font-weight:700;color:var(--sub);margin-bottom:22px;opacity:0;animation:fi .9s .1s var(--ease) forwards}
.hero-t .sub{font-size:clamp(17px,1.5vw,21px);line-height:1.6;color:var(--sub);font-weight:500;margin-top:24px;opacity:0;animation:fi .9s .4s var(--ease) forwards}
@keyframes up{to{transform:none}}
@keyframes fi{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

.hero-name{position:absolute;left:0;right:0;bottom:12vh;text-align:center;z-index:2}
.eq{display:flex;align-items:baseline;justify-content:center;gap:clamp(10px,1.6vw,22px);font-size:clamp(26px,3.6vw,52px);font-weight:800;letter-spacing:-.04em}
.eq span{opacity:0;transform:translateY(30px);display:inline-block}
.eq .op{color:var(--sub);font-weight:400}
.eq .sw{color:var(--blue)}.eq .bl{color:var(--orange)}
.eq .res{background:linear-gradient(90deg,var(--blue),var(--blue-2) 45%,var(--orange));-webkit-background-clip:text;background-clip:text;color:transparent}
.eq-cap{margin-top:14px;font-size:clamp(15px,1.3vw,18px);color:var(--sub);font-weight:500;opacity:0}
.scroll-cue{position:absolute;left:50%;bottom:32px;transform:translateX(-50%);font-size:12px;font-weight:600;color:var(--sub);display:flex;flex-direction:column;align-items:center;gap:8px;letter-spacing:.1em}
.scroll-cue i{width:22px;height:34px;border:2px solid var(--line);border-radius:12px;position:relative}
.scroll-cue i::after{content:"";position:absolute;left:50%;top:6px;width:4px;height:7px;margin-left:-2px;border-radius:2px;background:var(--sub);animation:cue 1.6s infinite}
@keyframes cue{60%{transform:translateY(10px);opacity:0}100%{opacity:0}}

/* ===== statement ===== */
.state{height:220vh}
.state-pin{position:sticky;top:0;height:100vh;display:flex;align-items:center}
.state p{font-size:clamp(30px,4.2vw,58px);line-height:1.4;font-weight:800;letter-spacing:-.04em;max-width:1080px}
.state .w{opacity:.12;transition:opacity .25s,color .25s}
.state .w.on{opacity:1}
.state .w.hl.on{color:var(--blue)}

/* ===== values ===== */
.values{padding:140px 0;background:var(--gray)}
.vgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:64px}
@media(max-width:960px){.vgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.vgrid{grid-template-columns:1fr}}
.vc{background:#fff;border-radius:28px;padding:32px 28px 34px;min-height:300px;display:flex;flex-direction:column}
.vc .k{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--sub)}
.vc .shape{width:64px;height:64px;margin:26px 0 auto;position:relative}
.vc .shape i{position:absolute;inset:0;border-radius:18px}
.vc h3{font-size:24px;font-weight:800;letter-spacing:-.035em;margin-top:28px}
.vc p{font-size:15.5px;line-height:1.65;color:var(--sub);margin-top:10px}
/* simple geometric marks */
.s1 i{background:var(--blue-soft)}.s1 i::after{content:"";position:absolute;inset:18px;border-radius:50%;border:3px solid var(--blue)}
.s2 i{background:var(--orange-soft)}.s2 i::after{content:"";position:absolute;left:18px;right:18px;top:18px;bottom:18px;border-top:3px solid var(--orange);border-right:3px solid var(--orange);transform:rotate(45deg) translate(-3px,3px)}
.s3 i{background:var(--blue-soft)}.s3 i::before,.s3 i::after{content:"";position:absolute;width:20px;height:20px;border-radius:50%;background:var(--blue);top:22px}.s3 i::before{left:12px;opacity:.5}.s3 i::after{right:12px}
.s4 i{background:var(--orange-soft)}.s4 i::after{content:"";position:absolute;inset:18px;border-radius:6px;background:var(--orange);transform:rotate(45deg) scale(.75)}
.vc.rv.in .shape{animation:bob 4s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-6px)}}

/* ===== business (sticky list) ===== */
.biz{padding:160px 0 120px}
.biz-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;margin-top:72px}
@media(max-width:960px){.biz-grid{grid-template-columns:1fr}.biz-vis{display:none}}
.biz-vis{position:sticky;top:120px;height:min(560px,70vh);border-radius:36px;overflow:hidden;background:var(--gray)}
.bv{position:absolute;inset:0;opacity:0;transform:scale(.96);transition:opacity .6s var(--ease),transform .8s var(--ease);display:grid;place-items:center;padding:40px}
.bv.on{opacity:1;transform:none}
.bv .grp{position:absolute;left:32px;top:28px;font-size:14px;font-weight:700;color:var(--sub)}
.bv .num{position:absolute;right:32px;top:24px;font-family:var(--mono);font-size:14px;color:var(--sub)}
.biz-list{display:flex;flex-direction:column}
.bgroup{font-size:15px;font-weight:800;color:var(--sub);padding:0 0 8px;margin-top:40px}
.bgroup:first-child{margin-top:0}
.bi{padding:34px 0;border-top:1px solid var(--line);min-height:44vh;display:flex;flex-direction:column;justify-content:center;transition:opacity .4s}
.biz-list:not(.ready) .bi{min-height:auto}
.bi.dim{opacity:.28}
.bi .n{font-family:var(--mono);font-size:13px;color:var(--blue);font-weight:600}
.bi h3{font-size:clamp(26px,2.6vw,34px);font-weight:800;letter-spacing:-.04em;line-height:1.3;margin-top:8px}
.bi p{font-size:16.5px;line-height:1.7;color:var(--sub);margin-top:12px}
.bi ul{margin-top:16px;display:grid;gap:8px}
.bi li{font-size:15px;font-weight:600;color:var(--ink-2);display:flex;gap:10px;align-items:flex-start}
.bi li::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--blue);margin-top:9px}
.bi a.case{margin-top:18px;align-self:flex-start;font-size:15px;font-weight:700;color:var(--blue);display:inline-flex;gap:6px}
.bi a.case span{transition:transform .2s}.bi a.case:hover span{transform:translateX(4px)}

/* biz visuals (pure CSS) */
.vis-stream{width:100%;display:grid;gap:10px}
.vis-stream div{display:flex;align-items:center;gap:12px;background:#fff;border-radius:16px;padding:14px 18px;font-size:15px;font-weight:600;box-shadow:0 10px 30px -18px rgba(20,40,80,.3);animation:sIn 6s var(--ease) infinite both}
.vis-stream div:nth-child(2){animation-delay:.5s}.vis-stream div:nth-child(3){animation-delay:1s}.vis-stream div:nth-child(4){animation-delay:1.5s}.vis-stream div:nth-child(5){animation-delay:2s}
.vis-stream b{font-size:12px;padding:4px 8px;border-radius:8px;background:var(--blue-soft);color:var(--blue);font-weight:700}
.vis-stream em{margin-left:auto;font-style:normal;font-size:12px;color:var(--sub);font-weight:500}
@keyframes sIn{0%{opacity:0;transform:translateX(-30px)}10%,85%{opacity:1;transform:none}100%{opacity:0}}
.vis-bars{width:100%;height:60%;display:flex;align-items:flex-end;gap:7px}
.vis-bars i{flex:1;border-radius:7px 7px 2px 2px;background:#d6dee8;transform-origin:bottom;animation:grow 3.2s var(--ease) infinite alternate}
.vis-bars i.t{background:var(--blue)}
@keyframes grow{from{transform:scaleY(.15)}to{transform:scaleY(1)}}
.vis-ring{width:240px;height:240px;border-radius:50%;position:relative;background:conic-gradient(var(--blue) 0 62%,var(--orange) 62% 81%,#d6dee8 81%);animation:spin 14s linear infinite;mask:radial-gradient(circle,transparent 58%,#000 59%)}
.vis-ring-c{position:absolute;text-align:center;font-size:15px;font-weight:700;color:var(--sub)}
.vis-ring-c b{display:block;font-size:40px;color:var(--ink);letter-spacing:-.04em}
@keyframes spin{to{transform:rotate(360deg)}}
.vis-web{width:90%;border-radius:18px;background:#fff;box-shadow:0 30px 60px -30px rgba(20,40,80,.4);overflow:hidden}
.vis-web .tb{height:30px;background:var(--gray-2);display:flex;gap:6px;align-items:center;padding:0 12px}
.vis-web .tb i{width:9px;height:9px;border-radius:50%;background:#c9d1db}
.vis-web .bd{padding:18px;display:grid;grid-template-columns:1fr 2fr;gap:12px}
.vis-web .bd span{height:14px;border-radius:7px;background:var(--gray-2);animation:sh 2.4s ease-in-out infinite}
.vis-web .bd span.b{background:var(--blue-soft);height:60px;grid-column:span 2}
.vis-web .bd span:nth-child(odd){animation-delay:.4s}
@keyframes sh{50%{opacity:.5}}
.vis-phone{width:190px;height:380px;border-radius:34px;background:#fff;box-shadow:0 30px 60px -24px rgba(20,40,80,.45),inset 0 0 0 8px var(--ink);padding:26px 18px;display:flex;flex-direction:column;gap:10px;position:relative}
.vis-phone::before{content:"";position:absolute;left:50%;top:14px;width:60px;height:8px;margin-left:-30px;border-radius:4px;background:var(--ink)}
.vis-phone span{display:block;border-radius:12px;background:var(--gray);padding:10px;font-size:11px;font-weight:700;color:var(--ink-2);animation:push 4s var(--ease) infinite both}
.vis-phone span:nth-child(2){animation-delay:.6s}.vis-phone span:nth-child(3){animation-delay:1.2s}
.vis-phone span b{display:block;color:var(--blue);font-size:10px;margin-bottom:2px}
@keyframes push{0%{opacity:0;transform:translateY(-14px) scale(.95)}12%,80%{opacity:1;transform:none}100%{opacity:0}}
.vis-sys{display:grid;grid-template-columns:repeat(3,72px);gap:16px;position:relative}
.vis-sys i{width:72px;height:72px;border-radius:20px;background:#fff;box-shadow:0 16px 30px -16px rgba(20,40,80,.35);display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:800;color:var(--ink-2);animation:pulse 3s ease-in-out infinite}
.vis-sys i.c{background:var(--ink);color:#fff}
.vis-sys i:nth-child(2n){animation-delay:.5s}
@keyframes pulse{50%{transform:translateY(-6px)}}

/* ===== tech ===== */
.tech{padding:160px 0;background:var(--navy);color:#fff;overflow:hidden}
.tech .eyebrow{color:#7cc0ff}
.tech .lead{color:rgba(255,255,255,.6)}
.patent{display:grid;grid-template-columns:.8fr 1.2fr;gap:56px;align-items:center;margin-top:72px}
@media(max-width:900px){.patent{grid-template-columns:1fr}}
.pat-img{border-radius:20px;overflow:hidden;box-shadow:0 50px 100px -30px rgba(0,0,0,.7);transform-origin:50% 100%;will-change:transform}
.pat-img img{width:100%}
.pat-tag{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;background:rgba(124,192,255,.12);color:#7cc0ff;font-size:13px;font-weight:700}
.pat-tag::before{content:"";width:7px;height:7px;border-radius:50%;background:#5ef2b0}
.patent h3{font-size:clamp(28px,3vw,40px);font-weight:800;letter-spacing:-.04em;line-height:1.3;margin-top:16px}
.patent p{font-size:17px;line-height:1.75;color:rgba(255,255,255,.65);margin-top:16px}
.patent p b{color:#fff}
.pat-dl{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.08);border-radius:18px;overflow:hidden;margin-top:28px}
.pat-dl div{background:var(--navy);padding:16px 18px}
.pat-dl dt{font-size:12px;color:rgba(255,255,255,.5);font-weight:600}
.pat-dl dd{font-size:16px;font-weight:700;margin-top:4px}
.pat-verify{display:flex;gap:16px;margin-top:20px;font-size:14px;font-weight:600}
.pat-verify a{color:#7cc0ff}

.progs{margin-top:120px}
.progs-h{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap}
.progs-h h3{font-size:clamp(26px,2.8vw,38px);font-weight:800;letter-spacing:-.04em;line-height:1.3}
.progs-h p{font-size:15px;color:rgba(255,255,255,.55)}
.prog-row{display:flex;gap:16px;margin-top:40px;will-change:transform}
.pg{flex:none;width:280px;border-radius:22px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);padding:14px;transition:background .3s}
.pg:hover{background:rgba(255,255,255,.09)}
.pg .im{aspect-ratio:659/922;border-radius:12px;overflow:hidden;background:#fff}
.pg .im img{width:100%;height:100%;object-fit:cover}
.pg .c{font-family:var(--mono);font-size:12px;color:#7cc0ff;margin-top:14px}
.pg h4{font-size:15.5px;font-weight:700;line-height:1.45;margin-top:6px;letter-spacing:-.02em}
.pg .tg{display:flex;gap:4px;flex-wrap:wrap;margin-top:10px}
.pg .tg span{font-size:11px;padding:3px 8px;border-radius:6px;background:rgba(255,255,255,.07);color:rgba(255,255,255,.6)}
.pend{margin-top:56px;border-radius:22px;border:1px dashed rgba(255,255,255,.18);padding:24px 28px;display:flex;justify-content:space-between;gap:24px;align-items:center;flex-wrap:wrap}
.pend b{font-size:18px}
.pend span{font-size:14px;color:rgba(255,255,255,.55)}
.pend .st{font-size:13px;font-weight:700;padding:6px 12px;border-radius:999px;background:rgba(240,138,44,.15);color:#ffb26b}

/* ===== history ===== */
.hist{padding:160px 0}
.tl{position:relative;margin-top:80px;padding-left:140px}
@media(max-width:700px){.tl{padding-left:40px}}
.tl-line{position:absolute;left:100px;top:0;bottom:0;width:2px;background:var(--gray-2)}
@media(max-width:700px){.tl-line{left:10px}}
.tl-line i{position:absolute;left:0;top:0;width:100%;height:100%;background:linear-gradient(var(--blue),var(--orange));transform-origin:top;transform:scaleY(0)}
.ti{position:relative;padding:0 0 64px}
.ti .y{position:absolute;left:-140px;top:-6px;width:80px;text-align:right;font-size:26px;font-weight:800;letter-spacing:-.04em;color:var(--line);transition:color .4s}
@media(max-width:700px){.ti .y{position:static;text-align:left;width:auto;display:block;margin-bottom:6px}}
.ti::before{content:"";position:absolute;left:-46px;top:6px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--gray-2);transition:all .4s}
@media(max-width:700px){.ti::before{left:-36px}}
.ti.on .y{color:var(--ink)}
.ti.on::before{border-color:var(--blue);background:var(--blue);box-shadow:0 0 0 6px var(--blue-soft)}
.ti h3{font-size:22px;font-weight:800;letter-spacing:-.03em}
.ti p{font-size:16px;line-height:1.7;color:var(--sub);margin-top:6px;max-width:680px}
.ti.now .y{color:var(--orange)}

/* ===== services ===== */
.svc{padding:150px 0;background:var(--gray)}
.svc-grid{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:14px;margin-top:64px}
@media(max-width:960px){.svc-grid{grid-template-columns:1fr}}
.sv{border-radius:28px;background:#fff;padding:32px;min-height:340px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.sv .t{font-size:14px;font-weight:700;color:var(--sub)}
.sv h3{font-size:30px;font-weight:800;letter-spacing:-.04em;margin-top:6px}
.sv p{font-size:15.5px;line-height:1.65;color:var(--sub);margin-top:10px}
.sv .go{margin-top:auto;font-size:15px;font-weight:700;color:var(--blue);display:inline-flex;gap:6px}
.sv .go span{transition:transform .2s}.sv:hover .go span{transform:translateX(4px)}
.sv .since{position:absolute;right:24px;top:24px;font-family:var(--mono);font-size:13px;color:var(--sub)}
.sv.dark{background:var(--ink);color:#fff}.sv.dark p,.sv.dark .t,.sv.dark .since{color:rgba(255,255,255,.55)}.sv.dark .go{color:#7cc0ff}

/* ===== numbers band ===== */
.band{padding:120px 0;border-bottom:1px solid var(--line)}
.band-grid{display:grid;grid-template-columns:repeat(4,1fr)}
@media(max-width:800px){.band-grid{grid-template-columns:repeat(2,1fr);row-gap:40px}}
.bd-i{padding-right:20px}
.bd-i+.bd-i{border-left:1px solid var(--line);padding-left:28px}
@media(max-width:800px){.bd-i:nth-child(3){border-left:0;padding-left:0}}
.bd-i .v{font-size:clamp(38px,4.2vw,60px);font-weight:800;letter-spacing:-.05em;line-height:1}
.bd-i .v small{font-size:.42em;margin-left:4px;color:var(--ink-2)}
.bd-i .l{font-size:15px;color:var(--sub);font-weight:600;margin-top:12px}

/* ===== awards ===== */
.awards{padding:150px 0}
.aw-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:64px;align-items:center}
@media(max-width:900px){.aw-grid{grid-template-columns:1fr}}
.aw-stack{position:relative;height:520px}
.aw-stack figure{position:absolute;top:0;width:58%;border-radius:16px;overflow:hidden;box-shadow:0 30px 60px -24px rgba(20,40,80,.35);background:#fff;transition:transform .9s var(--ease)}
.aw-stack figure img{width:100%}
.aw-stack figure:nth-child(1){left:0;transform:rotate(-8deg) translate(20%,10%)}
.aw-stack figure:nth-child(2){left:21%;transform:rotate(0) translateY(10%);z-index:2}
.aw-stack figure:nth-child(3){left:42%;transform:rotate(8deg) translate(-20%,10%);z-index:3}
.aw-stack.in figure:nth-child(1){transform:rotate(-6deg) translate(0,6%)}
.aw-stack.in figure:nth-child(2){transform:rotate(0) translateY(0)}
.aw-stack.in figure:nth-child(3){transform:rotate(6deg) translate(0,6%)}
.aw-stack figcaption{position:absolute;left:10px;bottom:10px;background:var(--ink);color:#fff;font-size:12px;font-weight:700;padding:5px 10px;border-radius:8px}
.aw-dl{margin-top:28px;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.aw-dl div{background:var(--gray);border-radius:16px;padding:16px 18px}
.aw-dl dt{font-size:13px;color:var(--sub);font-weight:600}
.aw-dl dd{font-size:17px;font-weight:700;margin-top:3px}
.note{font-size:13px;color:var(--sub);margin-top:18px;line-height:1.6}

/* ===== news ===== */
.news{padding:150px 0;background:var(--gray)}
.news-h{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}
.nl{margin-top:56px;background:#fff;border-radius:28px;padding:8px 32px}
.nl li a{display:grid;grid-template-columns:110px 1fr auto;gap:24px;align-items:center;padding:28px 0;border-top:1px solid var(--line)}
.nl li:first-child a{border-top:0}
@media(max-width:700px){.nl li a{grid-template-columns:1fr}}
.nl .d{font-family:var(--mono);font-size:13px;color:var(--sub)}
.nl .c{display:inline-block;font-size:12px;font-weight:700;padding:3px 8px;border-radius:6px;background:var(--blue-soft);color:var(--blue);margin-bottom:8px}
.nl .c.o{background:var(--orange-soft);color:#c76a14}
.nl h3{font-size:19px;font-weight:700;letter-spacing:-.025em;line-height:1.45;transition:color .2s}
.nl a:hover h3{color:var(--blue)}
.nl .ar{font-size:20px;color:var(--sub);transition:transform .2s}
.nl a:hover .ar{transform:translateX(4px);color:var(--blue)}

/* ===== contact ===== */
.contact{padding:170px 0 150px;text-align:center;overflow:hidden}
.contact h2{font-size:clamp(38px,5.4vw,76px);line-height:1.2;font-weight:800;letter-spacing:-.05em}
.contact .lead{max-width:640px;margin-left:auto;margin-right:auto}
.contact .ctas{display:flex;gap:10px;justify-content:center;margin-top:40px;flex-wrap:wrap}
.cinfo{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:900px;margin:56px auto 0;text-align:left}
@media(max-width:800px){.cinfo{grid-template-columns:1fr}}
.cinfo a,.cinfo div{background:var(--gray);border-radius:20px;padding:22px 24px;display:block;transition:background .2s}
.cinfo a:hover{background:var(--gray-2)}
.cinfo small{font-size:13px;color:var(--sub);font-weight:600}
.cinfo b{display:block;font-size:20px;letter-spacing:-.03em;margin-top:4px}
.cinfo span{display:block;font-size:13px;color:var(--sub);margin-top:2px}
.contact .bigsym{position:absolute;left:50%;top:50%;width:900px;transform:translate(-50%,-50%);opacity:.05;pointer-events:none;will-change:transform}

footer{padding:56px 0 64px;font-size:13px;color:var(--sub);line-height:1.8;border-top:1px solid var(--line)}
footer .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
footer img{height:30px;width:auto;margin-bottom:12px;opacity:.85}
footer address{font-style:normal}
footer .fl{display:flex;gap:16px;flex-wrap:wrap;margin-top:6px}
footer .fl a:hover{color:var(--ink)}

/* reveal */
.rv{transition:opacity .9s var(--ease),transform .9s var(--ease)}
html.js .rv.in{opacity:1;transform:none}
.dl1{transition-delay:.1s}.dl2{transition-delay:.2s}.dl3{transition-delay:.3s}

@media (prefers-reduced-motion:reduce){html:not(.motion-preview-on) *{animation:none!important;transition:none!important}html:not(.motion-preview-on).js .rv{opacity:1;transform:none}html:not(.motion-preview-on) .hero-t .t1 .ln>span{transform:none}html:not(.motion-preview-on) .hero-t .kick,html:not(.motion-preview-on) .hero-t .sub{opacity:1}}
