.site-header{background:#08121cdd;border-bottom-color:#66818a38}.site-header:after{content:"";position:absolute;inset:auto 0 -1px;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent 4%,#db8eb46b 16%,#8bcfd766 42%,#b7d29b4d 67%,transparent 94%)}.brand{gap:12px}.brand-emblem{width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 2px 7px #d6e4ec0c)}.brand-wordmark{font-size:18px;font-weight:600;color:#e9f0f2}.brand-wordmark .brand-caption{margin-top:6px;font-size:8px;color:#a4bcc7}.hero .hero-name{color:#f1f5f6;text-shadow:0 2px 24px #040c1799}.hero .name-period{color:#dda0b9}.hero .eyebrow>.line{width:28px;background:#9bd1ce;box-shadow:6px 4px 0 #cf86a24d}.hero .role-connector{color:#abd4d0}.hero-role:after{content:"";display:block;width:42px;height:1px;margin-top:17px;background:#d396b1;box-shadow:42px 0 #80bcc5,84px 0 #b3c89f}.hero .hero-description{margin-top:18px}.hero-actions .button-primary{background:#dcebe8;border-color:#dcebe8;box-shadow:0 3px 18px #04100f33}.hero-actions .button-quiet{background:#0b1b2655;border-color:#64818e}.hero-socials a svg{color:#a7cbd2}.hero-socials a:hover{color:#e8f3ef}.hero-academic{border-left-color:#9fc7c2}.city-story .city-stage{height:auto;min-height:0;padding-bottom:44px}.city-story .city-introduction{padding-top:62px}.city-map{position:relative;margin-top:26px;margin-bottom:18px}.city-story .city-network{display:block;position:relative;inset:auto;width:100%;height:180px;overflow:visible}.city-story .network-wire{stroke:var(--wire-accent);stroke-width:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:.5}.city-story .network-signal{fill:none;stroke:var(--district-accent);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:.075 .925;stroke-dashoffset:0;opacity:.95;animation:city-signal-travel 2.5s linear infinite;animation-play-state:paused}.city-story[data-active=true][data-motion=play] .network-signal{animation-play-state:running}.city-story .district-node{stroke:var(--node-accent);fill:#10212b;opacity:.75}.city-story .district-node .node-core{fill:var(--node-accent)}.city-story .district-node.selected{stroke:var(--node-accent);opacity:1;filter:drop-shadow(0 0 5px #c4dbe82b)}.city-story .district-node.selected .node-core{fill:var(--node-accent)}.city-story .district-node text{fill:var(--node-accent);stroke:none;font:11px Courier New,monospace}.signal-toggle{position:absolute;right:0;top:0;width:40px;height:40px;border:1px solid #536f7c;border-radius:4px;display:grid;place-items:center;color:#c6d9e0;background:#0c1b2588}.signal-toggle:hover{border-color:var(--district-accent)}.city-story .city-console{position:relative;inset:auto}.city-story .district-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:#06141a80}.city-story .district-tabs button{border-top:1px solid color-mix(in srgb,var(--tab-accent) 45%,transparent);border-bottom:2px solid transparent;color:#c2d0d9;min-height:64px;padding:15px 8px}.city-story .district-tabs button svg{color:var(--tab-accent)}.city-story .district-tabs button[aria-selected=true]{border-bottom-color:var(--tab-accent);background:color-mix(in srgb,var(--tab-accent) 9%,transparent);color:#eff6f6}.city-story .district-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:54px;min-height:325px;padding-top:32px;align-items:start}.district-overview .eyebrow{color:var(--district-accent)}.city-story .district-preview h3{font-size:27px;line-height:1.35;margin:12px 0 15px}.city-story .district-overview>p{font-size:14px;line-height:1.85;color:#c1d1db;max-width:530px}.district-primary-link{display:inline-flex;align-items:center;gap:18px;min-height:44px;margin-top:18px;border-bottom:1px solid var(--district-accent);font-size:13px;color:#e1edef}.district-details dl{margin:0;display:grid;gap:18px}.district-details dt{font:10px Courier New,monospace;color:var(--district-accent);margin-bottom:7px}.district-details dd{margin:0;color:#d6e3e8;font-size:13px;line-height:1.8}.city-story .district-evidence{font-size:11px;color:#b5c7d0;line-height:1.8;margin-top:17px}.district-related{display:flex;gap:14px 24px;flex-wrap:wrap;border-top:1px solid #5e77854d;margin-top:20px;padding-top:12px}.district-related a{display:inline-flex;align-items:center;gap:8px;color:#d5e5eb;font-size:11px;min-height:36px}.district-related a:hover{color:var(--district-accent)}.honours-entry{scroll-margin-top:110px}.honours-modules{margin-top:25px;border-top:1px solid #4f6975}.honours-module{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:26px;padding:26px 0;border-bottom:1px solid #526b764d}.honours-code{font:11px Courier New,monospace;color:#b1cbd0;padding-top:6px}.honours-module h3,.honours-module h4{font-size:18px;line-height:1.5;margin:0 0 9px;font-weight:500;color:#e0ebee}.honours-module p{font-size:13px;color:#b8cdd6;line-height:1.8;margin:6px 0 0}.honours-module .honours-tools{color:#d2e2e2}.honours-module .honours-scope{font-size:11px;color:#a3bcc9;margin-top:10px}.honours-module>a{display:flex;align-items:center;gap:10px;align-self:start;min-height:44px;font-size:12px;color:#c4dcdb}.profile-prose .honours-modules{margin:25px 0 45px}.profile-prose .honours-module{grid-template-columns:75px minmax(0,1fr) auto;gap:20px}@keyframes city-signal-travel{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@media(max-width:960px){.brand-wordmark{font-size:17px}.city-story .city-introduction{padding-top:48px}.city-story .city-network{height:155px}.city-story .district-preview{gap:32px;min-height:355px}.city-story .district-preview h3{font-size:24px}.city-story .district-tabs button{font-size:11px;gap:7px}}@media(max-width:640px){.brand{gap:10px}.brand-wordmark{font-size:15px}.brand-wordmark .brand-caption{font-size:7px}.brand-emblem{width:38px;height:38px}.hero-role:after{margin-top:13px}.hero .hero-description{margin-top:14px}.city-story .city-stage{padding-bottom:36px}.city-map{margin-top:18px;margin-bottom:16px}.city-story .city-network{height:108px}.signal-toggle{top:-9px;width:36px;height:36px}.city-story .district-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.city-story .district-tabs button{font-size:10px;padding:11px 4px;flex-direction:column;min-height:68px}.city-story .district-tabs button:last-child{grid-column:span 2;flex-direction:row}.city-story .district-preview{grid-template-columns:1fr;min-height:540px;gap:26px;padding-top:24px}.city-story .district-preview h3{font-size:24px}.city-story .district-overview>p{font-size:13px}.district-details dd{font-size:12px}.honours-module,.profile-prose .honours-module{grid-template-columns:1fr;gap:10px;padding-block:23px}.honours-module h3,.honours-module h4{font-size:17px}.honours-module>a{min-height:40px}}@media(max-width:380px){.city-story .district-preview{min-height:600px}}@media(prefers-reduced-motion:reduce){.city-story .network-signal{opacity:.7}.city-story[data-active=true][data-motion=play][data-explicit-motion=true] .network-signal{animation:city-signal-travel 2.5s linear infinite!important}}.connected-section,.motion-section{position:relative}.connected-section,.engineering-entry-section,.motion-section{border-top:1px solid #a4c7ce24;background:#06111955}.engineering-entry-links{display:flex;flex-wrap:wrap;gap:24px 45px;border-block:1px solid #abc7d22b;padding-block:24px}.engineering-entry-links a{display:flex;gap:25px;align-items:center;font-size:14px;color:#c8e0e6}.engineering-entry-section .engineering-spotlights{margin-top:42px}.engineering-ambient{position:fixed;right:0;top:82px;width:180px;height:calc(100svh - 82px);pointer-events:none;z-index:2;opacity:.07;color:#bddce7}.engineering-ambient svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1}.engineering-ambient circle{fill:currentColor}.ambient-data,.ambient-process,.ambient-signal{opacity:0;transition:opacity .7s}.engineering-ambient[data-district=ai] .ambient-data,.engineering-ambient[data-district=electrical] .ambient-signal,.engineering-ambient[data-district=embedded] .ambient-signal,.engineering-ambient[data-district=security] .ambient-data,.engineering-ambient[data-district=systems] .ambient-process{opacity:1}.engineering-ambient[data-district=ai]{color:#df9dbd}.engineering-ambient[data-district=embedded]{color:#d69ca5}.footer-privacy{font-size:11px;align-items:center}.privacy-page{padding-bottom:85px}.privacy-page h1{margin-bottom:40px}.header-inner{gap:18px}.header-inner .navigation{margin-left:auto}.header-inner>.command-launcher{margin-left:0}.motion-heading,.network-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:32px}.motion-heading>p,.network-heading>p{color:#b6c8ce;font-size:14px}.motion-heading .eyebrow,.network-heading .eyebrow{margin-bottom:18px}.network-districts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-bottom:1px solid #b5d2da30;margin-bottom:12px}.network-districts button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:58px;padding:10px 6px;border:0;border-bottom:2px solid transparent;color:#a3b4bd;background:transparent;font-size:12px}.network-districts button[aria-selected=true]{border-color:var(--network-accent);color:var(--network-accent);background:#c3dce507}.network-workspace{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(270px,1fr);gap:40px;min-height:680px}.network-plot{position:relative;aspect-ratio:680/640;align-self:center}.network-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.network-orbit{fill:none;stroke:#a9c8d51a;stroke-dasharray:2 10}.network-orbit.outer{stroke-dasharray:1 13}.map-edge{fill:none;stroke:#86a7b31a;stroke-width:1}.map-edge.connected{stroke:var(--network-accent);opacity:.26}.map-edge.selected{stroke:var(--network-accent);stroke-width:1.8;stroke-dasharray:5 6;opacity:.85;animation:network-travel 16s linear infinite;animation-play-state:paused}.engineering-network[data-animate=true] .map-edge.selected{animation-play-state:running}@keyframes network-travel{to{stroke-dashoffset:-100}}.map-hub circle{fill:#0a1b25;stroke:#718e9e70}.map-hub path{stroke:#8aabb825;stroke-width:1}.map-hub text{fill:#9bb0ba;font:11px Courier New,monospace}.map-hub.selected circle{stroke:var(--network-accent);fill:#16272f}.map-hub.selected text{fill:var(--network-accent)}.map-city{fill:none;stroke:#c7e3e8;stroke-width:1.5}.map-centre-label{fill:#abc2ce;font:9px Courier New,monospace}.map-project{position:absolute;transform:translate(-50%,-50%);width:34px;height:34px;border:0;background:transparent;color:#93a7af;padding:10px}.map-project>span:first-child{display:block;width:10px;height:10px;border:1px solid #92b0bc;border-radius:50%;background:#10202a;transition:background .2s,transform .2s}.map-project.connected>span:first-child{border-color:var(--network-accent);background:var(--network-accent)}.map-project.selected>span:first-child{transform:scale(1.4);outline:1px solid var(--network-accent);outline-offset:5px}.map-project-label{position:absolute;top:34px;left:50%;transform:translateX(-50%);font:10px/1.3 Courier New,monospace;max-width:120px;width:max-content;opacity:0;pointer-events:none;padding:4px 6px;background:#07121bf5;color:#ebf2f5;z-index:3}.map-project.selected .map-project-label,.map-project:focus-visible .map-project-label,.map-project:hover .map-project-label{opacity:1}.network-coordinate{position:absolute;bottom:0;left:50%;transform:translateX(-50%);font:8px Courier New,monospace;color:#90aab7;white-space:nowrap}.network-inspector{padding-top:32px;min-width:0}.network-statement{font-size:23px;line-height:1.3;margin:12px 0 22px;min-height:60px;color:#e7eef0}.network-project-list{display:grid;grid-template-columns:1fr 1fr;gap:2px;max-height:176px;overflow-y:auto;padding-right:8px;scrollbar-width:thin}.network-project-list button{display:flex;align-items:center;justify-content:space-between;gap:5px;min-height:42px;text-align:left;border:0;border-bottom:1px solid #a6c4cc20;color:#a6b8c1;background:transparent;font-size:11px;padding:7px}.network-project-list button[aria-pressed=true]{color:var(--network-accent);background:#b3d4dd0b}.network-evidence{border-top:1px solid #c3dbe52b;padding-top:24px;margin-top:25px;min-height:330px}.network-evidence h3{font-size:23px;line-height:1.25}.network-evidence>p{font-size:13px;color:#a7bac4;line-height:1.7;margin-top:12px}.network-evidence ul{list-style:none;padding:0;margin:22px 0}.network-evidence li{font-size:11px;line-height:1.65;color:#9eb2bf;padding:7px 0}.network-evidence strong{display:block;color:var(--network-accent);font:10px Courier New,monospace;margin-bottom:5px}.network-bottom a,.network-explore{display:inline-flex;gap:15px;align-items:center;color:#d6e6eb;font-size:12px}.network-bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #b2ced525;padding-top:20px;font-size:11px;color:#99afb9}.mini-demo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.mini-demo{border-block:1px solid #abcbd52b;padding:24px 0;min-width:0}.mini-demo-title h3{font-size:24px}.mini-demo-title>span{display:block;color:#8ca5b3;font:9px Courier New,monospace;margin-top:12px}.mini-instrument{width:100%;aspect-ratio:300/160;margin:16px 0 6px;display:flex;align-items:center}.mini-instrument svg{width:100%;height:100%;overflow:visible}.mini-svg-label{fill:#9bb7c5;font:10px Courier New,monospace}.mini-job{transition:transform .5s ease}.mini-controls{display:flex;gap:8px;align-items:center;min-height:44px;color:#c2d7e2;font:10px Courier New,monospace}.mini-controls .icon-button{height:34px;width:34px}.mini-controls>span{margin-left:auto;color:#9ab1bd}.mini-controls input[type=range]{width:100%;min-width:40px;accent-color:#d69ca5}.mini-controls output{min-width:36px;text-align:right}.mini-provenance{font-size:10px;color:#9eb2bc;min-height:18px;margin:12px 0 24px}.mini-demo>a{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:13px;color:#d3e5eb}.policy-switch button{background:transparent;border:1px solid #8fabb637;padding:5px 14px;min-height:34px;color:#9ab0bc;font:11px Courier New,monospace}.policy-switch button[aria-pressed=true]{border-color:#b7d5e0;color:#e5f0f4;background:#9dc8d218}.motion-all{display:flex;align-items:center;justify-content:space-between;padding-top:28px;color:#d2e6ed;font-size:14px}.network-reserved{min-height:870px}.motion-reserved{min-height:490px}.command-launcher{gap:8px;width:auto;padding-inline:12px;flex-shrink:0}.command-launcher kbd{font:10px Courier New,monospace;color:#9fb5bf}.command-dialog{position:fixed;inset:0;width:min(650px,calc(100% - 32px));height:max-content;max-height:min(640px,85svh);margin:12svh auto auto;padding:0;border:1px solid #aac9d553;border-radius:6px;color:#e8f1f3;background:#0d1922;box-shadow:0 30px 90px #0008;overflow:hidden}.command-dialog::backdrop{background:#02080cbf;backdrop-filter:blur(5px)}.command-shell{display:flex;flex-direction:column;max-height:min(640px,85svh)}.command-input-row{display:flex;align-items:center;gap:13px;padding:18px;border-bottom:1px solid #bad5e32b}.command-input-row input{flex:1;min-width:0;border:0;background:transparent;color:#edf4f6;outline:0;font-size:16px}.command-input-row .icon-button{border:0;width:30px;height:30px}.command-results{overflow:auto;min-height:160px;padding:9px;scrollbar-width:thin}.command-result{display:flex;align-items:center;gap:16px;padding:13px 12px;border-radius:3px;min-height:65px;border-left:2px solid transparent}.command-result.selected{border-color:#b6d8e8;background:#bddae610}.command-kind{font:9px Courier New,monospace;color:#8fa8b7;width:66px;flex-shrink:0}.command-result>span:nth-child(2){min-width:0;flex:1}.command-result strong{font-size:14px;font-weight:500;display:block}.command-result small{font-size:11px;color:#91a8b5;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:5px}.command-footer{display:flex;justify-content:space-between;padding:13px 20px;border-top:1px solid #abcbd525;color:#8da7b6;font:9px Courier New,monospace}.command-empty{padding:38px 20px;color:#a2bac6}.connection-jump{display:flex;align-items:center;gap:8px;border:0;padding:5px 0;background:transparent;color:var(--network-accent);font:10px Courier New,monospace;min-height:28px;text-align:left}@media(max-width:1000px){.network-workspace{gap:20px;grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr)}.network-districts button{font-size:10px;gap:5px}.mini-demo-grid{gap:20px}.mini-demo-title h3{font-size:20px}.command-launcher kbd{display:none}.command-launcher{width:42px;padding:0}}@media(max-width:700px){.motion-heading,.network-heading{display:block}.motion-heading>p,.network-heading>p{margin-top:18px}.motion-heading h2,.network-heading h2{font-size:31px}.network-districts{grid-template-columns:repeat(3,minmax(0,1fr))}.network-districts button{font-size:11px;min-height:54px}.network-workspace{display:block;min-height:0}.network-plot{width:min(100%,360px);height:300px;margin:auto;aspect-ratio:auto}.map-project-label{display:none}.map-project{width:26px;height:26px;padding:8px}.map-project>span:first-child{width:8px;height:8px}.network-inspector{padding-top:20px}.network-statement{font-size:24px;min-height:0}.network-evidence{min-height:320px}.network-bottom{font-size:10px;flex-wrap:wrap}.mini-demo-grid{grid-template-columns:1fr;gap:18px}.mini-demo{display:grid;grid-template-columns:1fr 1fr;column-gap:16px}.mini-demo-title{grid-column:1/-1}.mini-instrument{grid-column:1/-1;aspect-ratio:300/140;height:180px;margin-block:12px}.mini-controls{grid-column:1/-1}.mini-provenance{grid-column:1/-1;margin-bottom:18px}.mini-demo>a{grid-column:1/-1}.mini-demo-title h3{font-size:26px}.network-reserved{min-height:1130px}.motion-reserved{min-height:1190px}.command-dialog{margin-top:8svh}.command-input-row{gap:8px;padding:12px}.command-input-row input{font-size:14px}.command-kind{width:47px;font-size:8px}.command-result{gap:8px;padding-inline:8px}.command-result strong{font-size:13px}.command-footer{font-size:8px}.command-launcher{margin-left:auto}}@media(prefers-reduced-motion:reduce){.map-edge.selected{animation:none!important}.map-project *,.mini-job,.network-lines *{transition:none}}.preview-agent{offset-distance:0;animation:recorded-route 2.8s steps(15) infinite paused}.preview-duty{fill:none;stroke:#d69ca5;stroke-width:2}.preview-duty.high,.preview-schedule.alternate{opacity:0;animation:preview-alternate 2.8s step-end infinite paused}.preview-duty.low,.preview-schedule.initial{animation:preview-initial 2.8s step-end infinite paused}.preview-flow-node{opacity:.55;animation:preview-stages 2.8s ease-in-out infinite paused}.preview-flow-node.step-1{animation-delay:.65s}.preview-flow-node.step-2{animation-delay:1.3s}.preview-predictions{padding:18px 18px 36px;object-fit:contain;animation:prediction-inspect 2.8s ease-in-out infinite paused}.preview-caption{position:absolute;bottom:12px;left:12px;right:12px;text-align:center;font:9px Courier New,monospace;color:#c6dce4}.project-preview .preview-trace{animation:preview-flow 3s linear infinite!important;animation-play-state:paused!important}.project-card-link:is(:hover,:focus-visible) .project-preview[data-animate=true] :is(.preview-agent,.preview-duty,.preview-schedule,.preview-flow-node,.preview-predictions,.preview-trace){animation-play-state:running!important}.project-preview[data-animate=false] .lab-preview{animation-play-state:paused!important}@keyframes recorded-route{to{offset-distance:100%}}@keyframes preview-alternate{0%,49%{opacity:0}50%,to{opacity:1}}@keyframes preview-initial{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes preview-stages{0%,to{opacity:.55}40%{opacity:1}}@keyframes prediction-inspect{50%{transform:translateY(-3px)}}body[data-engineering-district=ai] .journey-city-lights .tower-light:nth-child(-n+4),body[data-engineering-district=embedded] .journey-city-lights .tower-light:nth-child(n+11),body[data-engineering-district=software] .journey-city-lights .tower-light:nth-child(n+5):nth-child(-n+7),body[data-engineering-district=systems] .journey-city-lights .tower-light:nth-child(n+8):nth-child(-n+10){filter:brightness(1.35)}@media(max-width:1180px){.header-inner{gap:12px}.command-launcher kbd{display:none}.header-inner>.command-launcher{width:42px;padding:0}}@media(max-width:960px){.header-inner>.command-launcher{margin-left:auto}.engineering-ambient{opacity:.045;width:120px}}@media(max-width:640px){.header-inner{gap:9px;padding-inline:16px}.brand{min-width:0;flex-shrink:1}.brand-wordmark{font-size:14px}.brand-wordmark .brand-caption{font-size:6px}.header-inner>.command-launcher{width:38px;height:40px}.header-inner>.menu-toggle{width:40px;height:40px;flex-shrink:0}.engineering-ambient{display:none}.engineering-entry-links{display:grid;gap:22px}.engineering-entry-links a{justify-content:space-between}.footer-inner>div{gap:18px}}@media(prefers-reduced-motion:reduce){.engineering-ambient *{transition:none}.project-preview *,.project-preview .preview-trace{animation:none!important}.preview-duty.high,.preview-schedule.alternate{opacity:0}.preview-agent{offset-distance:100%}}.connected-section>.container,.network-reserved{min-height:1060px}.motion-reserved,.motion-section>.container{min-height:640px}@media(min-width:701px) and (max-width:1000px){.connected-section>.container,.network-reserved{min-height:1000px}.motion-reserved,.motion-section>.container{min-height:560px}}@media(max-width:700px){.connected-section>.container,.network-reserved{min-height:1400px}.motion-reserved,.motion-section>.container{min-height:1500px}}.preview-recorded-agent{offset-distance:0;animation:recorded-route 2.8s linear infinite paused}.project-card-link:is(:hover,:focus-visible) .project-preview[data-animate=true] .preview-recorded-agent{animation-play-state:running}@media(prefers-reduced-motion:reduce){.preview-recorded-agent{animation:none!important;offset-distance:100%}}.home-edit .section{padding-block:70px}.home-edit h2{font-size:32px;line-height:1.2}.home-edit .hero h1{margin-top:0}.home-edit .hero-description{max-width:445px}.home-edit .hero-copy{padding-top:0}.home-section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.career-summary a,.home-lab-entry a,.home-section-heading>a{display:inline-flex;align-items:center;gap:14px;color:#c5dce4;font-size:12px}.home-edit .projects-section{background:#08121b8c}.home-edit .compact-project .project-art{aspect-ratio:1.95}.home-edit .compact-project .project-card-copy{padding:20px}.home-edit .compact-project h3{font-size:20px;min-height:0;line-height:1.35}.home-edit .compact-project p{font-size:13px;line-height:1.7;min-height:44px;margin-top:12px}.home-edit .compact-project .project-meta{margin-bottom:13px;font-size:9px}.home-edit .compact-project .project-course{font-size:9px;margin-bottom:8px}.home-edit .compact-project .project-tags{margin-top:16px}.home-edit .compact-project .project-tags span{font-size:9px}.home-edit .career-summary{display:grid;grid-template-columns:1fr 1fr;gap:80px}.career-summary h2{margin-bottom:26px}.career-role{padding:20px 0;border-top:1px solid #b1ced42b}.career-honours h3,.career-role h3{font-size:19px;line-height:1.4}.career-date{font:9px Courier New,monospace;color:#96adba;margin-bottom:10px}.career-company{font-size:13px;color:#c2d7df;margin:7px 0 10px}.career-education>p,.career-honours>p:last-child,.career-role>p:last-child{font-size:13px;line-height:1.8;color:#b0c6d0}.career-education .career-degree{font-size:20px;line-height:1.5;color:#e2edf0;margin:0 0 12px}.career-summary .career-ranking{font-size:10px;line-height:1.8;margin:20px 0 30px;align-items:flex-start}.career-ranking svg{flex-shrink:0;margin-top:2px}.career-honours{border-top:1px solid #b1ced42b;padding-top:22px}.career-detail-links{display:flex;flex-wrap:wrap;gap:16px 24px;margin-top:24px}.home-edit .engineering-entry-section{background:#08141c88}.home-lab-entry{display:flex;align-items:center;justify-content:space-between;gap:50px}.home-lab-entry>div:first-child{position:relative;padding-left:52px}.home-lab-entry>div:first-child>svg{position:absolute;left:0;top:5px;color:#abc8d0}.home-lab-entry h2{margin:0 0 12px}.home-lab-entry p{font-size:13px;color:#b2c7d1}.home-lab-entry>div:last-child{display:flex;gap:36px;flex-wrap:wrap}.home-edit .contact-section{padding-block:70px 90px;min-height:0;background:#07121a77}.home-edit .contact-section h2{font-size:32px;margin-bottom:24px}.home-edit .contact-section .contact-email{display:inline-flex;align-items:center;gap:24px;font-size:19px;color:#e1edf0;max-width:100%;overflow-wrap:anywhere}.home-edit .contact-section .contact-links{background:transparent;border:0;padding:0}.contact-cvs{display:grid;gap:0}.contact-cvs a{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:15px;font-size:12px;border-top:1px solid #a3bdc733}.profile-page .education-section .container{width:100%;max-width:none}.profile-page .education-section{padding-top:30px}.profile-skills{border-top:1px solid #6e8a9738;margin-top:35px;padding-block:45px}.profile-skills>h2{font-size:28px;margin-bottom:30px}.profile-page .honours-entry{display:block}.profile-page .honours-entry>p{margin-top:10px}.profile-page .honours-entry>p>span{display:block;margin:7px 0 0}.home-edit .connected-section>.container,.home-edit .network-reserved{min-height:680px}.home-edit .motion-reserved,.home-edit .motion-section>.container{min-height:480px}.home-edit .network-heading{align-items:center;margin-bottom:24px}.network-heading>span{font:10px Courier New,monospace;color:#9fb7c3}.home-edit .network-districts button[aria-selected=true]{color:var(--tab-accent);border-color:var(--tab-accent)}.home-edit .network-workspace{grid-template-columns:minmax(0,1fr) 310px;gap:45px;min-height:0}.home-edit .network-plot{width:min(100%,550px);height:auto;aspect-ratio:680/640;margin-inline:auto;align-self:center}.home-edit .network-orbit{opacity:var(--map-reveal,1)}.home-edit .map-edge{opacity:calc(var(--map-reveal,1)*.12)}.home-edit .map-edge.connected{opacity:calc(var(--map-reveal,1)*.3)}.home-edit .map-edge.selected{opacity:calc(var(--map-reveal,1)*.9)}.home-edit .map-hub{opacity:calc(.25 + var(--map-reveal,1)*.75)}.home-edit .map-hub text{font-size:13px}.home-edit .map-hub.related circle{stroke:var(--hub-accent);fill:#142731}.home-edit .map-hub.related text{fill:var(--hub-accent)}.home-edit .map-city{opacity:calc(var(--map-reveal,1)*.65)}.home-edit .map-project{display:block;z-index:1}.home-edit .map-project.selected{z-index:3}.home-edit .map-project.labelled .map-project-label{opacity:calc(var(--map-reveal,1)*.8);font-size:9px;background:#07121bd9;padding:3px 4px}.home-edit .map-project.label-above .map-project-label{top:auto;bottom:30px}.home-edit .map-project:focus-visible .map-project-label,.home-edit .map-project:hover .map-project-label{opacity:1}.network-mobile-dots{display:none;fill:#688794;stroke:#112a35;stroke-width:1}.network-mobile-dots .connected{fill:var(--network-accent)}.network-mobile-dots .selected{fill:#e0f0f2;stroke:var(--network-accent);stroke-width:2}.home-edit .network-inspector{padding-top:20px}.network-preview-media{position:relative;height:145px;width:100%;overflow:hidden;background:#0b1b2380;margin-bottom:16px}.network-preview-media img{object-fit:contain;padding:8px}.network-preview-symbol{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:#a7cad5}.network-preview-symbol>span,.network-record-meta{font:9px Courier New,monospace}.network-record-meta{color:#95adba;margin-bottom:8px}.network-preview-head h3{font-size:24px;line-height:1.3}.network-preview-summary{font-size:12px;line-height:1.75;color:#b3c9d3;margin:12px 0 14px;min-height:63px}.network-connections{display:flex;gap:14px;flex-wrap:wrap}.network-connections button{border:0;border-bottom:1px solid #84a4b34a;background:transparent;color:#b6d3de;font:10px Courier New,monospace;padding:6px 0}.home-edit .network-explore{margin-block:18px;font-size:12px;min-height:24px}.network-reasons{border-top:1px solid #a8c5d52a;font-size:10px;color:#95aeba;line-height:1.7}.network-reasons summary{padding:9px 0;cursor:pointer}.network-reasons ul{list-style:none;padding:0;margin:0;max-height:140px;overflow:auto}.network-reasons li{padding:7px 0}.network-reasons strong{display:block;color:#d1e2e7}.network-reasons>p{font-size:10px;color:#9fb7c2;margin-top:8px}.home-edit .network-project-list{display:none}.home-edit .journey-horizon{opacity:calc(1 - var(--map-presence,0)*.65);transition:opacity .4s}.home-edit .journey-rear{opacity:calc(.4 - var(--map-presence,0)*.25)}.home-edit .motion-heading{margin-bottom:25px}.home-edit .mini-demo{padding-block:18px}.home-edit .mini-demo-title h3{font-size:23px}.home-edit .mini-demo-title>span{margin-top:9px}.home-edit .mini-instrument{height:155px;aspect-ratio:auto;margin-block:13px 4px}.home-edit .mini-provenance{margin:10px 0 18px;font-size:10px}.home-edit .mini-demo>a{font-size:12px}.policy-switch output{margin-left:auto;font-size:9px;min-width:0}.home-edit .motion-all{padding-top:20px;font-size:13px}.home-edit .journey-city-lights{filter:saturate(1.08) brightness(1.12)}.home-edit .journey-horizon .colour-0{color:#d9577d}.home-edit .journey-horizon .colour-1{color:#7abfcf}.home-edit .journey-horizon .colour-2{color:#c9e1e7}.home-edit .journey-horizon .colour-3{color:#c17fa9}.home-edit .city-water-lights{opacity:calc(.33 + var(--setting)*.36)}.home-edit .city-traffic{opacity:.7}.home-edit .tower-light:nth-child(11) i:first-child{height:3px;box-shadow:0 0 7px currentColor}.home-edit .moon-journey[data-active=true] .tower-light:nth-child(5n){animation:architectural-window 29s ease-in-out infinite}@keyframes architectural-window{0%,87%,to{opacity:.85}91%{opacity:.58}94%{opacity:.8}}@media(max-width:1000px){.home-edit .network-workspace{grid-template-columns:minmax(0,1fr) 260px;gap:25px}.home-edit .career-summary{gap:45px}.home-edit .network-heading>span{font-size:9px}.home-lab-entry{gap:25px}.home-lab-entry>div:last-child{gap:20px}}@media(max-width:700px){.home-edit .section{padding-block:50px}.home-edit .contact-section h2,.home-edit h2{font-size:28px}.home-edit .hero-description{font-size:16px;max-width:330px}.home-section-heading{gap:16px;margin-bottom:24px}.home-section-heading>a{font-size:11px}.home-edit .network-heading{display:flex;gap:12px;margin-bottom:20px}.home-edit .network-heading>span{font-size:8px;max-width:70px;text-align:right;line-height:1.5}.home-edit .network-districts button{min-height:46px;font-size:10px;gap:6px}.home-edit .network-workspace{display:block}.home-edit .network-plot{height:270px;width:100%;aspect-ratio:auto}.home-edit .network-plot .map-project{display:none}.network-mobile-dots{display:block}.home-edit .map-hub text{font-size:19px}.home-edit .connected-section>.container,.home-edit .network-reserved{min-height:840px}.home-edit .network-inspector{padding-top:14px}.network-preview-head{display:grid;grid-template-columns:96px minmax(0,1fr);gap:18px;align-items:center}.network-preview-media{height:90px;margin-bottom:0}.network-preview-head h3{font-size:23px}.network-preview-symbol{gap:8px}.network-preview-symbol>span{font-size:7px;text-align:center;line-height:1.6}.network-preview-summary{min-height:0;font-size:12px;margin-top:14px}.home-edit .network-explore{margin-block:12px}.home-edit .network-project-list{display:grid;max-height:132px;grid-template-columns:1fr 1fr;margin-top:14px}.network-project-list a{display:flex;align-items:center;justify-content:space-between;gap:5px;min-height:42px;padding:8px 4px;font-size:10px;border-bottom:1px solid #aac9d527;color:#b2cbd7}.network-project-list a[aria-current=true]{color:#ebf4f6}.home-edit .motion-reserved,.home-edit .motion-section>.container{min-height:730px}.home-edit .mini-demo-grid{gap:12px}.home-edit .mini-demo{grid-template-columns:130px minmax(0,1fr);gap:0 16px;padding-block:16px}.home-edit .mini-demo-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.home-edit .mini-demo-title h3{font-size:22px}.home-edit .mini-demo-title>span{font-size:8px;margin:0}.home-edit .mini-instrument{grid-column:1;grid-row:2/5;width:130px;height:130px;margin:0}.home-edit .mini-controls{grid-column:2;grid-row:2;min-height:40px;flex-wrap:wrap;gap:6px}.home-edit .mini-controls>span{font-size:8px;margin-left:0}.home-edit .mini-controls .icon-button{width:32px;height:34px}.home-edit .policy-switch button{font-size:9px;padding-inline:8px}.home-edit .policy-switch output{font-size:8px}.home-edit .mini-controls input[type=range]{min-width:55px}.home-edit .mini-provenance{grid-column:2;grid-row:3;line-height:1.6;margin:8px 0;font-size:9px;min-height:0}.home-edit .mini-demo>a{grid-column:2;grid-row:4;font-size:11px}.home-edit .career-summary{grid-template-columns:1fr;gap:45px}.career-summary h2{margin-bottom:20px}.career-honours h3,.career-role h3{font-size:18px}.career-education .career-degree{font-size:19px}.home-lab-entry{display:block}.home-lab-entry>div:first-child{padding-left:42px}.home-lab-entry>div:last-child{margin-top:28px;justify-content:space-between;gap:15px}.home-edit .contact-section{padding-block:50px 70px}.home-edit .contact-section .contact-email{font-size:16px;gap:16px}.home-edit .contact-grid{gap:28px}.home-edit .compact-project .project-art{aspect-ratio:1.95}.home-edit .compact-project h3{font-size:21px}.home-edit .compact-project p{min-height:0}.profile-page .uct-feature{grid-template-columns:1fr;gap:35px}.profile-page .uct-institution h3{font-size:32px}.profile-page .academic-journey{grid-template-columns:1fr}.profile-page .academic-journey a{display:flex;align-items:center;gap:22px;padding:16px 0}.profile-page .academic-journey i{display:none}.profile-page .academic-journey a>span:last-of-type{min-height:0}.profile-page .academic-journey svg{margin:0 0 0 auto}}@media(prefers-reduced-motion:reduce){.home-edit .journey-horizon{transition:none}.home-edit .tower-light:nth-child(5n){animation:none!important}}@media(max-width:700px){.home-edit .mini-controls input[type=range]{width:auto;flex:1 1 55px;min-width:55px}.home-edit .mini-controls output{min-width:26px}}.network-flow-preview{width:100%;height:100%}.network-flow-preview text{font:12px Courier New,monospace;fill:#c2dce7}.network-flow-preview .flow-caption{font-size:8px;fill:#8faebd}.home-edit .network-inspector{background:#07121b8f;padding:18px;align-self:center}.home-edit .mini-controls{background:#07121b70}.home-edit .mini-demo>a,.home-edit .mini-provenance{text-shadow:0 1px 6px #02080f;color:#c8dce5}@media(max-width:700px){.home-edit .connected-section>.container,.home-edit .network-reserved{min-height:900px}.home-edit .network-inspector{background:transparent;padding:14px 0 0}.home-edit .policy-switch button{font-size:11px}.home-edit .mini-controls output{font-size:10px}.home-edit .mini-instrument svg text:not(.mini-svg-label){font-size:24px}.home-edit .mini-svg-label{font-size:20px}}