:root{--ink:#14161b;--ink-soft:#3a3f47;--quiet:#5b6470;--line:#dde1e6;--paper:#fbfbfc;--surface:#f2f3f5;--card:#fff;--invert-ink:#f4f5f6;--invert-paper:#14161b;--font-sans:"IBM Plex Sans KR", "Malgun Gothic", system-ui, sans-serif;--font-serif:"Noto Serif KR", Georgia, serif;--text-base:clamp(1rem, .96rem + .2vw, 1.0625rem);--text-lead:clamp(1.0625rem, 1rem + .4vw, 1.25rem);--text-section:clamp(1.75rem, 1.2rem + 2.2vw, 2.75rem);--text-hero:clamp(2.75rem, 1.4rem + 5.6vw, 5.5rem);--gutter:clamp(1rem, .5rem + 2.5vw, 2.5rem);--space-section:clamp(4rem, 3rem + 5vw, 8rem);--radius-card:18px;--radius-pill:999px;--shadow-float:0 24px 60px -24px #14161b59, 0 2px 6px #14161b14;--dog-glow:none;--duration-fast:.15s;--ease-out:cubic-bezier(.16, 1, .3, 1)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ink:#eef0f2;--ink-soft:#c9cdd2;--quiet:#a9afba;--line:#2f333b;--paper:#101216;--surface:#171a1f;--card:#1b1e24;--invert-ink:#14161b;--invert-paper:#eef0f2;--shadow-float:0 24px 60px -24px #000000b3, 0 2px 6px #0006;--dog-glow:drop-shadow(0 0 1px #fff9);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--ink:#eef0f2;--ink-soft:#c9cdd2;--quiet:#a9afba;--line:#2f333b;--paper:#101216;--surface:#171a1f;--card:#1b1e24;--invert-ink:#14161b;--invert-paper:#eef0f2;--shadow-float:0 24px 60px -24px #000000b3, 0 2px 6px #0006;--dog-glow:drop-shadow(0 0 1px #fff9);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65}a{color:inherit}a:focus-visible,summary:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:4px}img{display:block}.glyph-serif{font-family:Georgia, var(--font-serif)}.site-header{top:env(safe-area-inset-top,0px);z-index:10;padding:.75rem var(--gutter);background:color-mix(in srgb, var(--paper) 86%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);align-items:center;gap:1.5rem;display:flex;position:sticky}.brand{align-items:center;gap:.6rem;font-size:1.125rem;font-weight:700;text-decoration:none;display:flex}.brand img{border-radius:9px}.site-nav{gap:1.25rem;margin-left:auto;font-size:.9375rem;display:flex}.site-nav a{color:var(--quiet);transition:color var(--duration-fast);text-decoration:none}.site-nav a:hover{color:var(--ink)}@media (width<=640px){.site-nav{display:none}.site-header .store-button{margin-left:auto}}.store-button{border-radius:var(--radius-pill);background:var(--ink);min-height:48px;color:var(--paper);white-space:nowrap;transition:transform var(--duration-fast) var(--ease-out), background var(--duration-fast);justify-content:center;align-items:center;padding:0 1.4rem;font-weight:700;text-decoration:none;display:inline-flex}.store-button:hover{background:var(--ink-soft);transform:translateY(-1px)}.store-button:active{transform:translateY(0)}.store-button--compact{min-height:38px;padding:0 1rem;font-size:.875rem}.store-button--soon{color:var(--quiet);border:1px solid var(--line);cursor:default;background:0 0}.store-button--soon:hover{background:0 0;transform:none}.hero{padding:clamp(3rem, 2rem + 4vw, 6.5rem) var(--gutter) var(--space-section);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:clamp(2rem,4vw,4.5rem);max-width:1320px;margin:0 auto;display:grid}@media (width<=900px){.hero{grid-template-columns:minmax(0,1fr)}}.kicker{color:var(--quiet);letter-spacing:.08em;margin:0 0 1rem;font-size:.875rem;font-weight:500}.hero h1{font-family:var(--font-serif);font-size:var(--text-hero);letter-spacing:-.02em;word-break:keep-all;margin:0;font-weight:900;line-height:1.08}.hero-lead{max-width:30rem;color:var(--ink-soft);font-size:var(--text-lead);word-break:keep-all;margin:1.5rem 0 2rem}.hero-actions{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.hero-meta{color:var(--quiet);font-size:.875rem}.mock{margin:0;padding-top:2.25rem;position:relative}.mock-bar{z-index:2;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--card);box-shadow:var(--shadow-float);white-space:nowrap;align-items:center;gap:.6rem;padding:.4rem .6rem .4rem .9rem;font-size:.8125rem;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.mock-pill{border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--quiet);padding:.2rem .7rem}.mock-pill b{color:var(--ink)}.mock-pill--window{text-overflow:ellipsis;max-width:9rem;overflow:hidden}.mock-stop{background:var(--ink);border-radius:50%;width:26px;height:26px;position:relative}.mock-stop:after{content:"";background:var(--paper);border-radius:1px;position:absolute;inset:9px}.mock-windows{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--card);box-shadow:var(--shadow-float);grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.mock-window+.mock-window{border-left:1px solid var(--line)}.mock-title{border-bottom:1px solid var(--line);background:var(--surface);color:var(--quiet);padding:.55rem .9rem;font-size:.75rem;font-weight:500}.mock-window--translated .mock-title{background:var(--ink);color:var(--paper)}.mock-body{padding:1rem 1.1rem 1.4rem;font-size:clamp(.75rem,.6rem + .35vw,.875rem);line-height:1.6}.mock-body p{word-break:keep-all;margin:0 0 .7rem}.mock-heading{font-size:1.15em;font-weight:700;line-height:1.35}.mock-window:first-child .mock-body{font-family:Georgia, var(--font-serif);color:var(--ink-soft)}@media (width<=520px){.mock-bar .mock-pill--window{display:none}}.running-dog{filter:var(--dog-glow);background:url(/dog-run.png) 0 0/400% 100% no-repeat;animation:.68s steps(4,end) infinite dog-run;display:inline-block}@keyframes dog-run{to{background-position:133.333% 0}}@media (prefers-reduced-motion:reduce){.running-dog{animation:none}html{scroll-behavior:auto}}.section{max-width:1180px;padding:0 var(--gutter) var(--space-section);margin:0 auto}.section-heading{font-family:var(--font-serif);font-size:var(--text-section);letter-spacing:-.01em;word-break:keep-all;margin:0 0 2rem;font-weight:700;line-height:1.25}.section-lead{max-width:40rem;color:var(--ink-soft);word-break:keep-all;margin:-1rem 0 2.5rem}.bento{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.tile{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--card);transition:transform var(--duration-fast) var(--ease-out), border-color var(--duration-fast);padding:1.6rem 1.5rem}.tile:hover{border-color:var(--ink-soft);transform:translateY(-2px)}.tile--wide{background:var(--ink);min-height:15rem;color:var(--paper);border-color:var(--ink);flex-direction:column;grid-area:span 2/span 2;justify-content:flex-end;display:flex}.split-art{background:color-mix(in srgb, var(--paper) 22%, transparent);border-radius:10px;grid-template-columns:1fr 1fr;gap:1px;margin-bottom:auto;display:grid;overflow:hidden}.split-art-pane{background:var(--ink);align-content:start;gap:.45rem;padding:1rem 1.1rem 1.3rem;display:grid}.split-art-pane+.split-art-pane{background:color-mix(in srgb, var(--paper) 8%, var(--ink))}.split-art-glyph{margin-bottom:.35rem;font-size:1.5rem;font-weight:700;line-height:1}.split-art-line{background:color-mix(in srgb, var(--paper) 30%, transparent);border-radius:3px;height:6px}.tile--wide{gap:1.5rem}.tile--wide h3{font-family:var(--font-serif);font-size:clamp(1.5rem,1.1rem + 1.4vw,2.25rem)}.tile h3{margin:0 0 .5rem;font-size:1.125rem;font-weight:700}.tile p{color:var(--quiet);word-break:keep-all;margin:0}.tile--wide p{color:color-mix(in srgb, var(--paper) 78%, transparent);max-width:28rem}@media (width<=820px){.bento{grid-template-columns:minmax(0,1fr)}.tile--wide{grid-area:auto;min-height:11rem}}.promise{margin-bottom:var(--space-section);padding:clamp(3.5rem, 2.5rem + 4vw, 6rem) var(--gutter);background:var(--invert-paper);color:var(--invert-ink)}.promise-inner{max-width:1180px;margin:0 auto}.promise h2{max-width:18ch;font-family:var(--font-serif);font-size:var(--text-section);word-break:keep-all;margin:0 0 1.25rem;line-height:1.25}.promise p{opacity:.8;word-break:keep-all;max-width:38rem;margin:0 0 1.75rem}.promise-link{text-underline-offset:4px;font-weight:700}.languages{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin:0 0 2rem;padding:0;list-style:none;display:grid}.languages li{border-top:2px solid var(--ink);gap:.25rem;padding:1.4rem 1.3rem;display:grid}.lang-glyph{font-size:2.5rem;font-weight:700;line-height:1.1}.lang-name{font-weight:700}.lang-note{color:var(--quiet);font-size:.875rem}@media (width<=720px){.languages{grid-template-columns:repeat(2,minmax(0,1fr))}}.packs{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--card);padding:1rem 1.25rem}.packs summary{cursor:pointer;font-weight:700}.packs p{color:var(--ink-soft);word-break:keep-all;font-size:.9375rem}.table-scroll{overflow-x:auto}.packs table{border-collapse:collapse;width:100%;font-size:.8125rem}.packs th,.packs td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:.5rem .75rem .5rem 0}.packs code{color:var(--quiet);font-size:.75rem}.prose{max-width:46rem;padding:clamp(2.5rem, 2rem + 3vw, 4.5rem) var(--gutter) var(--space-section);word-break:keep-all;margin:0 auto}.prose h1{font-family:var(--font-serif);font-size:clamp(2rem,1.5rem + 2vw,3rem);line-height:1.2}.prose h2{margin-top:2.5rem;font-size:1.25rem}.prose table{border-collapse:collapse;font-size:.9375rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);vertical-align:top;text-align:left;padding:.6rem .75rem}.prose code{word-break:break-all;font-size:.875em}.prose hr{border:0;border-top:1px solid var(--line);margin:4rem 0}.site-footer{padding:2rem var(--gutter) 3rem;border-top:1px solid var(--line);color:var(--quiet);flex-wrap:wrap;align-items:center;gap:1rem 2rem;font-size:.875rem;display:flex}.footer-brand{color:var(--ink);align-items:center;gap:.75rem;font-weight:700;display:flex}.footer-nav{gap:1.25rem;display:flex}.footer-note{margin:0 0 0 auto}@media (width<=640px){.footer-note{margin:0}}
