.structured-section{display:grid;grid-template-columns:.7fr 1.3fr;gap:24px 10%}.section-body{color:var(--muted);line-height:1.9}.section-body p{margin-top:0;margin-bottom:22px}.section-body figure{margin:0 0 22px}.section-body img{max-width:100%;height:auto;max-height:420px;object-fit:contain}.section-body figcaption{font-size:12px}.section-body .block-subtitle{font-size:21px;color:var(--ink)}.structured-section>.subsections,.journal-section>.filters,.journal-section>.articles{grid-column:1/-1}.structured-section.layout-stack{grid-template-columns:1fr;gap:24px}.structured-section.layout-stack .section-body{max-width:800px}.subsections{display:grid;gap:30px}.subsections.layout-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.subsections:empty,.social-inline:empty{display:none}.subsection{padding-top:20px}.subsection h3{font:32px/1.2 'Libre Caslon Display',Georgia;margin:0 0 15px}.subsection p{color:var(--muted);line-height:1.9}.subsection img{max-width:100%;max-height:340px;object-fit:contain}.subsection figure{margin:20px 0}.subsection figcaption{font-size:12px}.subsection .subsections{margin-top:20px}.article-cover{display:block;width:100%;height:auto;object-fit:contain;margin-bottom:20px}.chart>img{display:block;width:100%;height:255px}.hero p:not(.personal-line){color:var(--muted);line-height:1.8;max-width:430px}.hero .chart p{color:var(--paper);max-width:none}.hero .actions{flex-wrap:wrap}.hero{border-bottom:1px solid var(--line)}.social-inline{flex-wrap:wrap}.journal-section .filters{margin:0}.journal-section .articles{margin-top:4px}@media(max-width:750px){.structured-section{grid-template-columns:1fr;gap:25px}.subsections.layout-grid{grid-template-columns:1fr}.navlinks{flex-wrap:wrap;justify-content:end}.navlinks a{font-size:11px}.hero h1{font-size:76px}.hero .chart{min-height:0}}
.brand .personal-logo{display:block;width:245px;height:64px;object-fit:contain;object-position:left center}.brand small{font-size:8px;margin:0;letter-spacing:1.5px}.brand{padding:5px 0}.brand:hover{opacity:.85}@media(max-width:750px){.brand .personal-logo{width:180px;height:48px}.brand small{font-size:6px;letter-spacing:1px}nav{gap:15px}}

/* Subsections honor the same heading/content layout as their parent sections. */
.subsection.layout-split{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:24px 10%;align-items:start}.subsection>.section-title,.subsection>.section-body{min-width:0}.subsection>.section-body>:first-child{margin-top:0}.subsection>.subsections{grid-column:1/-1}.subsection>.subsections:empty{display:none}.subsection.layout-stack{display:block}.subsection.layout-stack>.section-body{max-width:800px}@media(max-width:750px){.subsection.layout-split{grid-template-columns:minmax(0,1fr);gap:20px}}

.section-body img.project-wordmark,.subsection img.project-wordmark{display:block;width:330px;max-width:100%;height:64px;max-height:none;object-fit:contain;object-position:left center}

.subsection.layout-media-left{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:24px 10%;align-items:start}.structured-section.layout-media-left{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);align-items:start}.layout-media-left>.section-title,.layout-media-left>.section-body{min-width:0}.section-title .project-screenshot{margin:28px 0 0}.section-title> .project-screenshot:first-child{margin-top:0}.project-screenshot{margin:0 0 24px}.section-title .project-screenshot img,.section-body .project-screenshot img,.subsection .project-screenshot img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;border:1px solid var(--line)}.project-screenshot a{display:block}.project-screenshot figcaption{font:12px/1.6 'DM Sans',sans-serif;color:var(--muted);margin-top:8px}.layout-media-left>.subsections{grid-column:1/-1}@media(max-width:750px){.structured-section.layout-media-left,.subsection.layout-media-left{grid-template-columns:minmax(0,1fr);gap:24px}.section-title .project-screenshot{max-width:100%}}
/* Product logo/title occupy row one; gallery and description share row two. */
.layout-media-left>.section-title{grid-column:1;grid-row:1}.layout-media-left>.project-identity{grid-column:2;grid-row:1;min-width:0}.layout-media-left>.project-media{grid-column:1;grid-row:2;min-width:0}.layout-media-left>.project-description{grid-column:2;grid-row:2;min-width:0}.layout-media-left>.subsections{grid-row:3}.project-identity figure{margin:0}.project-identity img.project-wordmark{display:block;width:330px;max-width:100%;height:64px;object-fit:contain;object-position:left center}.project-identity img:not(.project-wordmark){max-width:100%;max-height:300px;object-fit:contain}.project-media .project-screenshot,.subsection .project-media .project-screenshot{margin:0}.project-description>:first-child{margin-top:0}.screenshot-carousel{min-width:0}.screenshot-open{display:block;width:100%;border:0;padding:0;background:transparent;cursor:zoom-in;color:inherit}.screenshot-carousel .project-screenshot img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;border:1px solid var(--line)}.gallery-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px;font-size:12px;color:var(--muted)}.gallery-controls button{background:transparent;color:var(--ink);border:1px solid var(--line);border-radius:3px;width:40px;height:36px}.gallery-controls button:hover{background:#e4e7da}.project-media .project-screenshot figcaption{margin:8px 0 0}
dialog.screenshot-viewer{width:calc(100vw - 32px);max-width:1500px;height:calc(100dvh - 32px);max-height:none;padding:20px;border:1px solid var(--line);border-radius:4px;background:var(--paper);color:var(--ink);overflow:hidden;grid-template-rows:auto minmax(0,1fr) auto;gap:12px}dialog.screenshot-viewer[open]{display:grid}dialog.screenshot-viewer:not([open]){display:none}dialog.screenshot-viewer::backdrop{background:#11251fe6}.viewer-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;font:13px 'DM Sans',sans-serif}.viewer-stage{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:12px;min-height:0}.viewer-stage img{grid-column:2;grid-row:1;width:100%;height:100%;min-height:0;object-fit:contain}.viewer-prev{grid-column:1;grid-row:1}.viewer-next{grid-column:3;grid-row:1}.screenshot-viewer button{border:1px solid var(--line);border-radius:3px;background:transparent;color:var(--ink);min-height:44px;padding:8px 12px;font:14px 'DM Sans',sans-serif}.screenshot-viewer .viewer-caption{margin:0;font:13px/1.6 'DM Sans',sans-serif;color:var(--muted)}@media(max-width:750px){.layout-media-left{display:flex!important;flex-direction:column;gap:24px}.layout-media-left>.section-title,.layout-media-left>.project-identity,.layout-media-left>.project-media,.layout-media-left>.project-description,.layout-media-left>.subsections{width:100%}.layout-media-left>.section-title:empty,.layout-media-left>.project-identity:empty{display:none}dialog.screenshot-viewer{width:calc(100vw - 16px);height:calc(100dvh - 16px);padding:12px}.viewer-stage{grid-template-columns:36px minmax(0,1fr) 36px;gap:4px}.viewer-stage button{padding:4px;min-height:44px}}
.layout-media-left.journal-section>.subsections{grid-row:auto}

/* Keep one section divider; separate only intermediate article rows. */
.journal-section .art{border-bottom:0;padding-bottom:0;min-width:0}.journal-section .articles{row-gap:32px}.journal-section .art>a:first-child{display:block}
