/* AUDENIQ 브랜드 리소스 센터 — 값은 web/studio/app/src/styles/tokens.css와 같은 기준 */
@font-face{font-family:"Audeniq Sans Brand";src:url("fonts/AudeniqSans-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Audeniq Sans Brand";src:url("fonts/AudeniqSans-SemiBold.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Audeniq Sans Brand";src:url("fonts/AudeniqSans-Bold.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Audeniq Sans Brand";src:url("fonts/AudeniqSans-ExtraBold.woff2") format("woff2");font-weight:800;font-display:swap}
:root{
  --font:"Audeniq Sans Brand","Audeniq Sans",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  --blue:#3B63F3;--blue-600:#2C56E0;--blue-700:#2F55D4;--blue-50:#F5F8FF;--blue-100:#EEF3FF;--violet:#7A5AF8;
  --ink:#171B29;--night:#0F1424;--red:#F04452;
  --r-sm:11px;--r-md:16px;--r-lg:22px;--r-xl:28px;--r-2xl:40px;
  --enter:cubic-bezier(.32,.72,0,1);--exit:cubic-bezier(.4,0,1,1);--press:cubic-bezier(.2,.7,.3,1);
  --pad:clamp(20px,4vw,56px);--max:1120px;
}
/* 면 테마 — 같은 부품이 놓인 면에 맞춰 바뀐다 */
.t-ink{--bg:var(--night);--fg:#fff;--sub:#C2C9D6;--mute:#9AA3B2;--card:#171B29;--card2:#1F2536;--line:#2A3142;--accent:#9DB2FF}
.t-light{--bg:var(--blue-50);--fg:var(--ink);--sub:#4D5970;--mute:#5D687E;--card:#fff;--card2:#EEF3FF;--line:#E4EAF4;--accent:var(--blue)}
.t-white{--bg:#fff;--fg:var(--ink);--sub:#4D5970;--mute:#5D687E;--card:var(--blue-50);--card2:#EEF3FF;--line:#E8EDF5;--accent:var(--blue)}
.t-blue{--bg:var(--blue);--fg:#fff;--sub:#fff;--mute:#F5F8FF;--card:rgba(255,255,255,.12);--card2:rgba(255,255,255,.18);--line:rgba(255,255,255,.3);--accent:#fff}
:is(.t-ink,.t-light,.t-white,.t-blue){background:var(--bg);color:var(--fg)}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--night);color:#fff;font:400 16px/1.65 var(--font);word-break:keep-all;overflow-wrap:anywhere;-webkit-font-smoothing:antialiased;overflow-x:clip}
img{display:block;max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit}
main:focus{outline:0}
:focus-visible{outline:3px solid #5B7FF6;outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:#fff;color:var(--ink);padding:10px 14px;border-radius:12px;font-weight:700;text-decoration:none}
.skip:focus{top:12px}
.ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.wrap{width:min(var(--max),100%);margin:0 auto;padding:0 var(--pad)}

/* ---------- 버튼 ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;height:56px;padding:0 24px;border-radius:18px;font-weight:700;font-size:16px;text-decoration:none;border:0;cursor:pointer;white-space:nowrap;transition:background-color .2s,color .2s,transform .16s var(--press)}
.btn small{font-weight:600;font-size:13px;opacity:1}
.btn-white small{color:#4D5970}
.btn:is(:active,.is-pressed){transform:scale(.98);transition-duration:.04s}
.btn-sm{height:40px;padding:0 16px;border-radius:13px;font-size:14px}
.btn-white{background:#fff;color:var(--blue-700)}
.btn-white:hover{background:var(--blue-100)}
.btn-glass{background:rgba(15,20,36,.22);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}
.btn-glass:hover{background:rgba(15,20,36,.32)}
.btn-line{background:var(--card2);color:var(--fg)}

/* ---------- 머리 ---------- */
.top{position:fixed;inset:0 0 auto;z-index:50;height:72px;display:flex;align-items:center;gap:24px;padding:0 var(--pad);color:#fff;transition:background-color .28s,box-shadow .28s}
.top.is-solid{background:rgba(15,20,36,.84);backdrop-filter:saturate(1.4) blur(16px);-webkit-backdrop-filter:saturate(1.4) blur(16px)}
.top-brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex:none}
.top-brand img{width:120px;height:auto}
.top-brand span{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:9px;background:rgba(255,255,255,.16);font-size:11px;font-weight:800;letter-spacing:.06em}
.top-nav{display:flex;gap:2px;margin-left:auto}
.top-nav a{padding:8px 11px;border-radius:12px;font-size:14px;font-weight:600;text-decoration:none;color:rgba(255,255,255,.78);transition:background-color .2s,color .2s}
.top-nav a:hover{background:rgba(255,255,255,.1);color:#fff}
.top-nav a.is-on{color:#fff;background:rgba(255,255,255,.14)}
.progress{position:absolute;left:0;bottom:0;height:2px;width:100%;background:linear-gradient(90deg,var(--blue),var(--violet));transform-origin:0 50%;transform:scaleX(var(--p,0));opacity:0;transition:opacity .28s}
.top.is-solid .progress{opacity:1}

/* ---------- 첫 화면 ---------- */
.hero{position:relative;overflow:hidden;min-height:100vh;min-height:100svh;display:grid;place-items:center;padding:120px var(--pad) 120px}
.hero-in{position:relative;z-index:1;width:min(1000px,100%);text-align:center}
.eyebrow{display:inline-flex;margin:0 0 36px;padding:7px 15px;border-radius:999px;background:rgba(15,20,36,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.28);font-size:14px;font-weight:700}
.hero-wm{margin:0 auto;width:min(920px,100%)}
.hero-wm svg,.il-wm svg,.foot-wm svg{display:block;width:100%;height:auto;overflow:visible}
.hero-lead{margin:44px auto 0;font-size:clamp(18px,2vw,24px);font-weight:600;color:#fff}
.hero-lead b{color:#fff;font-weight:800}
.hero-cta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:36px}
.scroll-cue{position:absolute;left:50%;bottom:32px;width:28px;height:44px;margin-left:-14px;border-radius:14px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.5)}
.scroll-cue i{position:absolute;left:50%;top:9px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:#fff;animation:cue 1.8s var(--enter) infinite}
@keyframes cue{0%{transform:translateY(0);opacity:1}70%{transform:translateY(14px);opacity:0}100%{opacity:0}}
/* 시그널 = Q 꼬리: 획 폭 40 : 높이 65, 정확히 45° (가로 이동 = 높이) */
.sig{--a:calc(var(--h) * .615);display:block;height:var(--h);width:calc(var(--a) + var(--h));clip-path:polygon(0 0,var(--a) 0,100% 100%,calc(100% - var(--a)) 100%)}
.hero-field{position:absolute;inset:0;pointer-events:none}
.hero-field .sig{position:absolute;left:var(--x);top:var(--y);background:rgba(255,255,255,.1);animation:drift 22s linear infinite;animation-delay:var(--d)}
.hero-field .sig.is-signal{background:linear-gradient(135deg,#9DB2FF,var(--violet));opacity:.9}
@keyframes drift{from{transform:translate(-6vw,-6vw)}to{transform:translate(6vw,6vw)}}
/* 워드마크 조립: 글자가 차례로 올라오고, 마지막에 Q 꼬리가 45°로 미끄러져 들어온다 */
.js .hero-wm .g,.js .il-wm .g,.js .foot-wm .g{opacity:0;transform:translateY(34px)}
.js .is-play .g{animation:rise .9s var(--enter) forwards;animation-delay:calc(var(--n) * 70ms + .1s)}
.js .is-play .g-Q-tail{animation:tail 1s var(--enter) forwards;animation-delay:.72s}
@keyframes rise{to{opacity:1;transform:none}}
@keyframes tail{from{opacity:0;transform:translate(-70px,-70px)}to{opacity:1;transform:none}}
.js .intro{opacity:0;transform:translateY(16px);animation:rise .7s var(--enter) forwards;animation-delay:calc(var(--i) * 70ms + .2s)}

/* ---------- 선언 ---------- */
.manifesto{min-height:110vh;display:grid;place-items:center;padding:120px var(--pad)}
.mf{margin:0;width:min(1100px,100%);font-size:clamp(36px,6.4vw,92px);font-weight:800;line-height:1.22;letter-spacing:-.035em}
.mf-line{display:block;opacity:var(--o,1);transition:opacity .2s linear}
.mf-line.is-accent{background:linear-gradient(90deg,#9DB2FF,#B7A6FF);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ---------- 챕터 ---------- */
.chapter{padding:clamp(96px,12vw,168px) 0}
.chapter.is-tight{padding-top:72px}
.ch-head{margin-bottom:clamp(48px,6vw,80px)}
.ch-no{display:block;font-size:15px;font-weight:800;color:var(--accent);letter-spacing:.04em;margin-bottom:12px}
.ch-title{margin:0;font-size:clamp(44px,7vw,96px);font-weight:800;line-height:1.1;letter-spacing:-.04em}
.ch-lead{margin:24px 0 0;max-width:720px;font-size:clamp(17px,1.6vw,20px);line-height:1.7;color:var(--sub)}
.sub-title{margin:0 0 12px;font-size:clamp(26px,3vw,36px);font-weight:800;letter-spacing:-.02em;line-height:1.3}
.mini-title{margin:56px 0 16px;font-size:20px;font-weight:700}
.block{margin-top:clamp(80px,10vw,128px)}
.block:first-of-type{margin-top:0}
.ch-head+.block{margin-top:0}
.lead{margin:0 0 32px;max-width:720px;color:var(--sub);font-size:16px}
.fine{margin:20px 0 0;font-size:13px;color:var(--mute);line-height:1.7}

/* 큰 문장 */
.statement{min-height:72vh;display:flex;flex-direction:column;justify-content:center;margin-bottom:clamp(64px,8vw,120px)}
.big-type{margin:0;font-size:clamp(48px,9vw,136px);font-weight:800;line-height:1.08;letter-spacing:-.045em}
.big-type.is-mid{font-size:clamp(40px,7.4vw,112px)}
.big-type em{font-style:normal;color:var(--accent)}
.split{display:block}
.split.is-accent{color:var(--accent)}
.js .split .w{display:inline-block;opacity:0;transform:translateY(.4em);transition:opacity .7s var(--enter),transform .7s var(--enter);transition-delay:calc(var(--n) * 60ms)}
.js .split.is-in .w{opacity:1;transform:none}
.statement-note{margin:28px 0 0;font-size:18px;color:var(--sub)}

/* ---------- 01 가치 ---------- */
.values{list-style:none;margin-top:0;margin-bottom:0;display:grid;gap:0}
.value{display:grid;grid-template-columns:clamp(72px,12vw,160px) 1fr;gap:24px;align-items:start;padding:40px 0;border-top:1px solid var(--line)}
.value:last-child{border-bottom:1px solid var(--line)}
.v-no{font-size:clamp(56px,9vw,120px);font-weight:800;line-height:.9;letter-spacing:-.05em;color:var(--blue)}
.value h3{margin:4px 0 10px;font-size:clamp(26px,3.4vw,40px);font-weight:800;letter-spacing:-.03em}
.value p{margin:0;max-width:640px;font-size:17px;color:var(--sub)}
.value small{display:inline-block;margin-top:14px;padding:6px 12px;border-radius:10px;background:var(--card);font-size:14px;font-weight:600;color:var(--blue-700)}

/* ---------- 02 철학 ---------- */
.principles{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.pr{background:var(--card);border-radius:var(--r-xl);padding:28px}
.pr.is-wide{grid-column:1/-1;display:grid;grid-template-columns:1.1fr 1fr;gap:8px 32px;align-items:center}
.pr.is-wide .pr-demo{grid-row:span 2;margin:0}
.pr h3{margin:0 0 6px;font-size:22px;font-weight:800}
.pr p{margin:0;font-size:15px;color:var(--sub)}
.pr-demo{height:168px;border-radius:var(--r-lg);background:var(--card2);margin-bottom:22px;position:relative;overflow:hidden;display:grid;place-items:center}
.demo-surface,.demo-focus,.demo-contrast{place-items:stretch}
.demo-surface{grid-template-columns:repeat(3,1fr);gap:10px;padding:24px}
.demo-surface i{height:100%;border-radius:14px;background:#2A3350;box-shadow:inset 0 0 0 1.5px #5D687E;animation:surf 4s var(--enter) infinite alternate}
.demo-surface i:nth-child(2){animation-delay:.2s}.demo-surface i:nth-child(3){animation-delay:.4s}
@keyframes surf{0%,30%{box-shadow:inset 0 0 0 1.5px #5D687E;background:transparent}70%,100%{box-shadow:inset 0 0 0 0 transparent;background:#2F3A5C}}
.demo-focus{grid-template-columns:1fr;gap:8px;padding:20px 28px;align-content:center}
.demo-focus i{height:22px;border-radius:9px;background:#2F3A5C;animation:fold 4s var(--enter) infinite alternate}
.demo-focus i.on{height:56px;background:var(--blue);animation:none}
@keyframes fold{0%,30%{opacity:1;transform:none}70%,100%{opacity:.35;transform:scaleY(.6)}}
.demo-ease svg{width:80%;height:auto}
.demo-ease .curve{fill:none;stroke:#5D687E;stroke-width:2}
.demo-ease .dot{fill:#9DB2FF;offset-path:path("M8 72 C46.4 14.4 8 8 112 8");animation:along 2.4s var(--enter) infinite}
@keyframes along{0%{offset-distance:0%}70%,100%{offset-distance:100%}}
.demo-contrast{grid-template-columns:1fr 1fr;gap:0;padding:0}
.demo-contrast b{display:grid;place-items:center;height:100%;font-size:40px;font-weight:800;color:#fff;background:var(--blue)}
.demo-contrast span{display:grid;place-items:center;height:100%;font-size:56px;font-weight:800;color:var(--ink);background:var(--blue-50)}
.demo-words{display:flex;flex-direction:column;gap:12px;padding:24px;align-items:flex-start;justify-content:center}
.demo-words s{font-size:17px;color:var(--mute);text-decoration-color:var(--red);text-decoration-thickness:2px}
.demo-words b{font-size:21px;font-weight:800;color:#fff;padding:10px 16px;border-radius:14px;background:var(--blue)}

/* ---------- 03 아이덴티티 ---------- */
.id-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:16px}
.facts{margin:0;background:var(--card);border-radius:var(--r-xl);padding:12px 28px}
.facts div{padding:18px 0;border-bottom:1px solid var(--line)}
.facts div:last-child{border:0}
.facts dt{font-size:13px;font-weight:700;color:var(--mute)}
.facts dd{margin:3px 0 0;font-size:18px;font-weight:700}
.facts small{margin-left:6px;font-size:13px;font-weight:600;color:var(--mute)}
.arch{position:relative;margin:0;background:var(--night);color:#fff;border-radius:var(--r-xl);padding:28px 24px 32px;display:flex;flex-direction:column;overflow:hidden}
.arch figcaption{font-size:13px;font-weight:700;color:#9AA3B2}
/* 구조도: 선은 실제 칸의 가운데를 잇는다 (칸 폭이 같아서 위치를 계산할 수 있다) */
.arch-tree{--ln:#3B4A78;--gap:10px;flex:1;display:flex;flex-direction:column;justify-content:center;padding:20px 0 4px}
.arch-root{align-self:center;background:#fff;border-radius:18px;padding:18px 26px 14px;display:flex;flex-direction:column;align-items:center;gap:6px}
.arch-root img{width:176px;height:auto}
.arch-root span{font-size:12px;font-weight:700;color:#646E84}
.arch-lv{position:relative;padding-top:64px}
.arch-lv::before{content:"";position:absolute;left:calc(50% - 1px);top:0;width:2px;height:36px;background:var(--ln);transform-origin:50% 0}
.arch-k{position:absolute;left:50%;top:7px;transform:translateX(-50%);z-index:1;padding:2px 10px;border-radius:999px;background:var(--night);box-shadow:inset 0 0 0 1.5px var(--ln);font-size:11px;font-weight:800;color:#AFC1FF;white-space:nowrap}
.arch-row{position:relative;display:grid;grid-template-columns:repeat(var(--n),1fr);gap:var(--gap)}
.arch-row::before{content:"";position:absolute;top:-28px;height:2px;background:var(--ln);left:calc((100% - (var(--n) - 1) * var(--gap)) / (2 * var(--n)));right:calc((100% - (var(--n) - 1) * var(--gap)) / (2 * var(--n)))}
.arch-row>*{position:relative}
.arch-row>*::before{content:"";position:absolute;left:calc(50% - 1px);top:-28px;width:2px;height:28px;background:var(--ln);transform-origin:50% 0}
/* 서비스 셋의 아래를 한 줄로 모아 제품으로 — 제품은 모든 서비스에 걸쳐 있다 */
.arch-lv.is-svc .arch-row{margin-bottom:14px}
.arch-lv.is-svc .arch-row::after{content:"";position:absolute;bottom:-14px;height:2px;background:var(--ln);left:calc((100% - (var(--n) - 1) * var(--gap)) / (2 * var(--n)));right:calc((100% - (var(--n) - 1) * var(--gap)) / (2 * var(--n)))}
.arch-lv.is-svc .arch-row>*::after{content:"";position:absolute;left:calc(50% - 1px);bottom:-14px;width:2px;height:14px;background:var(--ln)}
.js .arch .arch-lv.is-svc .arch-row::after{transform:scaleX(0);transition:transform .6s var(--enter)}
.js .arch.is-in .arch-lv.is-svc .arch-row::after{transform:none;transition-delay:1.05s}
.arch-row b{display:grid;place-items:center;min-height:48px;padding:8px 6px;border-radius:14px;background:#1F2536;box-shadow:inset 0 0 0 1px #2A3142;font-size:15px;text-align:center;line-height:1.3}
.arch-prd{display:flex;flex-direction:column;align-items:center;gap:8px;background:#fff;border-radius:14px;padding:14px 10px 12px}
.arch-prd img{width:100%;max-width:200px;height:auto}
.arch-prd small{font-size:12px;font-weight:600;color:#5D687E;text-align:center}
.js .arch .arch-lv::before,.js .arch .arch-row>*::before{transform:scaleY(0)}
.js .arch .arch-row::before{transform:scaleX(0);transition:transform .7s var(--enter)}
.js .arch .arch-row>*,.js .arch .arch-k{opacity:0;transition:opacity .5s var(--enter)}
.js .arch.is-in .arch-lv::before{transform:none;transition:transform .5s var(--enter) .3s}
.js .arch.is-in .arch-row::before{transform:none;transition-delay:.55s}
.js .arch.is-in .arch-row>*::before{transform:none;transition:transform .4s var(--enter) .9s}
.js .arch.is-in .arch-row>*,.js .arch.is-in .arch-k{opacity:1;transition-delay:1s}
.js .arch.is-in .arch-lv+.arch-lv::before{transition-delay:1.2s}
.js .arch.is-in .arch-lv+.arch-lv .arch-row::before{transition-delay:1.45s}
.js .arch.is-in .arch-lv+.arch-lv .arch-row>*::before{transition-delay:1.8s}
.js .arch.is-in .arch-lv+.arch-lv :is(.arch-row>*,.arch-k){transition-delay:1.9s}
.unify{margin-top:clamp(64px,8vw,96px)}
.unify ul{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.unify li{background:var(--card);border-radius:var(--r-lg);padding:24px}
.unify b{font-size:18px;font-weight:800}
.unify p{margin:8px 0 0;font-size:14px;color:var(--sub);line-height:1.7}

/* ---------- 워드마크 인터루드 ---------- */
.interlude{position:relative;overflow:hidden;padding:clamp(96px,14vw,200px) var(--pad);display:grid;place-items:center;gap:40px}
.il-wm{width:min(1400px,100%)}
.il-cap{margin:0;max-width:640px;text-align:center;font-size:clamp(17px,1.8vw,22px);font-weight:600;color:var(--sub)}

/* ---------- 에셋 카드 ---------- */
.asset{position:relative;margin:0 0 16px;border-radius:var(--r-xl);min-height:360px;display:grid;place-items:center;padding:64px 48px 72px;overflow:hidden}
.asset.is-light{background:#fff;color:var(--ink)}
.asset.is-soft{background:var(--blue-50);color:var(--ink)}
.asset.is-dark{background:#171B29;color:#fff;box-shadow:inset 0 0 0 1px #2A3142}
.asset.is-blue{background:var(--blue);color:#fff}
.asset figcaption{position:absolute;left:24px;top:20px;font-size:13px;font-weight:700;color:#646E84}
.asset.is-dark figcaption{color:#9AA3B2}
.asset.is-blue figcaption{color:#fff}
.asset-wm{width:min(78%,560px);height:auto;transition:transform .6s var(--enter)}
.asset:hover .asset-wm,.asset:hover .asset-mk,.asset:hover .asset-lk{transform:scale(1.03)}
.grid2 .asset-wm{width:82%}
.asset-mk{width:min(46%,140px);height:auto;transition:transform .6s var(--enter)}
.asset-lk{height:auto;width:min(86%,300px);transition:transform .6s var(--enter)}
.asset.sq{min-height:0;aspect-ratio:1}
.dl{position:absolute;right:16px;bottom:14px;display:flex;gap:4px;align-items:center}
.dl a{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:11px;font-size:13px;font-weight:700;text-decoration:none;color:var(--blue-700);transition:background-color .2s}
.dl a:hover{background:var(--blue-100)}
.dl a small{color:#646E84;font-weight:600;font-size:12px}
.asset.is-dark .dl a{color:#AFC1FF}
.asset.is-dark .dl a:hover{background:#1F2536}
.asset.is-blue .dl a{color:#fff}
.asset.is-blue .dl a:hover{background:rgba(255,255,255,.16)}
.dl .ic{width:16px;height:16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid2 .asset{margin:0;min-height:260px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px}
.grid3 .asset{margin:0}

.anatomy{margin-top:16px;display:grid;grid-template-columns:1.25fr 1fr;gap:16px}
.anatomy-fig{position:relative;background:var(--blue-50);border-radius:var(--r-xl);padding:48px 32px;display:grid;place-items:center}
.anatomy-fig img,.anatomy-fig svg{width:100%;height:auto;grid-area:1/1}
.anatomy-fig .guide line{stroke:#FF3D9A;stroke-width:1.6;transition:stroke-dashoffset 1.4s var(--enter)}
.js .anatomy-fig .guide line{stroke-dasharray:1100;stroke-dashoffset:1100}
.anatomy-fig .guide .soft{opacity:.55}
.js .anatomy.is-in .guide line{stroke-dashoffset:0}
.anatomy.is-in .guide line:nth-child(2){transition-delay:.15s}.anatomy.is-in .guide line:nth-child(3){transition-delay:.3s}
.anatomy-list{list-style:none;margin:0;padding:24px 28px;background:var(--card);border-radius:var(--r-xl);display:grid;gap:14px;font-size:15px;color:var(--sub)}
.anatomy-list b{display:block;color:var(--fg);font-size:14px}
.anatomy-list small{color:var(--mute)}

/* ---------- A 마크 구성 (스크롤에 따라 단계가 그려진다) ---------- */
.build{display:grid;grid-template-columns:1.05fr 1fr;gap:32px;align-items:start;margin-bottom:16px}
.build-pin{display:contents}
.build-stage{position:sticky;top:110px;background:var(--card);border-radius:var(--r-xl);padding:24px;aspect-ratio:1/1;display:grid;place-items:center}
.build-fig{width:100%;height:100%;overflow:visible}
.build-fig g[class^="L"]{opacity:0;transition:opacity .6s var(--enter)}
.build-fig[data-step="1"] .L1,.build-fig[data-step="2"] :is(.L1,.L2),.build-fig[data-step="3"] :is(.L1,.L2,.L3),.build-fig[data-step="4"] :is(.L1,.L2,.L3,.L4),.build-fig[data-step="5"] :is(.L1,.L5){opacity:1}
.build-fig[data-step="5"] .L1{opacity:.25}
.tile-line{fill:none;stroke:#3B4A78;stroke-width:.4;stroke-dasharray:1.2 1}
.grid line{stroke:#2A3142;stroke-width:.15}
.axis{stroke:#5B7FF6;stroke-width:.25;stroke-dasharray:1 1}
.cons{stroke:#9DB2FF;stroke-width:.35;stroke-dasharray:240;stroke-dashoffset:0;transition:stroke-dashoffset 1.2s var(--enter)}
.js .build-fig .cons{stroke-dashoffset:240}
.js .build-fig:is([data-step="2"],[data-step="3"],[data-step="4"]) .cons{stroke-dashoffset:0}
.cons-c{fill:none;stroke:#B7A6FF;stroke-width:.35;stroke-dasharray:50;stroke-dashoffset:0;transition:stroke-dashoffset 1.2s var(--enter)}
.js .build-fig .cons-c{stroke-dashoffset:50}
.js .build-fig:is([data-step="3"],[data-step="4"]) .cons-c{stroke-dashoffset:0}
.arc-mark{fill:none;stroke:#FFB547;stroke-width:.35}
.pt{fill:#fff}
.dim{stroke:#FFB547;stroke-width:.3}
.lbl{fill:#C2C9D6;font:700 2.6px var(--font)}
.lbl.mid{text-anchor:middle}
.bar{fill:var(--blue);transform-box:fill-box;transform-origin:50% 100%;transition:transform .9s var(--enter)}
.js .build-fig:not([data-step="4"]) .bar{transform:scaleY(0)}
.tile{fill:var(--blue-50)}
.build-steps{list-style:none;margin:0;padding:0}
.build-hint{display:none;justify-content:center;gap:6px;margin-top:14px}
.build-hint i{width:6px;height:6px;border-radius:3px;background:var(--line);transition:width .3s var(--enter),background-color .3s}
.build-hint i.is-on{width:18px;background:var(--blue)}
.build-steps li{min-height:46vh;display:flex;flex-direction:column;justify-content:center;padding:24px 0;transition:opacity .4s var(--enter)}
.js .build-steps li{opacity:.6}
.js .build-steps li.is-on{opacity:1}
.build-steps li:first-child{min-height:40vh}
.build-steps span{display:grid;place-items:center;width:32px;height:32px;border-radius:11px;background:var(--blue);font-size:14px;font-weight:800;margin-bottom:14px}
.build-steps b{font-size:clamp(24px,2.6vw,32px);font-weight:800;letter-spacing:-.02em}
.build-steps p{margin:10px 0 0;font-size:16px;color:var(--sub);max-width:420px}

/* ---------- 앱 아이콘 ---------- */
.appicon{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.appicon-stage{border-radius:var(--r-xl);background:linear-gradient(160deg,#5B7FF6,var(--blue) 45%,#2A3FB6);display:grid;place-items:center;padding:48px 24px;min-height:360px}
.phone{display:grid;grid-template-columns:repeat(4,64px);gap:20px 18px;padding:28px 28px 34px;border-radius:36px;background:rgba(15,20,36,.22);position:relative}
.app{width:64px;height:64px;border-radius:15px;background:rgba(255,255,255,.2);overflow:hidden}
.app.is-aq{box-shadow:0 10px 24px -10px rgba(10,16,40,.5)}
.js .appicon .app.is-aq{transform:scale(.6);opacity:0;transition:transform .7s var(--enter) .3s,opacity .5s var(--enter) .3s}
.js .appicon.is-in .app.is-aq{transform:none;opacity:1}
.app img{width:100%;height:100%}
.phone p{position:absolute;left:28px;width:64px;top:calc(28px + 64px + 20px + 64px + 4px);margin:0;text-align:center;font-size:11px;font-weight:600}
.sizes{list-style:none;margin:0;padding:32px;border-radius:var(--r-xl);background:#fff;display:flex;align-items:flex-end;justify-content:center;flex-wrap:wrap;gap:18px}
.sizes li{display:flex;flex-direction:column;align-items:center;gap:10px;color:#646E84;font-size:12px;font-weight:700}
.r22{border-radius:22%}

/* ---------- 컬러 띠 ---------- */
.colorband{display:flex;height:min(76vh,640px);overflow:hidden}
.cb{flex:1;background:var(--c);color:#fff;padding:32px clamp(16px,2.4vw,32px);display:flex;flex-direction:column;justify-content:flex-end;gap:2px;transition:flex-grow .7s var(--enter)}
.cb.is-light{color:var(--ink)}
.cb b{font-size:clamp(18px,2.2vw,30px);font-weight:800;letter-spacing:-.02em;white-space:nowrap}
.cb span{font-size:15px;font-weight:600}
.colorband:hover .cb{flex-grow:.7}
.colorband .cb:hover{flex-grow:2.2}
.js .colorband .cb{transform:translateY(40%);opacity:0;transition:transform 1s var(--enter),opacity .8s var(--enter),flex-grow .7s var(--enter)}
.js .colorband.is-in .cb{transform:none;opacity:1}
.js .colorband.is-in .cb:nth-child(2){transition-delay:.08s,.08s,0s}.js .colorband.is-in .cb:nth-child(3){transition-delay:.16s,.16s,0s}.js .colorband.is-in .cb:nth-child(4){transition-delay:.24s,.24s,0s}

.colors{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.swatch{background:var(--c);color:var(--t);border-radius:var(--r-xl);padding:28px;min-height:220px;display:flex;flex-direction:column}
.swatch.is-main{min-height:300px}
.swatch[style*="#171B29"]{box-shadow:inset 0 0 0 1px #2A3142}
.swatch b{font-size:22px;font-weight:800}
.swatch .tok{font-size:13px;font-weight:600;margin-top:2px}
.swatch ul{list-style:none;margin:auto 0 0;padding:0;display:grid;gap:2px}
.swatch button{background:none;border:0;padding:4px 8px;margin-left:-8px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;color:inherit;text-align:left;font-variant-numeric:tabular-nums;transition:background-color .2s}
.swatch button:hover{background:color-mix(in srgb,currentColor 12%,transparent)}
.swatch.is-wide{grid-column:1/-1;min-height:200px}
.swatch.is-grad{background:linear-gradient(135deg,var(--blue),var(--violet))}
.swatch.is-grad p{margin:10px 0 0;font-size:14px}
.swatch.is-grad ul{margin-top:24px}

/* ---------- 서체 ---------- */
.type-hero{background:#fff;color:var(--ink);border-radius:var(--r-xl);padding:40px 40px 32px;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;overflow:hidden}
.type-big{margin:0;font-size:clamp(96px,15vw,200px);font-weight:var(--tw,800);line-height:.9;letter-spacing:-.04em;transition:font-weight .3s}
.type-meta{display:flex;flex-direction:column;gap:2px;text-align:right;font-size:14px;color:#5D687E}
.type-meta b{font-size:22px;color:var(--ink)}
.type-w{font-weight:700;color:var(--blue-700)}
.weights{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}
.weights li{display:grid;grid-template-columns:150px 1fr;align-items:baseline;gap:16px;padding:18px 24px;background:var(--card);border-radius:var(--r-lg)}
.weights span{font-size:13px;font-weight:700;color:var(--mute)}
.weights p{margin:0;font-size:clamp(20px,2.4vw,28px);font-weight:var(--w);letter-spacing:-.01em;line-height:1.35}

/* ---------- 모티프 ---------- */
.motifs{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.motif{position:relative;aspect-ratio:4/5;border-radius:var(--r-xl);overflow:hidden;background:var(--blue);container-type:inline-size}
.motif span{position:absolute;left:20px;bottom:16px;font-size:13px;font-weight:700;color:#fff}
.motif .sig{position:absolute}
.m-solo .sig{--h:56cqw;left:10cqw;top:24%;background:linear-gradient(135deg,#9DB2FF,var(--violet))}
.m-rhythm{background:#171B29}
.m-rhythm .sig{--h:30cqw;--a:12cqw;top:34%;background:var(--blue)}
.m-rhythm .sig:nth-child(1){left:-10cqw;opacity:.35}.m-rhythm .sig:nth-child(2){left:14cqw;opacity:.55}.m-rhythm .sig:nth-child(3){left:38cqw;opacity:.8}
.m-rhythm .sig:nth-child(4){left:62cqw;background:linear-gradient(135deg,var(--blue),var(--violet))}
.m-crop{background:var(--blue-50)}
.m-crop .sig{--h:110cqw;--a:40cqw;left:16cqw;top:34%;background:linear-gradient(135deg,var(--blue),var(--violet))}
.m-crop b{position:absolute;left:20px;top:22px;color:var(--ink);font-size:22px;font-weight:800;line-height:1.3}
.m-crop span{color:var(--ink)}
.js .motif .sig{translate:-22cqw -22cqw;opacity:0;transition:translate 1.1s var(--enter),opacity .8s var(--enter)}
.js .motif.is-in .sig{translate:0 0;opacity:1}
.js .m-rhythm.is-in .sig:nth-child(1){opacity:.35}.js .m-rhythm.is-in .sig:nth-child(2){opacity:.55;transition-delay:.08s}.js .m-rhythm.is-in .sig:nth-child(3){opacity:.8;transition-delay:.16s}.js .m-rhythm.is-in .sig:nth-child(4){transition-delay:.24s}
.rules-mini{margin:16px 0 0;padding:20px 24px 20px 44px;background:var(--card);border-radius:var(--r-lg);color:var(--sub);font-size:15px;display:grid;gap:4px}

/* ---------- 05 디자인 정체성 ---------- */
.ds{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.ds-card{background:var(--card);border-radius:var(--r-xl);padding:28px;min-width:0}
.ds-ui{grid-row:span 2;display:flex;flex-direction:column;gap:20px}
.ds-label{display:block;font-size:13px;font-weight:700;color:var(--mute);margin-bottom:20px}
.ds-ui .ds-label{margin-bottom:0}
.mock{background:var(--blue-50);border-radius:22px;padding:18px;display:grid;grid-template-columns:72px 1fr;gap:16px;align-items:center}
.mock-cover{width:72px;height:72px;border-radius:14px;background:linear-gradient(135deg,#D6E1FF,#3B63F3 50%,#1F3BB0)}
.mock-body{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.mock-body b{font-size:18px}
.mock-body small{font-size:13px;color:#5D687E}
.mock-btn{grid-column:1/-1;display:grid;place-items:center;height:48px;border-radius:16px;background:var(--blue);color:#fff;font-weight:700;font-size:15px}
.badge-st{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:700;margin-top:6px}
.badge-st.is-violet{background:#F0EDFF;color:#5E48B0}.badge-st.is-green{background:#E8F6F0;color:#1D7552}.badge-st.is-amber{background:#FFF3E6;color:#965A1E}.badge-st.is-red{background:#FFEDEF;color:#B33744}
.mock-badges{display:flex;gap:8px;flex-wrap:wrap}
.mock-badges .badge-st{margin:0}
.radii{display:flex;gap:34px 10px;align-items:flex-end;flex-wrap:wrap;padding-bottom:22px}
.radii i{width:64px;height:64px;border-radius:var(--r);background:var(--blue);position:relative}
.radii em{position:absolute;left:0;right:0;bottom:-22px;text-align:center;font-style:normal;font-size:12px;font-weight:700;color:var(--mute)}
.heights{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.heights span{display:grid;place-items:center;height:var(--h);padding:0 16px;border-radius:var(--r);background:var(--blue);color:#fff;font-weight:700;font-size:14px}
.motion{display:grid;gap:12px}
.motion div{display:grid;grid-template-columns:64px 96px 1fr;align-items:center;gap:12px;font-size:14px}
.motion b{font-weight:800}
.motion span{color:var(--mute);font-size:13px}
.motion i{height:10px;border-radius:5px;background:var(--card2);position:relative;overflow:hidden}
.motion i::after{content:"";position:absolute;inset:0;background:var(--blue);border-radius:5px;transform-origin:0 50%;animation:dur calc(var(--t) * 6) var(--enter) infinite alternate}
@keyframes dur{0%,20%{transform:scaleX(0)}80%,100%{transform:scaleX(1)}}
.ds-note{margin:16px 0 0;font-size:13px;color:var(--mute)}
.ds-note code{font-size:12px;background:var(--card2);padding:2px 6px;border-radius:6px}
.spaces{display:flex;gap:10px;align-items:flex-end}
.spaces i{width:var(--s);height:var(--s);background:var(--violet);border-radius:3px;flex:none}

/* ---------- 06 커뮤니케이션 ---------- */
.writing{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:clamp(64px,8vw,96px)}
.wcard{background:var(--card);border-radius:var(--r-xl);padding:28px}
.wcard ul{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:14px;font-size:15px;color:var(--sub)}
.wcard b{display:block;color:var(--fg);font-size:18px;font-weight:800}
.wcard s{display:inline-block;margin-right:6px;color:var(--fg);font-weight:800;font-size:17px;text-decoration-color:var(--red);text-decoration-thickness:2px}
.badge{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:9px;font-size:13px;font-weight:800}
.badge.do{background:rgba(47,180,124,.16);color:#5FD3A1}
.badge.dont{background:rgba(240,68,82,.16);color:#FF8A93}
.rewrite{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:12px}
.rewrite li{display:grid;grid-template-columns:1fr 1.3fr 200px;gap:20px;align-items:center;background:var(--card);border-radius:var(--r-lg);padding:20px 24px}
.rewrite s{color:var(--mute);text-decoration-color:var(--red);text-decoration-thickness:2px;font-size:15px}
.rewrite b{font-size:17px;font-weight:800;position:relative;padding-left:28px}
.rewrite b::before{content:"";position:absolute;left:0;top:50%;width:18px;height:2px;background:var(--accent)}
.rewrite b::after{content:"";position:absolute;left:12px;top:calc(50% - 4px);width:6px;height:6px;border-top:2px solid var(--accent);border-right:2px solid var(--accent);transform:rotate(45deg)}
.rewrite small{font-size:13px;color:var(--mute)}

/* ---------- 07 리소스 ---------- */
.space{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}
.space-fig{background:var(--card);border-radius:var(--r-xl);padding:28px 24px;display:grid;place-items:center}
.space-fig svg{width:100%;height:auto}
.sp-area{fill:#EEF3FF}
.sp-line{fill:none;stroke:var(--blue);stroke-width:2.4;stroke-dasharray:8 7}
.sp-mark line{stroke:var(--blue-700);stroke-width:2.4}
.sp-x text{fill:var(--blue-700);font:800 34px var(--font)}
.space-list{margin:0;background:var(--card);border-radius:var(--r-xl);padding:8px 28px}
.space-list div{padding:15px 0;border-bottom:1px solid var(--line)}
.space-list div:last-child{border:0}
.space-list dt{font-size:13px;font-weight:700;color:var(--mute)}
.space-list dd{margin:2px 0 0;font-size:16px;font-weight:700}
.donts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dont{margin:0;background:var(--card);border-radius:var(--r-lg);overflow:hidden;color:var(--ink)}
.dont-art{position:relative;height:150px;display:grid;place-items:center;padding:0 28px;overflow:hidden;background:#fff}
.dont-art img{width:78%;height:auto}
.dont-art::after{content:"";position:absolute;inset:0;background:linear-gradient(to top right,transparent calc(50% - 1px),var(--red) calc(50% - 1px),var(--red) calc(50% + 1px),transparent calc(50% + 1px));clip-path:inset(0 100% 0 0);transition:clip-path .7s var(--enter) .25s}
html:not(.js) .dont-art::after,.dont.is-in .dont-art::after{clip-path:inset(0)}
.dont-art.is-low{background:#2E3547}
.dont-art.is-busy{background:repeating-linear-gradient(115deg,#F0A531 0 14px,#E5484D 14px 30px,#2FB47C 30px 42px,#7A5AF8 42px 60px,#F5F8FF 60px 72px)}
.retype{font:italic 700 44px/1 Georgia,"Times New Roman",serif;color:var(--ink);letter-spacing:.02em}
.dont-art .crowd{width:64%;transform:translateY(8px)}
.crowd-text{position:absolute;left:26%;top:26px;padding:4px 10px;border-radius:8px;background:#D22F3F;color:#fff;font-size:13px;font-weight:800;transform:rotate(-4deg)}
.dont figcaption{display:flex;align-items:center;gap:8px;padding:14px 16px;font-size:14px;font-weight:700}
.dont figcaption::before{content:"";width:18px;height:18px;flex:none;border-radius:50%;background:var(--red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round'%3E%3Cpath d='M8 8l8 8M16 8l-8 8'/%3E%3C/svg%3E") center/12px no-repeat}
.media{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;align-items:start}
.mcard{margin:0;background:var(--card);border-radius:var(--r-xl);overflow:hidden}
.mcard img{width:100%;height:auto}
.mcard figcaption{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;font-size:14px;color:var(--sub)}
.mcard a{font-weight:700;color:var(--blue-700);text-decoration:none}
.boiler{background:var(--card);border-radius:var(--r-xl);padding:24px 28px}
.boiler-head{display:flex;justify-content:space-between;align-items:center}
.boiler p{margin:10px 0 20px;font-size:15px;color:var(--sub);line-height:1.75}
.boiler p:last-child{margin-bottom:0}
.contact{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:16px 0 0}
.contact div{background:var(--card);border-radius:var(--r-lg);padding:18px 20px}
.contact dt{font-size:13px;font-weight:700;color:var(--mute)}
.contact dd{margin:4px 0 0;font-weight:700;font-size:15px}
.contact a{text-decoration:none}
.contact a:hover{text-decoration:underline;text-underline-offset:3px}
.bundles{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}
.bundle{display:flex;flex-direction:column;gap:2px;padding:24px;border-radius:var(--r-xl);background:var(--card);text-decoration:none;min-height:200px;transition:background-color .2s,transform .16s var(--press)}
.bundle:hover{background:var(--card2)}
.bundle:is(:active,.is-pressed){transform:scale(.99)}
.bundle.is-all{grid-column:span 3;flex-direction:row;align-items:center;gap:20px;min-height:0;background:var(--blue);color:#fff}
.bundle.is-all:hover{background:var(--blue-600)}
.bundle.is-all small{color:#fff}
.bundle.is-all em{margin-left:auto;color:#fff;background:rgba(15,20,36,.22);padding:8px 14px;border-radius:12px}
.b-ic{width:100%;height:84px;border-radius:16px;background:#fff;display:grid;place-items:center;margin-bottom:16px;padding:0 20px}
.b-ic img{max-height:40px;width:auto;max-width:100%}
.bundle.is-all .b-ic{width:72px;height:72px;margin:0;background:rgba(255,255,255,.16);padding:16px}
.bundle.is-all .b-ic img{max-height:none;width:100%}
.b-color{background:linear-gradient(90deg,var(--blue) 0 34%,var(--ink) 34% 67%,var(--violet) 67%)}
.bundle b{font-size:18px;font-weight:800}
.bundle small{font-size:14px;color:var(--mute)}
.bundle em{font-style:normal;margin-top:auto;padding-top:14px;font-size:13px;font-weight:700;color:var(--blue-700)}


/* ---------- 성격 · 말투 눈금 ---------- */
.persona{margin-top:clamp(80px,10vw,128px)}
.pairs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.pairs li{background:var(--card);border-radius:var(--r-xl);padding:28px 30px;display:flex;flex-direction:column;gap:2px}
.pairs b{font-size:clamp(24px,2.8vw,34px);font-weight:800;letter-spacing:-.03em;color:var(--blue)}
.pairs span{font-size:clamp(24px,2.8vw,34px);font-weight:800;letter-spacing:-.03em}
.dials{margin-top:16px;background:var(--card);border-radius:var(--r-xl);padding:12px 30px}
.dial{display:grid;grid-template-columns:110px 1fr 110px;gap:18px;align-items:center;padding:16px 0;font-size:15px;font-weight:700;color:var(--mute)}
.dial span:last-child{text-align:right}
.dial i{position:relative;height:6px;border-radius:3px;background:var(--card2)}
.dial b{position:absolute;top:50%;left:calc(var(--v) * 100%);width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 5px rgba(59,99,243,.16);transition:left 1.2s var(--enter) .2s}
.js .dials:not(.is-in) .dial b{left:50%}

/* ---------- 흐르는 단어 ---------- */
.marquee{padding:clamp(56px,7vw,96px) 0;overflow:hidden;display:grid;gap:8px}
.mq{display:flex;overflow:hidden;white-space:nowrap}
.mq-track{display:flex;align-items:center;gap:clamp(20px,3vw,40px);padding-right:clamp(20px,3vw,40px);animation:mq 48s linear infinite;flex:none}
.mq.is-rev .mq-track{animation-direction:reverse;animation-duration:56s}
.mq span{font-size:clamp(40px,7vw,104px);font-weight:800;letter-spacing:-.04em;line-height:1.15}
.mq.is-rev span{color:rgba(255,255,255,.34)}
.mq .sig{--h:clamp(26px,4.4vw,64px);background:rgba(255,255,255,.3);flex:none}
.mq:not(.is-rev) .sig:nth-of-type(3n){background:linear-gradient(135deg,#9DB2FF,var(--violet))}
@keyframes mq{to{transform:translateX(-50%)}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}


/* ---------- A 안으로 (스크롤에 따라 막대가 화면을 채운다) ---------- */
.zoom{height:240vh;position:relative}
.zoom-pin{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;display:grid;place-items:center}
.zoom-mark{width:clamp(140px,22vw,240px);height:auto;transform-origin:50% 70.3%;transform:scale(calc(1 + var(--zp,0) * var(--zp,0) * 64))}
.zoom-mark path:last-child{fill:#fff}
.zoom-t{position:absolute;left:0;right:0;text-align:center;margin:0;font-size:clamp(28px,4.4vw,60px);font-weight:800;letter-spacing:-.03em;line-height:1.2;padding:0 var(--pad)}
.zoom-t.z1{bottom:16vh;opacity:calc(1 - var(--zp,0) * 3)}
.zoom-t.z2{top:50%;transform:translateY(-50%);opacity:clamp(0,calc((var(--zp,0) - .62) * 4),1)}
.zoom-t b{color:#DCE5FF}

/* ---------- 아이콘 ---------- */
.icons{display:grid;grid-template-columns:1fr 1.5fr;gap:16px}
.icon-spec{background:var(--card);border-radius:var(--r-xl);padding:28px;display:grid;gap:20px}
.icon-grid{width:100%;max-width:300px;justify-self:center;color:#fff}
.icon-grid line{stroke:#2A3142;stroke-width:.06}
.icon-grid .safe{fill:none;stroke:#5B7FF6;stroke-width:.08;stroke-dasharray:.4 .3}
.ig *{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ig [fill="currentColor"]{fill:currentColor}
.icon-spec ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;font-size:13px;color:var(--mute)}
.icon-spec b{display:block;font-size:15px;color:var(--fg)}
.icon-set{background:#fff;color:var(--ink);border-radius:var(--r-xl);padding:24px;display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.gl{margin:0;display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 4px;border-radius:14px;transition:background-color .2s}
.gl:hover{background:var(--blue-50)}
.gl svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gl svg [fill="currentColor"]{fill:currentColor}
.gl figcaption{font-size:11px;font-weight:600;color:#646E84}
.js .icons .gl svg *,.js .icons .ig *{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.1s var(--enter)}
.js .icons.is-in .gl svg *,.js .icons.is-in .ig *{stroke-dashoffset:0}
.js .icons.is-in .gl:nth-child(n+7) svg *{transition-delay:.1s}.js .icons.is-in .gl:nth-child(n+13) svg *{transition-delay:.2s}.js .icons.is-in .gl:nth-child(n+19) svg *{transition-delay:.3s}

/* ---------- 움직임 데모 ---------- */
.mo{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.mo-card{background:var(--card);border-radius:var(--r-xl);padding:24px;display:flex;flex-direction:column;gap:16px;min-height:280px}
.mo-card .ds-label{margin:0}
.mo-press{margin:auto;height:56px;padding:0 28px;border:0;border-radius:18px;background:var(--blue);color:#fff;font-weight:700;font-size:16px;cursor:pointer;transition:transform .16s cubic-bezier(.2,.7,.3,1)}
.mo-press:active,.mo-press.is-pressed{transform:scale(.98);transition-duration:.04s}
.mo-race{display:grid;gap:14px;margin:auto 0}
.lane{position:relative;height:44px;border-radius:14px;background:var(--card2);margin-top:22px}
.lane i{position:absolute;left:6px;top:6px;width:32px;height:32px;border-radius:10px;background:var(--blue)}
.lane .no{background:#C2C9D6}
.lane span{position:absolute;left:2px;top:-21px;font-size:12px;font-weight:700;color:var(--mute)}
.lane.is-no span{text-decoration:line-through;text-decoration-color:var(--red)}
.mo-race.is-go .ok{animation:goal .8s cubic-bezier(.32,.72,0,1) forwards}
.mo-race.is-go .no{animation:goal .8s var(--enter) forwards}
@keyframes goal{to{left:calc(100% - 38px)}}
.mo-replay{align-self:flex-start}
.mo-phone{position:relative;margin:auto;width:150px;height:170px;border-radius:24px 24px 0 0;background:var(--card2);overflow:hidden;box-shadow:inset 0 0 0 2px var(--line)}
.mo-sheet{position:absolute;left:0;right:0;bottom:0;height:62%;border-radius:18px 18px 0 0;background:#fff;transform:translateY(100%);transition:transform .34s cubic-bezier(.4,0,1,1);display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:8px}
.mo-sheet b{width:36px;height:4px;border-radius:2px;background:#DFE4EC}
.mo-sheet em{width:80%;height:16px;border-radius:6px;background:var(--blue-50)}
.mo-phone.is-open .mo-sheet{transform:none;transition:transform .46s cubic-bezier(.32,.72,0,1)}

/* ---------- 적용 예시 ---------- */
.apply{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:24px 16px;align-items:start}
.apply>*{min-width:0}
.ap{margin:0;grid-column:span 2;transform:translateY(calc(var(--py,0) * 1px))}
.ap figcaption{margin-top:12px;font-size:14px;font-weight:700;color:var(--mute);line-height:1.6}
.ap figcaption em{display:inline-block;margin-right:8px;padding:2px 9px;border-radius:8px;background:#E6EDFF;color:#2F55D4;font-style:normal;font-size:12px;font-weight:800}
.ap-splash{grid-row:span 2}
.ap-phone{aspect-ratio:9/18;border-radius:36px;background:#fff;box-shadow:inset 0 0 0 8px #171B29,0 30px 60px -30px rgba(23,27,41,.35);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}
.ap-phone img{width:30%}
.ap-phone span{font-size:13px;font-weight:800;color:#5D687E;letter-spacing:.08em}
.ap-post{grid-column:span 4}
.post{position:relative;aspect-ratio:2/1.2;border-radius:var(--r-xl);background:var(--blue);color:#fff;overflow:hidden;padding:clamp(20px,3vw,36px);container-type:inline-size}
.post-wm{width:28%}
.post .sig{position:absolute;--h:56cqw;right:-14cqw;top:20cqw;background:linear-gradient(135deg,#9DB2FF,var(--violet))}
.post p{position:relative;margin:7cqw 0 0;font-size:6.4cqw;font-weight:800;line-height:1.2;letter-spacing:-.03em}
.post span{position:absolute;left:clamp(20px,3vw,36px);bottom:clamp(16px,2.4vw,28px);font-size:2.4cqw;font-weight:700}
.ap-card{grid-column:span 2;display:grid;gap:12px}
.bcard{position:relative;aspect-ratio:1.75;border-radius:16px;overflow:hidden;padding:20px;container-type:inline-size}
.bcard.is-front{background:#171B29;display:grid;place-items:center}
.bcard.is-front img{width:56%}
.bcard.is-front .sig{position:absolute;--h:40cqw;right:-18cqw;bottom:-14cqw;background:linear-gradient(135deg,var(--blue),var(--violet))}
.bcard.is-back{background:#fff;color:var(--ink);box-shadow:0 20px 40px -24px rgba(23,27,41,.3);display:flex;flex-direction:column}
.bcard.is-back b{font-size:7cqw;font-weight:800}
.bcard.is-back span{font-size:4.2cqw;font-weight:600;color:#5D687E}
.bcard.is-back small{margin-top:auto;font-size:3.8cqw;line-height:1.5;color:#4D5970}
.bcard.is-back img{position:absolute;right:20px;bottom:20px;width:13cqw}
.ap-mail{grid-column:span 2}
.mail{background:#fff;color:var(--ink);border-radius:var(--r-xl);padding:24px;font-size:14px;box-shadow:0 20px 40px -28px rgba(23,27,41,.3)}
.mail p{margin:0;color:#4D5970;line-height:1.7}
.mail hr{border:0;border-top:1px solid #E8EDF5;margin:18px 0}
.sign{display:grid;gap:2px}
.sign b{font-size:15px}
.sign span{font-size:13px;color:#5D687E}
.sign img{width:150px;height:auto;margin:10px 0 6px}
.sign small{font-size:12px;color:#646E84}
.ap-noti{grid-column:span 2;display:grid;grid-template-columns:1fr;gap:10px;align-items:start}
.ap-noti figcaption{grid-column:1/-1}
.noti{display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:start;background:rgba(255,255,255,.86);backdrop-filter:blur(10px);border-radius:22px;padding:14px 16px;box-shadow:0 16px 36px -24px rgba(23,27,41,.4);color:var(--ink)}
.noti img{width:40px;height:40px;border-radius:22%}
.noti b{font-size:14px}
.noti p{margin:2px 0 0;font-size:14px;line-height:1.5;color:#36425B}
.noti small{font-size:12px;color:#4D5970}
.noti.is-2{transform:scale(.97)}


/* 적용 예시 — 브랜드 철학을 담은 자리 */
.ap-poster{grid-column:span 2}
.ap-slide,.ap-track{grid-column:span 4}
.ap-values,.ap-tote{grid-column:span 3}
.ap-banner{grid-column:span 4;align-self:stretch;display:flex;flex-direction:column}
.ap-banner .banner{flex:1;flex-direction:column;align-items:flex-start;justify-content:center;gap:28px}
.ap-banner .banner-btn{margin-left:0}
.ap-banner .banner img{top:auto;bottom:-20%;width:42%}
.poster{position:relative;aspect-ratio:3/4.2;border-radius:var(--r-xl);background:#171B29;color:#fff;overflow:hidden;padding:10% 9%;container-type:inline-size;display:flex;flex-direction:column;box-shadow:0 30px 60px -34px rgba(23,27,41,.5)}
.poster p{position:relative;margin:0;font-size:11cqw;font-weight:800;line-height:1.22;letter-spacing:-.04em}
.poster .sig{position:absolute;--h:60cqw;right:-26cqw;bottom:22cqw;background:linear-gradient(135deg,var(--blue),var(--violet))}
.poster img{position:relative;margin-top:auto;width:44%}
.slide{position:relative;aspect-ratio:16/9;border-radius:var(--r-xl);background:#fff;color:var(--ink);padding:6% 7%;container-type:inline-size;display:flex;flex-direction:column;box-shadow:0 24px 50px -32px rgba(23,27,41,.35);overflow:hidden}
.slide-no{font-size:2.2cqw;font-weight:800;color:var(--blue)}
.slide p{margin:auto 0 0;font-size:7cqw;font-weight:800;line-height:1.15;letter-spacing:-.04em}
.slide p b{color:var(--blue)}
.slide img{position:absolute;right:6cqw;top:5.4cqw;width:15%}
.slide-bar{position:absolute;left:7cqw;bottom:5cqw;width:10cqw;height:.7cqw;border-radius:1cqw;background:linear-gradient(90deg,var(--blue),var(--violet))}
.slide p{margin-bottom:5cqw}
.track{background:#fff;color:var(--ink);border-radius:var(--r-xl);padding:24px;box-shadow:0 24px 50px -32px rgba(23,27,41,.35)}
.track-head{display:flex;gap:14px;align-items:center;padding-bottom:16px;border-bottom:1px solid #E8EDF5}
.track-cover{width:52px;height:52px;border-radius:12px;background:linear-gradient(135deg,#D6E1FF,#3B63F3 50%,#1F3BB0);flex:none}
.track-head b{display:block;font-size:17px}
.track-head small{font-size:13px;color:#5D687E}
.track ol{list-style:none;margin:16px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.track li{position:relative;display:flex;flex-direction:column;gap:2px;padding-top:26px}
.track li i{position:absolute;left:0;top:4px;width:14px;height:14px;border-radius:50%;background:#DFE4EC;box-shadow:0 0 0 4px #fff}
.track li::before{content:"";position:absolute;left:14px;right:-12px;top:10px;height:2px;background:#E8EDF5}
.track li:last-child::before{display:none}
.track li.done i{background:#2FB47C}.track li.done::before{background:#2FB47C}
.track li.warn i{background:#F0A531;box-shadow:0 0 0 4px #FFF3E6}
.track li b{font-size:15px}
.track li.warn b{color:#965A1E}
.track li small{font-size:12px;color:#5D687E;line-height:1.5}
.vcards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.vc{aspect-ratio:1.5;border-radius:18px;background:#fff;color:var(--ink);padding:16px 18px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 16px 36px -28px rgba(23,27,41,.35)}
.vc span{font-size:30px;font-weight:800;line-height:1;color:var(--blue);letter-spacing:-.04em}
.vc b{font-size:16px;font-weight:800;line-height:1.3}
.vc.is-blue{background:var(--blue);color:#fff}
.vc.is-blue span{color:#DCE5FF}
.tote{background:#fff;border-radius:var(--r-xl);padding:36px 24px 28px;display:flex;flex-direction:column;align-items:center;min-height:100%;box-shadow:0 16px 36px -28px rgba(23,27,41,.35)}
.tote-h{width:34%;aspect-ratio:2/1.1;border:10px solid #2C56E0;border-bottom:0;border-radius:999px 999px 0 0}
.tote-b{width:64%;aspect-ratio:1/1.1;margin-top:-2px;background:var(--blue);border-radius:6px 6px 22px 22px;position:relative;overflow:hidden;display:grid;place-items:center;container-type:inline-size}
.tote-b img{position:relative;z-index:1;width:64%}
.tote-b .sig{position:absolute;--h:58cqw;right:-30cqw;bottom:-18cqw;background:linear-gradient(135deg,#9DB2FF,var(--violet))}
.banner{position:relative;display:flex;align-items:center;gap:24px;padding:28px clamp(24px,4vw,48px);border-radius:var(--r-xl);background:var(--blue);color:#fff;overflow:hidden}
.banner div{position:relative;z-index:1}
.banner p{margin:0;font-size:clamp(16px,1.8vw,22px);font-weight:600}
.banner b{display:block;font-size:clamp(24px,3vw,40px);font-weight:800;letter-spacing:-.03em;line-height:1.2}
.banner-btn{position:relative;z-index:1;margin-left:auto;display:inline-flex;align-items:center;height:52px;padding:0 22px;border-radius:16px;background:#fff;color:#2F55D4;font-weight:700;font-size:15px;white-space:nowrap}
.banner img{position:absolute;right:-4%;top:-30%;width:28%;opacity:.12}

/* JS가 없거나 동작 줄이기: 고정·확대 없이 차례로 보여 준다 (.js는 움직임을 쓸 때만 붙는다) */
html:not(.js) .zoom{height:auto}
html:not(.js) .zoom-pin{position:relative;height:auto;padding:96px var(--pad);display:flex;flex-direction:column;align-items:center;gap:24px}
html:not(.js) .zoom-mark{transform:none}
html:not(.js) .zoom-t{position:static;opacity:1;transform:none}

/* ---------- 바닥 ---------- */
.foot{position:relative;padding:clamp(80px,10vw,140px) var(--pad) 48px;border-radius:var(--r-2xl) var(--r-2xl) 0 0;box-shadow:0 calc(var(--r-2xl) * -1) 0 #fff}
/* 위 모서리를 둥글게 — 둥근 모서리 뒤는 위 구간과 같은 흰색으로 채운다 */
.foot{overflow:hidden}
.foot-sig{position:absolute;--h:min(46vw,520px);right:calc(min(46vw,520px) * -.55);bottom:calc(min(46vw,520px) * -.42);background:linear-gradient(135deg,rgba(255,255,255,.16),rgba(122,90,248,.55));pointer-events:none}
.foot>*:not(.foot-sig){position:relative}
.foot-wm{width:min(100%,1180px);margin:0 auto}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:32px;max-width:1180px;margin:clamp(48px,6vw,80px) auto 0}
.foot-promise{margin:0 0 24px;font-size:clamp(20px,2vw,26px);font-weight:600;line-height:1.45;color:#fff}
.foot-promise b{color:#fff;font-weight:800}
.foot-brand .btn small{color:inherit}
.foot-col{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.foot-col b{font-size:13px;font-weight:800;color:#fff;margin-bottom:10px;letter-spacing:.02em}
.foot-col a{padding:5px 0;font-size:15px;font-weight:600;text-decoration:none;color:#fff;transition:opacity .2s}
.foot-col a:hover{opacity:1;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1.5px}
.foot-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;max-width:1180px;margin:clamp(48px,6vw,72px) auto 0;padding-top:24px;border-top:1px solid rgba(255,255,255,.22)}
.foot-bar p{margin:0;font-size:13px;color:#fff;display:flex;gap:6px 16px;flex-wrap:wrap}
.to-top{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 16px;border-radius:13px;background:rgba(15,20,36,.24);color:#fff;font-size:14px;font-weight:700;text-decoration:none;transition:background-color .2s}
.to-top:hover{background:rgba(15,20,36,.36)}
.to-top .ic{width:16px;height:16px}

/* ---------- 복사 알림 ---------- */
.toast{position:fixed;left:50%;bottom:28px;z-index:80;transform:translate(-50%,16px);opacity:0;pointer-events:none;background:#1F2B47;color:#fff;padding:12px 18px;border-radius:14px;font-size:14px;font-weight:700;box-shadow:0 14px 34px -10px rgba(0,0,0,.5);transition:opacity .24s var(--enter),transform .24s var(--enter)}
.toast.is-on{opacity:1;transform:translate(-50%,0)}

/* ---------- 등장 ---------- */
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .7s var(--enter),transform .7s var(--enter)}
.js .rv.is-in{opacity:1;transform:none}

/* ---------- 반응형 ---------- */
@media (max-width:1080px){
  .top-nav{display:none}
  .top .btn{margin-left:auto}
  .unify ul{grid-template-columns:1fr 1fr}
  .rewrite li{grid-template-columns:1fr;gap:6px}
  .foot-grid{grid-template-columns:1fr 1fr 1fr}
  .foot-brand{grid-column:1/-1}
  .apply{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ap-post{grid-column:span 4}.ap-splash{grid-row:auto}
}
@media (max-width:760px){
  .top{height:64px;gap:12px}
  .top .btn{height:40px;padding:0 14px;font-size:14px}
  .top-brand img{width:100px}
  .hero{padding:104px 16px 96px}
  .btn{height:52px;padding:0 20px}
  .chapter{padding:88px 0}
  .asset{min-height:240px;padding:56px 24px 64px}
  .grid2,.id-grid,.anatomy,.appicon,.colors,.space,.writing,.media,.principles,.ds{grid-template-columns:1fr}
  .pr.is-wide{grid-template-columns:1fr}
  .pr.is-wide .pr-demo{grid-row:auto;margin-bottom:22px}
  .ds-ui{grid-row:auto}
  .grid3,.motifs{grid-template-columns:1fr 1fr}
  .motifs .motif:last-child{grid-column:span 2;aspect-ratio:16/9}
  .donts{grid-template-columns:1fr 1fr}
  .dont-art{height:110px;padding:0 14px}
  .dont figcaption{font-size:13px;padding:12px}
  .retype{font-size:30px}
  .contact,.unify ul{grid-template-columns:1fr}
  .bundles{grid-template-columns:1fr}
  .bundle.is-all{grid-column:auto;flex-wrap:wrap}
  .bundle.is-all em{margin-left:0}
  .weights li{grid-template-columns:1fr;gap:4px}
  .type-hero{flex-direction:column;align-items:flex-start;padding:28px}
  .type-meta{text-align:left}
  .phone{grid-template-columns:repeat(4,52px);gap:16px 14px;padding:22px 22px 28px}
  .app{width:52px;height:52px;border-radius:12px}
  .phone p{left:22px;width:52px;top:calc(22px + 52px + 16px + 52px + 4px)}
  .value{grid-template-columns:56px 1fr;gap:16px;padding:32px 0}
  .colorband{flex-direction:column;height:auto}
  .cb{min-height:120px}
  .colorband:hover .cb,.colorband .cb:hover{flex-grow:1}
  /* 휴대폰: 그림을 고정하지 않고, 단계는 그림 아래에서 옆으로 넘기는 카드 (글자가 그림 뒤로 숨지 않게) */
  .build{grid-template-columns:1fr;gap:0}
  .build-stage{position:relative;top:auto;width:min(100%,340px);margin:0 auto;padding:16px}
  .build-steps{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:16px calc(var(--pad) * -1) 0;padding:0 var(--pad) 4px;scrollbar-width:none;overscroll-behavior-x:contain}
  .build-steps::-webkit-scrollbar{display:none}
  .build-steps li,.build-steps li:first-child{flex:0 0 84%;min-height:0;scroll-snap-align:center;justify-content:flex-start;padding:20px;border-radius:var(--r-lg);background:var(--card)}
  .build-steps b{font-size:20px}
  .build-steps p{font-size:15px}
  .build-hint{display:flex}
  .arch{padding:24px 16px 24px}
  .arch-tree{--gap:8px}
  .arch-row b{font-size:13px;min-height:44px}
  .arch-prd{padding:12px 8px 10px}
  .arch-prd small{font-size:11px}
  .statement{min-height:56vh}
  .pairs,.icons,.mo{grid-template-columns:1fr}
  .dial{grid-template-columns:76px 1fr 76px;gap:10px;font-size:13px}
  .icon-set{grid-template-columns:repeat(4,1fr)}
  .apply{grid-template-columns:minmax(0,1fr)}
  .ap,.ap-post,.ap-card,.ap-mail,.ap-noti,.ap-poster,.ap-slide,.ap-track,.ap-values,.ap-tote,.ap-banner,.ap-splash{grid-column:1/-1;grid-row:auto}
  .ap-splash .ap-phone{width:min(60%,240px);margin:0 auto}
  .ap-poster .poster{width:min(84%,320px);margin:0 auto}
  .track ol{grid-template-columns:1fr;gap:0}
  .track li{padding:0 0 18px 28px}
  .track li i{top:3px}
  .track li::before{left:6px;right:auto;top:20px;bottom:-2px;width:2px;height:auto}
  .banner{flex-direction:column;align-items:flex-start}
  .banner-btn{margin-left:0}
  /* A 마크 구성: 그림은 화면 가운데 고정, 아래로 내리면 설명 카드가 옆으로 넘어가며 그림이 채워진다 */
  .js .build.is-pin{height:calc(100svh + 4 * 70svh)}
  .js .build.is-pin .build-pin{display:flex;flex-direction:column;justify-content:center;gap:14px;position:sticky;top:64px;height:calc(100svh - 64px);margin:0 calc(var(--pad) * -1);padding:0 var(--pad);overflow:hidden}
  .js .build.is-pin .build-stage{position:relative;top:auto;width:min(100%,calc(100svh - 64px - 300px));min-width:220px;margin:0 auto;flex:none}
  .js .build.is-pin .build-steps{position:relative;overflow:visible;scroll-snap-type:none;margin:0;padding:0;transform:translateX(var(--tx,0px));flex:none}
  .js .build.is-pin .build-steps li{transition:opacity .3s var(--enter)}
  .js .build.is-pin .build-hint{margin-top:0}
  .ap-noti{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr;gap:32px 16px}
  .foot-brand{grid-column:1/-1}
  .foot-col:last-child{grid-column:1/-1}
  .foot-bar{flex-direction:column-reverse;align-items:flex-start}
  .zoom{height:200vh}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .rv,.js .intro,.js .g,.js .split .w,.js .colorband .cb,.js .motif .sig,.js .appicon .app.is-aq{opacity:1!important;transform:none!important;translate:none!important}
  .mf-line{opacity:1!important}
  .dont-art::after{clip-path:inset(0)}
  .anatomy-fig .guide line{stroke-dashoffset:0}
}
