/* Shared editorial layer. Retains the original paper, green, and instrument theme. */
:root { --ap-chalk:#FBFAF6; --ap-rule:#D3D8CC; --ap-evergreen:#1C2924; --ap-graphite:#59645E; --ap-viridian:#0B6B4F; }
[hidden] { display:none !important; }
html { scroll-padding-top:2rem; }
body { background:#FBFAF6; }
a { text-underline-offset:.22em; }
button,input { font:inherit; }
button,a,input,summary { -webkit-tap-highlight-color:transparent; }
button:focus-visible,input:focus-visible,a:focus-visible { outline:2px solid #0B6B4F; outline-offset:4px; }
.ap-eyebrow { font:400 .68rem/1.6 ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing:.09em; text-transform:uppercase; color:#536457; }
.ap-topnav,.ap-links { display:flex; flex-wrap:wrap; gap:.8rem 1.4rem; align-items:center; }
.ap-topnav a { font-size:.82rem; padding:.6rem 0; color:#384b40; text-decoration:none; }
.ap-topnav a:hover,.ap-topnav a[aria-current] { color:#0B6B4F; text-decoration:underline; }
.ap-button { display:inline-flex; align-items:center; justify-content:center; gap:1.1rem; padding:.78rem 1.05rem; min-height:44px; border:1px solid #aab8ab; border-radius:3px; background:transparent; color:#1C2924; font-size:.82rem; font-weight:500; text-decoration:none; cursor:pointer; transition:background-color 180ms,border-color 180ms; }
.ap-button:hover { background:#e9eee4; border-color:#537b60; }
.ap-button--solid { background:#254f3b; color:#fffef5; border-color:#254f3b; }
.ap-button--solid:hover { background:#163a2a; color:#fffef5; }
.ap-links>a:not(.ap-button) { font-size:.875rem; }
.ap-page-header { width:min(calc(100% - 4rem),72rem); margin:auto; padding:1.65rem 0; display:flex; justify-content:space-between; align-items:center; gap:1.5rem; border-bottom:1px solid var(--ap-rule); }
.ap-page-brand { display:flex; align-items:center; gap:.8rem; font-size:1.4rem; font-weight:600; letter-spacing:-.05em; text-decoration:none; white-space:nowrap; }
.ap-page-brand img { width:28px; height:28px; }
/* The original kinetic instrument remains the centerpiece. */
.ap-hero.ap-hero--thin { min-block-size:0; padding-block:1.2rem 0; }
.ap-hero--thin .ap-masthead { justify-content:space-between; border-bottom:1px solid var(--ap-rule); padding-bottom:.9rem; }
.ap-hero-layout { display:grid; grid-template-columns:.9fr 1.25fr; align-items:center; gap:1rem; width:min(100%,72rem); margin:auto; padding:2.7rem 0 2rem; min-height:37rem; }
.ap-hero-copy { padding:1rem 0 1.5rem; position:relative; z-index:1; }
.ap-hero-copy h1 { font-size:clamp(2.8rem,4.1vw,4rem); line-height:1.07; font-weight:500; letter-spacing:-.057em; max-width:10em; margin:1.2rem 0; }
.ap-hero-copy h1 em { font-style:normal; color:#427356; }
.ap-hero-description { color:#526358; max-width:26rem; font-size:1.01rem; line-height:1.75; margin-bottom:1.7rem; }
.ap-hero-current { display:flex; align-items:center; gap:.6rem; margin-top:1.5rem; font-size:.75rem; color:#4f6558; }
.ap-status-dot { width:6px; height:6px; flex:none; border-radius:50%; background:#447958; box-shadow:0 0 0 4px #44795813; }
.ap-hero-layout .ap-core-main { min-width:0; padding:0; flex:initial; gap:0; }
.ap-hero-layout .ap-core-stage { inline-size:100%; max-inline-size:none; max-block-size:none; aspect-ratio:960/500; }
.ap-hero-layout .ap-core-dock { inline-size:min(100%,26rem); }
.ap-core-caption { text-align:center; font:400 .65rem/1.6 ui-monospace,monospace; color:#566a5a; letter-spacing:.03em; margin-bottom:.15rem; }
.ap-core-next { visibility:visible; }
.ap-experience-strip { width:min(100%,72rem); margin:auto; display:grid; grid-template-columns:repeat(3,1fr); border-block:1px solid var(--ap-rule); }
.ap-experience-strip>a { text-decoration:none; padding:1.2rem 1.4rem; display:flex; flex-direction:column; gap:.18rem; border-left:1px solid var(--ap-rule); }
.ap-experience-strip>a:first-child { padding-left:0; border-left:0; }
.ap-experience-strip strong { font-size:1rem; font-weight:550; }
.ap-experience-strip span { font-size:.75rem; color:#5b6d5f; }
.ap-experience-strip>a:hover strong { color:#0B6B4F; text-decoration:underline; text-underline-offset:4px; }
.ap-work-overview { width:min(calc(100% - 3rem),72rem); margin:3.5rem auto .5rem; display:flex; align-items:flex-end; justify-content:space-between; gap:1.5rem; }
.ap-work-overview h2 { font-size:clamp(1.8rem,3vw,2.6rem); font-weight:500; letter-spacing:-.05em; margin:.35rem 0; }
.ap-work-overview p:not(.ap-eyebrow) { color:#526358; max-width:35rem; font-size:.9rem; }
.ap-work-controls { display:flex; flex-wrap:wrap; gap:.5rem; width:min(calc(100% - 3rem),72rem); margin:1.5rem auto 0; }
.ap-work-controls a { font-size:.75rem; padding:.55rem .95rem; border:1px solid var(--ap-rule); border-radius:3px; text-decoration:none; }
.ap-work-controls a:hover { background:#e8eee2; }
html:not([data-content-path]) .ap-work-controls a[href="#career-work"],html[data-content-path="silicon"] .ap-work-controls a[href="#silicon"],html[data-content-path="machines"] .ap-work-controls a[href="#machines"],html[data-content-path="systems"] .ap-work-controls a[href="#systems"] { color:#fff; background:#31503c; border-color:#31503c; }
.ap-portfolio .ap-entry-mark { border-radius:8px; }
.ap-case-study-link { display:inline-flex; gap:.6rem; margin-top:1.3rem; font-size:.82rem; font-weight:550; color:#315b40; text-decoration-thickness:1px; }
.ap-case-home-photo { margin:1.7rem 0 0; max-width:48rem; }
.ap-case-home-photo img { width:100%; max-height:25rem; object-fit:cover; border:1px solid var(--ap-rule); border-radius:3px; }
.ap-case-home-photo figcaption { font-size:.7rem; color:#617166; margin-top:.6rem; }
.ap-fpga-mini { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:#ccd6c7; border:1px solid #ccd6c7; margin-top:1.5rem; }
.ap-fpga-mini span { background:#f0f2e9; padding:1.2rem .75rem; text-align:center; font:400 .72rem/1.5 ui-monospace,monospace; }
/* Project directory and case studies. */
.ap-directory,.ap-case-page { width:min(calc(100% - 4rem),72rem); margin:auto; }
.ap-directory-intro { padding:4.5rem 0 3rem; max-width:45rem; }
.ap-directory-intro h1 { font-weight:500; font-size:clamp(2.7rem,5.5vw,4.4rem); letter-spacing:-.06em; line-height:1.07; margin:1rem 0 1.5rem; }
.ap-directory-intro>p:last-child { max-width:40rem; font-size:1.02rem; color:#57685b; line-height:1.75; }
.ap-index-tools { display:flex; flex-wrap:wrap; gap:1.5rem 3rem; align-items:flex-end; padding:1.7rem 0; border-block:1px solid var(--ap-rule); }
.ap-index-tools label { display:grid; gap:.7rem; font-size:.73rem; flex:1; min-width:16rem; color:#4b6052; }
.ap-index-tools input { appearance:none; width:100%; padding:.83rem 1rem; border:1px solid #aebdac; border-radius:3px; background:#fffefa; color:#1c2924; font-size:.9rem; }
.ap-index-tools fieldset { border:0; padding:0; margin:0; }
.ap-index-tools legend { font-size:.73rem; color:#4b6052; padding:0; margin-bottom:.7rem; }
.ap-filter-buttons { display:flex; gap:.4rem; flex-wrap:wrap; }
.ap-filter-buttons button { min-height:44px; border:1px solid #bdc9b7; border-radius:3px; background:transparent; padding:.7rem 1.1rem; cursor:pointer; font-size:.8rem; color:#374f3f; }
.ap-filter-buttons button[aria-pressed="true"] { background:#31503c; color:#fffef6; border-color:#31503c; }
.ap-filter-buttons button:hover { border-color:#31503c; }
.ap-index-count { font:400 .72rem/1.6 ui-monospace,monospace; color:#5d6c5e; margin:1.3rem 0; }
.ap-index-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.ap-index-grid--two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.ap-index-card { min-width:0; position:relative; display:flex; flex-direction:column; padding:1.5rem; border:1px solid #cbd4c6; border-radius:4px; background:linear-gradient(145deg,#f7f8f1,#fffefa); transition:border-color 180ms,background 180ms; }
.ap-index-card:hover,.ap-index-card:focus-within { border-color:#779777; background:#f2f5eb; }
.ap-card-line { display:flex; justify-content:space-between; align-items:center; gap:.5rem; margin-bottom:1.8rem; }
.ap-index-card .ap-eyebrow { font-size:.6rem; letter-spacing:.04em; }
.ap-card-arrow { color:#62816b; font-size:1.25rem; }
.ap-index-card h2,.ap-index-card h3 { font-weight:550; letter-spacing:-.04em; font-size:1.45rem; line-height:1.15; margin-bottom:1rem; }
.ap-index-card h2 a,.ap-index-card h3 a { text-decoration:none; }
.ap-index-card h2 a::after,.ap-index-card h3 a::after { content:""; position:absolute; inset:0; }
.ap-index-card>p { font-size:.85rem; line-height:1.65; color:#506354; }
.ap-index-card .ap-card-skills { margin:1.2rem 0 1.5rem; color:#596f5d; font:400 .65rem/1.7 ui-monospace,monospace; }
.ap-card-foot { display:flex; flex-direction:column; gap:.4rem; margin-top:auto; border-top:1px solid #d5dfce; padding-top:1rem; font-size:.67rem; color:#576d5c; }
.ap-card-foot span:first-child { color:#274b35; font-weight:550; }
.ap-directory-note { padding:3rem 0; max-width:46rem; }
.ap-directory-note h2 { font-weight:550; font-size:1.15rem; margin-bottom:.75rem; }
.ap-directory-note p { color:#5d6d60; font-size:.86rem; line-height:1.8; }
.ap-empty { padding:3rem 1rem; text-align:center; border:1px dashed #a4b59c; }
.ap-empty p { margin:.6rem 0 1.2rem; }
.ap-breadcrumb { display:flex; flex-wrap:wrap; gap:.7rem; padding:2rem 0; color:#536756; font-size:.75rem; }
.ap-case-intro { padding:1.5rem 0 3rem; max-width:57rem; }
.ap-case-intro h1 { font-size:clamp(2.7rem,5.8vw,4.7rem); font-weight:500; letter-spacing:-.06em; line-height:1.05; margin:1.1rem 0; }
.ap-case-subtitle { font-size:clamp(1.1rem,2vw,1.5rem); letter-spacing:-.02em; line-height:1.4; max-width:42rem; color:#415c48; }
.ap-case-summary { max-width:42rem; color:#5b6c5e; font-size:1rem; line-height:1.7; margin:1.2rem 0 1.75rem; }
.ap-project-spec { display:grid; grid-template-columns:1.25fr .8fr 1fr 1.6fr; gap:1.6rem; padding:1.5rem 0; margin-bottom:2rem; border-block:1px solid #c8d4c3; }
.ap-project-spec dt { font:400 .63rem/1.6 ui-monospace,monospace; letter-spacing:.06em; text-transform:uppercase; color:#607563; margin-bottom:.6rem; }
.ap-project-spec dd { font-size:.81rem; line-height:1.65; }
.ap-case-visual { margin:0 0 2rem; border:1px solid #cbd5c7; background:#eff2e9; border-radius:4px; overflow:hidden; }
.ap-case-visual>img { width:100%; height:auto; max-height:41rem; object-fit:contain; }
.ap-case-visual figcaption { padding:.8rem 1.15rem; font:400 .66rem/1.6 ui-monospace,monospace; background:#f9faf4; color:#56705a; border-top:1px solid #d1daca; }
.ap-case-capture-pair { display:flex; justify-content:center; gap:1rem; padding:1.5rem; }
.ap-case-capture-pair img { width:calc(50% - .5rem); max-width:20rem; height:auto; object-fit:contain; }
.ap-concept-panel { padding:2rem; background:linear-gradient(125deg,#e9efdf,#fafbf4); border:1px solid #b8c9ad; margin-bottom:2rem; }
.ap-concept-panel ol { list-style:none; display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; margin:2rem 0; }
.ap-concept-panel li { border-top:1px solid #809a77; padding-top:1rem; display:grid; gap:.5rem; }
.ap-concept-panel li span { font:400 .75rem ui-monospace,monospace; color:#65825f; }
.ap-concept-panel li strong { font-weight:500; font-size:clamp(.95rem,2vw,1.5rem); }
.ap-concept-panel>p:last-child { font-size:.7rem; color:#5a6c56; }
.ap-case-reading { display:grid; grid-template-columns:15rem minmax(0,1fr); gap:4rem; padding-top:2rem; }
.ap-case-contents { align-self:start; position:sticky; top:2rem; }
.ap-case-contents nav { display:grid; gap:.9rem; margin-top:1.2rem; }
.ap-case-contents a { font-size:.78rem; text-decoration:none; color:#536b58; }
.ap-case-contents a:hover { text-decoration:underline; }
.ap-case-prose { max-width:45rem; }
.ap-case-prose>section { margin-bottom:3.5rem; scroll-margin-top:2rem; }
.ap-case-prose h2 { font-size:1.9rem; letter-spacing:-.04em; font-weight:500; margin:.6rem 0 1.1rem; }
.ap-case-prose p { font-size:.96rem; line-height:1.85; color:#4e6255; }
.ap-case-prose .ap-eyebrow { font-size:.65rem; color:#61765f; }
.ap-steps { list-style:none; display:grid; gap:0; }
.ap-steps li { display:grid; grid-template-columns:2rem 1fr; gap:1.1rem; padding:1.4rem 0; border-top:1px solid #d3dccb; }
.ap-step-number { font:400 .72rem/1.8 ui-monospace,monospace; color:#62815e; }
.ap-steps h3 { font-size:1rem; font-weight:550; margin:0 0 .35rem; }
.ap-steps p { font-size:.88rem; }
.ap-evidence-list { list-style:disc; padding-left:1.1rem; color:#4e6255; font-size:.94rem; line-height:1.8; }
.ap-evidence-list li { padding-bottom:.6rem; }
.ap-scope-note { background:#edf1e7; padding:1.25rem 1.4rem; border-left:2px solid #7e9673; margin:1.4rem 0; }
.ap-scope-note h3 { font-size:.75rem; font-weight:600; margin-bottom:.4rem; }
.ap-scope-note p { font-size:.82rem; line-height:1.75; }
.ap-related { padding:2.5rem 0 4rem; border-top:1px solid #ccd8c5; }
.ap-section-heading { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-bottom:1.5rem; }
.ap-section-heading h2 { font-size:1.8rem; font-weight:500; letter-spacing:-.04em; }
.ap-section-heading>a { font-size:.8rem; }
.ap-site-footer { width:min(calc(100% - 4rem),72rem); margin:3rem auto 0; padding:3rem 0 1.5rem; border-top:1px solid #c7d4bf; display:grid; grid-template-columns:1fr auto; gap:2rem; }
.ap-footer-title { display:block; text-decoration:none; font-weight:500; font-size:clamp(1.6rem,3vw,2.5rem); letter-spacing:-.045em; margin:.6rem 0; }
.ap-site-footer>div>p:last-child { font-size:.82rem; color:#5a6d5d; }
.ap-footer-meta { grid-column:1 / -1; display:flex; justify-content:space-between; flex-wrap:wrap; gap:1rem; color:#667362; font:400 .65rem/1.6 ui-monospace,monospace; border-top:1px solid #d4dccd; margin-top:1.5rem; padding-top:1.2rem; }
@media(max-width:64rem) {
  .ap-index-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ap-hero-copy h1 { font-size:3rem; }
  .ap-hero-layout { grid-template-columns:1fr 1.1fr; min-height:33rem; }
  .ap-case-reading { grid-template-columns:11rem minmax(0,1fr); gap:2rem; }
  .ap-case-intro { max-width:100%; }
}
@media(max-width:44rem) {
  .ap-page-header { width:calc(100% - 2.5rem); align-items:flex-start; flex-direction:column; gap:.9rem; padding:1.2rem 0; }
  .ap-topnav { gap:.4rem 1.1rem; }
  .ap-topnav a { font-size:.73rem; padding:.35rem 0; }
  .ap-hero--thin .ap-masthead { flex-wrap:wrap; gap:.6rem; }
  .ap-hero--thin .ap-masthead .ap-identity { padding-left:0; }
  .ap-hero--thin .ap-topnav { width:100%; justify-content:space-between; gap:.5rem; }
  .ap-hero-layout { display:flex; flex-direction:column; align-items:stretch; gap:0; min-height:0; padding:1.65rem 0 .75rem; }
  .ap-hero-copy { padding:0; }
  .ap-hero-copy h1 { font-size:clamp(2.4rem,9.6vw,3.8rem); max-width:11em; margin:.8rem 0; }
  .ap-hero-description { font-size:.92rem; line-height:1.65; margin-bottom:1.2rem; max-width:32rem; }
  .ap-hero-copy .ap-links { gap:.6rem; }
  .ap-hero-current { font-size:.68rem; margin-top:1rem; }
  .ap-hero-layout .ap-core-main { margin-top:.7rem; }
  .ap-hero-layout .ap-core-stage { aspect-ratio:1.9; min-block-size:0; block-size:auto; width:100%; margin:0; }
  .ap-hero-layout .ap-core-stage [data-core-canvas] { inline-size:120%; inset-inline-start:-10%; }
  .ap-hero-layout .ap-core-stage>img { inline-size:120%; inset-inline-start:-10%; }
  .ap-hero-layout .ap-core-dock { inline-size:min(100%,22rem); }
  .ap-core-caption { font-size:.59rem; }
  .ap-experience-strip { grid-template-columns:repeat(3,1fr); }
  .ap-experience-strip>a { padding:.8rem .55rem; }
  .ap-experience-strip strong { font-size:.85rem; }
  .ap-experience-strip span { font-size:.63rem; line-height:1.6; }
  .ap-work-overview { flex-direction:column; align-items:flex-start; margin-top:2.5rem; }
  .ap-work-overview,.ap-work-controls { width:calc(100% - 2.5rem); }
  .ap-work-controls { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.4rem; }
  .ap-work-controls a { text-align:center; padding:.65rem .25rem; font-size:.7rem; }
  .ap-directory,.ap-case-page { width:calc(100% - 2.5rem); }
  .ap-directory-intro { padding:2.5rem 0 2rem; }
  .ap-directory-intro h1 { font-size:2.7rem; }
  .ap-directory-intro>p:last-child { font-size:.92rem; }
  .ap-index-tools { gap:1.25rem; }
  .ap-index-tools label { min-width:100%; }
  .ap-filter-buttons button { padding:.65rem .85rem; font-size:.75rem; }
  .ap-index-grid,.ap-index-grid--two { grid-template-columns:1fr; }
  .ap-index-card { padding:1.4rem; }
  .ap-card-line { margin-bottom:1.3rem; }
  .ap-card-foot { flex-direction:row; flex-wrap:wrap; justify-content:space-between; }
  .ap-breadcrumb { padding:1.5rem 0; }
  .ap-case-intro { padding:.6rem 0 2rem; }
  .ap-case-intro h1 { font-size:2.7rem; overflow-wrap:anywhere; }
  .ap-case-summary { font-size:.94rem; }
  .ap-project-spec { grid-template-columns:1fr 1fr; gap:1.25rem; }
  .ap-case-reading { display:block; padding-top:.5rem; }
  .ap-case-contents { position:static; padding:1rem 0 2rem; margin-bottom:1rem; border-bottom:1px solid #d3dccb; }
  .ap-case-contents nav { display:flex; flex-wrap:wrap; gap:.75rem 1.3rem; }
  .ap-case-prose h2 { font-size:1.7rem; }
  .ap-case-prose p { font-size:.92rem; }
  .ap-concept-panel { padding:1.25rem; }
  .ap-concept-panel ol { gap:.55rem; }
  .ap-section-heading { align-items:flex-start; flex-direction:column; }
  .ap-site-footer { width:calc(100% - 2.5rem); display:block; margin-top:1rem; padding-top:2rem; }
  .ap-site-footer>.ap-links { margin-top:1.5rem; }
  .ap-footer-meta { display:flex; margin-top:2rem; }
  .ap-fpga-mini { grid-template-columns:repeat(2,1fr); }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; animation:none !important; transition:none !important; } }
@media print { .ap-topnav,.ap-case-contents,.ap-site-footer,.ap-skip { display:none; } .ap-case-reading { display:block; } .ap-case-page,.ap-directory { width:100%; } .ap-case-visual { max-width:30rem; break-inside:avoid; } .ap-case-prose>section { break-inside:avoid; } }

.ap-portfolio .ap-case-study-link { grid-column:1 / -1; justify-self:start; }

@media(max-width:24rem) { .ap-topnav { gap:.4rem .65rem; } .ap-filter-buttons { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); } .ap-filter-buttons button { font-size:.68rem; padding:.65rem .25rem; } }
