@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/space-grotesk-latin-500-normal.lFbtlQH6.woff2) format("woff2"),url(/_astro/space-grotesk-latin-500-normal.CNSSEhBt.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/space-grotesk-latin-600-normal.DjKNqYRj.woff2) format("woff2"),url(/_astro/space-grotesk-latin-600-normal.BflQw4A9.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-latin-700-normal.RjhwGPKo.woff2) format("woff2"),url(/_astro/space-grotesk-latin-700-normal.CwsQ-cCU.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff) format("woff")}@font-face{font-family:IBM Plex Sans KR;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-kr-latin-400-normal.Bc7vhvxM.woff2) format("woff2"),url(/_astro/ibm-plex-sans-kr-latin-400-normal.7kwLL-e3.woff) format("woff")}@font-face{font-family:IBM Plex Sans KR;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-kr-latin-500-normal.2SdHzE3p.woff2) format("woff2"),url(/_astro/ibm-plex-sans-kr-latin-500-normal.DMi_vAK3.woff) format("woff")}@font-face{font-family:IBM Plex Sans KR;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-kr-latin-600-normal.n-2PV5Ut.woff2) format("woff2"),url(/_astro/ibm-plex-sans-kr-latin-600-normal.yks4z4wu.woff) format("woff")}@font-face{font-family:IBM Plex Sans KR;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-kr-latin-700-normal.CIbXnLaA.woff2) format("woff2"),url(/_astro/ibm-plex-sans-kr-latin-700-normal.Bj41MRxQ.woff) format("woff")}@font-face{font-family:IBM Plex Sans KR;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-kr-korean-400-normal.BwgRZ-w5.woff2) format("woff2"),url(/_astro/ibm-plex-sans-kr-korean-400-normal.CDQ9eLCs.woff) format("woff")}@font-face{font-family:IBM Plex Sans KR;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-sans-kr-korean-700-normal.D-mVnqlY.woff2) format("woff2"),url(/_astro/ibm-plex-sans-kr-korean-700-normal.CnbdkB29.woff) format("woff")}:root{--bg: #0e1116;--surface-1: #161a21;--surface-2: #1d222b;--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .14);--text: #eaecef;--text-dim: #949aa5;--accent: #6ee7c7;--accent-ink: #0e1116;--warm: #ffb27a;--font-display: "Space Grotesk", "IBM Plex Sans KR", ui-sans-serif, system-ui, sans-serif;--font-body: "IBM Plex Sans KR", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--radius: 18px;--radius-sm: 12px;--gap: clamp(10px, 1.6vw, 16px);--maxw: 1120px;--shadow: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 12px 40px -24px rgba(0, 0, 0, .7);--ease: cubic-bezier(.22, .61, .36, 1);color-scheme:dark}:root[data-theme=light]{--bg: #f6f7f9;--surface-1: #ffffff;--surface-2: #eef1f4;--border: rgba(14, 17, 22, .08);--border-strong: rgba(14, 17, 22, .16);--text: #14181f;--text-dim: #5b636e;--accent: #109c7c;--accent-ink: #ffffff;--warm: #b9622a;--shadow: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 14px 40px -26px rgba(14, 17, 22, .28);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .3s var(--ease),color .3s var(--ease)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(60% 45% at 15% 0%,color-mix(in oklab,var(--accent) 10%,transparent),transparent 70%);opacity:.6}.wrap{position:relative;z-index:1;width:min(100% - 32px,var(--maxw));margin-inline:auto}.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap)}.tile{position:relative;grid-column:span 4;padding:clamp(18px,2.4vw,26px);border-radius:var(--radius);background:var(--surface-1);border:1px solid var(--border);box-shadow:var(--shadow);transition:transform .28s var(--ease),border-color .28s var(--ease)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--gap)}@media(max-width:560px){.tile{grid-column:span 12}}.eyebrow{font-family:var(--font-display);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);font-weight:600}.mono{font-family:var(--font-mono)}.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.72rem;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.03em;padding:3px 9px;border-radius:999px;border:1px solid var(--border);text-transform:lowercase}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ready,.badge.done{color:var(--accent);border-color:color-mix(in oklab,var(--accent) 40%,var(--border))}.badge.wip{color:var(--warm);border-color:color-mix(in oklab,var(--warm) 40%,var(--border))}.badge.planned,.badge.idea{color:var(--text-dim)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
