@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:light;--canvas:#edf1f4;--panel:#ffffff;--ink:#182b39;--soft:#304350;--line:#cdd9e0;--signal:#267d72;--signal-hover:#20695f;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--sans:'Space Grotesk',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none;touch-action:manipulation}a:hover{color:var(--signal)}a:focus-visible{outline:3px solid var(--signal);outline-offset:6px}h1,h2,h3,p{margin:0}.site-shell{max-width:1180px;width:calc(100% - 104px);margin:0 auto}.site-header{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:107px;border-bottom:1px solid var(--line)}.brand{font-family:var(--mono);font-size:20px;letter-spacing:-.6px}.brand>span{color:var(--signal);margin-right:7px;font-weight:600}nav{display:flex;gap:33px;font:13px var(--mono)}nav a:hover{text-decoration:underline;text-underline-offset:6px}.hero{display:block;max-width:900px;margin-inline:auto;padding:55px 0 48px;text-align:center}.eyebrow{color:var(--signal);font:11px var(--mono);letter-spacing:.4px}.hero h1{font-weight:500;font-size:clamp(50px,5.5vw,75px);letter-spacing:-3.5px;line-height:1.07;margin:27px 0}.hero h1 span{color:var(--signal)}.intro{max-width:620px;margin-inline:auto;font-size:16px;color:var(--soft);line-height:1.85}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:24px;margin-top:30px}.primary-link{background:var(--signal);color:var(--panel);padding:17px 21px;border-radius:4px;font:12px var(--mono);display:inline-flex;justify-content:space-between;gap:30px;transition:background .15s}.primary-link:hover{background:var(--signal-hover);color:var(--panel)}.secondary-link{font-size:11px;display:flex;gap:12px;align-items:center}.portrait{width:100%;max-width:300px;justify-self:center;margin:0;background:var(--panel);border:1px solid var(--line);border-radius:9px;box-shadow:0 18px 40px #182b390c;transform:rotate(2deg);overflow:hidden}.portrait-toolbar{font:11px var(--mono);color:var(--soft);display:flex;align-items:center;justify-content:space-between;padding:17px 20px;border-bottom:1px solid var(--line)}.window-dots{display:flex;gap:6px}.window-dots i{width:6px;height:6px;border-radius:50%;background:var(--soft)}.profile-photo{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;object-position:center}.portrait figcaption{padding:22px 24px;font-size:20px;font-weight:500;border-top:1px solid var(--line)}.portrait figcaption span{display:block;margin-top:10px;color:var(--signal);font:12px var(--mono)}.projects{border-top:1px solid var(--line);padding-top:28px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.section-heading h2,.section-heading>a{font:11px var(--mono);color:var(--soft);font-weight:400}.section-heading>a{display:flex;gap:13px}.project-row{display:grid;grid-template-columns:45px 1fr 185px 22px;align-items:center;gap:22px;padding:27px 0;border-top:1px solid var(--line)}.project-symbol{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);background:var(--panel);border-radius:5px;color:var(--signal);font:18px var(--mono)}.project-info h3{font-size:19px;letter-spacing:-.4px;font-weight:500}.project-info p{margin-top:8px;color:var(--soft);font-size:12px;line-height:1.7;max-width:545px}.project-tech{font:10px var(--mono);text-align:right;color:var(--soft)}.project-arrow{font-size:21px}.project-row:hover .project-info h3{text-decoration:underline;text-underline-offset:4px}.more-links{display:grid;grid-template-columns:1fr 1fr;gap:25px;border-top:1px solid var(--line);padding-top:30px}.destination{display:flex;align-items:center;justify-content:space-between;gap:20px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:28px;transition:border-color .15s}.destination:hover{border-color:var(--signal)}.destination .eyebrow{color:var(--soft);font-size:10px}.destination h2{font-size:23px;letter-spacing:-.7px;font-weight:500;margin-top:14px}.destination-description{font-size:12px;color:var(--soft);margin-top:11px;line-height:1.7}.destination>span{font-size:25px}footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:37px 0 40px;color:var(--soft);font:10px var(--mono)}footer a{display:flex;gap:8px}.skip-link{position:absolute;top:-100px;left:15px;padding:13px 17px;background:var(--panel);border:1px solid var(--signal);z-index:10}.skip-link:focus{top:15px}
@media(min-width:1500px){.hero{padding:65px 0 55px}.hero h1{font-size:80px}}
@media(max-width:1000px){.site-shell{width:calc(100% - 70px)}.hero{gap:38px}.hero h1{font-size:60px;letter-spacing:-2.5px}.intro{font-size:14px}.hero-actions{gap:20px}.primary-link{font-size:11px;gap:20px}.portrait figcaption{font-size:18px}.project-row{grid-template-columns:42px 1fr 150px 20px;gap:16px}.project-tech{font-size:9px}}
@media(max-width:760px){.site-shell{width:calc(100% - 44px)}.site-header{min-height:85px}.brand{font-size:17px}nav{font-size:11px;gap:20px}.hero{grid-template-columns:1fr;padding:40px 0;gap:40px}.hero h1{font-size:64px;letter-spacing:-3px}.intro{font-size:15px;max-width:460px}.hero-actions{gap:24px}.portrait{width:100%;max-width:260px;justify-self:center;transform:none}.portrait-toolbar{padding:15px 18px}.portrait figcaption{padding:21px 23px}.project-row{grid-template-columns:40px 1fr 20px;padding:23px 0;gap:17px}.project-tech{grid-column:2;font-size:10px;text-align:left;margin-top:-5px}.project-arrow{grid-column:3;grid-row:1/3;align-self:center}.project-info h3{font-size:18px}.project-info p{font-size:12px}.more-links{gap:16px}.destination{padding:23px 19px}.destination h2{font-size:20px}.destination-description{font-size:11px}.destination .eyebrow{font-size:9px}footer{flex-wrap:wrap;line-height:1.6;row-gap:18px}.footer-note{width:100%}}
@media(max-width:450px){.site-shell{width:calc(100% - 36px)}.site-header{gap:15px}.brand{font-size:15px}.brand>span{margin-right:2px}nav{font-size:10px;gap:13px}.hero h1{font-size:53px;letter-spacing:-2.8px}.hero .eyebrow{font-size:10px}.intro{font-size:14px}.hero-actions{gap:22px}.primary-link{font-size:11px;padding:16px 17px}.secondary-link{font-size:10px}.more-links{grid-template-columns:1fr}.destination{padding:25px}.destination h2{font-size:22px}.destination-description{font-size:12px}.project-row{gap:13px}.project-symbol{width:36px;height:36px;font-size:16px}.section-heading h2,.section-heading>a{font-size:10px}.portrait figcaption{font-size:19px}.portrait figcaption span{font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

nav a[aria-current=page]{color:var(--signal);text-decoration:underline;text-underline-offset:6px}
.about-page{max-width:900px;margin-inline:auto;padding:65px 0 20px}.about-heading{display:grid;grid-template-columns:minmax(0,1fr) 120px;align-items:center;gap:40px;margin-bottom:42px}.about-heading h1{font-size:55px;font-weight:500;letter-spacing:-2.3px;line-height:1.15;margin:22px 0 17px}.about-heading h1 span{color:var(--signal)}.about-lede{font-size:18px;line-height:1.7;max-width:610px;color:var(--soft)}.about-photo{width:120px;height:auto;aspect-ratio:1;object-fit:contain;border-radius:9px;border:1px solid var(--line)}.about-body{max-width:680px}.about-body p{font-size:15px;line-height:1.9;color:var(--soft)}.about-section{margin-top:36px}.about-section h2{font-size:23px;font-weight:500;letter-spacing:-.5px;margin-bottom:13px}.about-section p+p{margin-top:15px}.skill-list{margin:22px 0 0}.skill-list>div{display:grid;grid-template-columns:155px minmax(0,1fr);gap:20px;padding:14px 0;border-top:1px solid var(--line);font-size:12px;line-height:1.8}.skill-list dt{font-weight:500}.skill-list dd{margin:0;color:var(--soft)}.about-email{border-top:1px solid var(--line);margin-top:42px;padding-top:32px}.about-email .eyebrow{font-size:10px}.about-email h2{font-size:29px;letter-spacing:-.8px;font-weight:500;margin:17px 0 12px}.about-email>a{display:inline-flex;align-items:center;gap:18px;font-size:20px;color:var(--signal);margin-top:20px;overflow-wrap:anywhere}.about-email>a:hover{text-decoration:underline;text-underline-offset:5px}
@media(max-width:760px){.about-page{padding-top:45px}.about-heading{gap:25px;grid-template-columns:minmax(0,1fr) 90px}.about-photo{width:90px}.about-heading h1{font-size:43px;letter-spacing:-1.7px}.about-lede{font-size:16px}.skill-list>div{grid-template-columns:135px minmax(0,1fr);gap:15px}}
@media(max-width:450px){.about-heading{grid-template-columns:1fr;gap:24px;margin-bottom:30px}.about-photo{grid-row:1;width:80px}.about-heading h1{font-size:39px}.about-body p{font-size:14px}.skill-list>div{grid-template-columns:1fr;gap:4px;padding:15px 0}.about-email>a{font-size:17px;gap:10px}.about-section{margin-top:30px}}

.principles-heading{grid-template-columns:1fr;margin-bottom:30px}.principles-heading h1{font-size:52px}.principles-heading .about-lede{max-width:660px}.principle-list{list-style:none;margin:0;padding:0;max-width:740px;counter-reset:principle}.principle-list li{display:grid;grid-template-columns:35px minmax(0,1fr);gap:24px;border-top:1px solid var(--line);padding:27px 0;counter-increment:principle}.principle-list li::before{content:counter(principle,decimal-leading-zero);font:11px var(--mono);color:var(--signal);padding-top:5px}.principle-list h3{font-size:22px;line-height:1.4;letter-spacing:-.5px;font-weight:500;margin-bottom:11px}.principle-list p{font-size:15px;line-height:1.9;color:var(--soft);max-width:650px}.principles-next{max-width:740px;border-top:1px solid var(--line);padding-top:24px}.principles-next a{display:inline-flex;gap:18px;color:var(--signal);font-size:13px}.principles-next a:hover{text-decoration:underline;text-underline-offset:5px}
@media(max-width:760px){.principles-heading h1{font-size:43px}.principle-list li{gap:17px;grid-template-columns:27px minmax(0,1fr)}}
@media(max-width:450px){.principles-heading h1{font-size:37px;letter-spacing:-1.5px}.principle-list h3{font-size:20px}.principle-list p{font-size:14px}.principle-list li{gap:13px;grid-template-columns:23px minmax(0,1fr)}.site-header nav{gap:10px}}

.principles-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-width:740px;padding:6px;margin-bottom:38px;border:1px solid var(--line);border-radius:9px;background:var(--panel);box-shadow:0 5px 18px #182b3908;position:sticky;top:12px;z-index:5;scroll-margin-top:12px}.principles-index a{display:flex;align-items:center;justify-content:center;min-height:52px;padding:12px 14px;border:1px solid var(--line);border-radius:5px;color:var(--ink);font:500 15px/1.35 var(--sans);text-align:center;transition:background .15s,color .15s,border-color .15s}.principles-index a:hover{background:var(--canvas);border-color:var(--line);text-decoration:none}.principles-index a[aria-selected=true]{background:var(--signal);border-color:var(--signal);color:var(--panel);text-decoration:none}.principles-group{max-width:740px;scroll-margin-top:110px}.principles-group+.principles-group{margin-top:47px}.principles-group-heading{margin-bottom:24px}.principles-group-heading h2{font-size:29px;line-height:1.3;font-weight:500;letter-spacing:-.8px;margin-bottom:12px}.principles-group-heading p{font-size:14px;line-height:1.8;color:var(--soft);max-width:650px}
@media(max-width:450px){.principles-group-heading h2{font-size:25px;letter-spacing:-.6px}.principles-index{gap:4px;padding:4px;top:8px}.principles-index a{min-height:52px;padding:10px 5px;font-size:12px}.principles-group+.principles-group{margin-top:35px}}

.principle-details{min-width:0}.principle-details summary{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:44px;list-style:none;cursor:pointer;touch-action:manipulation}.principle-details summary::-webkit-details-marker{display:none}.principle-details summary::marker{content:""}.principle-details summary:focus-visible{outline:3px solid var(--signal);outline-offset:6px;border-radius:3px}.principle-details summary:hover h3{color:var(--signal)}.principle-details summary h3{margin-bottom:0}.principle-details>p{margin-top:14px;padding-right:46px}.principle-toggle{flex:0 0 28px;width:28px;height:28px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;color:var(--signal);font:20px var(--mono)}.principle-toggle::before{content:"+"}.principle-details[open] .principle-toggle::before{content:"−"}
@media(max-width:450px){.principle-details summary{gap:14px}.principle-details>p{padding-right:0}}

.principle-details p a{text-decoration:underline;text-underline-offset:3px}.principle-details p a:hover{color:var(--signal)}

/* Blog pages share the website palette, typefaces, header, and footer. */
.blog-page{max-width:900px;margin-inline:auto;padding:65px 0 24px}.blog-heading{max-width:680px;margin-bottom:48px}.blog-heading h1{font-size:55px;font-weight:500;letter-spacing:-2.3px;line-height:1.15;margin:22px 0 17px}.blog-heading h1 span{color:var(--signal)}.post-list{border-bottom:1px solid var(--line)}.post-card{display:grid;grid-template-columns:35px minmax(0,1fr);gap:24px;border-top:1px solid var(--line);padding:34px 0}.post-number{color:var(--signal);font:11px var(--mono);padding-top:3px}.post-meta{display:flex;flex-wrap:wrap;gap:12px 24px;font:11px var(--mono);color:var(--soft);line-height:1.6}.post-card h2{font-size:29px;font-weight:500;letter-spacing:-.8px;line-height:1.35;margin:15px 0 12px}.post-card h2 a:hover{text-decoration:underline;text-underline-offset:5px}.post-card p{font-size:15px;color:var(--soft);line-height:1.8;max-width:650px}.post-read{display:inline-flex;gap:18px;margin-top:24px;font:12px var(--mono);color:var(--signal)}.post-read:hover{text-decoration:underline;text-underline-offset:5px}.blog-back{display:inline-block;font:12px var(--mono);color:var(--signal);margin-bottom:42px}.blog-back:hover{text-decoration:underline;text-underline-offset:5px}.post-heading{max-width:780px;border-bottom:1px solid var(--line);padding-bottom:30px;margin-bottom:34px}.post-heading h1{font-size:clamp(34px,4.5vw,54px);font-weight:500;letter-spacing:-1.8px;line-height:1.15;margin:20px 0;overflow-wrap:anywhere}.post-subtitle{font-size:19px;line-height:1.7;color:var(--soft);max-width:690px;margin-bottom:24px}.post-body{max-width:740px;font-size:16px;line-height:1.9;color:var(--soft);overflow-wrap:anywhere}.post-body>*+*{margin-top:20px}.post-body h2,.post-body h3,.post-body h4{color:var(--ink);font-weight:500;line-height:1.4;letter-spacing:-.5px;margin-top:38px;margin-bottom:16px}.post-body h2{font-size:27px}.post-body h3{font-size:22px}.post-body h4{font-size:19px}.post-body h1{font-size:30px;line-height:1.4;margin:28px 0 16px}.post-body strong{color:var(--ink)}.post-body a{color:var(--signal);text-decoration:underline;text-underline-offset:4px}.post-body ul,.post-body ol{padding-left:24px}.post-body li+li{margin-top:8px}.post-body li>p{margin:0}.post-body code{font: .85em/1.7 var(--mono);color:var(--signal);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:2px 5px;overflow-wrap:anywhere}.post-body pre{max-width:100%;overflow-x:auto;padding:23px 25px;border:1px solid var(--line);border-radius:6px;background:var(--panel);font-size:14px;line-height:1.8}.post-body pre code{background:none;border:0;border-radius:0;padding:0;color:var(--ink);overflow-wrap:normal}.post-body blockquote{margin-left:0;margin-right:0;padding:17px 23px;border-left:3px solid var(--signal);background:var(--panel);color:var(--ink)}.post-body blockquote>*+*{margin-top:12px}.post-body table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:14px;line-height:1.7}.post-body th,.post-body td{text-align:left;padding:13px 17px;border:0;border-bottom:1px solid var(--line)}.post-body th{background:#e3e9ed;color:var(--soft);font:700 11px/1.6 var(--mono);letter-spacing:.4px;text-transform:uppercase;vertical-align:bottom;border-bottom:2px solid var(--line)}.post-body tbody tr:last-child td{border-bottom:0}.post-body p:has(>img:only-child){margin-block:30px;text-align:center}.post-body img[src^="/assets/diagrams/"]{display:block;width:440px;max-width:100%;height:auto;margin-inline:auto}.post-body img{max-width:100%;height:auto;border-radius:6px}.post-body hr{border:0;border-top:1px solid var(--line);margin:32px 0}.post-end{max-width:740px;margin-top:48px;padding-top:24px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;font:11px var(--mono);color:var(--soft)}.post-end a{color:var(--signal)}.blog-empty{padding:30px 0;color:var(--soft)}
@media(max-width:760px){.blog-page{padding-top:45px}.blog-heading h1{font-size:43px;letter-spacing:-1.7px}.post-card{grid-template-columns:27px minmax(0,1fr);gap:17px}.post-card h2{font-size:26px}.post-subtitle{font-size:17px}.post-body{font-size:15px}.post-body pre{padding:18px;font-size:12px}.post-body th,.post-body td{padding:10px 12px}}
@media(max-width:450px){.blog-heading h1{font-size:39px}.blog-heading{margin-bottom:32px}.post-card{grid-template-columns:1fr;gap:14px;padding:28px 0}.post-card h2{font-size:24px}.post-card p{font-size:14px}.blog-back{margin-bottom:32px}.post-heading h1{letter-spacing:-1.2px}.post-body h2{font-size:24px}.post-body blockquote{padding:14px 17px}.post-meta{font-size:10px}}

.principles-group[role=tabpanel]{margin-top:0}.principles-group[hidden]{display:none}
