:root{--neutral-50: #fafafa;--neutral-100: #f0efee;--neutral-200: #e0dedd;--neutral-300: #c7c5c4;--neutral-400: #9c9a9a;--neutral-500: #7d7b7b;--neutral-600: #605e5e;--neutral-700: #464646;--neutral-800: #2c2c2c;--neutral-900: #1a1a1a;--neutral-950: #000000;--terra-100: #f5e8e2;--terra-300: #d99680;--terra-500: #a35e47;--terra-700: #7a4534;--terra-900: #4a2a20;--terra-light: #c97d63;--background: var(--neutral-50);--foreground: var(--neutral-950);--card: #ffffff;--primary: var(--terra-500);--primary-fg: #ffffff;--muted: var(--neutral-100);--muted-fg: var(--neutral-600);--accent: var(--terra-100);--accent-fg: var(--terra-700);--border: var(--neutral-200);--border-strong: var(--neutral-300);--ring: var(--terra-500);--page-max: 42rem;--page-pad-x: clamp(1rem, 4vw, 1.5rem);--section-gap: 4rem;--inner-gap: 1.5rem;--radius-sm: .18rem;--radius-md: .5rem;--vignette-start: transparent;--vignette-end: var(--neutral-100);--font-sans: "Barlow", "Helvetica Neue", Helvetica, Arial, ui-sans-serif, system-ui, sans-serif;--font-heading: "Poppins", "Helvetica Neue", Helvetica, Arial, ui-sans-serif, system-ui, sans-serif;--font-serif: "Source Serif 4", "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;--font-grotesk: "Anton", "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:light}:root.dark,:root[data-theme=dark]{--background: var(--neutral-950);--foreground: var(--neutral-50);--card: var(--neutral-900);--primary: var(--terra-light);--primary-fg: var(--neutral-950);--muted: var(--neutral-900);--muted-fg: var(--neutral-400);--accent: var(--terra-900);--accent-fg: var(--terra-300);--border: var(--neutral-700);--border-strong: var(--neutral-400);--ring: var(--terra-light);--vignette-end: var(--neutral-950);color-scheme:dark}:root[lang=ko]{--font-sans: "SUIT Variable", "SUIT", "Pretendard Variable", "Pretendard", "Barlow", "Helvetica Neue", Helvetica, Arial, ui-sans-serif, system-ui, sans-serif;--font-heading: "Pretendard Variable", "Pretendard", "Poppins", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-serif: "Source Serif 4", "Pretendard Variable", "Pretendard", "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;--font-grotesk: "Pretendard Variable", "Pretendard", "Anton", "Helvetica Neue", Arial, sans-serif}:root[lang=ko] body{word-break:keep-all;letter-spacing:0;font-family:var(--font-sans)}:root[lang=ko] :is(h1,h2,h3,h4,h5,h6){font-family:var(--font-heading)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--background);background-image:radial-gradient(circle at center,var(--vignette-start) 0%,var(--vignette-end) 100%);background-attachment:fixed;color:var(--foreground);font-family:var(--font-sans);font-weight:400;font-size:16px;line-height:1.55;letter-spacing:-.02em;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-wrap:anywhere;transition:background-color .2s ease,color .2s ease}@media(pointer:coarse),(max-width:768px){body{background-attachment:scroll}}::selection{background:var(--accent);color:var(--accent-fg)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:600;letter-spacing:-.04em;color:var(--foreground)}.force-english-grotesk{font-family:Anton,Pretendard Variable,Pretendard,sans-serif!important;font-weight:400!important;letter-spacing:-.04em!important}.force-english-serif{font-family:"Source Serif 4",Pretendard Variable,Pretendard,Iowan Old Style,Palatino Linotype,Book Antiqua,Georgia,serif!important;letter-spacing:-.04em!important}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--primary);color:var(--primary-fg);padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.875rem}.skip-link:focus{left:.5rem;top:.5rem}.site-header{position:absolute;top:1.5rem;left:0;right:0;z-index:50}@media(min-width:768px){.site-header{top:1.5rem}}.site-header-inner{width:100%;max-width:var(--page-max);margin:0 auto;padding:0 var(--page-pad-x);display:flex;align-items:center;justify-content:flex-end;gap:.75rem}.header-link{font-family:var(--font-sans);font-size:.875rem;letter-spacing:-.02em;color:var(--neutral-500);transition:color .2s}:root.dark .header-link{color:var(--neutral-300)}.header-link:hover{color:var(--foreground)}.header-actions{display:flex;align-items:center;gap:.25rem}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-md);color:var(--neutral-500);transition:color .2s,background-color .2s;cursor:pointer}:root.dark .icon-btn{color:var(--neutral-300)}.icon-btn:hover{color:var(--foreground);background:var(--neutral-200)}:root.dark .icon-btn:hover{color:#fff;background:var(--neutral-700)}.icon-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.icon-btn .ph,.icon-btn [class^=ph-]{font-size:1rem;line-height:1}.icon-btn .icon-sun{display:none}.icon-btn .icon-moon{display:inline-block}:root.dark .icon-btn .icon-sun{display:inline-block}:root.dark .icon-btn .icon-moon{display:none}.page{width:100%;max-width:var(--page-max);margin:0 auto;padding:7rem var(--page-pad-x) 4rem;display:flex;flex-direction:column;gap:var(--section-gap)}@media(min-width:768px){.page{padding-top:6rem}}.section{display:flex;flex-direction:column;gap:var(--inner-gap)}.hero{padding-top:1.5rem;gap:1.5rem}@media(min-width:768px){.hero{padding-top:3rem}}.wordmark{font-family:var(--font-grotesk);font-weight:400;font-size:clamp(2.25rem,6vw,3.75rem);line-height:1.05;letter-spacing:-.04em;text-transform:uppercase;color:var(--foreground)}.meta-row{display:flex;flex-wrap:wrap;align-items:center;column-gap:1rem;row-gap:.375rem;font-size:.875rem;color:var(--neutral-500)}:root.dark .meta-row{color:var(--neutral-300);opacity:.8}.meta-item{display:inline-flex;align-items:center;gap:.375rem}.meta-icon{font-size:.75rem;line-height:1;flex-shrink:0}.meta-sep{color:var(--neutral-300)}:root.dark .meta-sep{color:var(--neutral-600)}.lede{font-family:var(--font-sans);font-size:1rem;line-height:1.625;color:var(--neutral-600)}:root.dark .lede{color:var(--neutral-400);opacity:.8}.lede-strong{color:var(--neutral-900);font-weight:500}:root.dark .lede-strong{color:var(--neutral-100)}.section-sub{max-width:36rem;font-size:1rem;line-height:1.625;color:var(--neutral-600)}:root.dark .section-sub{color:var(--neutral-400);opacity:.8}.bullet-list{display:flex;flex-direction:column;gap:.625rem;list-style:none}.bullet-item{display:flex;align-items:flex-start;gap:.625rem;font-size:1rem;line-height:1.55;color:var(--neutral-600);transition:opacity .25s ease}:root.dark .bullet-item{color:var(--neutral-400);opacity:.8}.bullet-icon{margin-top:.3rem;font-size:.875rem;line-height:1;flex-shrink:0;color:var(--primary)}.bullet-item code{font-family:var(--font-mono);font-size:.85em;background:var(--muted);padding:.05em .35em;border-radius:var(--radius-sm);color:var(--foreground)}.forward-link{display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;font-weight:500;color:var(--primary);transition:color .18s ease-out}.forward-link:hover{color:var(--accent-fg)}:root.dark .forward-link:hover{color:var(--accent-fg)}.forward-link .fwd-icon{font-size:1rem;line-height:1}.fwd-arrow{font-size:1rem;line-height:1;display:inline-block;transition:transform .24s cubic-bezier(.22,1,.36,1);will-change:transform}.forward-link:hover .fwd-arrow{transform:translate3d(3px,0,0)}.section-label{font-family:var(--font-serif);font-weight:500;font-size:clamp(1.2rem,2.2vw,1.55rem);line-height:.95;letter-spacing:-.04em;color:var(--foreground)}.list{list-style:none;display:flex;flex-direction:column;gap:2rem}.list-tight{gap:1.5rem}.list-item{transition:opacity .25s ease}.featured-link{display:block}.list-item-head{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.list-num{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.1em;color:var(--neutral-500)}:root.dark .list-num{color:var(--neutral-400)}.list-title{font-family:var(--font-serif);font-weight:500;font-size:1.125rem;letter-spacing:-.04em;color:var(--foreground)}.featured-link:hover .list-title{text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--border-strong)}.list-desc{margin-top:.5rem;font-size:1rem;line-height:1.625;color:var(--neutral-600);max-width:36rem}:root.dark .list-desc{color:var(--neutral-400);opacity:.8}.list-desc code{font-family:var(--font-mono);font-size:.85em;background:var(--muted);padding:.05em .35em;border-radius:var(--radius-sm);color:var(--foreground)}.tag-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .55rem;border-radius:.8rem;border:1px solid var(--border);background:var(--muted);font-family:var(--font-mono);font-weight:500;font-size:11px;line-height:1;color:var(--muted-fg);box-shadow:inset 0 1px #fff9}:root.dark .tag-pill{box-shadow:inset 0 1px #ffffff0a}.tag-pill .ph,.tag-pill [class^=ph-]{font-size:.75rem;line-height:1}.install-kicker{margin:0 0 .5rem;font-family:var(--font-sans);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--neutral-500)}:root.dark .install-kicker{color:var(--neutral-300)}:root[lang=ko] .install-kicker{letter-spacing:0;text-transform:none}.terminal-block{overflow:hidden;border-radius:var(--radius-md);border:1px solid var(--border);background:#1a1a1a;box-shadow:0 1px 2px #0000000a}:root.dark .terminal-block{border-color:var(--neutral-800)}.terminal-bar{display:flex;align-items:center;gap:.375rem;padding:.5rem .75rem;background:var(--neutral-800);border-bottom:1px solid var(--neutral-700)}.tdot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.tdot-r{background:#ff5f57}.tdot-y{background:#febc2e}.tdot-g{background:#28c840}.terminal-title{margin-left:.5rem;flex:1;font-family:var(--font-mono);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--neutral-400)}.terminal-copy{color:var(--neutral-500)}.terminal-copy:hover{color:var(--neutral-100);background:#ffffff0f}.terminal-body{margin:0;padding:1rem;overflow-x:auto;white-space:pre;font-family:var(--font-mono);font-size:.86rem;line-height:1.65;color:var(--neutral-100)}.shell-prompt{color:var(--terra-light);-webkit-user-select:none;user-select:none;padding-right:.4rem}.shell-comment{color:var(--neutral-500);font-style:italic}.copy-btn{display:inline-flex;align-items:center;justify-content:center;color:var(--muted-fg);padding:.2rem;border-radius:var(--radius-sm);transition:color .2s,background-color .2s;flex-shrink:0}.copy-btn:hover{color:var(--foreground);background:var(--muted)}.copy-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.copy-btn .ph,.copy-btn [class^=ph-]{font-size:.875rem;line-height:1}.copy-btn .check-icon,.copy-btn.copied .copy-icon{display:none}.copy-btn.copied .check-icon{display:inline-block;color:var(--primary)}.site-footer{width:100%;margin-top:3rem;padding:3rem 0;border-top:1px solid var(--neutral-100);background:var(--neutral-50)}:root.dark .site-footer{border-top-color:#ffffff1a;background:#000}.site-footer-inner{max-width:48rem;margin:0 auto;padding:0 var(--page-pad-x);display:flex;flex-wrap:wrap;align-items:center;justify-content:center;column-gap:1rem;row-gap:.5rem;font-size:.875rem;color:var(--neutral-500)}:root.dark .site-footer-inner{color:var(--neutral-300);opacity:.8}.site-footer-inner .footer-item{display:inline-flex;align-items:center;gap:.4rem;transition:color .2s}.site-footer-inner a.footer-item:hover{color:var(--foreground)}:root.dark .site-footer-inner a.footer-item:hover{color:#fff}.site-footer-inner .footer-icon{font-size:.875rem;line-height:1}.site-footer-inner .footer-tony{color:var(--primary);transition:color .2s}.site-footer-inner .footer-tony:hover{color:var(--accent-fg)}.footer-copy{color:var(--neutral-400)}:root.dark .footer-copy{color:var(--neutral-400)}.footer-sep{color:var(--neutral-300)}:root.dark .footer-sep{color:var(--neutral-600)}@media(hover:hover)and (pointer:fine){.home-content:has(.featured-link:hover) .home-dimmable-item:not(:has(.featured-link:hover)){opacity:.38}:root.dark .home-content:has(.featured-link:hover) .home-dimmable-item:not(:has(.featured-link:hover)){opacity:.3}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media(max-width:640px){.header-link{display:none}.meta-row{font-size:.8rem}.list-item-head{gap:.55rem}}
