/* Portfolio components */
.ng-hero__portrait{align-self:center;margin-bottom:2rem;max-width:640px}
.ng-proof-strip{display:flex;gap:1.5rem;flex-wrap:wrap;border-block:1px solid var(--ng-border);padding-block:1.3rem;color:var(--ng-muted);font-size:.8rem;letter-spacing:.06em}.ng-proof-strip span:first-child{color:var(--ng-green);font-weight:700;margin-right:auto}
.ng-split-head{display:grid;grid-template-columns:1.2fr 1fr;gap:3rem;align-items:end;margin-bottom:3rem}.ng-split-head .ng-lede{margin:0;max-width:40ch}
.ng-projects{display:grid;gap:2rem}.ng-project{display:grid;grid-template-columns:1.1fr 1fr;border:1px solid var(--ng-border);background:var(--ng-surface);min-width:0;transition:border-color .2s}.ng-project:hover{border-color:var(--ng-green)}
.ng-project__visual{display:block;overflow:hidden;min-height:320px;background:#121811}.ng-project__visual img{width:100%;height:100%;object-fit:cover;object-position:top;max-height:440px;transition:transform .4s}.ng-project:hover .ng-project__visual img{transform:scale(1.025)}
.ng-project__copy{padding:clamp(1.5rem,4vw,3.5rem);align-self:center}.ng-project__copy :is(h2,h3){font-size:clamp(1.6rem,2.8vw,2.6rem);line-height:1.13;margin-bottom:1rem}.ng-project__copy :is(h2,h3) a{color:var(--ng-text);text-decoration:none}.ng-project__copy>p:not(.ng-eyebrow){color:var(--ng-muted);margin-bottom:1.6rem;max-width:45ch}
.ng-source-art{height:100%;min-height:360px;padding:2.2rem;display:flex;flex-direction:column;align-items:start;justify-content:space-between;background:radial-gradient(ellipse at 80% 20%,#a5ff4314,transparent 65%),repeating-linear-gradient(0deg,transparent 0 31px,#ffffff05 31px 32px);font-family:monospace}.ng-source-art__label{font-size:.7rem;letter-spacing:.15em;color:var(--ng-muted)}.ng-source-art__code{font-size:4rem;color:var(--ng-green);line-height:1}.ng-source-art__flow{font-size:1.15rem;line-height:1.5;color:var(--ng-text)}.ng-source-art__end{color:var(--ng-muted);font-size:.8rem}
.ng-section-end{margin-top:2rem;text-align:right}.ng-lab-teaser{border-block:1px solid var(--ng-border);background:radial-gradient(ellipse at 85% 50%,#a5ff4309,transparent 65%)}.ng-lab-teaser__grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.ng-lab-teaser .ng-lede{margin-block:1.5rem 2rem}
.ng-beat-art{padding:clamp(1.5rem,4vw,3rem);background:#101510;border:1px solid #a5ff4340;text-decoration:none;transform:rotate(-2deg);box-shadow:12px 12px 0 #a5ff4308;color:var(--ng-text)}.ng-beat-art>span{font-family:monospace;font-size:.8rem;letter-spacing:.15em;color:var(--ng-green)}.ng-beat-art strong{display:block;font-size:clamp(1.5rem,3vw,2.6rem);line-height:1.1;margin-top:2rem;font-family:var(--ng-display)}.ng-beat-art small{display:block;color:var(--ng-muted);margin-top:.7rem}.ng-beat-art__steps{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;margin-top:2rem}.ng-beat-art__steps i{aspect-ratio:1;background:#20291d;border:1px solid #ffffff15;border-radius:3px}.ng-beat-art__steps i.on{background:var(--ng-green);box-shadow:0 0 14px #a5ff4320}
.ng-xp .ng-section__title{max-width:19ch}.ng-contact__title{font-size:clamp(2rem,4vw,3.8rem)}.ng-code-note{padding:1.5rem;border:1px solid var(--ng-border);background:#101510;margin-block:2rem}.ng-code-note>span{color:var(--ng-green);font-size:.7rem;letter-spacing:.1em}.ng-code-note pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ng-muted);margin-top:1rem}
.ng-sequencer{padding:clamp(1rem,3vw,2.5rem);border:1px solid #a5ff4350;background:#101510;box-shadow:0 20px 100px #0006}.ng-sequencer__top,.ng-sequencer__controls,.ng-sequencer__bottom{display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem;justify-content:space-between}.ng-sequencer__top{padding-bottom:1.5rem;border-bottom:1px solid var(--ng-border)}.ng-sequencer__top p{margin:0}.ng-live{color:var(--ng-green);font-family:monospace;font-size:.8rem}.ng-sequencer__controls{padding-block:2rem}.ng-sequencer label{font-size:.85rem;color:var(--ng-muted)}.ng-sequencer input[type=range]{display:block;accent-color:var(--ng-green);width:180px;margin-top:.5rem}.ng-sequencer output{font-variant-numeric:tabular-nums;color:var(--ng-text);font-weight:bold}.ng-sequencer__scroll{overflow-x:auto;padding-block:1rem;scrollbar-color:var(--ng-green) #101510}.ng-sequencer__grid{min-width:650px}.ng-sequencer__row,.ng-sequencer__numbers{display:grid;grid-template-columns:70px repeat(16,minmax(0,1fr));gap:6px;align-items:center;margin-bottom:8px}.ng-sequencer__numbers{font:.65rem monospace;color:var(--ng-muted);text-align:center}.ng-sequencer__voice{font-size:.8rem;color:var(--ng-muted)}.ng-step{appearance:none;aspect-ratio:1;min-height:32px;border:1px solid #ffffff24;border-radius:3px;background:#21291e;cursor:pointer;position:relative}.ng-step:nth-child(4n+2){border-left:2px solid #a5ff4370}.ng-step[aria-pressed=true]{background:var(--ng-green);border-color:var(--ng-green)}.ng-step[data-voice=snare][aria-pressed=true]{background:#ff677b;border-color:#ff677b}.ng-step[data-voice=hat][aria-pressed=true]{background:#c0b5ff;border-color:#c0b5ff}.ng-step.is-current{outline:2px solid white;outline-offset:2px}.ng-step:hover{filter:brightness(1.3)}.ng-sequencer__bottom{justify-content:flex-start;margin-top:1rem}.ng-sequencer select{background:#1b2319;color:var(--ng-text);border:1px solid #ffffff40;padding:.65rem;margin-left:.5rem;font:inherit;max-width:100%}.ng-lab-help{font-size:.8rem;margin:1.5rem 0 0;max-width:85ch}.ng-lab-explainer{margin-block:4rem}
.ng-career-row{display:grid;grid-template-columns:200px 1fr;gap:2rem;border-top:1px solid var(--ng-border);padding-block:2.5rem}.ng-career-row h2{font-size:1.8rem;margin-bottom:.7rem}.ng-career-row .ng-prose{max-width:70ch}.ng-career-row aside{color:var(--ng-green);font-family:monospace;font-size:.85rem}.ng-honors{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;margin-top:2rem}.ng-honor{padding-top:1.5rem;border-top:2px solid var(--ng-green)}.ng-honor h3{font-size:1.4rem;margin-block:.5rem 1rem}.ng-honor p{color:var(--ng-muted)}.ng-honor .ng-link{display:inline-block;margin-top:1rem}.ng-portrait-about{display:grid;grid-template-columns:1.3fr .7fr;gap:3rem;align-items:center}.ng-portrait-about img{max-width:100%;height:auto}
.ng-skill-list{display:flex;gap:.6rem;flex-wrap:wrap;list-style:none;padding:0;margin:1.5rem 0}.ng-skill-list li{border:1px solid var(--ng-border);padding:.4rem .8rem;color:var(--ng-muted);font-size:.85rem}.ng-source-link{font-size:.8rem;color:var(--ng-muted);margin-top:2rem}.ng-case__body h2{scroll-margin-top:100px}.ng-case__toc{display:flex;flex-wrap:wrap;gap:.7rem 1.5rem;padding-block:1.5rem;border-block:1px solid var(--ng-border);margin-bottom:2rem}.ng-case__toc a{font-size:.8rem;color:var(--ng-green)}
@media(min-width:1000px){.ng-project:nth-child(even){grid-template-columns:1fr 1.1fr}.ng-project:nth-child(even) .ng-project__visual{order:2}}
@media(max-width:860px){.ng-split-head,.ng-lab-teaser__grid,.ng-portrait-about{grid-template-columns:1fr;gap:2rem}.ng-project{grid-template-columns:1fr}.ng-project__visual{min-height:230px;max-height:330px}.ng-source-art{min-height:300px}.ng-honors{grid-template-columns:1fr}.ng-career-row{grid-template-columns:1fr;gap:1rem}.ng-beat-art{transform:none}.ng-hero__portrait{margin-bottom:0}.ng-proof-strip{gap:.8rem 1.2rem}.ng-proof-strip span:first-child{width:100%}.ng-sequencer__controls{align-items:start}.ng-portrait-about img{max-width:400px;margin:auto}}
@media(prefers-reduced-motion:reduce){.ng-project__visual img,.ng-project{transition:none}.ng-project:hover .ng-project__visual img{transform:none}}
@media print{.ng-header,.ng-footer,.ng-contact,.ng-sequencer,.ng-nav{display:none}body{background:white;color:black}.ng-career-row{break-inside:avoid}.ng-section{padding-block:1rem}.ng-muted,.ng-prose{color:#222}}
/* Keep the mobile contact action in the header rather than over the expanded menu. */
@media(max-width:860px){.ng-nav.is-open .ng-nav__cta{display:none}.ng-nav__list a{display:block}.ng-nav__list li.ng-mobile-contact{display:block}}
@media(min-width:861px){.ng-mobile-contact{display:none}}
.ng-no-script-nav{border-block:1px solid var(--ng-border);padding:1rem;display:flex;flex-wrap:wrap;gap:1rem}
:target{scroll-margin-top:110px}
@media print{*{color:#111!important;background:transparent!important;text-shadow:none!important;box-shadow:none!important}a{text-decoration:none}.ng-hero__actions{display:none}.ng-honors{display:block}.ng-honor{break-inside:avoid}.ng-section__head{margin-bottom:1rem}.ng-section__title{max-width:none}.ng-career-row{padding-block:1rem}.ng-shell{padding-inline:0}.ng-career-row{grid-template-columns:150px 1fr}body{font-size:10pt}.ng-section__title{font-size:24pt}h2{font-size:18pt}.ng-career-row h2{font-size:16pt}}
.ng-project__visual{text-decoration:none;color:inherit}
.ng-split-head .ng-section__title .ng-marker{display:block;margin-top:.15em}
.ng-sequencer{max-width:1120px;margin-inline:auto}
.ng-project__copy .ng-eyebrow{color:var(--ng-green)}
/* Footer destinations must wrap instead of widening a small viewport. */
.ng-footer__links{flex-wrap:wrap;min-width:0;row-gap:.75rem}
.ng-footer__inner>*{min-width:0}
/* Lead case study: actual service workflow and an approved neutral UI specimen. */
.ng-call-art{padding:clamp(1.5rem,3vw,3rem);min-height:390px;height:100%;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(ellipse at 20% 30%,#a5ff4315,transparent 70%),#0d120f}
.ng-call-art .ng-eyebrow{font-size:.65rem;color:var(--ng-muted)}
.ng-call-art__wave{height:78px;display:flex;gap:clamp(4px,.8vw,10px);align-items:center;margin:1.2rem 0 1.8rem}
.ng-call-art__wave i{height:var(--bar);flex:1;background:var(--ng-green);opacity:.8;border-radius:2px;max-width:8px}
.ng-call-art>strong{font-family:var(--ng-display);font-size:clamp(1.8rem,3vw,3rem);line-height:1.08;font-weight:600;letter-spacing:-.04em}
.ng-call-art__pipeline{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0}
.ng-call-art__pipeline span{padding:.3rem .7rem;border:1px solid #a5ff4340;font:.75rem monospace;color:var(--ng-green)}
.ng-call-art small{font-size:.75rem;color:var(--ng-muted)}
.ng-ownership{border-left:3px solid var(--ng-green);background:var(--ng-surface);padding:1.25rem 1.5rem;margin-block:2rem}
.ng-ownership>span{display:block;font-size:.65rem;letter-spacing:.15em;color:var(--ng-green)}
.ng-ownership>strong{display:block;font-family:var(--ng-display);font-size:1.4rem;margin-block:.4rem}
.ng-ownership>p{margin:0;font-size:.85rem}
.ng-flow-figure{margin:2rem 0}.ng-call-flow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none!important;padding:0!important;gap:1rem;counter-reset:flow}
.ng-call-flow li{padding:1.25rem;border:1px solid var(--ng-border);background:var(--ng-surface);margin:0!important;min-width:0}
.ng-call-flow li>span{font: .7rem monospace;color:var(--ng-green);text-transform:uppercase;letter-spacing:.1em}
.ng-call-flow strong{display:block;font-family:var(--ng-display);font-size:1.15rem;margin-block:.5rem}
.ng-call-flow p{font-size:.9rem;margin:0!important}
.ng-flow-figure figcaption,.ng-call-sample figcaption{font-size:.75rem;color:var(--ng-muted);line-height:1.6;margin-top:1rem}
.ng-call-sample{padding:clamp(1rem,3vw,2rem);margin:2rem 0;background:#111922;border:1px solid #34404d;border-radius:6px}
.ng-call-sample__head{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between;font:.65rem monospace;letter-spacing:.09em;color:#bcc9d4;border-bottom:1px solid #34404d;padding-bottom:1rem}
.ng-call-sample__sentiment{padding-block:1.5rem}
.ng-call-sample__sentiment>div:first-child{display:flex;justify-content:space-between;gap:1rem;align-items:center;font-size:.85rem;margin-bottom:.5rem}
.ng-call-sample__sentiment b{font-size:1.2rem;color:#3fdd82}
.ng-call-sample meter{display:block;width:100%;height:18px;accent-color:#1fc366}
.ng-call-sample meter::-webkit-meter-bar{background:#0d131b;border:1px solid #34404d;border-radius:4px}
.ng-call-sample meter::-webkit-meter-optimum-value{background:linear-gradient(90deg,#15a34a,#22c55e)}
.ng-call-sample__scale{display:flex;justify-content:space-between;gap:.5rem;font-size:.6rem;color:#bcc9d4;margin-top:.4rem}
.ng-call-sample__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}
.ng-call-sample__grid>div{background:#20262b;border:1px solid #34404d;border-radius:5px;padding:1.1rem;min-width:0}
.ng-call-sample__grid>div>span{font-size:.75rem;color:#c2cbd1;display:block}
.ng-call-sample__grid strong{display:block;font-family:var(--ng-display);font-size:2rem;color:#f0f5f8;margin-top:.6rem}
.ng-call-sample__grid small{display:block;font-family:var(--ng-body);font-size:.65rem;font-weight:400;color:#bac5cd;line-height:1.5}
.ng-call-sample__grid .ng-call-sample__text{font-size:1rem;line-height:1.4}
.ng-call-tradeoff{margin-block:2rem;padding:1.5rem;border-block:1px solid var(--ng-green);background:linear-gradient(110deg,#a5ff430a,transparent)}
.ng-call-tradeoff h3{font-size:clamp(1.5rem,3vw,2.2rem);line-height:1.15;margin-block:1rem}
.ng-call-tradeoff>p:last-child{margin-bottom:0}
@media(max-width:520px){.ng-call-flow{grid-template-columns:1fr}.ng-call-sample__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ng-call-sample__grid>div{padding:.8rem}.ng-call-art{min-height:340px}.ng-call-sample__sentiment>div:first-child{flex-wrap:wrap}}
.ng-reference-model{margin-block:2rem;padding:1.5rem;background:var(--ng-surface);border:1px solid var(--ng-border)}
.ng-reference-model h3{font-size:1.2rem;margin-top:0}
.ng-reference-model dl{margin:0}.ng-reference-model dl>div{padding-block:1rem;border-bottom:1px solid var(--ng-border)}
.ng-reference-model dl>div:last-child{border-bottom:0;padding-bottom:0}
.ng-reference-model dt{color:var(--ng-green);font-size:.85rem;font-weight:600}
.ng-reference-model dd{margin:.4rem 0 0;font-size:.9rem;color:var(--ng-muted)}
.ng-case__body--detailed{display:grid;grid-template-columns:180px minmax(0,900px);gap:clamp(2rem,5vw,5rem);justify-content:center;align-items:start}
.ng-case__body--detailed .ng-prose{max-width:none;min-width:0}
.ng-case__body--detailed .ng-case__toc{position:sticky;top:110px;display:flex;flex-direction:column;align-items:start;gap:1rem;margin:0}
.ng-case__head{max-width:1440px}
@media(max-width:1000px){.ng-case__body--detailed{grid-template-columns:minmax(0,1fr)}.ng-case__body--detailed .ng-case__toc{position:static;flex-direction:row;gap:.75rem 1.2rem}.ng-case__body--detailed .ng-prose{max-width:80ch}}
/* Existing Gravity Forms contact form, scoped to this portfolio page. */
.ng-contact-form{max-width:850px;padding:clamp(1.25rem,3vw,2.5rem);margin-bottom:3rem;background:var(--ng-surface);border:1px solid var(--ng-border)}
.ng-contact-form>h2{font-size:clamp(1.5rem,3vw,2rem);margin:0 0 1.5rem}
.ng-contact-form .gform_wrapper{--gf-color-primary:var(--ng-green);--gf-color-primary-contrast:var(--ng-ink);--gf-color-in-ctrl:var(--ng-text);--gf-color-in-ctrl-contrast:var(--ng-text);--gf-color-in-ctrl-primary:var(--ng-green);--gf-color-in-ctrl-bg:var(--ng-ink);color:var(--ng-text)}
.ng-contact-form .gfield_label,.ng-contact-form .gform-field-label,.ng-contact-form .gfield_description{color:var(--ng-text)}
.ng-contact-form input:not([type=submit]):not([type=button]):not([type=checkbox]):not([type=radio]):not([type=hidden]),.ng-contact-form textarea,.ng-contact-form select{background:var(--ng-ink);color:var(--ng-text);border:1px solid var(--ng-control-border);border-radius:2px;font:inherit;padding:.75rem;max-width:100%}
.ng-contact-form .gform_button{background:var(--ng-green);color:var(--ng-ink);border:1px solid var(--ng-green);border-radius:2px;padding:.85rem 1.5rem;font:600 1rem var(--ng-body);cursor:pointer}
.ng-contact-form .gform_validation_errors,.ng-contact-form .gfield_validation_message{background:#271316;color:#ffb4bd;border-color:#ff677b}
.ng-contact-form .gform_confirmation_message{padding:1.5rem;border:1px solid var(--ng-green);color:var(--ng-text)}
.ng-dashboard-art{height:100%;min-height:390px;padding:clamp(1.5rem,3vw,3rem);display:flex;flex-direction:column;justify-content:center;background:radial-gradient(ellipse at 80% 25%,#32baff18,transparent 65%),#0d151a}
.ng-dashboard-art>.ng-eyebrow{color:#8fb3c9;font-size:.65rem}
.ng-dashboard-art>strong{font:600 clamp(4rem,7vw,7rem)/1 var(--ng-display);letter-spacing:-.06em;margin-top:1rem;color:var(--ng-text)}
.ng-dashboard-art>strong>span{color:var(--ng-green)}
.ng-dashboard-art>small{color:var(--ng-muted);font-size:.8rem;margin-top:.5rem}
.ng-dashboard-art__flow{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin-block:2rem 1.3rem;font:.8rem monospace}
.ng-dashboard-art__flow>span{padding:.4rem .7rem;border:1px solid #5995b855;color:#a9d5ee}
.ng-dashboard-art__flow>i{color:var(--ng-green);font-style:normal}
.ng-dashboard-art>p{font:500 clamp(1.3rem,2.5vw,2rem)/1.2 var(--ng-display);margin:0}
.ng-dashboard-scale{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;padding:1.5rem 0;margin-block:2rem;border-block:1px solid var(--ng-border)}
.ng-dashboard-scale strong{font:600 clamp(1.3rem,3vw,2.2rem)/1.2 var(--ng-display);display:block;color:var(--ng-green)}
.ng-dashboard-scale span{display:block;font-size:.8rem;color:var(--ng-muted);margin-top:.5rem}
.ng-dashboard-capabilities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-block:2rem}
.ng-dashboard-capabilities>div{padding:1.3rem;background:var(--ng-surface);border:1px solid var(--ng-border)}
.ng-dashboard-capabilities h3{font-size:1.2rem;margin:0 0 .7rem}.ng-dashboard-capabilities p{font-size:.9rem;margin:0}
.ng-dashboard-report{margin-block:2rem;padding:clamp(1rem,3vw,2rem);background:#101b23;border:1px solid #3f687f;border-radius:4px}
.ng-dashboard-report__title{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;font:.7rem monospace;letter-spacing:.08em;color:#9bd7f9;margin-bottom:1.5rem}
.ng-dashboard-report__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.ng-dashboard-report__metrics>div{padding:1.25rem;border:1px solid #395260;background:#16252e}
.ng-dashboard-report__metrics span{display:block;color:#9bd7f9;font-size:.75rem}
.ng-dashboard-report__metrics strong{display:block;font:600 1.3rem var(--ng-display);margin-block:.5rem}
.ng-dashboard-report__metrics small{display:block;color:var(--ng-muted);font-size:.75rem}
.ng-dashboard-report>p:last-child{font-size:.75rem;margin:1.5rem 0 0;color:var(--ng-muted)}
@media(max-width:520px){.ng-dashboard-scale,.ng-dashboard-capabilities,.ng-dashboard-report__metrics{grid-template-columns:1fr}.ng-dashboard-art{min-height:340px}}
.ng-dashboard-scale strong{font-size:clamp(1.2rem,2.2vw,1.7rem);overflow-wrap:anywhere}
/* Blend the supplied black-backed rimlight portrait into the dark hero. */
.ng-hero__img--rimlight{mix-blend-mode:lighten;filter:none}
/* Experience: a detailed career story with a clear reading hierarchy. */
.ng-experience-intro .ng-lede{max-width:65ch}
.ng-experience-thread{border-left:3px solid var(--ng-green);padding:1.5rem clamp(1.25rem,3vw,2.5rem);background:linear-gradient(100deg,#a5ff430a,transparent);margin-top:2.5rem}
.ng-experience-thread>p:nth-child(2){font:500 clamp(1.3rem,2.2vw,2rem)/1.4 var(--ng-display);max-width:48ch;margin:.75rem 0 1.5rem}
.ng-experience-path{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem 1rem;color:var(--ng-muted);font-size:.8rem}.ng-experience-path i{font-style:normal;color:var(--ng-green)}
.ng-experience-jumps{display:flex;flex-wrap:wrap;gap:.7rem 1.7rem;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--ng-border)}
.ng-experience-jumps a{font-size:.8rem;color:var(--ng-muted);text-underline-offset:.35em}.ng-experience-jumps a:hover{color:var(--ng-green)}
.ng-experience-section .ng-section__head{max-width:1000px}.ng-experience-section .ng-section__head .ng-lede{max-width:65ch}
.ng-experience-section .ng-career-row{grid-template-columns:minmax(160px,.35fr) minmax(0,1fr);gap:clamp(2rem,5vw,6rem);padding-block:clamp(2rem,4vw,4rem)}
.ng-experience-section .ng-career-row>aside{display:flex;flex-direction:column;align-items:start;gap:.6rem;line-height:1.6;font-size:.85rem}
.ng-experience-date{color:var(--ng-green);font:.72rem/1.6 monospace;letter-spacing:.07em}.ng-career-row aside strong{color:var(--ng-text);font-size:1rem;font-weight:500}.ng-career-row aside>span:last-child{color:var(--ng-muted)}
.ng-experience-role{min-width:0;max-width:1050px}.ng-experience-role>h3{font-size:clamp(1.5rem,3vw,2.4rem);line-height:1.15;letter-spacing:-.025em;margin:0 0 1.25rem}
.ng-experience-role__lead{font-size:1.1rem;line-height:1.7;max-width:65ch;color:var(--ng-text);margin-bottom:1.5rem}.ng-experience-role .ng-prose{color:var(--ng-muted);max-width:78ch}
.ng-experience-bullets{padding-left:1.2rem;max-width:78ch;color:var(--ng-muted);margin-block:1.5rem 2rem}.ng-experience-bullets li{padding-left:.4rem;margin-bottom:.8rem}.ng-experience-bullets li::marker{color:var(--ng-green)}
.ng-experience-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-block:2rem}
.ng-experience-projects>a{display:flex;flex-direction:column;align-items:start;padding:clamp(1.25rem,2.5vw,2rem);background:var(--ng-surface);border:1px solid var(--ng-border);text-decoration:none;color:var(--ng-text)}
.ng-experience-projects>a:hover{border-color:var(--ng-green)}.ng-experience-projects .ng-eyebrow{font-size:.6rem;line-height:1.7}.ng-experience-projects h4{font-size:clamp(1.2rem,1.8vw,1.6rem);line-height:1.25;margin:.9rem 0}
.ng-experience-projects p{font-size:.85rem;line-height:1.8;color:var(--ng-muted);margin:0 0 1.4rem}.ng-experience-projects .ng-link{font-size:.8rem;margin-top:auto}
.ng-experience-footnote{padding:1.25rem 0;border-block:1px solid var(--ng-border);color:var(--ng-muted);font-size:.85rem;max-width:78ch}.ng-experience-footnote strong{color:var(--ng-text);font-weight:500}.ng-experience-footnote p{margin:.5rem 0 0}
.ng-experience-assignments{max-width:78ch;margin:0}.ng-experience-assignments>div{padding:1.4rem 0;border-top:1px solid var(--ng-border)}.ng-experience-assignments dt{font-size:1rem;color:var(--ng-text);font-weight:500}.ng-experience-assignments dt span{font:.7rem monospace;color:var(--ng-green);margin-left:.75rem}.ng-experience-assignments dd{margin:.65rem 0 0;color:var(--ng-muted);line-height:1.8;font-size:.95rem}
.ng-experience-toolkit{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}.ng-experience-toolkit>article{min-width:0;padding:clamp(1.5rem,3vw,3rem);border:1px solid var(--ng-border);background:var(--ng-surface)}
.ng-experience-index{font:.65rem monospace;letter-spacing:.12em;color:var(--ng-green)}.ng-experience-toolkit h3{font-size:clamp(1.3rem,2.2vw,1.8rem);margin:1rem 0;line-height:1.25}.ng-experience-toolkit p{color:var(--ng-muted);max-width:63ch;font-size:.95rem;line-height:1.8}.ng-experience-toolkit .ng-skill-list{margin-top:1.5rem}
.ng-experience-ai{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(2rem,5vw,5rem);padding:clamp(1.5rem,4vw,4rem);margin-block:2rem;background:radial-gradient(ellipse at 0 0,#a5ff4313,transparent 65%),var(--ng-surface);border:1px solid #a5ff4345}
.ng-experience-ai h3{font-size:clamp(1.5rem,3vw,2.5rem);line-height:1.2;margin:1rem 0}.ng-experience-ai p{color:var(--ng-muted);font-size:.95rem;line-height:1.8;margin-bottom:1.5rem;max-width:48ch}.ng-experience-ai dl{margin:0}.ng-experience-ai dl>div+div{border-top:1px solid var(--ng-border);padding-top:1.2rem;margin-top:1.2rem}.ng-experience-ai dt{font:500 1.05rem var(--ng-display);color:var(--ng-text)}.ng-experience-ai dd{font-size:.9rem;line-height:1.8;color:var(--ng-muted);margin:.5rem 0 0}
.ng-experience-earlier{border-block:1px solid var(--ng-border);padding:1.5rem 0}.ng-experience-earlier summary{cursor:pointer;font:500 1.05rem var(--ng-display);color:var(--ng-text);line-height:1.6}.ng-experience-earlier summary::marker{color:var(--ng-green)}.ng-experience-earlier>div{padding-top:1.5rem;color:var(--ng-muted)}.ng-experience-earlier>div>p{max-width:75ch;font-size:.9rem}.ng-experience-earlier dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 3rem;margin-top:2rem}.ng-experience-earlier dt{color:var(--ng-text);font-size:.9rem}.ng-experience-earlier dd{font-size:.85rem;line-height:1.8;margin:.5rem 0 0}
.ng-experience-publication{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,7rem);padding-block:1rem}.ng-experience-publication h3{font-size:clamp(1.7rem,3.5vw,3rem);line-height:1.15;letter-spacing:-.03em;margin:1.3rem 0}.ng-experience-publication .ng-experience-subtitle{color:var(--ng-green);font-size:.95rem}.ng-experience-publication p{color:var(--ng-muted);max-width:57ch;line-height:1.8}.ng-experience-publication .ng-btn{margin-top:1rem}
.ng-experience-editions{list-style:none;padding:0;margin:0}.ng-experience-editions li{border-top:1px solid var(--ng-border);padding:1.3rem 0}.ng-experience-editions li>span{color:var(--ng-green);font:.6rem monospace;letter-spacing:.08em}.ng-experience-editions h4{font:500 1.1rem/1.5 var(--ng-display);margin:.65rem 0 .4rem}.ng-experience-editions p{font-size:.8rem;margin:0 0 .6rem}.ng-experience-editions a{font-size:.8rem;color:var(--ng-green);text-underline-offset:.25em}
.ng-experience-capstone{display:grid;grid-template-columns:1.3fr 1fr;gap:2rem;align-items:center;margin-top:3rem;padding:clamp(1.5rem,3vw,3rem);border:1px solid var(--ng-border);background:var(--ng-surface)}.ng-experience-capstone h3{font-size:clamp(1.3rem,2vw,1.8rem);line-height:1.3;margin:1rem 0}.ng-experience-capstone p:not(.ng-eyebrow){font-size:.9rem;line-height:1.8;color:var(--ng-muted);max-width:70ch;margin:0}.ng-experience-capstone__links{display:flex;flex-direction:column;align-items:start;gap:1rem;justify-self:end}.ng-experience-capstone__links a{font-size:.85rem}
.ng-experience-talks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 3rem}.ng-experience-talks article{display:grid;grid-template-columns:65px minmax(0,1fr);gap:1.5rem;padding:2rem 0;border-top:1px solid var(--ng-border)}.ng-experience-talks__date{font:1.25rem monospace;color:var(--ng-green)}.ng-experience-talks__date span{display:block;font-size:.6rem;color:var(--ng-muted);margin-top:.5rem}.ng-experience-talks h3{font-size:1.25rem;line-height:1.4;margin:0 0 .75rem}.ng-experience-talks p{font-size:.9rem;line-height:1.8;color:var(--ng-muted);max-width:55ch}.ng-experience-talks .ng-link{font-size:.8rem}
.ng-experience-training{display:grid;grid-template-columns:1fr 2fr;gap:2rem;padding-top:2rem;margin-top:2rem;border-top:1px solid var(--ng-border)}.ng-experience-training h3{font-size:1.35rem;line-height:1.4}.ng-experience-training>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.ng-experience-training p{font-size:.85rem;color:var(--ng-muted);line-height:1.8;margin:0}.ng-experience-training strong{display:block;font-weight:500;color:var(--ng-text)}
.ng-experience-degrees{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem}.ng-experience-degrees article{padding:clamp(1.5rem,3vw,3rem);border-top:2px solid var(--ng-green);background:var(--ng-surface)}.ng-experience-degrees h3{font-size:clamp(1.4rem,2.5vw,2rem);line-height:1.3;margin:1.2rem 0}.ng-experience-degrees p{color:var(--ng-muted);font-size:.95rem;line-height:1.8;max-width:58ch}.ng-experience-music{display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(2rem,5vw,5rem);margin-top:4rem}.ng-experience-music h3{font-size:clamp(1.5rem,3vw,2.5rem);line-height:1.2;margin-top:1rem}.ng-experience-music .ng-prose{color:var(--ng-muted)}.ng-experience-music .ng-link{font-size:.85rem}
@media(max-width:1000px){.ng-experience-section .ng-career-row{grid-template-columns:155px minmax(0,1fr);gap:2rem}.ng-experience-projects,.ng-experience-training>div{grid-template-columns:1fr}.ng-experience-training{grid-template-columns:1fr 2fr}.ng-experience-ai{grid-template-columns:1fr 1fr}.ng-experience-talks{column-gap:2rem}}
@media(max-width:700px){.ng-experience-section .ng-career-row,.ng-experience-toolkit,.ng-experience-ai,.ng-experience-publication,.ng-experience-capstone,.ng-experience-talks,.ng-experience-degrees,.ng-experience-music,.ng-experience-training{grid-template-columns:minmax(0,1fr)}.ng-experience-section .ng-career-row{gap:1.5rem}.ng-experience-section .ng-career-row>aside{gap:.3rem}.ng-experience-ai{gap:2rem}.ng-experience-earlier dl{grid-template-columns:1fr}.ng-experience-capstone__links{justify-self:start}.ng-experience-talks article{grid-template-columns:48px minmax(0,1fr);gap:1rem}.ng-experience-music{margin-top:2.5rem}.ng-experience-jumps{gap:.8rem 1.3rem}.ng-experience-path{font-size:.75rem}.ng-experience-assignments dt span{display:block;margin:.3rem 0 0}}
@media print{.ng-experience-jumps{display:none}.ng-experience-projects,.ng-experience-toolkit,.ng-experience-degrees{grid-template-columns:1fr 1fr}.ng-experience-section .ng-career-row{grid-template-columns:130px 1fr}.ng-experience-talks article,.ng-experience-toolkit article,.ng-experience-degrees article{break-inside:avoid}}
