*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%}html,body{margin:0;padding:0;overflow-x:hidden}nav{scrollbar-width:none}nav::-webkit-scrollbar{display:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}body{font-family:Space Grotesk,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;background:var(--bg);color:var(--text)}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}select,input{font-family:inherit}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}.hover-card{transition:transform .12s ease-out,box-shadow .12s ease-out!important}.hover-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)!important}.hover-btn{transition:transform .1s ease-out,filter .1s ease-out!important}.hover-btn:hover{transform:scale(1.03);filter:brightness(1.05)}.hover-btn:active{transform:scale(.97)}@keyframes hintpulse{0%,to{box-shadow:0 0 #0000}50%{box-shadow:0 0 16px 2px var(--danger)}}@keyframes ledblink{0%,to{opacity:.35}50%{opacity:1}}@keyframes scopeshift{0%{transform:translate(0)}to{transform:translate(-32px)}}@keyframes newpulse{0%,to{box-shadow:0 0 color-mix(in oklab,var(--accent) 55%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in oklab,var(--accent) 0%,transparent)}}@keyframes etlisten{0%,to{box-shadow:0 0 color-mix(in oklab,var(--accent) 45%,transparent)}60%{box-shadow:0 0 0 14px color-mix(in oklab,var(--accent) 0%,transparent)}}@keyframes etrise{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes etpop{0%{transform:scale(1)}40%{transform:scale(1.05)}to{transform:scale(1)}}.et-listening{animation:etlisten 1.35s ease-out infinite}.et-rise{animation:etrise .45s cubic-bezier(.2,.7,.2,1) both}.et-pop{animation:etpop .38s ease-out}.et-key{transition:background .12s ease,transform .12s ease,box-shadow .12s ease}@media (prefers-reduced-motion: reduce){.et-listening,.et-rise,.et-pop{animation:none!important}.et-key{transition:none!important}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}select{font-family:IBM Plex Mono,monospace;color:var(--text);background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:4px 6px;cursor:pointer}input[type=range]{accent-color:var(--accent);cursor:pointer}.blog{--font-blog: "Fraunces", "Shippori Mincho", "Gowun Batang", Georgia, serif;position:relative;width:100%}.blog-grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.blog-wrap,.blog-article{position:relative;z-index:1}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.blog .fade-up{animation:fadeUp .7s cubic-bezier(.2,.7,.2,1) both}@keyframes wavedraw{0%{stroke-dashoffset:1100}to{stroke-dashoffset:0}}.blog-wrap{max-width:1080px;margin:0 auto;padding:clamp(30px,5vw,64px) clamp(18px,4vw,40px) 80px}.blog-mast{margin-bottom:clamp(34px,5vw,60px)}.blog-kicker{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.26em;color:var(--accent);font-weight:600;text-transform:uppercase;margin-bottom:14px}.blog-h1{font-family:var(--font-blog);font-weight:900;font-optical-sizing:auto;font-size:clamp(38px,7vw,82px);line-height:.98;letter-spacing:-.02em;margin:0;text-wrap:balance}.blog-wave{display:block;width:min(440px,80%);height:24px;color:var(--accent);margin:14px 0 0}.blog-wave path{stroke-dasharray:1100;animation:wavedraw 2.4s cubic-bezier(.4,0,.2,1) both .2s}.blog-wave-sm{width:240px;height:16px;margin:12px 0 0}.blog-sub{font-family:var(--font-blog);font-style:italic;font-size:clamp(16px,2vw,21px);color:var(--muted);line-height:1.55;margin:20px 0 0;max-width:540px}.blog-empty{font-family:var(--font-blog);font-style:italic;font-size:18px;color:var(--muted)}.blog-cats{margin-top:22px}.blog-cats.is-compact{margin:0 0 22px}.blog-cat-row{display:flex;flex-wrap:wrap;gap:clamp(14px,2.5vw,28px);align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:10px}.blog-cat{font-family:var(--font-blog);font-size:clamp(17px,2vw,22px);font-weight:600;line-height:1;color:var(--muted);padding:2px 0 8px;margin-bottom:-11px;position:relative;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.blog-cat:hover{color:var(--text)}.blog-cat.is-active{color:var(--text);border-bottom-color:var(--accent)}.blog-cat-count{font-family:IBM Plex Mono,monospace;font-size:.62em;font-weight:500;color:var(--muted);margin-left:5px;vertical-align:super}.blog-subs{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.blog-subtab{font-family:IBM Plex Mono,monospace;font-size:11.5px;font-weight:600;letter-spacing:.02em;color:var(--muted);padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:transparent;transition:all .15s}.blog-subtab:hover{color:var(--text);border-color:var(--muted)}.blog-subtab.is-active{color:var(--onAccent);background:var(--accent);border-color:var(--accent)}.blog-subtab .blog-cat-count{vertical-align:baseline;margin-left:4px;color:inherit;opacity:.75}.is-compact .blog-cat-row{gap:clamp(12px,2vw,20px);padding-bottom:8px}.is-compact .blog-cat{font-size:15px}.is-compact .blog-subs{margin-top:12px}.blog-featured{margin-bottom:clamp(40px,6vw,72px)}.blog-feat-btn{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(18px,3vw,38px);width:100%;text-align:left;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:clamp(22px,3vw,36px) 0;transition:background .25s}.blog-featured:has(.blog-feat-btn:not(:has(.blog-feat-cover))) .blog-feat-btn{grid-template-columns:1fr}.blog-feat-btn:hover{background:color-mix(in oklab,var(--accent) 6%,transparent)}.blog-feat-cover{order:2;overflow:hidden;border-radius:10px;border:1px solid var(--line);aspect-ratio:4/3}.blog-feat-cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}.blog-feat-btn:hover .blog-feat-cover img{transform:scale(1.04)}.blog-feat-meta{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}.blog-feat-title{font-family:var(--font-blog);font-weight:700;font-size:clamp(26px,3.6vw,46px);line-height:1.06;letter-spacing:-.015em;margin:12px 0 0;text-wrap:balance}.blog-feat-excerpt{font-family:var(--font-blog);font-size:clamp(15px,1.6vw,18px);color:var(--muted);line-height:1.6;margin:14px 0 0}.blog-feat-read{display:inline-block;margin-top:18px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--accent);border-bottom:1.5px solid var(--accent);padding-bottom:2px;transition:gap .2s}.blog-rule{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:12px;margin:0 0 8px}.blog-rule:after{content:"";flex:1;height:1px;background:var(--line)}.blog-list{list-style:none;margin:0;padding:0}.blog-row{border-bottom:1px solid var(--line)}.blog-row-btn{display:flex;align-items:center;gap:clamp(14px,2.5vw,30px);width:100%;text-align:left;padding:clamp(16px,2.4vw,26px) 4px;position:relative;transition:padding .2s}.blog-row-btn:hover{padding-left:14px}.blog-num{font-family:var(--font-blog);font-size:clamp(20px,2.6vw,32px);font-weight:700;color:var(--line);flex:none;width:1.6em;transition:color .2s;font-variant-numeric:tabular-nums}.blog-row-btn:hover .blog-num{color:var(--accent)}.blog-row-main{flex:1;min-width:0}.blog-row-title{display:block;font-family:var(--font-blog);font-weight:600;font-size:clamp(19px,2.4vw,30px);line-height:1.15;letter-spacing:-.01em;transition:color .2s}.blog-row-btn:hover .blog-row-title{color:var(--accent)}.blog-row-meta{display:block;font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;color:var(--muted);margin-top:6px}.blog-row-wave{width:90px;height:14px;color:var(--accent);opacity:0;transform:translate(-8px);transition:opacity .25s,transform .25s;flex:none}.blog-row-btn:hover .blog-row-wave{opacity:.7;transform:none}.blog-row-arrow{font-size:20px;color:var(--accent);opacity:0;transform:translate(-6px);transition:opacity .2s,transform .2s;flex:none}.blog-row-btn:hover .blog-row-arrow{opacity:1;transform:none}.blog-article{max-width:720px;margin:0 auto;padding:clamp(26px,4vw,52px) clamp(18px,4vw,32px) 90px}.blog-back{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.06em;font-weight:600;color:var(--muted);padding:6px 0;margin-bottom:26px;transition:color .15s}.blog-back:hover{color:var(--accent)}.blog-art-meta{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.blog-art-title{font-family:var(--font-blog);font-weight:900;font-optical-sizing:auto;font-size:clamp(32px,5.5vw,58px);line-height:1.04;letter-spacing:-.02em;margin:14px 0 0;text-wrap:balance}.blog-art-cover{margin:26px 0 0;border-radius:12px;overflow:hidden;border:1px solid var(--line)}.blog-art-cover img{width:100%;display:block}.blog .prose{font-family:var(--font-blog);font-size:19px;line-height:1.85;color:var(--text);margin-top:30px;max-width:68ch}.blog .prose>p:first-of-type:first-letter{float:left;font-weight:900;font-size:3.4em;line-height:.74;padding:6px 12px 0 0;color:var(--accent)}.blog .prose h2{font-family:var(--font-blog);font-weight:700;font-size:1.5em;letter-spacing:-.01em;margin:1.6em 0 .5em;line-height:1.2}.blog .prose h3{font-family:var(--font-blog);font-weight:700;font-size:1.2em;margin:1.4em 0 .4em}.blog .prose p{margin:0 0 1.15em}.blog .prose a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in oklab,var(--accent) 45%,transparent);transition:border-color .15s}.blog .prose a:hover{border-bottom-color:var(--accent)}.blog .prose strong{font-weight:700}.blog .prose em{font-style:italic}.blog .prose ul,.blog .prose ol{margin:0 0 1.15em;padding-left:1.3em}.blog .prose li{margin:.3em 0}.blog .prose img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}.blog .prose blockquote{margin:1.4em 0;padding:4px 0 4px 22px;border-left:3px solid var(--accent);font-style:italic;color:var(--muted);font-size:1.06em}.blog .prose hr{border:none;border-top:1px solid var(--line);margin:2em 0}.blog .prose code{font-family:IBM Plex Mono,monospace;font-size:.85em;background:var(--panel2);padding:2px 6px;border-radius:5px}.blog .prose pre{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:16px;overflow-x:auto;margin:1.4em 0}.blog .prose pre code{background:none;padding:0}.blog .prose .embed{position:relative;width:100%;aspect-ratio:16/9;margin:1.6em 0;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--panel2)}.blog .prose .embed iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.blog .prose figure.audio{margin:1.6em 0;padding:14px 16px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:10px;background:var(--panel2)}.blog .prose figure.audio audio{width:100%;display:block}.blog .prose figure.audio figcaption{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;color:var(--muted);margin-top:8px}.blog-nav{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:56px;border-top:1px solid var(--line);padding-top:24px}.blog-nav-btn{text-align:left;padding:14px 16px;border:1px solid var(--line);border-radius:12px;transition:border-color .15s,background .15s}.blog-nav-btn:hover{border-color:var(--accent);background:color-mix(in oklab,var(--accent) 5%,transparent)}.blog-nav-next{text-align:right}.blog-nav-lab{display:block;font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:5px}.blog-nav-title{display:block;font-family:var(--font-blog);font-weight:600;font-size:15px;line-height:1.25;color:var(--text)}@media (max-width: 680px){.blog-feat-btn{grid-template-columns:1fr}.blog-feat-cover{order:-1}.blog-row-wave{display:none}.blog-nav{grid-template-columns:1fr}.blog-nav-next{text-align:left}.blog .prose{font-size:17px}}
