@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:ital,wght@0,400;0,500;1,400&display=optional";@font-face{font-family:D2Coding;src:url(/fonts/D2Coding-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:optional}@font-face{font-family:D2Coding;src:url(/fonts/D2Coding-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:optional}:root{--brand-ink:#271828;--brand-sea:#314159;--paper:#eef0f4;--paper-2:#e3e7ee;--paper-3:#d6dce6;--ink:#271828;--ink-2:#3d2e3e;--ink-3:#6d6070;--ink-4:#a299a4;--rule:#c5ccd8;--ink-50:#f5eef0;--ink-100:#d9c9ce;--ink-300:#8f6f7a;--ink-500:#4a3340;--ink-700:#271828;--sea-50:#ebeff4;--sea-100:#c2cedd;--sea-300:#6d80a0;--sea-500:#42526f;--sea-700:#314159;--accent-flame:#6b3a5c;--accent-moss:#3e6e7a;--accent-gold:#314159;--accent-flame-soft:#e4d6df;--accent-moss-soft:#d4e1e5;--accent-gold-soft:#c2cedd;--bg:var(--paper);--bg-raised:var(--paper-2);--bg-sunken:var(--paper-3);--fg:var(--ink);--fg-muted:var(--ink-2);--fg-subtle:var(--ink-3);--fg-placeholder:var(--ink-4);--border:var(--rule);--border-strong:var(--ink-3);--link:var(--brand-sea);--link-hover:var(--brand-ink);--focus-ring:var(--brand-sea);--font-sans:"D2Coding", ui-monospace, "SF Mono", Menlo, Consolas, "Apple SD Gothic Neo", "Noto Sans KR", monospace;--font-serif:"IBM Plex Serif", "Iowan Old Style", Georgia, serif;--font-mono:"D2Coding", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-display:72px;--fs-h1:48px;--fs-h2:34px;--fs-h3:24px;--fs-h4:18px;--fs-body:16px;--fs-small:14px;--fs-caption:12px;--fs-mono-sm:13px;--lh-tight:1.05;--lh-snug:1.2;--lh-normal:1.55;--lh-relaxed:1.7;--tracking-display:-.02em;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.04em;--tracking-caps:.12em;--sp-0:0;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;--sp-10:128px;--r-0:0;--r-1:2px;--r-2:4px;--r-3:8px;--r-4:12px;--r-pill:999px;--shadow-0:none;--shadow-1:0 1px 0 #2718280f, 0 1px 2px #2718280f;--shadow-2:0 2px 4px #2718280f, 0 4px 12px #27182814;--shadow-3:0 8px 24px #2718281a, 0 2px 6px #2718280f;--shadow-inset:inset 0 1px 0 #2718280a;--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-entrance:cubic-bezier(0, 0, 0, 1);--ease-exit:cubic-bezier(.3, 0, 1, 1);--dur-fast:.12s;--dur-base:.2s;--dur-slow:.38s}html,body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}h1,.h1{font-family:var(--font-sans);font-size:var(--fs-h1);font-weight:600;line-height:var(--lh-tight);letter-spacing:var(--tracking-display);color:var(--brand-ink);text-wrap:balance}h2,.h2{font-family:var(--font-sans);font-size:var(--fs-h2);font-weight:600;line-height:var(--lh-snug);letter-spacing:var(--tracking-tight);color:var(--brand-ink);text-wrap:balance}h3,.h3{font-family:var(--font-sans);font-size:var(--fs-h3);font-weight:500;line-height:var(--lh-snug);letter-spacing:var(--tracking-tight);color:var(--brand-ink)}h4,.h4{font-family:var(--font-sans);font-size:var(--fs-h4);font-weight:500;line-height:var(--lh-snug);color:var(--brand-ink)}.display{font-family:var(--font-sans);font-size:var(--fs-display);font-weight:600;line-height:var(--lh-tight);letter-spacing:var(--tracking-display);color:var(--brand-ink)}p,.p{font-size:var(--fs-body);line-height:var(--lh-normal);color:var(--fg);text-wrap:pretty}.lede{font-family:var(--font-serif);color:var(--fg-muted);font-size:22px;font-style:italic;line-height:1.5}small,.small,.caption{font-size:var(--fs-small);color:var(--fg-muted);line-height:var(--lh-normal)}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--fg-subtle);font-weight:500}code,kbd,samp,.code{font-family:var(--font-mono);font-size:var(--fs-mono-sm);color:var(--brand-sea);background:var(--paper-2);border-radius:var(--r-2);border:1px solid var(--rule);padding:1px 6px}pre,.pre{font-family:var(--font-mono);font-size:var(--fs-mono-sm);color:var(--fg);background:var(--paper-2);padding:var(--sp-4);border-radius:var(--r-3);border:1px solid var(--rule);line-height:1.6;overflow:auto}a{color:var(--link);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:color-mix(in oklab, var(--link) 40%, transparent);text-decoration-color:color-mix(in oklab, var(--link) 40%, transparent);transition:color var(--dur-fast) var(--ease-standard), text-decoration-color var(--dur-fast) var(--ease-standard)}a:hover{color:var(--link-hover);text-decoration-color:currentColor}hr{border:0;border-top:1px solid var(--rule);margin:var(--sp-6) 0}::selection{background:var(--brand-sea);color:var(--paper)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--r-2)}.vl-app{height:100vh;position:relative;overflow:hidden}.vl-app__scroll{background:var(--paper);position:absolute;inset:0;overflow:hidden auto}.vl-app__main{padding-top:var(--header-h,58px);min-height:calc(100vh - var(--footer-h,89px))}.vl-page{max-width:1200px;margin:0 auto;padding:0 48px}.vl-page--narrow{max-width:860px}.vl-header{z-index:10;height:var(--header-h,58px);background:var(--paper);border-bottom:1px solid var(--rule);flex-shrink:0;position:relative}.vl-nav{justify-content:space-between;align-items:center;gap:24px;max-width:1200px;height:100%;margin:0 auto;padding:0 24px;display:flex}.vl-nav__brand{align-items:center;text-decoration:none;display:inline-flex}.vl-nav__brand img{height:24px;display:block}.vl-nav__links{gap:28px;margin:0;padding:0;list-style:none;display:flex}.vl-nav__links a{font-family:var(--font-sans);color:var(--ink-2);transition:color var(--dur-fast) var(--ease-standard);padding:4px 0;font-size:14px;font-weight:500;text-decoration:none}.vl-nav__links a:hover{color:var(--ink);text-decoration:none}.vl-nav__links a.is-active{color:var(--ink);border-bottom:2px solid var(--ink)}.vl-footer{border-top:1px solid var(--rule);background:var(--paper);padding:32px 24px 24px}.vl-footer__inner{max-width:1200px;font-family:var(--font-mono);color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:0 auto;font-size:12px;display:flex}.vl-footer__links{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.vl-footer__links a{color:var(--ink-3);text-decoration:none}.vl-footer__links a:hover{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.vl-footer__constants{align-items:center;gap:8px;display:flex}.vl-footer__constants code{background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r-2);color:var(--ink-2);padding:1px 6px;font-size:11px}.vl-btn{font-family:var(--font-sans);border-radius:var(--r-2);cursor:pointer;transition:background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-size:15px;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.vl-btn:hover{text-decoration:none}.vl-btn:active{transform:scale(.98)}.vl-btn[disabled],.vl-btn:disabled{opacity:.4;cursor:not-allowed}.vl-btn--sm{white-space:nowrap;padding:8px 14px;font-size:13px}.vl-btn--lg{padding:14px 24px;font-size:16px}.vl-btn--primary{background:var(--ink);color:var(--paper)}.vl-btn--primary:hover{background:var(--ink-500);color:var(--paper)}.vl-btn--secondary{color:var(--ink);border-color:var(--ink);background:0 0}.vl-btn--secondary:hover{background:var(--paper-2);color:var(--ink)}.vl-btn--flame{background:var(--accent-flame);color:var(--paper)}.vl-btn--flame:hover{color:var(--paper);background:#52263f}.vl-eyebrow{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:12px;font-weight:500;display:inline-block}.vl-chip{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border-radius:var(--r-pill);white-space:nowrap;align-items:center;gap:6px;padding:3px 10px;font-size:11px;font-weight:500;line-height:1.5;display:inline-flex}.vl-chip:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.vl-chip--moss{background:var(--accent-moss-soft);color:#264650}.vl-chip--flame{background:var(--accent-flame-soft);color:#4a2440}.vl-chip--gold{background:var(--accent-gold-soft);color:#314159}.vl-chip--sea{background:var(--sea-100);color:var(--brand-sea)}.vl-chip--default{background:var(--paper-2);color:var(--ink-2);border:1px solid var(--rule)}.vl-section-heading{letter-spacing:-.02em;color:var(--brand-ink);text-wrap:balance;margin:0;font-size:38px;font-weight:600;line-height:1.1}.vl-section{border-top:1px solid var(--rule);padding:80px 0}.vl-section--first{border-top:0}.vl-hero{min-height:calc(100vh - var(--header-h,58px));flex-direction:column;justify-content:center;align-items:flex-start;gap:24px;padding:96px 0 80px;display:flex;position:relative;overflow:hidden}.vl-hero__bg{pointer-events:none;z-index:0;position:absolute;inset:0}.vl-hero__copy{z-index:1;flex-direction:column;gap:24px;max-width:720px;display:flex;position:relative}.vl-hero__brand{color:var(--brand-ink);line-height:1}.vl-hero__tagline{font-family:var(--font-serif);color:var(--ink-2);max-width:48ch;margin:0;font-size:24px;font-style:italic;line-height:1.4}.vl-hero__sub{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.04em;margin:0;font-size:14px}.vl-hero__scroll{color:var(--ink-3);z-index:1;animation:2s infinite vl-nudge;position:absolute;bottom:32px;left:50%;transform:translate(-50%)}@keyframes vl-nudge{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,6px)}}[data-reveal]{opacity:0;transition:opacity var(--dur-slow) var(--ease-standard), transform var(--dur-slow) var(--ease-standard);transform:translateY(12px)}[data-reveal=scale]{transform:scale(.98)}[data-reveal][data-visible=true]{opacity:1;transform:none}.vl-section-header{flex-direction:column;gap:8px;margin-bottom:40px;display:flex}.vl-philosophy{text-align:left;border-top:1px solid var(--rule);padding:120px 0}.vl-philosophy__quote{font-family:var(--font-serif);color:var(--brand-ink);text-wrap:balance;margin:0 0 20px;font-size:clamp(32px,5vw,48px);line-height:1.25}.vl-philosophy__quote em{color:var(--brand-sea);font-style:italic}.vl-philosophy__sub{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:13px}.vl-timeline{grid-template-columns:1fr;gap:32px;margin-top:40px;display:grid;position:relative}.vl-timeline__item{grid-template-columns:24px 1fr;align-items:start;gap:20px;display:grid;position:relative}.vl-timeline__item:before{content:"";background:var(--rule);width:1px;position:absolute;top:24px;bottom:-32px;left:11px}.vl-timeline__item:last-child:before{display:none}.vl-timeline__node{border:2px solid var(--brand-ink);background:var(--paper);border-radius:50%;width:12px;height:12px;margin-top:6px;margin-left:6px}.vl-timeline__content{flex-direction:column;gap:4px;display:flex}.vl-timeline__num{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.1em;margin:0;font-size:12px}.vl-timeline__keyword{color:var(--brand-ink);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:600}.vl-timeline__desc{color:var(--ink-2);margin:0;font-size:15px;line-height:1.55}.vl-pillars__grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-top:40px;display:grid}.vl-pillar{background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r-3);flex-direction:column;gap:12px;padding:24px;display:flex}.vl-pillar__icon{color:var(--brand-sea)}.vl-pillar h3{letter-spacing:-.01em;color:var(--brand-ink);margin:4px 0 0;font-size:22px;font-weight:600;line-height:1.2}.vl-pillar p{color:var(--ink-2);flex:1;margin:0;font-size:14px;line-height:1.55}.vl-cta{border-top:1px solid var(--rule);text-align:center;padding:120px 0}.vl-cta__headline{color:var(--brand-ink);letter-spacing:-.02em;text-wrap:balance;margin:0 0 12px;font-size:clamp(32px,4vw,44px);font-weight:600}.vl-cta__sub{color:var(--ink-2);margin:0 0 32px;max-width:56ch;margin-inline:auto;font-size:17px}.vl-prose p{color:var(--ink-2);margin:0 0 20px;font-size:16px;line-height:1.8}.vl-prose p:last-child{margin-bottom:0}.vl-prose--narrow{max-width:68ch}.vl-pagehero{border-bottom:1px solid var(--rule);flex-direction:column;gap:16px;padding:96px 0 64px;display:flex}.vl-pagehero__title{letter-spacing:-.025em;color:var(--brand-ink);text-wrap:balance;margin:0;font-size:clamp(44px,6vw,64px);font-weight:600;line-height:1.05}.vl-pagehero__sub{font-family:var(--font-serif);color:var(--ink-2);max-width:60ch;margin:0;font-size:20px;font-style:italic}.vl-category{border-top:1px solid var(--rule);flex-direction:column;gap:20px;padding:32px 0;display:flex}.vl-category:first-of-type{border-top:0}.vl-category__title{color:var(--brand-ink);margin:0;font-size:20px;font-weight:600}.vl-category__desc{color:var(--ink-3);margin:0;font-size:14px}.vl-projectcard{border:1px solid var(--rule);border-radius:var(--r-4);background:var(--paper-2);max-width:600px;color:inherit;transition:background var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard);text-decoration:none;display:block;overflow:hidden}a.vl-projectcard:hover{background:var(--paper);color:inherit;text-decoration:none}a.vl-projectcard:active{transform:scale(.998)}.vl-projectcard__media{aspect-ratio:2;background:var(--paper-3);width:100%;overflow:hidden}.vl-projectcard__media img{object-fit:cover;width:100%;height:100%}.vl-projectcard__media svg{width:100%;height:100%}.vl-projectcard__body{flex-direction:column;gap:6px;padding:20px 24px 24px;display:flex}.vl-projectcard__title{color:var(--brand-ink);margin:0;font-size:17px;font-weight:600}.vl-projectcard__desc{color:var(--ink-2);margin:0;font-size:14px;line-height:1.6}.vl-privacy-list{margin:0;padding:0;list-style:none}.vl-privacy-list__item{border-top:1px solid var(--rule);justify-content:space-between;align-items:center;gap:16px;padding:18px 0;display:flex}.vl-privacy-list__item:last-child{border-bottom:1px solid var(--rule)}.vl-privacy-list__link{color:var(--brand-ink);font-size:16px;text-decoration:none}.vl-privacy-list__link:hover{color:var(--brand-ink);text-underline-offset:3px;text-decoration:underline}.vl-privacy-list__date{font-family:var(--font-mono);color:var(--ink-3);font-size:13px}.vl-policy{max-width:72ch}.vl-policy h1{margin:0 0 8px;font-size:28px;font-weight:600}.vl-policy h2{color:var(--brand-ink);margin:40px 0 12px;font-size:20px;font-weight:600}.vl-policy p{color:var(--ink-2);white-space:pre-line;margin:0 0 12px;font-size:15px;line-height:1.7}.vl-policy__meta{font-family:var(--font-mono);color:var(--ink-3);margin:0 0 32px;font-size:13px}.vl-backlink{font-family:var(--font-mono);color:var(--brand-sea);align-items:center;gap:6px;margin-top:48px;font-size:13px;text-decoration:none;display:inline-flex}.vl-backlink:hover{color:var(--brand-ink);text-underline-offset:3px;text-decoration:underline}.vl-notfound{min-height:calc(100vh - var(--header-h,58px) - var(--footer-h,89px));text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:64px 24px;display:flex}.vl-notfound__code{font-family:var(--font-mono);color:var(--brand-ink);letter-spacing:-.02em;margin:0;font-size:clamp(72px,16vw,144px);font-weight:700;line-height:1}.vl-notfound__msg{color:var(--ink-2);margin:0 0 16px;font-size:18px}.vl-shortlink{background:var(--paper);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.vl-shortlink__card{text-align:center;background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r-4);width:100%;max-width:400px;box-shadow:var(--shadow-1);animation:vl-fade .4s var(--ease-entrance);flex-direction:column;align-items:center;padding:40px 32px;display:flex}@keyframes vl-fade{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.vl-shortlink__icon{border-radius:var(--r-3);background:var(--brand-ink);width:64px;height:64px;color:var(--paper);justify-content:center;align-items:center;margin-bottom:20px;display:flex}.vl-shortlink__title{color:var(--brand-ink);letter-spacing:-.01em;margin:0 0 8px;font-size:22px;font-weight:600}.vl-shortlink__desc{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.04em;margin:0 0 28px;font-size:13px}.vl-shortlink__spinner{border:2px solid var(--rule);border-top-color:var(--brand-sea);border-radius:50%;width:28px;height:28px;margin-bottom:12px;animation:.7s linear infinite vl-spin}@keyframes vl-spin{to{transform:rotate(360deg)}}.vl-ds{flex-direction:column;display:flex}.vl-ds__section{border-top:1px solid var(--rule);padding:48px 0}.vl-ds__section:first-child{border-top:0;padding-top:64px}.vl-ds__h2{color:var(--brand-sea);margin:0 0 24px;font-size:24px;font-weight:600}.vl-ds__h3{color:var(--brand-ink);margin:24px 0 12px;font-size:16px;font-weight:600}.vl-ds__grid{flex-wrap:wrap;gap:12px;display:flex}.vl-ds__swatch{flex-direction:column;align-items:center;gap:4px;min-width:92px;display:flex}.vl-ds__swatch-chip{border-radius:var(--r-2);border:1px solid var(--rule);width:80px;height:48px;font-family:var(--font-mono);justify-content:center;align-items:center;font-size:10px;display:flex}.vl-ds__swatch-label{font-family:var(--font-mono);color:var(--ink-3);text-align:center;font-size:11px}.vl-brand-va{color:var(--brand-sea);font-weight:600}.vl-brand-lora{color:var(--brand-ink);font-weight:600}@media (width<=900px){.vl-page{padding:0 24px}.vl-hero{padding:64px 0}.vl-hero__tagline{font-size:20px}.vl-pillars__grid{grid-template-columns:1fr}.vl-nav__links{display:none}.vl-section{padding:56px 0}.vl-philosophy,.vl-cta{padding:72px 0}}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overflow:hidden}body{overscroll-behavior:none}#root{height:100%}img,svg{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}ul,ol{margin:0;padding:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--paper-3);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--ink-4);background-clip:padding-box;border:2px solid #0000}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
