/* Personal editorial portfolio: restrained, cobalt accent, open project-led composition. */
*{box-sizing:border-box}html,body{margin:0;overflow-x:clip;letter-spacing:0}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}a:hover{color:var(--color-accent)}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--color-accent);outline-offset:4px}.header,footer{max-width:1280px;margin:auto;padding:28px 48px;display:flex;align-items:center;justify-content:space-between;gap:24px}.header{border-bottom:1px solid var(--color-line)}.brand{font-size:23px;font-weight:700;white-space:nowrap}.brand-dot{color:var(--color-accent)}nav{display:flex;gap:32px;font-size:14px}nav a{white-space:nowrap}nav a[aria-current=page]{color:var(--color-accent)}main{min-height:65vh}.wrap{max-width:1184px;margin:auto;padding:0 48px}.hero{max-width:1280px;margin:auto;padding:64px 48px 54px;position:relative;min-height:450px;border-bottom:1px solid var(--color-line)}.hero h1{font-size:88px;font-weight:400;line-height:1.02;font-family:var(--font-display);margin:16px 0 26px;max-width:650px;overflow-wrap:anywhere}.hero .positioning{font-size:27px;line-height:1.35;margin:0 0 18px;max-width:650px}.hero .intro{max-width:500px;font-size:16px;color:var(--color-muted)}.eyebrow{font-size:12px;color:var(--color-muted);margin:0 0 16px}.portrait{position:absolute;right:48px;top:68px;width:290px;height:290px;object-fit:contain}.hero-text{padding-right:310px}.text-link{display:inline-flex;align-items:center;gap:24px;border-bottom:1px solid var(--color-ink);padding:10px 0;font-size:14px;white-space:nowrap}.section{padding:64px 0;border-bottom:1px solid var(--color-line)}.section-head{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:34px}.section h2,.page-title{font-family:var(--font-display);font-weight:400;font-size:42px;line-height:1.15;margin:0 0 12px}.section-head p{color:var(--color-muted);margin:0;max-width:540px}.company-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px}.company{min-width:0;border-top:2px solid var(--color-ink);padding-top:26px}.company-logo{height:64px;max-width:190px;object-fit:contain;object-position:left center;margin-bottom:30px}.company h3{font-family:var(--font-display);font-size:27px;font-weight:400;margin:0 0 8px}.company p{font-size:14px;color:var(--color-muted);margin:12px 0;line-height:1.7}.company .role{color:var(--color-accent);font-size:12px}.company-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;font-size:12px}.company-bottom span{color:var(--color-muted)}.arrow{font-size:22px}.story-band{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:72px}.story-band p{color:var(--color-muted)}.story-band h2{font-size:46px}.article-row{display:grid;grid-template-columns:150px minmax(0,1fr) 24px;gap:28px;border-top:1px solid var(--color-line);padding:24px 0}.article-row h3{font-size:21px;font-weight:400;line-height:1.4;margin:0 0 6px}.article-row p,.article-row time{font-size:12px;color:var(--color-muted);margin:0}.article-row .kind{color:var(--color-accent);font-size:12px}.page{max-width:1184px;margin:auto;padding:56px 48px 80px}.page-title{font-size:58px;max-width:800px;overflow-wrap:anywhere}.lede{font-size:19px;color:var(--color-muted);max-width:700px;margin:20px 0 40px}.toolbar{display:flex;gap:16px;flex-wrap:wrap;margin:32px 0}.toolbar input,.toolbar select{border:1px solid var(--color-line);background:var(--color-white);padding:12px;border-radius:var(--radius);max-width:100%;min-width:0}.toolbar input{flex:1;min-width:150px}.detail{max-width:760px}.detail p{white-space:pre-line}.detail-logo{max-width:220px;height:90px;object-fit:contain;object-position:left;margin:30px 0}.detail h2{font-family:var(--font-display);font-size:30px;font-weight:400;margin-top:42px}.back{font-size:13px;color:var(--color-muted);display:inline-block;margin-bottom:30px}.prose{max-width:730px;font-size:18px;line-height:1.9;white-space:pre-line}.empty{color:var(--color-muted);padding:28px 0}.memory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px}.memory-grid img{width:100%;aspect-ratio:4/3;object-fit:cover}.memory-grid h3{font-size:26px;font-family:var(--font-display);font-weight:400;margin:12px 0}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.photo-grid figure{margin:0}.photo-grid button{padding:0;border:0;background:none;width:100%}.photo-grid img{width:100%;height:320px;object-fit:contain;background:var(--color-soft)}figcaption{font-size:13px;color:var(--color-muted);padding:8px 0}footer{border-top:1px solid var(--color-line);font-size:13px;margin-top:36px;padding-top:40px;padding-bottom:40px;color:var(--color-muted)}footer .brand{color:var(--color-ink)}dialog{max-width:94vw;max-height:94vh;padding:38px 24px 18px;border:0;background:var(--color-white);color:var(--color-ink)}dialog::backdrop{background:rgba(20,24,28,.85)}dialog img{max-height:65vh;max-width:85vw;object-fit:contain;display:block;margin:auto}.close{position:absolute;right:8px;top:3px;border:0;background:none;font-size:28px;width:36px;height:36px}.photo-controls{display:flex;gap:24px;justify-content:center;align-items:center}.photo-controls button{border:1px solid var(--color-line);background:var(--color-white);width:42px;height:40px}.skip{position:fixed;top:-100px;background:var(--color-white);padding:12px;z-index:10}.skip:focus{top:0}.loading{padding:60px}.contact-title{font-size:72px;line-height:1.15;font-family:var(--font-display);font-weight:400;max-width:700px;overflow-wrap:anywhere}@media(max-width:1000px){.hero h1{font-size:68px}.portrait{width:220px;height:220px}.hero-text{padding-right:240px}.hero .positioning{font-size:24px}.company-grid{gap:22px}}@media(max-width:700px){.header{padding:20px;align-items:start;flex-direction:column;gap:14px}nav{gap:20px;font-size:13px;flex-wrap:wrap}.hero{padding:34px 20px;min-height:0}.hero-text{padding-right:0}.hero h1{font-size:56px;max-width:220px;margin:20px 0}.portrait{width:110px;height:110px;right:18px;top:38px}.hero .positioning{font-size:24px;max-width:360px}.hero .intro{font-size:15px}.wrap,.page{padding-left:20px;padding-right:20px}.section{padding:42px 0}.section-head{align-items:start;flex-direction:column;gap:12px}.section h2{font-size:34px}.company-grid{grid-template-columns:1fr;gap:32px}.company-logo{height:48px;margin-bottom:18px}.story-band{grid-template-columns:1fr;gap:8px}.story-band h2{font-size:36px}.article-row{grid-template-columns:minmax(0,1fr) 20px;gap:12px}.article-row>div:first-child{grid-column:1/-1}.article-row h3{font-size:19px}.page-title{font-size:44px}.memory-grid,.photo-grid{grid-template-columns:1fr}.photo-grid img{height:260px}footer{padding:28px 20px;align-items:start;flex-direction:column;gap:14px}.contact-title{font-size:46px}}@media(prefers-reduced-motion:no-preference){a{transition:color .15s}}
.memory-grid{margin-top:38px}.story-details{margin-top:60px;border-top:1px solid var(--color-line);padding-top:24px}.story-details summary{cursor:pointer;margin-bottom:24px}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.photo-grid img{height:230px}@media(max-width:700px){.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.photo-grid img{height:170px}}@media(max-width:375px){.photo-grid img{height:140px}}
.github-apps{margin-top:40px}.github-app{padding:30px 0;border-top:1px solid var(--color-line)}.github-app h2{font-family:var(--font-display);font-size:30px;font-weight:400;margin:0 0 12px;overflow-wrap:anywhere}.github-app p{max-width:740px;white-space:pre-line;overflow-wrap:anywhere;color:var(--color-muted)}.app-links{display:flex;gap:28px;flex-wrap:wrap}
/* Themes reuse the editorial rows and remain unframed at every viewport. */
.themes-index { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
.themes-index>a { border-top:1px solid #d4d4d4; padding:24px 0; min-width:0; }
.themes-index h3,.theme-section h2 { font-size:24px; overflow-wrap:anywhere; }
.themes-index p { line-height:1.6; }
.theme-jumps { display:flex; flex-wrap:wrap; gap:16px 28px; padding:24px 0; }
.theme-section { padding:40px 0; border-top:1px solid #d4d4d4; scroll-margin-top:100px; }
.header { flex-wrap:wrap; }
.header nav { flex-wrap:wrap; }
@media(max-width:650px) { .themes-index { grid-template-columns:1fr; } }
/* Compact home, aligned with the site header, and four editorial theme areas. */
.wrap,.page{max-width:1280px}
.compact-hero{min-height:0;padding-top:32px;padding-bottom:32px;display:grid;grid-template-columns:minmax(0,1fr) 140px;gap:32px;align-items:center}
.compact-hero .hero-text{padding:0}
.compact-hero h1{font-size:48px;margin:8px 0 12px;max-width:none}
.compact-hero .positioning{font-size:21px;margin-bottom:8px}
.compact-hero .portrait{position:static;width:140px;height:140px}
.compact-hero .eyebrow{margin-bottom:8px}
.home-content .section{padding:32px 0}
.home-content .section-head{margin-bottom:20px}
.home-content .section h2{font-size:30px}
.home-content .company-grid{gap:20px 28px}
.home-content .company{padding-top:14px}
.home-content .company-logo{height:32px;max-width:130px;margin-bottom:10px}
.home-content .company h3{font-size:22px}
.home-content .company p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;margin:8px 0}
.home-content .company-bottom{margin-top:8px}
.home-content .themes-index>a{padding:14px 0}
.home-content .themes-index h3{font-size:21px;margin:0 0 8px}
.home-content .themes-index p{margin:0 0 8px;font-size:14px}
.theme-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 48px;margin-top:32px}
.theme-section{padding:24px 0;min-width:0}
.theme-section h2{font-family:var(--font-display);font-size:30px;line-height:1.2;margin:0 0 14px}
.theme-section h3{font-size:17px;font-weight:500;margin:0 0 16px;color:var(--color-accent)}
.theme-body{white-space:pre-line;overflow-wrap:anywhere;color:var(--color-muted)}
.theme-photo{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;margin-bottom:24px}
.theme-links{list-style:none;padding:0;margin:24px 0 0}
.theme-links li{border-top:1px solid var(--color-line);padding:12px 0;overflow-wrap:anywhere}
.own-writing{border-top:3px solid var(--color-accent);padding-top:20px}
.own-writing h2,.curated-writing h2{font-family:var(--font-display);font-size:30px;font-weight:400}
.own-article h3{font-weight:600}
.curated-writing{margin-top:48px}
@media(max-width:700px){.compact-hero{grid-template-columns:minmax(0,1fr) 88px;gap:16px;padding:24px 20px}.compact-hero h1{font-size:36px}.compact-hero .portrait{width:88px;height:100px}.compact-hero .positioning{font-size:18px}.theme-grid{grid-template-columns:1fr;gap:16px}.home-content .company-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-content .company-bottom span{overflow-wrap:anywhere}.home-content .company h3{font-size:20px}.home-content .company-logo{max-width:100%}.compact-hero .text-link{white-space:normal}}
.filter-tags{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 32px}
.filter-tag{border:1px solid var(--color-line);border-radius:4px;background:var(--color-paper);color:var(--color-muted);font:inherit;font-size:13px;line-height:1.4;padding:8px 12px;min-height:36px;max-width:100%;overflow-wrap:anywhere;text-align:left}
.filter-tag:hover{border-color:var(--color-accent);color:var(--color-accent)}
.filter-tag[aria-pressed=true]{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-white)}
.own-writing{border-top-width:4px;padding-top:24px}
.own-writing h2{font-size:38px;color:var(--color-accent);margin:0 0 24px}
.curated-writing h2{font-size:28px;margin:0 0 20px}
.own-writing .article-row,.curated-writing .article-row{grid-template-columns:minmax(0,1fr) 24px;gap:6px 16px;padding:20px 0}
.own-writing .article-row>div:first-child,.curated-writing .article-row>div:first-child{grid-column:1;grid-row:1}
.own-writing .article-row>div:nth-child(2),.curated-writing .article-row>div:nth-child(2){grid-column:1;grid-row:2;min-width:0}
.own-writing .article-row>a,.curated-writing .article-row>a{grid-column:2;grid-row:1/3;align-self:center}
.own-writing .article-row h3{font-size:24px;font-weight:600;overflow-wrap:anywhere}
.curated-writing .article-row h3{font-size:19px;overflow-wrap:anywhere}
@media(max-width:700px){.own-writing h2{font-size:32px}.own-writing .article-row h3{font-size:21px}}
.writing-page{padding-top:32px;padding-bottom:48px}
.writing-page>.eyebrow{margin-bottom:8px}
.writing-page>.page-title{font-size:46px;margin-bottom:8px}
.writing-page .filter-tags{gap:6px;margin:16px 0 22px}
.writing-page .filter-tag{font-size:12px;padding:6px 10px;min-height:32px}
.writing-page .own-writing{padding-top:16px}
.writing-page .own-writing h2{font-size:30px;margin-bottom:14px}
.writing-page .curated-writing{margin-top:28px}
.writing-page .curated-writing h2{font-size:24px;margin-bottom:12px}
.writing-page .article-row{padding:12px 0;gap:3px 12px}
.writing-page .article-row h3{line-height:1.35;margin-bottom:3px}
.writing-page .own-writing .article-row h3{font-size:20px}
.writing-page .curated-writing .article-row h3{font-size:17px}
.writing-page .empty{padding:14px 0;font-size:14px}
@media(max-width:700px){.writing-page{padding-top:24px}.writing-page>.page-title{font-size:38px}.writing-page .own-writing h2{font-size:27px}.writing-page .own-writing .article-row h3{font-size:19px}}
.feed-page{padding-top:32px}
.feed-page>.page-title{font-size:38px;margin-bottom:24px}
.feed-row{display:grid;grid-template-columns:96px minmax(0,1fr) 24px;gap:14px;align-items:start;border-top:1px solid var(--color-line);padding:12px 0}
.feed-row h2{font-family:var(--font-body);font-size:16px;font-weight:500;line-height:1.4;margin:0 0 3px;overflow-wrap:anywhere}
.feed-row time,.feed-row span{font-size:12px;color:var(--color-muted)}
.feed-row>a:last-child{min-height:32px;text-align:center}
@media(max-width:700px){.feed-row{grid-template-columns:minmax(0,1fr) 24px;gap:4px 12px}.feed-row time{grid-column:1}.feed-row>a:nth-child(2){grid-column:1}.feed-row>a:last-child{grid-column:2;grid-row:1/3}.feed-page>.page-title{font-size:32px}}
.feed-month{margin-top:26px}
.feed-month-title{font-family:var(--font-body);font-size:18px;font-weight:600;margin:0 0 10px}
.feed-page .feed-row{grid-template-columns:minmax(0,1fr) 24px;gap:12px;padding:10px 0}
.feed-page .feed-row>a:first-child{grid-column:1;grid-row:1;min-width:0}
.feed-page .feed-row>a:last-child{grid-column:2;grid-row:1}
.feed-row h3{font-family:var(--font-body);font-size:16px;font-weight:500;line-height:1.4;margin:0 0 3px;overflow-wrap:anywhere}
.story-content .section{padding:36px 0}
.story-content .section>h2{font-size:32px;margin-bottom:20px}
.story-narrative .prose{max-width:850px;font-size:16px;line-height:1.8;overflow-wrap:anywhere}
.story-memories .memory-grid{margin-top:24px;gap:28px}
.story-memories .memory-grid h3{font-size:23px}
.album-placeholder{aspect-ratio:4/3;background:var(--color-soft)}
@media(max-width:700px){.story-content .section{padding:28px 0}.story-content .section>h2{font-size:28px}}
.app-photos{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0 20px}
.app-photos figure{margin:0;width:160px;max-width:100%;min-width:0}
.app-photos a{display:block}
.app-photos img{display:block;width:100%;height:110px;object-fit:contain;background:var(--color-soft);border:1px solid var(--color-line);border-radius:4px}
.app-photos figcaption{font-size:12px;overflow-wrap:anywhere}
@media(max-width:400px){.app-photos figure{width:calc((100% - 12px)/2)}}
.app-with-photos{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:32px;align-items:start}
.app-with-photos>h2{grid-column:1;grid-row:1}
.app-with-photos>p{grid-column:1;grid-row:2;margin-top:0}
.app-with-photos>.app-links{grid-column:1;grid-row:3}
.app-with-photos>.app-photos{grid-column:2;grid-row:1/4;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0}
.app-with-photos .app-photos figure{width:calc(100% - 38px);min-width:0}
.app-with-photos .app-photos img{height:auto;aspect-ratio:16/11}
@media(max-width:800px){.app-with-photos{grid-template-columns:minmax(0,1fr)}.app-with-photos>.app-photos{grid-column:1;grid-row:4;margin-top:20px;max-width:560px;width:100%}}
.app-with-photos{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}
.app-with-photos>.app-photos{grid-template-columns:minmax(0,1fr)}
.app-with-photos .app-photos img{max-height:360px;object-fit:contain;cursor:default}
@media(max-width:800px){.app-with-photos{grid-template-columns:minmax(0,1fr)}.app-with-photos>.app-photos{max-width:none}.app-with-photos .app-photos img{max-height:320px}}
.company-news{margin-top:32px}
.company-news ul{list-style:none;padding:0;margin:16px 0}
.company-news li{border-top:1px solid var(--color-line)}
.company-news li a{display:block;padding:12px 0;font-size:15px;line-height:1.5;overflow-wrap:anywhere}
.app-with-photos>.app-description{grid-column:1;grid-row:2;min-width:0}
.app-description .app-description-text{margin:0 0 8px;display:block;overflow:visible;white-space:pre-line;overflow-wrap:anywhere}
.home-content .home-themes{padding:24px 0}
.home-themes .section-head{align-items:center;margin-bottom:12px;flex-direction:row}
.theme-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}
.theme-shortcuts>a{display:grid;grid-template-columns:28px minmax(0,1fr) 20px;align-items:center;gap:10px;min-height:54px;padding:12px 0;border-top:1px solid var(--color-line)}
.theme-shortcuts h3{font-family:var(--font-body);font-size:16px;font-weight:500;line-height:1.35;margin:0;overflow-wrap:anywhere}
.theme-number{font-size:11px;color:var(--color-muted);font-variant-numeric:tabular-nums}
.theme-arrow{color:var(--color-accent);font-size:18px;text-align:right}
.theme-shortcuts>a:hover{background:var(--color-soft)}
@media(max-width:600px){.theme-shortcuts{grid-template-columns:1fr}.home-themes .section-head{gap:16px}}
.header>.brand{display:inline-flex;align-items:center;gap:10px}
.header-portrait{width:32px;height:32px;flex:0 0 32px;object-fit:cover;border-radius:50%}
.header-portrait[hidden]{display:none}
.theme-shortcut-copy{min-width:0}
.theme-shortcut-copy p{margin:4px 0 0;font-size:13px;line-height:1.4;color:var(--color-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.app-heading{min-width:0;margin-bottom:14px}
.github-app .app-heading h2{margin-bottom:4px}
.app-with-photos>.app-heading{grid-column:1;grid-row:1}
.app-url{display:block;font-size:12px;line-height:1.5;color:var(--color-accent);overflow-wrap:anywhere}
.investment-highlights .company-bottom>.arrow{display:none}
footer[hidden]{display:none}
.theme-shortcuts>a{grid-template-columns:28px minmax(0,1fr)}
.is-home .header nav a[href$="/contact"]>span{display:none}
.writing-page .article-row{grid-template-columns:minmax(0,1fr)}
.feed-page .feed-row{grid-template-columns:minmax(0,1fr)}
.feed-page .feed-row>a:only-child{grid-column:1;grid-row:1;text-align:left;min-height:0}
.feed-page .feed-row:has(.feed-delete){grid-template-columns:minmax(0,1fr) 32px}
.feed-delete{width:32px;height:32px;border:0;background:transparent;color:var(--color-muted);font-size:22px;cursor:pointer}
.feed-delete:hover{color:#b42318}
