@font-face{font-family:Manrope;src:url(../fonts/manrope-variable.woff2)format("woff2");font-weight:200 800;font-style:normal;font-display:swap}:root{--accent:#1d4ed8;--accent-dark:#1e40af;--accent-soft:#eef3ff;--ink:#0f172a;--ink-2:#475569;--ink-3:#64748b;--gray-50:#f8f9fa;--gray-100:#f0f2f4;--gray-200:#e3e6ea;--gray-300:#cbd1d8;--ok:#1f7a45;--white:#fff;--radius:12px;--radius-lg:16px;--shadow:0 1px 2px #0f172a0d,0 8px 24px -12px #0f172a2e;--container:1160px;--gutter:clamp(18px,4vw,36px);--header-h:68px;--font:"Manrope",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 20px)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--white);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:1.0625rem;font-weight:450;line-height:1.65;overflow-x:clip}img,svg{max-width:100%;display:block}img{height:auto}a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--accent-dark)}h1,h2,h3,h4{color:var(--ink);letter-spacing:-.02em;text-wrap:balance;margin:0;font-weight:700;line-height:1.2}p{text-wrap:pretty;margin:0}ul,ol{margin:0;padding:0}figure,dl,dd{margin:0}button{font:inherit;color:inherit}::selection{background:var(--accent-soft);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.skip-link{z-index:200;background:var(--ink);color:#fff;border-radius:8px;padding:10px 14px;text-decoration:none;position:absolute;top:-100px;left:12px}.skip-link:focus{color:#fff;top:12px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.container{width:100%;max-width:calc(var(--container) + var(--gutter)*2);padding:0 var(--gutter);margin:0 auto}.section{padding:clamp(56px,7vw,92px) 0}.section--blue{border-top:1px solid var(--gray-200);background:#fff}.section:not(.section--blue)+.section:not(.section--blue){padding-top:0}.head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 32px;margin-bottom:30px;display:flex}.head h2{font-size:clamp(1.6rem,1.25rem + 1.3vw,2.2rem)}.head p{color:var(--ink-2);max-width:62ch;margin-top:10px}.head .more{white-space:nowrap;font-size:.95rem;font-weight:650;text-decoration:none}.head .more:after{content:" →"}.lead{color:var(--ink-2);font-size:clamp(1.08rem,1rem + .4vw,1.25rem);line-height:1.6}.muted{color:var(--ink-3)}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}@media (width<=960px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.grid-3{grid-template-columns:minmax(0,1fr)}}.btn{border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 20px;font-size:.96rem;font-weight:650;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn:hover{background:var(--accent-dark);border-color:var(--accent-dark);color:#fff}.btn svg{flex:none;width:17px;height:17px}.btn--outline{color:var(--ink);border-color:var(--gray-300);background:#fff}.btn--outline:hover{background:var(--gray-50);border-color:var(--ink-3);color:var(--ink)}.btn--sm{min-height:38px;padding:0 14px;font-size:.88rem}.btn-row{flex-wrap:wrap;gap:10px;display:flex}.badge{border:1px solid var(--gray-200);color:var(--ink-2);background:#fff;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:.86rem;font-weight:650;display:inline-flex}.badge:before{content:"";background:#34b36a;border-radius:50%;width:8px;height:8px}.tag{background:var(--gray-50);border:1px solid var(--gray-100);color:var(--ink-2);white-space:nowrap;border-radius:6px;align-items:center;padding:3px 10px;font-size:.8rem;font-weight:600;display:inline-flex}.tags{flex-wrap:wrap;gap:6px;display:flex}.card{border:1px solid var(--gray-200);border-radius:var(--radius-lg);background:#fff}a.card{color:inherit;text-decoration:none;transition:border-color .15s,box-shadow .2s}a.card:hover{border-color:var(--gray-200);box-shadow:var(--shadow)}.label{color:var(--ink-3);font-size:.8rem;font-weight:700}.icon{flex:none;width:18px;height:18px}.site-header{z-index:100;height:var(--header-h);border-bottom:1px solid var(--gray-200);backdrop-filter:saturate(180%)blur(10px);background:#fffffff2;position:sticky;top:0}.site-header.is-scrolled{box-shadow:0 4px 16px -12px #0f172a59}.site-header .container{align-items:center;gap:20px;height:100%;display:flex}.brand{color:var(--ink);align-items:center;gap:10px;margin-right:auto;text-decoration:none;display:inline-flex}.brand:hover{color:var(--accent-dark)}.brand img{border-radius:9px;width:34px;height:34px}.brand b{letter-spacing:-.02em;color:var(--accent);font-size:1.14rem;font-weight:800}.brand:hover b{color:var(--accent-dark)}.nav{align-items:center;gap:2px;display:flex}.nav a{color:var(--ink-2);border-radius:8px;padding:8px 11px;font-size:.94rem;font-weight:600;text-decoration:none}.nav a:hover{background:var(--gray-50);color:var(--ink)}.nav a[aria-current=page]{color:var(--accent-dark);background:var(--accent-soft)}.menu-btn{border:1px solid var(--gray-200);width:42px;height:42px;color:var(--ink);cursor:pointer;background:#fff;border-radius:10px;justify-content:center;align-items:center;display:none}.menu-btn svg{width:20px;height:20px}@media (width<=1080px){.nav,.header-cv{display:none}.menu-btn{display:inline-flex}}.mobile-menu{inset:var(--header-h)0 0;z-index:99;padding:12px var(--gutter)32px;background:#fff;display:none;position:fixed;overflow-y:auto}.mobile-menu.is-open{display:block}.mobile-menu nav{display:grid}.mobile-menu nav a{border-bottom:1px solid var(--gray-100);color:var(--ink);padding:14px 4px;font-size:1.1rem;font-weight:650;text-decoration:none}.mobile-menu nav a[aria-current=page]{color:var(--accent)}.mobile-menu .btn-row{margin-top:24px}.mobile-menu .btn{flex:auto}body.menu-open{overflow:hidden}.site-footer{border-top:1px solid var(--gray-200);background:#fff;padding:56px 0 28px;font-size:.95rem}.footer-grid{grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:32px;display:grid}.footer-grid h2{color:var(--ink-3);margin-bottom:12px;font-size:.82rem;font-weight:700}.footer-grid ul{gap:8px;list-style:none;display:grid}.footer-grid a{color:var(--ink-2);overflow-wrap:anywhere;text-decoration:none}.footer-grid a:hover{color:var(--accent)}.footer-about .brand,.footer-about .brand:hover{color:var(--accent-dark)}.footer-about p{color:var(--ink-2);max-width:34ch;margin-top:12px}.socials{gap:8px;margin-top:16px;display:flex}.socials a{border:1px solid var(--gray-200);width:38px;height:38px;color:var(--ink-2);background:#fff;border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.socials a:hover{border-color:var(--gray-200);color:var(--accent)}.socials svg{width:17px;height:17px}.footer-bottom{border-top:1px solid var(--gray-200);color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:40px;padding-top:20px;font-size:.88rem;display:flex}@media (width<=900px){.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.footer-about{grid-column:1/-1}}@media (width<=460px){.footer-grid{grid-template-columns:minmax(0,1fr)}}.hero-photo{justify-self:end;width:100%;max-width:420px;position:relative}.hero-photo img{aspect-ratio:4/5;object-fit:cover;width:100%}.hero-photo figcaption{z-index:2;border:1px solid var(--gray-200);background:#fffffff2;border-radius:12px;padding:10px 14px;font-size:.88rem;line-height:1.35;position:absolute;bottom:14px;left:14px}.hero-photo figcaption b{font-weight:700;display:block}.hero-photo figcaption span{color:var(--ink-3)}@media (width<=880px){.hero-photo{justify-self:start;max-width:400px}}.contact-band{border:1px solid var(--gray-200);background:#fff;border-radius:22px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:28px;padding:clamp(28px,5vw,48px);display:grid}.contact-band h2{font-size:clamp(1.6rem,1.3rem + 1.2vw,2.2rem)}.contact-band p{color:var(--ink-2);margin-top:10px}.contact-band ul{gap:10px;list-style:none;display:grid}.contact-band li a,.contact-band li button{border:1px solid var(--gray-200);width:100%;color:var(--ink);cursor:pointer;text-align:left;overflow-wrap:anywhere;background:#fff;border-radius:12px;align-items:center;gap:12px;padding:12px 14px;font-size:.96rem;font-weight:650;text-decoration:none;display:flex}.contact-band li a:hover,.contact-band li button:hover{border-color:var(--accent);color:var(--accent-dark)}.contact-band li svg{width:18px;height:18px;color:var(--accent);flex:none}@media (width<=800px){.contact-band{grid-template-columns:minmax(0,1fr)}}.page-head{border-bottom:1px solid var(--gray-200);background:#fff;padding:clamp(36px,5vw,60px) 0}.crumbs{color:var(--ink-3);flex-wrap:wrap;gap:6px;font-size:.86rem;display:flex}.crumbs a{color:var(--ink-3);text-decoration:none}.crumbs a:hover{color:var(--accent)}.page-head h1{letter-spacing:-.03em;margin-top:12px;font-size:clamp(2rem,1.5rem + 2.1vw,2.9rem)}.page-head p{color:var(--ink-2);max-width:64ch;margin-top:12px;font-size:1.1rem}.page-head .btn-row{margin-top:22px}.split{grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);align-items:start;gap:clamp(28px,5vw,64px);display:grid}.split .aside{top:calc(var(--header-h) + 24px);position:sticky}@media (width<=880px){.split{grid-template-columns:minmax(0,1fr)}.split .aside{position:static}}.dl{border-top:1px solid var(--gray-200);margin-top:20px;display:grid}.dl div{border-bottom:1px solid var(--gray-200);grid-template-columns:120px minmax(0,1fr);gap:12px;padding:10px 0;font-size:.95rem;display:grid}.dl dt{color:var(--ink-3);font-weight:600}.principles{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.principle{padding:22px}.principle h3{font-size:1.08rem}.principle p{color:var(--ink-2);margin-top:8px;font-size:.96rem}@media (width<=860px){.principles{grid-template-columns:minmax(0,1fr)}}.edu{padding:24px}.edu h3{font-size:1.2rem}.edu .dl{margin-top:14px}.edu p{color:var(--ink-2);margin-top:12px;font-size:.95rem}.school{border-top:1px solid var(--gray-200);margin-top:16px;list-style:none}.school li{border-bottom:1px solid var(--gray-200);grid-template-columns:64px minmax(0,1fr);gap:12px;padding:12px 0;display:grid}.school .yr{color:var(--ink-3);font-weight:650}.school b{font-weight:650}.school span{color:var(--ink-3);font-size:.92rem;display:block}.services{gap:20px;display:grid}.service{grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:16px 36px;padding:26px;display:grid}.service h3{font-size:1.22rem}.service .who{color:var(--ink-3);margin-top:8px;font-size:.94rem}.service p{color:var(--ink-2)}.service ul{color:var(--ink-2);grid-template-columns:1fr 1fr;gap:6px 18px;margin-top:14px;font-size:.94rem;list-style:none;display:grid}.service li{padding-left:20px;position:relative}.service li:before{content:"✓";color:var(--accent);font-weight:800;position:absolute;left:0}.service .tags{margin-top:14px}@media (width<=800px){.service,.service ul{grid-template-columns:minmax(0,1fr)}}.steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;display:grid}.step{padding:22px}.step .n{background:var(--accent-soft);width:30px;height:30px;color:var(--accent-dark);border-radius:8px;justify-content:center;align-items:center;font-size:.9rem;font-weight:800;display:inline-flex}.step h3{margin-top:12px;font-size:1.05rem}.step p{color:var(--ink-2);margin-top:6px;font-size:.93rem}@media (width<=960px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.steps{grid-template-columns:minmax(0,1fr)}}.faq details{border-bottom:1px solid var(--gray-200)}.faq details:first-child{border-top:1px solid var(--gray-200)}.faq summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;font-weight:650;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--accent);font-size:1.4rem;font-weight:500;line-height:1}.faq details[open] summary:after{content:"−"}.faq .answer{color:var(--ink-2);max-width:70ch;padding:0 0 18px}.client{flex-direction:column;gap:8px;padding:22px;display:flex}.client .sector{color:var(--ink-3);font-size:.84rem;font-weight:700}.client h3{font-size:1.1rem}.client p{color:var(--ink-2);font-size:.94rem}.client .foot{color:var(--ink-3);justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:8px;font-size:.86rem;display:flex}.client .foot a{font-weight:650;text-decoration:none}.outcome{padding:22px}.outcome b{color:var(--accent-dark);letter-spacing:-.03em;font-size:2rem;font-weight:800;display:block}.outcome h3{margin-top:4px;font-size:1.02rem}.outcome p{color:var(--ink-2);margin-top:8px;font-size:.93rem}.outcome span{color:var(--ink-3);margin-top:12px;font-size:.84rem;font-weight:650;display:block}.not-found{text-align:center;padding:clamp(64px,10vw,120px) 0}.not-found .code{color:#8a929c;font-size:clamp(4rem,12vw,7rem);font-weight:800;line-height:1}.not-found h1{margin-top:12px;font-size:clamp(1.6rem,1.3rem + 1.4vw,2.4rem)}.not-found p{color:var(--ink-2);max-width:46ch;margin:12px auto 0}.not-found .btn-row{justify-content:center;margin-top:24px}.projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.project{flex-direction:column;gap:8px;padding:24px;scroll-margin-top:90px;transition:border-color .15s,box-shadow .15s;display:flex}.project:hover{border-color:var(--gray-300);box-shadow:0 12px 28px -22px #0f172a73}.project .top{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.project .kind{color:var(--accent-dark);font-size:.84rem;font-weight:700}.project h3{font-size:1.2rem}.project .summary{color:var(--ink-2);font-size:.96rem}.project .foot{border-top:1px solid var(--gray-100);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-top:auto;padding-top:14px;font-size:.9rem;display:flex}.project .tags{margin-bottom:8px}.project .meta{color:var(--ink-3)}.project .private{color:var(--ink-3);align-items:center;gap:6px;font-weight:600;display:inline-flex}.project .private svg{width:15px;height:15px}@media (width<=800px){.projects{grid-template-columns:minmax(0,1fr)}}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--gray-200);color:var(--ink-2);cursor:pointer;background:#fff;border-radius:999px;padding:7px 13px;font-size:.88rem;font-weight:650}.chip:hover{border-color:var(--gray-200);color:var(--ink)}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.chip .count{opacity:.8;margin-left:2px;font-weight:600}.search{width:min(300px,100%);position:relative}.search svg{width:16px;height:16px;color:var(--ink-3);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search input{border:1px solid var(--gray-300);width:100%;height:42px;color:var(--ink);font:inherit;background:#fff;border-radius:10px;padding:0 12px 0 36px;font-size:.95rem}.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--gray-100);outline:none}.sites{border-collapse:collapse;width:100%;font-size:.95rem}.sites th{text-align:left;color:var(--ink-3);background:var(--gray-50);border-bottom:1px solid var(--gray-200);padding:12px 16px;font-size:.82rem;font-weight:700}.sites td{border-bottom:1px solid var(--gray-100);vertical-align:top;color:var(--ink-2);padding:14px 16px}.sites tr:last-child td{border-bottom:0}.sites td.name b{color:var(--ink);font-weight:700;display:block}.sites td.name .d{color:var(--ink-3);font-size:.88rem}.sites td.year{white-space:nowrap}.sites td.link a{white-space:nowrap;font-weight:650;text-decoration:none}.sites td.link span{color:var(--ink-3);white-space:nowrap;font-size:.86rem}.sites tr.is-hidden{display:none}.sites tbody tr:hover td{background:var(--gray-50)}.empty{text-align:center;color:var(--ink-3);padding:24px;display:none}.empty.is-visible{display:block}@media (width<=760px){.sites thead{display:none}.sites,.sites tbody,.sites tr,.sites td{width:100%;display:block}.sites tr{border-bottom:1px solid var(--gray-100);padding:12px 16px}.sites tr.is-hidden{display:none}.sites td{border:0;padding:2px 0}.sites td.sector,.sites td.stack{font-size:.88rem;display:inline}.sites td.sector:after{content:" ·"}.sites td.year{display:none}.sites td.link{margin-top:6px}.sites td.sector,.sites td.link{padding-left:46px}}.timeline{gap:20px;display:grid}.job{grid-template-columns:180px minmax(0,1fr);gap:12px 32px;padding:clamp(20px,3vw,30px);display:grid}.job .when{color:var(--ink-3);font-size:.92rem;font-weight:650}.job h3{font-size:1.25rem}.job .org{color:var(--ink-2);margin-top:4px;font-weight:650}.job .org span{color:var(--ink-3);font-weight:500}.job .roles{gap:4px;margin-top:10px;font-size:.92rem;display:grid}.job .roles div{gap:10px;display:flex}.job .roles span{color:var(--ink-3);min-width:150px}.job .summary{color:var(--ink-2);margin-top:12px}.job ul{gap:8px;margin-top:14px;list-style:none;display:grid}.job li{color:var(--ink-2);padding-left:18px;font-size:.96rem;position:relative}.job li:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:.7em;left:2px}.job .tags{margin-top:16px}.job.current{border-color:var(--gray-200)}@media (width<=760px){.job{grid-template-columns:minmax(0,1fr)}.job .roles span{min-width:120px}}.form{gap:16px;padding:clamp(20px,3vw,32px);display:grid}.field{gap:6px;display:grid}.field label{font-size:.9rem;font-weight:650}.field .req{color:#b03a2e}.field input,.field select,.field textarea{border:1px solid var(--gray-300);width:100%;color:var(--ink);font:inherit;background:#fff;border-radius:10px;padding:11px 13px;font-size:.98rem}.field textarea{resize:vertical;min-height:150px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--gray-100);outline:none}.hp{position:absolute;left:-5000px}.post-list{gap:14px;display:grid}.post{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:6px 20px;padding:20px 22px;display:grid}.post .meta{color:var(--ink-3);font-size:.86rem;font-weight:600}.post h3{margin-top:4px;font-size:1.12rem}.post p{color:var(--ink-2);margin-top:6px;font-size:.95rem}.post .lang{color:var(--ink-3);white-space:nowrap;padding-top:2px;font-size:.8rem;font-weight:650}.post.is-hidden{display:none}@media (width<=600px){.post{grid-template-columns:minmax(0,1fr)}.post .lang{display:none}}.article-head{border-bottom:1px solid var(--gray-200);background:#fff;padding:clamp(36px,5vw,56px) 0}.article-head h1{letter-spacing:-.03em;max-width:26ch;margin-top:12px;font-size:clamp(1.9rem,1.4rem + 2.1vw,2.8rem);line-height:1.12}.article-head .lead{max-width:64ch;margin-top:14px}.byline{color:var(--ink-3);align-items:center;gap:12px;margin-top:22px;font-size:.92rem;display:flex}.byline img{object-fit:cover;object-position:50% 15%;border:1px solid var(--gray-200);border-radius:50%;width:42px;height:42px}.byline b{color:var(--ink);font-weight:700;display:block}.article-layout{grid-template-columns:minmax(0,1fr) 230px;align-items:start;gap:clamp(28px,5vw,56px);padding:clamp(36px,5vw,56px) 0 clamp(56px,7vw,88px);display:grid}.toc{top:calc(var(--header-h) + 24px);position:sticky}.toc h2{color:var(--ink-3);margin-bottom:10px;font-size:.82rem;font-weight:700}.toc ol{border-left:2px solid var(--gray-100);gap:2px;list-style:none;display:grid}.toc a{color:var(--ink-3);border-left:2px solid #0000;margin-left:-2px;padding:5px 0 5px 12px;font-size:.86rem;line-height:1.4;text-decoration:none;display:block}.toc a:hover{color:var(--ink)}.toc a.is-active{color:var(--accent-dark);border-left-color:var(--accent)}@media (width<=1000px){.article-layout{grid-template-columns:minmax(0,1fr)}.toc{display:none}}.prose{color:#273449;max-width:72ch;font-size:1.05rem;line-height:1.75}.prose>*+*{margin-top:1.1em}.prose h2{margin-top:2em;font-size:clamp(1.4rem,1.2rem + .7vw,1.7rem)}.prose h3{margin-top:1.6em;font-size:1.2rem}.prose h4{margin-top:1.4em;font-size:1.05rem}.prose strong,.prose b{color:var(--ink);font-weight:700}.prose ul,.prose ol{padding-left:1.25em}.prose li+li{margin-top:.4em}.prose code{background:var(--gray-100);border-radius:5px;padding:.12em .4em;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.88em}.prose pre{color:#e6eef6;background:#111827;border-radius:12px;padding:16px 18px;font-size:.86rem;line-height:1.6;overflow-x:auto}.prose pre code{color:inherit;background:0 0;padding:0}.prose blockquote{border-left:3px solid var(--accent);background:var(--gray-50);color:var(--ink);border-radius:0 10px 10px 0;margin:1.4em 0;padding:14px 18px}.prose blockquote footer{color:var(--ink-3);margin-top:6px;font-size:.86rem}.prose mark,.prose .highlight{background:var(--accent-soft);color:var(--ink);border-radius:3px;padding:0 .2em}.prose .table-wrap{border:1px solid var(--gray-200);border-radius:12px;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;min-width:520px;font-size:.92rem}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--gray-100);vertical-align:top;padding:10px 14px}.prose th{background:var(--gray-50);color:var(--ink-3);font-size:.82rem}.prose tr:last-child td{border-bottom:0}.prose td.yes{color:var(--ok)}.prose td.no{color:#b03a2e}.prose td.maybe{color:#8a5a00}.prose .info-grid,.prose .platform-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;display:grid}.prose .info-card,.prose .platform-card{border:1px solid var(--gray-200);background:#fff;border-radius:12px;padding:16px}.prose .info-card-title,.prose .p-name{color:var(--ink);font-weight:700}.prose .info-card-text,.prose .p-note{margin-top:6px;font-size:.93rem}.prose .p-fee{color:var(--accent-dark);margin-top:4px;font-size:.82rem;font-weight:650}.prose .callout{background:var(--gray-50);border:1px solid var(--gray-200);border-left:3px solid var(--accent);border-radius:12px;padding:14px 18px}.prose .callout.green{border-left-color:var(--ok)}.prose .callout.orange{border-left-color:#b7791f}.prose .callout-label{color:var(--accent-dark);margin-bottom:4px;font-size:.8rem;font-weight:800}.prose .callout.green .callout-label{color:var(--ok)}.prose .callout.orange .callout-label{color:#8a5a00}.prose .step-list{gap:12px;padding:0;list-style:none;display:grid}.prose .step-item{grid-template-columns:36px minmax(0,1fr);gap:12px;margin:0;display:grid}.prose .step-num{background:var(--accent-soft);width:30px;height:30px;color:var(--accent-dark);border-radius:8px;justify-content:center;align-items:center;font-size:.88rem;font-weight:800;display:inline-flex}.prose .step-content-title{color:var(--ink);font-weight:700}.prose .step-content-text{margin-top:2px;font-size:.95rem}.prose .code-block{background:#111827;border-radius:12px;overflow:hidden}.prose .code-header{color:#9fb3c8;border-bottom:1px solid #273244;justify-content:space-between;padding:8px 14px;font-size:.78rem;display:flex}.prose .code-body{color:#e6eef6;white-space:pre-wrap;padding:14px 16px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;line-height:1.65;overflow-x:auto}.prose .tag-cloud,.prose .tag-row{flex-wrap:wrap;gap:6px;display:flex}.prose .tag-item,.prose .tag{background:var(--gray-50);border:1px solid var(--gray-100);color:var(--ink-2);border-radius:6px;padding:3px 10px;font-size:.8rem;font-weight:600;display:inline-flex}.prose .roadmap{gap:10px;display:grid}.prose .roadmap-step{border:1px solid var(--gray-200);border-radius:12px;padding:14px 16px}.prose .roadmap-step h4{margin-top:0}.prose .tax-row{border-bottom:1px solid var(--gray-100);justify-content:space-between;gap:16px;padding:10px 0;display:flex}.prose .tax-row .value{color:var(--ink);text-align:right;font-weight:650}.prose .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.prose .stats div{background:var(--gray-50);border:1px solid var(--gray-100);border-radius:12px;padding:12px 14px}.prose .stats b{color:var(--ink);font-size:1.2rem;display:block}.prose .stats span{color:var(--ink-3);font-size:.84rem;line-height:1.35;display:block}@media (width<=640px){.prose .stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.prose span.green{color:var(--ok)}.prose span.orange{color:#8a5a00}.prose span.blue{color:var(--accent-dark)}.author{grid-template-columns:64px minmax(0,1fr);gap:16px;max-width:72ch;margin-top:40px;padding:22px;display:grid}.author img{object-fit:cover;object-position:50% 15%;border-radius:50%;width:64px;height:64px}.author h2{font-size:1.05rem}.author p{color:var(--ink-2);margin-top:6px;font-size:.95rem}.author .links{flex-wrap:wrap;gap:14px;margin-top:10px;font-size:.92rem;display:flex}.related{margin-top:28px}.related h2{margin-bottom:12px;font-size:1.05rem}.related .grid-3 a{padding:16px}.related .grid-3 span{color:var(--ink-3);font-size:.82rem;font-weight:650}.related .grid-3 h3{margin-top:4px;font-size:.98rem;line-height:1.35}.lightbox{z-index:300;cursor:zoom-out;background:#0f172ad1;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.lightbox.is-open{display:flex}.lightbox img{background:#fff;border-radius:10px;width:auto;max-width:min(1300px,100%);max-height:86vh;box-shadow:0 30px 80px #00000073}.lightbox p{text-align:center;color:#e6eef6;font-size:.9rem;position:absolute;bottom:16px;left:0;right:0}.lightbox button{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff4d;border-radius:10px;width:42px;height:42px;font-size:1.4rem;line-height:1;position:absolute;top:16px;right:16px}.toast{z-index:320;opacity:0;background:var(--ink);color:#fff;pointer-events:none;border-radius:10px;padding:11px 16px;font-size:.92rem;font-weight:600;transition:opacity .2s,transform .2s;position:fixed;bottom:24px;left:50%;transform:translate(-50%,16px)}.toast.is-on{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media print{.site-header,.site-footer,.mobile-menu,.lightbox,.toast,.contact-band{display:none!important}.page-head,.article-head,.section--blue{background:0 0;border:0}a{color:inherit;text-decoration:none}}.site-footer a.foot-cv,footer a.foot-cv{color:var(--accent);font-weight:700}footer a.foot-cv:hover{color:var(--accent-dark)}