.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body[data-design=combined] main{padding-top:48px}.site-content{padding:4px 0 0}.page-intro{padding-bottom:29px}.page-intro h1{font-size:32px;letter-spacing:-1px;line-height:1.15;font-weight:500;margin:0 0 19px}.page-intro>p{font-size:14px;line-height:1.9;color:var(--color-body);max-width:600px;margin:0}.about-prose{max-width:600px}.about-prose>p{font-size:15px;line-height:1.95;color:var(--color-body);margin:0 0 21px}.about-prose a{text-decoration:none;color:var(--color-accent)}.about-prose a:hover{text-decoration:underline}.about-links{border-top:1px solid var(--line);margin-top:35px;padding-top:27px}.about-links h2,.about-small h2{font-size:11px;font-weight:550;margin:0 0 23px}.about-links>a{display:grid;grid-template-columns:100px 1fr;gap:25px;text-decoration:none;padding:11px 0 18px}.about-links strong{font-size:13px;font-weight:500}.about-links>a>span{font-size:12px;color:var(--color-body)}.about-links>a:hover strong{text-decoration:underline;color:var(--color-accent)}.about-small{margin-top:27px;border-top:1px solid var(--line);padding-top:27px}.about-small p{font-size:13px;color:var(--color-body);line-height:1.9;max-width:590px}.about-small a{text-decoration:none}.about-small a:hover{text-decoration:underline}.site-footer{display:flex;justify-content:space-between;margin-top:38px;padding:25px 0;border-top:1px solid var(--line);font-size:10px;color:#7d8576}.site-footer a{text-decoration:none}.site-footer a:hover{text-decoration:underline;color:var(--color-accent)}.combined-sidebar>nav a[aria-current=page]{color:var(--color-selection-text);font-weight:600;background:var(--color-selection)}.project-group{margin-top:9px}.project-group>h2,.cv-section>h2{font-size:11px;font-weight:550;color:#747e6a;margin:0 0 5px;padding-top:23px;border-top:1px solid var(--line)}.site-project{padding:23px 0;border-bottom:1px solid #eef0e9}.site-project:last-child{border:0}.site-project h3{font-size:15px;font-weight:500;letter-spacing:-.3px;margin:0 0 10px}.site-project h3 a{text-decoration:none}.site-project h3 a:hover,.project-open:hover,.project-open:focus-visible{color:var(--color-accent);text-decoration:underline;text-underline-offset:4px}.site-project p{font-size:13px;color:var(--color-body);line-height:1.85;margin:0 0 10px;max-width:605px}.project-context{font-size:10px!important;color:#8b9284!important}.group-intro{font-size:12px;color:#7c8571;margin:16px 0 0}.cv-section{margin-top:8px;padding-bottom:26px}.cv-section p{font-size:13px;line-height:1.9;color:var(--color-body)}.cv-job{padding:25px 0 22px;border-bottom:1px solid var(--line)}.cv-job:last-child{border:0}.job-heading{display:flex;justify-content:space-between;gap:20px;align-items:baseline;margin:0 0 13px}.job-heading h3{font-size:16px;font-weight:550;letter-spacing:-.3px;margin:0}.job-heading>span{font-size:10px;color:#8a9280}.role-line{display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--color-body);line-height:1.9;margin-bottom:5px}.role-line strong{font-weight:500;color:#4f5c44}.role-line>span:last-child{white-space:nowrap;font-size:10px}.cv-job>p{margin:17px 0 0}.cv-job ul{padding-left:17px;margin:18px 0 0}.cv-job li{font-size:12px;line-height:1.9;color:var(--color-body);padding-left:4px;margin-bottom:12px}.cv-context{font-size:10px!important;color:#8b9380!important}.role-description{font-size:10px!important;margin-top:5px!important}.skills-list{margin:25px 0 0}.skills-list>div{display:grid;grid-template-columns:120px 1fr;gap:25px;margin-bottom:23px}.skills-list dt{font-size:11px;color:#4f5b43}.skills-list dd{margin:0;font-size:12px;color:var(--color-body);line-height:1.9}.cv-section>.job-heading{margin-top:24px}.archive-summary{display:flex;align-items:center;gap:19px;margin:0 0 25px}.archive-summary>strong{font-size:36px;font-weight:450;letter-spacing:-1.3px}.archive-summary>span{font-size:10px;line-height:1.7;color:#829075}.archive-tools{display:grid;grid-template-columns:1fr 100px 110px;gap:9px;margin:0 0 18px}.archive-tools input,.archive-tools select{width:100%;border:1px solid #dbe2d3;background:#fff;border-radius:3px;padding:10px;font-size:10px;color:#626f56;height:36px}.archive-tools input:focus-visible,.archive-tools select:focus-visible{outline:2px solid #6d8a59;outline-offset:2px}.archive-filters{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:19px}.archive-filters button{font-size:11px;color:#8b947f;border-bottom:1px solid transparent;padding:5px 0}.archive-filters [aria-pressed=true]{color:var(--color-accent);border-color:var(--color-accent)}.archive-count{font-size:10px;color:#8b947f;border-bottom:1px solid var(--line);padding-bottom:17px;margin-bottom:0}.interview-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 27px}.interview-record{display:grid;grid-template-columns:45px minmax(0,1fr);gap:13px;padding:24px 0;border-bottom:1px solid #e8eddf;text-decoration:none;align-items:start}.archive-avatar{width:45px;height:54px;overflow:hidden;position:relative;background:#edf1e7;border-radius:3px;display:flex;align-items:center;justify-content:center;color:#9ca88e;font-size:13px}.archive-avatar>img{display:block;width:45px;height:54px;object-fit:cover;object-position:50% 30%}.interview-record h2{font-size:12px;line-height:1.5;font-weight:500;letter-spacing:-.2px;margin:0 0 5px}.interview-record h2>span{font-size:10px;color:#9aa68d}.record-meta{font-size:8px;line-height:1.8;color:#8c967f;margin:0}.archive-role{font-size:9px;line-height:1.6;color:var(--color-body);margin:0 0 5px}.archive-quote{font-size:10px;line-height:1.8;color:var(--color-body);margin:10px 0 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.interview-record:hover h2,.interview-record:focus-visible h2{color:var(--color-accent);text-decoration:underline;text-underline-offset:3px}.archive-scope{font-size:9px;color:#9ba58e;line-height:1.8;margin:27px 0 13px}#archive-empty{padding:35px 0;font-size:12px;color:#7f8d70}#archive-reset{font-size:11px;color:var(--color-accent);text-decoration:underline}.archive-avatar .portrait-angela,.archive-avatar .portrait-athena{transform:rotate(90deg) scale(1.22);object-position:45% 57%}.site-content button:active{transform:translateY(1px)}
@media(max-width:900px){.archive-tools{grid-template-columns:1fr 90px}.archive-sort{grid-column:1/-1;max-width:120px}.interview-grid{grid-template-columns:1fr}.skills-list>div{grid-template-columns:95px 1fr;gap:20px}}
@media(max-width:640px){body[data-design=combined] main{padding-top:28px}.combined-sidebar>nav a:first-child{display:block}.combined-sidebar{grid-template-columns:1fr;gap:18px}.sidebar-profile{gap:12px}.combined-sidebar>nav{justify-content:flex-start;gap:12px;font-size:11px}.combined-sidebar>nav a{padding:5px 8px;margin-left:-8px}.combined-sidebar>nav a[aria-current=page]{background:var(--color-selection)}.site-content{padding-top:5px}.page-intro{padding-bottom:20px}.page-intro h1{font-size:29px;margin-bottom:15px}.page-intro>p{font-size:13px}.about-prose>p{font-size:14px;line-height:1.95;margin-bottom:19px}.about-links>a{grid-template-columns:80px 1fr;gap:15px;line-height:1.6}.about-links>a>span{font-size:11px}.about-small p{font-size:12px}.role-line{display:block;font-size:11px;margin-bottom:10px}.role-line>span:last-child{display:block;font-size:9px}.job-heading>span{font-size:9px}.cv-job li{font-size:12px;line-height:1.85}.cv-job>p{font-size:12px}.skills-list>div{grid-template-columns:1fr;gap:8px}.archive-tools{grid-template-columns:1fr 100px}.archive-sort{grid-column:auto;max-width:none}.archive-search{grid-column:1/-1}.archive-filters{gap:18px}.archive-filters button{font-size:10px}.archive-summary>strong{font-size:32px}.interview-grid{grid-template-columns:1fr}.interview-record{padding:22px 0;grid-template-columns:45px minmax(0,1fr);gap:14px}.interview-record h2{font-size:13px}.record-meta{font-size:9px}.archive-quote{font-size:11px}.site-footer{font-size:9px}}
@media(prefers-reduced-motion:reduce){.site-content button:active{transform:none}}
.project-heading{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:10px}.project-heading h3{margin:0}.project-status{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;border-radius:999px;padding:4px 9px;font-size:9px;font-weight:500;line-height:1.2;background:#eef3e9;color:#668452}.project-status>span{display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor}.status-prototype{background:#f7eee1;color:#a28355}.status-in-use{background:#eef1f6;color:#71839e}.project-heading+.project-status{margin-bottom:9px}.site-project p{font-size:13px!important}.site-project .project-context{font-size:13px!important;color:var(--color-body)!important}
.soft-cursor{position:fixed;left:0;top:0;width:10px;height:10px;border:1px solid #819573;border-radius:50%;background:#a1b49224;box-shadow:0 0 9px #8ba87515;pointer-events:none;z-index:50;opacity:0;transition:opacity .18s;will-change:transform;display:none}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.soft-cursor{display:block}}
@media(prefers-reduced-motion:reduce){.soft-cursor{display:none!important}}
.archive-quote{min-height:54px}.project-status{user-select:none}.site-project .project-heading{align-items:center}.site-project .project-heading h3{margin-bottom:0}
@media(max-width:640px){.archive-quote{min-height:59px}.project-status{font-size:9px;padding:4px 8px}.project-heading{gap:14px}}

/* Project panels use plain narrative copy, with no category or status labels. */
.project-story p{font-size:14px;line-height:1.85;margin:0 0 18px;color:var(--color-body)}.project-story{margin:24px 0}.project-story+img{margin-bottom:25px}

.project-gallery{margin:25px 0 0}.project-gallery figcaption{font-size:12px;color:var(--color-body);margin-bottom:13px}.project-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.project-photo-grid a{display:block;border-radius:3px;overflow:hidden}.project-photo-grid img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:contain;margin:0}.project-photo-grid a:focus-visible{outline:2px solid #667d55;outline-offset:3px}.project-photo-grid a:hover{opacity:.88}@media(max-width:640px){.project-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}

/* HuddleDex: real app evidence within the existing project reader. */
.huddle-preview{display:flex;align-items:center;gap:12px;margin-top:19px;max-width:100%;padding:0 0 6px!important}.huddle-preview img{display:block;width:75px;height:auto;aspect-ratio:588/1280;object-fit:contain;border-radius:9px;border:1px solid #dce1d8}.huddle-preview>span{font-size:11px;color:var(--accent);margin-left:8px}.huddle-preview:hover>span{text-decoration:underline;text-underline-offset:4px}
dialog.huddle-dialog{width:min(880px,calc(100% - 32px));padding:32px;scrollbar-gutter:stable}.huddle-dialog .project-story{max-width:690px}.huddle-screenshot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,130px));gap:22px 25px;margin:26px 0 30px;align-items:start}.huddle-screenshot-grid a{display:block;min-width:0;border-radius:10px}.huddle-dialog .huddle-screenshot-grid img{display:block;width:100%;height:auto;max-height:none;aspect-ratio:588/1280;object-fit:contain;margin:0;border:1px solid #dce1d8;border-radius:10px}.huddle-dialog .project-gallery{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}.huddle-dialog .project-photo-grid img{max-height:none;margin:0;border:0}.huddle-build-story{margin-top:28px}.huddle-dialog>.close{position:sticky;top:0;background:#fdfdfa;padding:8px;z-index:1;min-height:36px}
@media(max-width:640px){.huddle-preview{gap:8px;flex-wrap:wrap}.huddle-preview img{width:65px}.huddle-preview>span{font-size:10px;margin-left:0}dialog.huddle-dialog{padding:22px;max-height:90dvh}.huddle-screenshot-grid{grid-template-columns:repeat(2,minmax(0,120px));gap:18px;justify-content:start}}

/* Compact real-interface previews for the other visual projects. */
.project-preview-strip{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;max-width:100%;margin:17px 0 4px;padding:0!important}.project-preview-strip img{display:block;width:170px;height:106px;object-fit:contain;object-position:top;border:1px solid #e0e3da;border-radius:4px;background:#fafbf8}.project-visual-dialog{width:min(800px,calc(100% - 32px));padding:30px}.project-screen-grid{display:grid;grid-template-columns:repeat(2,minmax(0,290px));align-items:start;gap:20px;margin:26px 0}.project-screen-grid a{display:block;min-width:0}.project-visual-dialog .project-screen-grid img{display:block;width:100%;height:auto;max-height:300px;object-fit:contain;object-position:top;margin:0;border:1px solid #e0e3da;border-radius:4px}.project-visual-dialog>.close{min-height:36px}
@media(max-width:640px){.project-preview-strip{gap:9px}.project-preview-strip img{width:140px;height:88px}.project-visual-dialog{padding:22px}.project-screen-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.project-visual-dialog .project-screen-grid img{max-height:220px}}

/* Images stay inside the project reader, with a readable stage and local zoom. */
dialog.huddle-dialog,dialog.project-visual-dialog{width:min(920px,calc(100% - 32px));max-height:90dvh;padding:30px;scrollbar-gutter:stable}.image-gallery{margin:28px 0 34px;min-width:0}.gallery-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px}.gallery-toolbar button,.gallery-retry{border:1px solid #d5ddce;border-radius:4px;padding:8px 12px;font-size:12px;min-height:40px;background:#fff;color:#44563a}.gallery-toolbar button:hover{border-color:#6d825e}.gallery-position{font-size:12px;color:#657359;min-width:42px;text-align:center}.gallery-zoom{margin-left:auto}.gallery-figure{margin:0}.gallery-stage{position:relative;background:#f0f3ed;border:1px solid #dde3d7;border-radius:5px;overflow:auto;min-height:220px;max-height:700px;scrollbar-gutter:stable}.image-gallery .gallery-image{display:block;width:100%;height:auto;max-width:100%;max-height:680px;object-fit:contain;margin:0;border:0;border-radius:0}.image-gallery .gallery-image.is-loading{opacity:0}.gallery-loading{position:absolute;top:40%;left:16px;right:16px;text-align:center;font-size:13px;color:#657359}.gallery-retry{position:absolute;top:58%;left:calc(50% - 52px)}.image-gallery .gallery-loading[hidden],.image-gallery .gallery-retry[hidden]{display:none}.gallery-caption{font-size:12px;line-height:1.8;color:var(--color-body);margin-top:12px}.gallery-caption:empty{display:none}.gallery-thumbnails{display:flex;gap:8px;overflow-x:auto;padding:5px 2px 10px;margin-top:12px}.gallery-thumbnails button{flex:0 0 68px;height:70px;border:2px solid transparent;border-radius:4px;padding:3px;background:#f0f3ed}.gallery-thumbnails button[aria-pressed=true]{border-color:var(--color-accent)}.gallery-thumbnails button:focus-visible,.gallery-toolbar button:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.image-gallery .gallery-thumbnails img{display:block;width:100%;height:100%;max-height:none;object-fit:contain;margin:0;border-radius:0}.image-gallery .is-zoomed .gallery-image{width:max(100%,1200px);max-width:none;max-height:none;object-fit:initial}.gallery-stage.is-zoomed{max-height:620px}.huddle-dialog .project-story{max-width:760px}@media(max-width:640px){dialog.huddle-dialog,dialog.project-visual-dialog{padding:20px;width:calc(100% - 20px)}.gallery-toolbar{gap:8px}.gallery-toolbar button{padding:7px 10px}.image-gallery .gallery-image{max-height:580px}.gallery-stage{max-height:600px;min-height:180px}.gallery-stage.is-zoomed{max-height:480px}.gallery-thumbnails button{flex-basis:54px;height:62px}.image-gallery{margin:23px 0 28px}}

.image-gallery{scroll-margin-top:52px}.gallery-toolbar{position:sticky;top:43px;z-index:1;background:#fdfdfa;padding:6px 0}.gallery-stage.is-zoomed{overscroll-behavior:contain}

.project-jumps{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0 0 25px;font-size:12px}.project-jumps a{color:#5b7050;text-decoration:none}.project-jumps a:hover{text-decoration:underline;text-underline-offset:4px}.project-group{scroll-margin-top:24px}.project-story-links{display:flex;gap:12px 24px;flex-wrap:wrap;margin:20px 0}.project-story-links a{line-height:1.8}

.education-awards{margin:18px 0 0;padding-left:18px;color:var(--color-body);font-size:13px;line-height:1.9}.education-awards li{margin-bottom:7px}

.project-visit{display:inline-block;margin:4px 0 0;text-underline-offset:4px;line-height:1.8}.project-access{font-size:13px;color:var(--color-body);margin:10px 0 0}

/* A compact prompt launcher, adapted from AI Worth Trying. */
.build-prompt-panel{margin:22px 0 28px;padding:21px;background:#f0f3ec;border:1px solid #dfe5d8;border-radius:9px}.build-prompt-heading{display:flex;align-items:center;justify-content:space-between;gap:18px}.build-prompt-heading strong{font-size:15px;font-weight:550;letter-spacing:-.2px}.build-prompt-heading a{font-size:11px;color:#6e7c63;text-underline-offset:3px;white-space:nowrap}.build-prompt-panel>p{font-size:12px;line-height:1.7;color:#6b7860;margin:7px 0 17px}.build-prompt-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:stretch;margin:0 0 17px}.build-prompt-actions .copy-build-prompt,.build-prompt-actions .prompt-launch{display:inline-flex;gap:8px;align-items:center;justify-content:center;min-height:43px;padding:9px 12px;box-sizing:border-box;border:1px solid #d7dece;border-radius:5px;font-size:11px;line-height:1.3;text-decoration:none;background:#fff;color:#44503c;white-space:nowrap;transition:border-color .15s,background .15s}.build-prompt-actions .copy-build-prompt{background:#4c6540;border-color:#4c6540;color:white;font-weight:500}.build-prompt-actions .copy-build-prompt:hover{background:#405637}.build-prompt-actions .prompt-launch:hover{border-color:#8da17c;background:#fcfdfb}.build-prompt-actions img{display:block;width:19px;height:19px;object-fit:contain;margin:0;border:0;border-radius:0;max-height:none}.build-prompt-actions .copy-build-prompt img{width:16px;height:16px}.build-prompt-actions a:focus-visible,.copy-build-prompt:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.prompt-preview{border:1px solid #dbe2d3;border-radius:5px;background:#fcfdfb;padding:15px 16px}.prompt-preview>p{font:11px/1.8 ui-monospace,SFMono-Regular,Consolas,monospace;color:#69735f;margin:0 0 10px;max-width:690px}.build-prompt-details summary{font-size:11px;color:#4b6440;cursor:pointer;min-height:25px;padding:4px 0}.build-prompt-details textarea{display:block;width:100%;box-sizing:border-box;resize:vertical;border:1px solid #ccd6c3;border-radius:4px;background:#fff;color:#3f4938;padding:12px;font:11px/1.8 ui-monospace,SFMono-Regular,Consolas,monospace;margin-top:10px;max-height:360px}.build-prompt-details textarea:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.build-prompt-panel .build-prompt-feedback{font-size:10px;line-height:1.7;color:#7b8671;margin:11px 0 0;min-height:17px}@media(max-width:640px){.build-prompt-panel{padding:16px;margin:19px 0 25px}.build-prompt-heading{align-items:baseline}.build-prompt-heading strong{font-size:14px;max-width:175px}.build-prompt-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.build-prompt-actions .copy-build-prompt,.build-prompt-actions .prompt-launch{font-size:10px;padding:10px 7px;min-height:44px;gap:6px}.build-prompt-actions img{width:16px;height:16px}.prompt-preview{padding:12px}.prompt-preview>p{font-size:10px}}

.build-prompt-actions .copy-build-prompt{min-width:121px}@media(max-width:640px){.build-prompt-actions .copy-build-prompt{min-width:0}}

.starter-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0 0 20px;font-size:12px}.starter-links a{color:#405b36;text-underline-offset:4px}.starter-links a:first-child{font-weight:600}

/* Outcomes follow the opening context; build controls follow the full project. */
.project-outcomes{margin:24px 0 28px;padding:20px 0 19px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.project-outcomes h3{font-size:14px;font-weight:600;letter-spacing:-.15px;margin:0 0 12px;color:var(--color-text)}.project-outcomes ul{margin:0;padding-left:19px;max-width:720px}.project-outcomes li{font-size:14px;line-height:1.8;color:var(--color-body);padding-left:3px;margin:0 0 7px}.project-outcomes li:last-child{margin-bottom:0}.project-outcomes+.project-story{margin-top:0}.project-access+.build-prompt-panel{margin-top:15px}@media(max-width:640px){.project-outcomes{margin:22px 0;padding:18px 0}.project-outcomes li{font-size:13px;line-height:1.8}}

/* Writing uses a text-first archive and a full-page reader. */
.writing-tools{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:21px;border-bottom:1px solid var(--line);margin:2px 0 0}.writing-tools>p{font-size:11px;color:#7d8772;margin:0}.writing-tools input{width:230px;max-width:100%;border:1px solid #dbe2d3;border-radius:4px;background:#fff;padding:10px 12px;font-size:12px;font-family:inherit;color:#44503b}.writing-tools input:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.writing-entry{display:grid;grid-template-columns:105px minmax(0,1fr);gap:25px;padding:27px 0;border-bottom:1px solid var(--line)}.writing-entry-meta{display:flex;flex-direction:column;gap:8px;font-size:10px;line-height:1.7;color:#87907e;padding-top:2px}.writing-entry-meta time{color:var(--color-body)}.writing-entry h2{font-size:16px;font-weight:500;letter-spacing:-.25px;line-height:1.5;margin:0 0 8px}.writing-entry h2 a{color:#3f4c36;text-decoration:none;text-underline-offset:4px}.writing-entry h2 a:hover{text-decoration:underline;color:var(--color-accent)}.writing-entry p{font-size:12px;line-height:1.85;color:var(--color-body);margin:0;max-width:570px}.writing-entry a:focus-visible,.writing-back:focus-visible{outline:2px solid var(--color-accent);outline-offset:5px}.writing-empty{padding:30px 0;color:var(--color-body);font-size:13px}.writing-empty button{color:var(--color-accent);text-decoration:underline;text-underline-offset:4px;margin-top:8px}.writing-article{max-width:690px}.writing-back{font-size:12px;color:var(--color-body);text-decoration:none;text-underline-offset:4px;display:inline-block;margin:0 0 34px}.writing-back:hover{text-decoration:underline}.article-header{margin:0 0 35px;padding:0 0 29px;border-bottom:1px solid var(--line)}.article-meta{display:flex;align-items:center;gap:10px;color:#87907e;font-size:11px;margin:0 0 17px}.article-header h1{font-size:32px;line-height:1.25;font-weight:500;letter-spacing:-1px;margin:0 0 17px;color:#36412f;text-wrap:balance}.article-subtitle{font-size:15px;line-height:1.85;color:#758168;margin:0}.article-body{font-size:15px;line-height:1.9;color:#505b47;overflow-wrap:anywhere}.article-body p{font-size:inherit;line-height:inherit;margin:0 0 19px;color:inherit}.article-body h2{font-size:22px;line-height:1.4;font-weight:550;letter-spacing:-.4px;color:#3d4934;margin:34px 0 18px;scroll-margin-top:24px}.article-body h3{font-size:18px;line-height:1.5;font-weight:550;color:#3d4934;margin:28px 0 15px}.article-body h4{font-size:16px;margin:25px 0 14px}.article-body ul,.article-body ol{padding-left:23px;margin:20px 0 24px}.article-body li{padding-left:4px;margin-bottom:9px}.article-body li p{margin-bottom:8px}.article-body strong{font-weight:600;color:#3e4c34}.article-body blockquote{margin:23px 0;padding:4px 0 4px 21px;border-left:3px solid #c4d2b9;color:#66775a}.article-body blockquote p:last-child{margin-bottom:0}.article-body a{color:#3c6434;text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}.article-body a:hover{color:#233e1d}.article-body img{display:block;width:auto;max-width:100%;height:auto;margin:27px auto;border:1px solid #e4e8de;border-radius:5px}.article-body a:has(img){display:block}.article-body img[alt]{color:#79886a;font-size:12px}.article-body code{font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;background:#edf1e7;padding:2px 5px;border-radius:3px;overflow-wrap:anywhere}.article-body pre{overflow:auto;padding:17px;background:#edf1e7;border-radius:5px;max-width:100%}.article-body pre code{padding:0}.article-body mark{background:#e9efd9;color:inherit;padding:0 2px}.article-body small{font-size:12px}.article-source{border-top:1px solid var(--line);padding:22px 0;margin:35px 0 0;font-size:11px;color:#859078}.article-source a{color:#657b54;text-underline-offset:3px}.article-neighbours{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin:14px 0 0;padding-top:23px;border-top:1px solid var(--line)}.article-neighbours a{text-decoration:none;color:#506a40}.article-neighbours a:last-child{text-align:right}.article-neighbours span{display:block;font-size:10px;color:#8a937f;margin-bottom:10px}.article-neighbours strong{display:block;font-size:13px;line-height:1.7;font-weight:500}.article-neighbours a:hover strong{text-decoration:underline;text-underline-offset:4px}.page-writing-article .site-footer{max-width:690px}.page-writing-article{min-width:0}
@media(max-width:640px){.combined-sidebar>nav{flex-wrap:wrap;row-gap:7px;column-gap:10px}.writing-tools{gap:14px;align-items:center;padding-bottom:18px}.writing-tools input{width:185px;font-size:12px}.writing-entry{grid-template-columns:1fr;gap:10px;padding:23px 0}.writing-entry-meta{flex-direction:row;gap:14px;font-size:10px;padding:0}.writing-entry h2{font-size:16px;line-height:1.5;margin-bottom:7px}.writing-entry p{font-size:12px}.writing-back{margin-bottom:27px}.article-header h1{font-size:28px;letter-spacing:-.7px;line-height:1.3}.article-subtitle{font-size:14px}.article-header{margin-bottom:27px;padding-bottom:24px}.article-body{font-size:14px;line-height:1.9}.article-body h2{font-size:20px}.article-body img{margin:22px auto}.article-neighbours{gap:20px}.article-neighbours strong{font-size:12px}.article-meta{font-size:10px}}

@media(min-width:641px){body[data-page^=writing] #main>.combined-content:only-child{grid-column:2}}

/* Keep reader chrome outside the scrolling article; gallery controls stay in flow. */
body[data-design=combined] dialog{padding:0;overflow:hidden}body[data-design=combined] dialog[open]{display:flex;flex-direction:column}body[data-design=combined] .reader-header{flex:0 0 auto;padding:8px 16px;background:#fdfdfa;border-bottom:1px solid var(--line)}body[data-design=combined] .reader-header .close{position:static;display:block;margin:0 0 0 auto;padding:8px 10px;min-height:40px;background:transparent}body[data-design=combined] #detail{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:22px 28px 28px}.gallery-toolbar{position:static;top:auto;z-index:auto;padding:0;background:transparent}.image-gallery{scroll-margin-top:12px}.project-sequence{margin:4px 0 0}.project-sequence .site-project{padding:26px 0}.project-sequence .site-project:first-child{padding-top:8px}@media(max-width:640px){body[data-design=combined] #detail{padding:20px}body[data-design=combined] .reader-header{padding:6px 10px}.project-sequence .site-project{padding:23px 0}}

.project-sequence .project-heading h2{font-size:15px;font-weight:500;letter-spacing:-.3px;margin:0;line-height:1.5}

/* A quiet theme selector replaces the footer identity line. */
.combined-sidebar>nav{margin-top:30px}.site-footer{align-items:center}.theme-choice{display:flex;gap:3px;border:1px solid var(--line);border-radius:5px;padding:3px}.theme-choice button{font-size:10px;line-height:1.4;padding:6px 10px;color:#7a8670;border-radius:3px}.theme-choice button[aria-pressed=true]{background:#e8eee1;color:var(--color-text)}.theme-choice button:focus-visible{outline:2px solid #6c8557;outline-offset:2px}.archive-visit{display:inline-block;margin-top:25px}.archive-summary{margin-bottom:12px}.archive-role{line-height:1.7;overflow-wrap:anywhere}.about-prose em{font-style:italic;color:inherit}.about-links{padding-top:15px}
html{color-scheme:light}html[data-theme=dark]{color-scheme:dark;background:var(--color-canvas);color:var(--color-text);--text-primary:var(--color-text);--text-muted:var(--color-body);--surface:var(--color-canvas);--surface-raised:#252c35;--accent:var(--color-accent)}
html[data-theme=dark] body[data-design=combined]{--line:var(--color-border);--muted:var(--color-body);--accent:var(--color-accent);--sidebar-surface:var(--color-sidebar);background:linear-gradient(to right,var(--sidebar-surface) 0,var(--sidebar-surface) var(--sidebar-edge),var(--surface) var(--sidebar-edge),var(--surface) 100%);color:var(--text-primary)}html[data-theme=dark] body[data-design=combined]::before{background:var(--sidebar-surface)}
html[data-theme=dark] :is(.combined-sidebar,.sidebar-profile,.page-intro h1,.site-project h2,.job-heading h3,.writing-entry h2 a,.article-header h1,.article-body h2,.article-body h3,.article-body h4,.interview-record h2,.project-outcomes h3,dialog h2){color:var(--text-primary)}
html[data-theme=dark] :is(.combined-contacts a,.site-content p,.about-links>a>span,.role-line,.job-heading>span,.cv-job li,.skills-list dd,.skills-list dt,.archive-role,.archive-quote,.record-meta,.writing-entry p,.writing-entry-meta,.writing-entry-meta time,.article-meta,.article-subtitle,.article-body,.article-body p,.article-body li,.article-body blockquote,.article-source,.project-story p,.project-access,.project-outcomes li,.gallery-caption,.gallery-position,.build-prompt-panel>p,.build-prompt-feedback){color:var(--text-muted)}
html[data-theme=dark] :is(.site-content a,.project-open,.project-visit,.project-code,.project-story-links a,.article-body a,.article-source a,.article-neighbours a,.about-prose a,.combined-sidebar>nav a,.writing-back,.site-footer a){color:var(--accent)}
html[data-theme=dark] :is(.combined-sidebar>nav a[aria-current=page],.combined-sidebar>nav a:hover,.combined-sidebar>nav a:focus-visible){background:var(--color-hover);color:#e5f3eb}html[data-theme=dark] .combined-contacts img{filter:brightness(0) invert(.85);opacity:1}
html[data-theme=dark] :is(.site-project,.cv-job,.writing-entry,.interview-record,.about-links,.about-small,.site-footer,.article-header,.article-source,.article-neighbours,.project-outcomes,.writing-tools){border-color:var(--line)}
html[data-theme=dark] :is(.article-body strong,.article-neighbours strong,.role-line strong,.about-links strong){color:var(--color-text)}html[data-theme=dark] .article-body code,html[data-theme=dark] .article-body pre,html[data-theme=dark] .article-body mark{background:#252e38;color:#e2e9ef}html[data-theme=dark] .article-body blockquote{border-color:#7caa94}
html[data-theme=dark] body[data-design=combined] dialog{background:var(--color-raised);color:var(--text-primary);border-color:var(--line)}html[data-theme=dark] body[data-design=combined] .reader-header{background:var(--color-raised);border-color:var(--line)}html[data-theme=dark] .reader-header .close{color:var(--text-muted)}html[data-theme=dark] :is(.gallery-stage,.gallery-thumbnails button,.archive-avatar){background:#14191f;border-color:var(--line)}html[data-theme=dark] .gallery-thumbnails button[aria-pressed=true]{border-color:var(--color-accent)}html[data-theme=dark] :is(.gallery-toolbar button,.gallery-retry){background:#28323d;color:#e1e7ed;border-color:#4c5968}
html[data-theme=dark] .build-prompt-panel{background:#222a34;border-color:#435061}html[data-theme=dark] .build-prompt-heading strong{color:var(--color-text)}html[data-theme=dark] :is(.build-prompt-heading a,.starter-links a,.build-prompt-details summary){color:var(--color-accent)}html[data-theme=dark] .build-prompt-actions .prompt-launch{background:#2c3642;color:#e1e7ed;border-color:#526173}html[data-theme=dark] .build-prompt-actions .copy-build-prompt{background:#345b49;color:var(--color-text);border-color:#6a9b82}html[data-theme=dark] .prompt-preview{background:#171e26;border-color:#435061}html[data-theme=dark] .prompt-preview>p{color:var(--color-body)}html[data-theme=dark] .build-prompt-details textarea{background:#141a21;color:#e1e7ed;border-color:#526173}
html[data-theme=dark] :is(.writing-tools input,.theme-choice){background:#222a34;border-color:#435061;color:#e1e7ed}html[data-theme=dark] .theme-choice button{color:#b1bdc9}html[data-theme=dark] .theme-choice button[aria-pressed=true]{background:#304439;color:#edf6f1}
@media(max-width:640px){.combined-sidebar>nav{margin-top:0}.site-footer{gap:20px}.theme-choice button{padding:7px 10px}html[data-theme=dark] body[data-design=combined]{background:var(--surface)}html[data-theme=dark] .combined-sidebar{background:var(--sidebar-surface);border-color:var(--line)}}
.theme-choice button{color:#617153}.site-footer>a{color:#58694c}html[data-theme=dark] .site-footer>a{color:var(--accent)}

/* QA: readable secondary text in light mode; keep the existing dark palette. */
html:not([data-theme=dark]) body[data-design=combined] :is(.about-links>a>span,.archive-role,.archive-quote,.record-meta,.writing-entry p,.writing-entry-meta,.article-meta,.article-subtitle,.skills-list dt,.role-line,.job-heading>span,.role-description,.page-intro>p,.article-source,.article-neighbours span,.gallery-caption,.gallery-position,.project-access,.build-prompt-panel>p,.prompt-preview>p,.build-prompt-feedback){color:var(--color-body)}
.archive-role{font-size:11px}.archive-quote{font-size:12px}.record-meta{font-size:10px}
input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
html:not([data-theme=dark]) body[data-design=combined] :is(.cv-section>h2,.skills-list dd,.archive-summary span,.writing-tools>p,.writing-entry-meta time){color:var(--color-body)}
html[data-theme=dark] :is(.cv-section>h2,.education-awards li){color:var(--text-muted)}
html:not([data-theme=dark]) body[data-design=combined] :is(.site-project>p,.writing-back){color:var(--color-body)}

.theme-choice button{display:grid;place-items:center;width:36px;height:36px;padding:9px;line-height:1}.theme-choice svg{display:block;width:18px;height:18px;pointer-events:none}

/* Keep appearance controls near the profile instead of below long page content. */
.sidebar-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.sidebar-header .sidebar-profile{min-width:0}.sidebar-header .theme-choice{flex:0 0 auto;margin-top:0}.site-footer{justify-content:flex-end}
@media(max-width:640px){.sidebar-header{align-items:center}.sidebar-header .theme-choice button{width:44px;height:44px;padding:13px}.combined-sidebar>nav a{min-height:36px;display:flex;align-items:center}.sidebar-header .sidebar-profile{white-space:nowrap}}
@media(max-width:640px){.combined-sidebar>nav a,.project-open,.reader-header .close,.gallery-toolbar button{min-height:44px}.writing-tools input,.build-prompt-details textarea{font-size:16px}}

.footer-contacts{display:none}@media(max-width:640px){.site-footer{justify-content:space-between;align-items:center}.footer-contacts{display:flex;gap:6px}.footer-contacts a{display:grid;place-items:center;width:44px;height:44px}.footer-contacts img{display:block;width:17px;height:17px}.footer-contacts span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}html[data-theme=dark] .footer-contacts img{filter:brightness(0) invert(.85)}}
@media(max-width:640px){body[data-design=combined] .reader-header .close{min-height:44px}.site-footer>a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}}
@media(max-width:640px){.combined-sidebar>nav a,.combined-sidebar>nav a:first-child{display:flex;align-items:center;justify-content:center;min-height:44px;line-height:1.3}}

.sponsorship-offers{margin:24px 0 28px;padding:20px 0;border-bottom:1px solid var(--line)}.sponsorship-offers h3{font-size:14px;font-weight:600;margin:0 0 9px;color:var(--color-text)}.sponsorship-offers>p{font-size:13px;line-height:1.8;color:var(--color-body);margin:0 0 16px}.sponsorship-offers ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 24px;list-style:none;margin:0;padding:0}.sponsorship-offers li{font-size:13px;line-height:1.6;color:var(--color-body);overflow-wrap:anywhere}.sponsorship-offers li:nth-child(-n+10){font-weight:550;color:var(--color-text)}html[data-theme=dark] .sponsorship-offers h3{color:var(--text-primary)}html[data-theme=dark] .sponsorship-offers li,html[data-theme=dark] .sponsorship-offers>p{color:var(--text-muted)}html[data-theme=dark] .sponsorship-offers li:nth-child(-n+10){color:var(--text-primary)}@media(max-width:640px){.sponsorship-offers ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}}
@media(max-width:640px){.combined-sidebar>nav{column-gap:4px;margin-left:-6px}.combined-sidebar>nav a{padding:5px 6px;margin-left:0}}

/* A single quiet icon, with a larger invisible touch target. */
html[data-theme] .sidebar-header .theme-choice{border:0;background:transparent;padding:0;gap:0}.sidebar-header .theme-choice .theme-toggle{width:36px;height:36px;padding:0;background:transparent;border:0;border-radius:50%;color:#617153}.sidebar-header .theme-choice .theme-toggle:hover{background:var(--color-selection);color:var(--color-text)}.theme-toggle svg{width:16px;height:16px;stroke-width:1.7}.theme-toggle svg[data-theme-icon=light]{display:none}html[data-theme=dark] .theme-toggle svg[data-theme-icon=dark]{display:none}html[data-theme=dark] .theme-toggle svg[data-theme-icon=light]{display:block}html[data-theme=dark] .sidebar-header .theme-choice .theme-toggle{color:var(--color-body)}html[data-theme=dark] .sidebar-header .theme-choice .theme-toggle:hover{background:var(--color-hover);color:var(--color-text)}@media(max-width:640px){.sidebar-header .theme-choice .theme-toggle{width:44px;height:44px}}

/* Frame only the complete hero, excluding the partial statistics strip in this capture. */
.image-gallery .gallery-stage.is-cropped-hero{min-height:0;max-height:none;overflow:hidden;scrollbar-gutter:auto}.image-gallery .gallery-stage.is-cropped-hero .gallery-image{position:absolute;left:0;top:0;width:100%;height:auto;max-height:none}.project-preview-strip img.hero-preview,.image-gallery .gallery-thumbnails img.hero-preview{height:auto;aspect-ratio:var(--hero-preview-aspect);object-fit:cover;object-position:top}

/* A quiet archive: the writing leads, with publication details to the right. */
.writing-list{margin-top:8px;border-top:1px solid var(--line)}
.writing-entry{grid-template-columns:minmax(0,1fr) 106px;gap:28px;align-items:start;padding:27px 0}
.writing-entry-copy{min-width:0}.writing-entry h2{margin-bottom:7px}
.writing-entry-meta{flex-direction:column;align-items:flex-end;text-align:right;gap:4px;padding-top:4px;font-size:11px;line-height:1.7;font-variant-numeric:tabular-nums;white-space:nowrap}
.writing-entry:last-child{border-bottom:0}.page-writing .site-footer{margin-top:8px}

/* Let the count sit in the introduction instead of adding another stats block. */
.interview-count{font-weight:550;color:var(--color-text);background:linear-gradient(transparent 40%,#e2ecd7 40%,#e2ecd7 96%,transparent 96%);padding:0 2px;white-space:nowrap}
html[data-theme=dark] .interview-count{color:#edf6f1;background:linear-gradient(transparent 40%,#304439 40%,#304439 96%,transparent 96%)}
.interview-grid{margin-top:8px;border-top:1px solid var(--line);gap:0 30px}
.interview-record{grid-template-columns:45px minmax(0,1fr);gap:12px 14px;padding:25px 0;align-content:start;border-bottom:0;border-top:1px solid var(--line)}
.interview-record:first-child{border-top:0}.interview-record-copy{min-width:0}
.interview-record-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.interview-record h2{min-width:0;font-size:14px;line-height:1.5;font-weight:550;margin:0}
.interview-record .record-meta{flex:0 0 auto;white-space:nowrap;font-size:10px;line-height:1.6}
.interview-record .archive-role{font-size:11px;line-height:1.65;margin:5px 0 0}
.interview-record .archive-quote{grid-column:1/-1;font-size:12px;line-height:1.8;min-height:0;margin:0;-webkit-line-clamp:3}
@media(min-width:901px){.interview-record:nth-child(2){border-top:0}}
@media(max-width:640px){.writing-entry{grid-template-columns:minmax(0,1fr) 80px;gap:16px;padding:23px 0}.writing-entry-meta{flex-direction:column;gap:4px;align-items:flex-end;text-align:right;font-size:10px;padding-top:4px}.writing-entry h2{font-size:16px}.interview-record{padding:23px 0}.interview-record h2{font-size:14px}.interview-record .archive-role{font-size:12px}}

/* GradSimple holds its publication, tools and operating experiments together. */
dialog.flagship-dialog{width:min(940px,calc(100% - 32px))}.project-section{margin:28px 0;padding:23px 0 0;border-top:1px solid var(--line)}.project-section>h3{font-size:15px;font-weight:550;line-height:1.5;margin:0 0 18px;color:var(--color-text)}.project-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 30px;list-style:none;padding:0;margin:0}.project-tools li{min-width:0}.project-tools a,.workflow-body>a{font-size:13px;font-weight:500;text-decoration:none;color:var(--color-accent)}.project-tools a:hover,.workflow-body>a:hover{text-decoration:underline}.project-tools p{font-size:12px;line-height:1.8;color:var(--color-body);margin:7px 0 0}.project-workflow{border-bottom:1px solid var(--line)}.project-workflow summary{font-size:14px;font-weight:500;line-height:1.6;cursor:pointer;min-height:44px;padding:13px 0}.project-workflow summary::marker{color:var(--color-accent)}.workflow-body{padding:1px 0 20px}.workflow-body p{font-size:13px;line-height:1.85;color:var(--color-body);margin:0 0 16px}.workflow-body p:last-child{margin-bottom:0}html[data-theme=dark] .project-section>h3{color:var(--text-primary)}html[data-theme=dark] :is(.workflow-body p,.project-tools p){color:var(--text-muted)}html[data-theme=dark] :is(.project-tools a,.workflow-body>a){color:var(--accent)}@media(max-width:640px){.project-tools{grid-template-columns:1fr;gap:20px}.project-section{margin:24px 0;padding-top:20px}}

.job-heading h3 a{color:inherit;text-decoration:none}.job-heading h3 a:hover{text-decoration:underline;text-underline-offset:4px}.project-section h3 small{font-size:12px;font-weight:400;margin-left:8px;color:var(--muted)}.visibility-list{font-size:14px;line-height:1.8;padding-left:20px}
.flagship-dialog .project-outcomes{border-bottom:0;margin-bottom:0;padding-bottom:0}.flagship-dialog .visibility-list{color:var(--color-body)}html[data-theme=dark] .flagship-dialog .visibility-list{color:var(--text-muted)}

.visibility-period{font-size:12px!important;line-height:1.6!important;margin:12px 0 0!important;color:var(--text-muted)}

/* Center the desktop composition and contain the sidebar's colored surface. */
@media(min-width:641px){
 body[data-design=combined],html[data-theme=dark] body[data-design=combined]{
  --layout-width:1040px;--layout-gutter:32px;--sidebar-width:180px;--column-gap:64px;
  background:var(--surface,#fff);isolation:isolate;
 }
 body[data-design=combined] main{
  max-width:var(--layout-width);padding:48px var(--layout-gutter) 0;
  grid-template-columns:var(--sidebar-width) minmax(0,1fr);gap:var(--column-gap);
 }
 body[data-design=combined]::before{
  left:max(0px,calc((100% - var(--layout-width))/2));
  width:calc(var(--layout-gutter) + var(--sidebar-width) + var(--column-gap)/2);
  background:var(--sidebar-surface);border-right:1px solid var(--line);z-index:-1;
 }
 body[data-design=combined] .site-content{max-width:none}
}
@media(min-width:641px) and (max-width:900px){
 body[data-design=combined],html[data-theme=dark] body[data-design=combined]{--layout-gutter:30px;--sidebar-width:155px;--column-gap:40px}
}

/* Only the underlined title opens the project reader. */
.project-title-action{font:inherit;color:inherit;text-align:left;text-decoration:underline;text-decoration-color:var(--color-link-line);text-decoration-thickness:1px;text-underline-offset:5px;min-height:44px;padding:10px 0;margin:-10px 0;line-height:inherit}
.project-title-action:hover{color:var(--accent);text-decoration-color:currentColor}
.project-title-action:focus-visible{outline:2px solid var(--accent);outline-offset:5px;border-radius:2px}
html[data-theme=dark] .project-title-action{text-decoration-color:var(--color-link-line)}
html[data-theme=dark] .project-title-action:hover{text-decoration-color:currentColor}

/* Dark hierarchy: neutral reading surfaces, white headings, muted metadata, sage actions. */
html[data-theme=dark]{--text-secondary:var(--color-secondary)}
html[data-theme=dark] :is(.writing-entry h2 a,.combined-sidebar>nav a){color:var(--text-primary)}
html[data-theme=dark] :is(.writing-entry h2 a:hover,.writing-entry h2 a:focus-visible){color:var(--accent)}
html[data-theme=dark] body[data-design=combined] :is(.writing-entry-meta,.writing-entry-meta time,.article-meta,.record-meta,.job-heading>span,.role-description,.gallery-caption,.gallery-position,.visibility-period,.article-source){color:var(--text-secondary)}
html[data-theme=dark] .combined-sidebar>nav a[aria-current=page]{background:var(--color-selection);color:var(--color-selection-text);box-shadow:inset 2px 0 var(--color-accent)}
html[data-theme=dark] :is(.project-section h3 small,.project-workflow summary::marker){color:var(--text-secondary)}
html[data-theme=dark] .sidebar-header .theme-choice .theme-toggle{color:var(--color-body)}

/* Mobile header disclosure, with ordinary navigation links and no focus trap. */
.sidebar-actions{display:flex;align-items:center;gap:4px;flex:none}
.mobile-nav-toggle{display:none}
.combined-sidebar>nav[hidden]{display:none}
@media(max-width:640px){
 body[data-mobile-nav-ready] .combined-sidebar{position:relative;top:auto;gap:0;z-index:20}
 body[data-mobile-nav-ready] .mobile-nav-toggle{display:grid;place-items:center;width:44px;height:44px;padding:12px;color:#4e6245;border-radius:4px}
 .mobile-nav-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
 .mobile-menu-icon{display:block;width:20px;height:20px;background:currentColor;mask:url('assets/icons/menu.svg') center/contain no-repeat;-webkit-mask:url('assets/icons/menu.svg') center/contain no-repeat}
 .mobile-nav-toggle[aria-expanded=true] .mobile-menu-icon{mask-image:url('assets/icons/close.svg');-webkit-mask-image:url('assets/icons/close.svg')}
 body[data-mobile-nav-ready] .combined-sidebar>nav:not([hidden]){display:grid;grid-template-columns:minmax(0,1fr);justify-content:stretch;align-items:stretch;position:absolute;top:calc(100% - 5px);left:16px;right:16px;margin:0;padding:8px;gap:2px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 30px #1722111a;font-size:14px;z-index:30}
 body[data-mobile-nav-ready] .combined-sidebar>nav a,body[data-mobile-nav-ready] .combined-sidebar>nav a:first-child{display:flex;justify-content:flex-start;min-height:48px;padding:10px 14px;margin:0;line-height:1.5;border-radius:4px}
 html[data-theme=dark] body[data-mobile-nav-ready] .mobile-nav-toggle{color:var(--text-primary)}
 html[data-theme=dark] body[data-mobile-nav-ready] .combined-sidebar>nav{background:var(--color-raised);box-shadow:0 14px 32px #0005}
}
@media(max-width:640px) and (prefers-reduced-motion:no-preference){
 body[data-mobile-nav-ready] .combined-sidebar>nav:not([hidden]){animation:mobile-nav-in .14s ease-out}
 @keyframes mobile-nav-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
}

/* Shared roles for the active personal site. These are the palette and type scale. */
:root{
 --color-canvas:#fff;--color-sidebar:#e9eee5;--color-raised:#f4f6f1;
 --color-text:#262925;--color-body:#50594a;--color-secondary:#677260;
 --color-accent:#375841;--color-link-line:#899b8e;--color-border:#e0e3da;
 --color-selection:#dce5d6;--color-selection-text:#294622;--color-hover:#e4ebdf;
 --type-description:14px;--type-entry:16px;--type-meta:12px;
}
html[data-theme=dark]{
 --color-canvas:#11151a;--color-sidebar:#1d232b;--color-raised:#1b2129;
 --color-text:#f3f5f7;--color-body:#c8cfd8;--color-secondary:#9faab7;
 --color-accent:#a4d4bc;--color-link-line:#718f80;--color-border:#343c47;
 --color-selection:#2b3b34;--color-selection-text:#ddf3e7;--color-hover:#29333d;
}
body[data-design=combined],html[data-theme=dark] body[data-design=combined]{
 --surface:var(--color-canvas);--sidebar-surface:var(--color-sidebar);--line:var(--color-border);
 --accent:var(--color-accent);--muted:var(--color-secondary);
 --text-primary:var(--color-text);--text-muted:var(--color-body);--text-secondary:var(--color-secondary);
 color:var(--color-text);
}
html[data-theme] body[data-design=combined] :is(.site-project h2,.writing-entry h2,.interview-record h2,.job-heading h3){font-size:var(--type-entry);font-weight:550;color:var(--color-text)}
html[data-theme] body[data-design=combined] .site-project>p{font-size:var(--type-description)!important;color:var(--color-body)}
html[data-theme] body[data-design=combined] :is(.writing-entry p,.cv-job li,.education-awards li,.cv-section p,.skills-list dd,.archive-quote,.project-tools p,.workflow-body p,.project-story p,.project-outcomes li,.build-prompt-panel>p,.project-access){font-size:var(--type-description);color:var(--color-body)}
html[data-theme] body[data-design=combined] :is(.writing-entry-meta,.writing-entry-meta time,.record-meta,.article-meta,.job-heading>span,.role-line>span:last-child,.role-description,.gallery-caption,.gallery-position,.visibility-period,.article-source,.cv-section>h2,.skills-list dt,.site-footer){font-size:var(--type-meta);color:var(--color-secondary)}
html[data-theme] body[data-design=combined] .role-description{font-size:var(--type-meta)!important}
html[data-theme] body[data-design=combined] :is(.role-line,.archive-role){font-size:var(--type-description);color:var(--color-body)}
html[data-theme] body[data-design=combined] .about-links>a>span{font-size:var(--type-description);color:var(--color-body)}
html[data-theme] body[data-design=combined] .about-links strong{font-size:var(--type-description);color:var(--color-text)}
html[data-theme] body[data-design=combined] :is(.project-title-action,.writing-entry h2 a,.about-links strong){text-decoration:underline;text-decoration-color:var(--color-link-line);text-decoration-thickness:1px;text-underline-offset:5px;color:var(--color-text)}
html[data-theme] body[data-design=combined] :is(.project-title-action:hover,.writing-entry h2 a:hover,.about-links>a:hover strong){color:var(--color-accent);text-decoration-color:currentColor}
html[data-theme] body[data-design=combined] .combined-sidebar>nav{font-size:14px}
html[data-theme] body[data-design=combined] .combined-sidebar>nav a{color:var(--color-text)}
html[data-theme] body[data-design=combined] .combined-sidebar>nav a:hover{background:var(--color-hover);color:var(--color-text)}
html[data-theme] body[data-design=combined] .combined-sidebar>nav a[aria-current=page]{color:var(--color-selection-text);background:var(--color-selection)}
html[data-theme] body[data-design=combined] :is(.theme-toggle,.mobile-nav-toggle){color:var(--color-body)}
@media(max-width:640px){.writing-entry{grid-template-columns:minmax(0,1fr) 88px;gap:16px}}

html[data-theme] body[data-design=combined] .site-footer>a{color:var(--color-accent)}

/* Reference-inspired mobile sheet: open space, ruled rows and staggered entrances. */
.nav-note{display:none}
:root{--color-highlight:#edf2e9}
html[data-theme=dark]{--color-highlight:#24382e}
.work-highlight{color:inherit;background:var(--color-highlight);padding:.08em .18em;border-radius:2px;box-decoration-break:clone;-webkit-box-decoration-break:clone;font-weight:500}
@media(max-width:640px){
 body[data-mobile-nav-state]{overflow:hidden}
 body[data-mobile-nav-state] .sidebar-header{position:relative;z-index:40}
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav:not([hidden]){
  position:fixed;inset:0;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;
  width:100%;height:100dvh;min-height:0;margin:0;padding:104px 24px 24px;gap:0;overflow-y:auto;
  border:0;border-radius:0;background:var(--color-canvas);box-shadow:none;
  opacity:0;transform:translateY(-8px);transition:opacity .26s ease,transform .26s cubic-bezier(.22,.61,.36,1);animation:none;
 }
 html[data-theme] body[data-mobile-nav-ready][data-mobile-nav-state=open] .combined-sidebar>nav{opacity:1;transform:none}
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav a,
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav a:first-child{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex:none;min-height:64px;padding:14px 0;
  margin:0;border-radius:0;border-bottom:1px solid var(--color-border);background:transparent;box-shadow:none;
  opacity:0;transform:translateY(9px);transition:opacity .24s ease,transform .32s cubic-bezier(.22,.61,.36,1);
 }
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav a:first-child{border-top:1px solid var(--color-border)}
 html[data-theme] body[data-mobile-nav-ready][data-mobile-nav-state=open] .combined-sidebar>nav a{opacity:1;transform:none}
 html[data-theme] body[data-mobile-nav-ready][data-mobile-nav-state=open] .combined-sidebar>nav a:nth-child(2){transition-delay:35ms}
 html[data-theme] body[data-mobile-nav-ready][data-mobile-nav-state=open] .combined-sidebar>nav a:nth-child(3){transition-delay:70ms}
 html[data-theme] body[data-mobile-nav-ready][data-mobile-nav-state=open] .combined-sidebar>nav a:nth-child(4){transition-delay:105ms}
 html[data-theme] body[data-mobile-nav-ready][data-mobile-nav-state=open] .combined-sidebar>nav a:nth-child(5){transition-delay:140ms}
 html[data-theme] body[data-mobile-nav-ready][data-mobile-nav-state=closing] .combined-sidebar>nav{pointer-events:none}
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav .nav-label{font-size:16px;font-weight:500}
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav .nav-note{display:block;font-size:12px;color:var(--color-secondary);text-align:right;font-weight:400}
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav a[aria-current=page]{color:var(--color-accent);background:transparent;box-shadow:none}
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav a[aria-current=page] .nav-label{font-weight:600;text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}
 .mobile-menu-icon{transition:transform .24s ease}
 .mobile-nav-toggle[aria-expanded=true] .mobile-menu-icon{transform:rotate(90deg)}
}
@media(max-width:640px) and (prefers-reduced-motion:reduce){
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav,
 html[data-theme] body[data-mobile-nav-ready] .combined-sidebar>nav a,
 .mobile-menu-icon{transition:none!important;animation:none!important;transform:none!important}
}
