*{box-sizing:border-box}html{background:#f5f3ee}body{text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;min-width:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (width>=52.0625rem){body{min-width:20rem}}button{font:inherit}.site-shell{--canvas:#f7f5f0;--surface:#f1efe9;--ink:#222725;--muted:#676e68;--index:#969790;--line:#dbd8d0;--line-strong:#bdbab1;--accent:#a65335;--accent-soft:#f0ded4;--font-display:Georgia, "Times New Roman", serif;--font-mono:ui-monospace, "Cascadia Code", "SFMono-Regular", Consolas, monospace;--type-display:clamp(3.25rem, 5vw, 4.0625rem);--type-page-display:clamp(3.7rem, 7vw, 6.25rem);--type-section-heading:clamp(2rem, 3vw, 3.1rem);--type-content-heading:clamp(1.05rem, 1.7vw, 1.32rem);--type-lead:clamp(1rem, 1.55vw, 1.2rem);--type-body:.95rem;--type-body-compact:.88rem;--type-label:clamp(.88rem, .28vw + .78rem, .98rem);--type-meta:clamp(.7rem, .14vw + .66rem, .78rem);--type-index:clamp(3.2rem, 5.75vw, 5rem);--type-micro:.67rem;--tracking-label:.065em;--tracking-meta:.035em;min-height:100vh;color:var(--ink);background:var(--canvas);grid-template-columns:13.5rem minmax(0,1fr);display:grid}.site-rail{z-index:1;border-right:1px solid var(--line);background:var(--surface);grid-area:1/1;position:relative}.site-content{grid-area:1/2;min-width:0}.site-main{min-width:0}.skip-link{z-index:10;color:var(--ink);border:1px solid var(--line-strong);background:var(--canvas);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;padding:.65rem .8rem;font-weight:700;text-decoration:none;position:fixed;top:.8rem;left:.8rem;transform:translateY(-150%)}.skip-link:focus-visible{outline:3px solid var(--ink);outline-offset:3px;transform:translateY(0)}.route-title:focus{outline:none}.route-transition{will-change:opacity, transform;min-width:0}.content-frame{width:min(100% - 7rem,80rem);margin:0 auto}.site-header{background:var(--surface);height:100svh;padding:2.35rem 1.9rem;display:flex;position:sticky;top:0}.site-header__inner{flex-direction:column;width:100%;display:flex}.site-header__identity,.site-navigation__link,.section-link{color:inherit;text-decoration:none}.site-header__identity{color:var(--accent);font-family:var(--font-display);letter-spacing:-.085em;font-size:1.45rem;font-weight:700;line-height:1}.site-navigation{margin-top:clamp(3.5rem,10vh,6rem)}.site-navigation ul{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.site-navigation__link,.site-navigation__cv{min-height:2.8rem;color:var(--muted);font-size:var(--type-body-compact);align-items:center;line-height:1.2;display:inline-flex;position:relative}.site-navigation__link{width:100%}.site-navigation__link:hover,.site-navigation__link--active{color:var(--accent);font-weight:750}.site-navigation__link--active:after{content:"";background:var(--accent);border-radius:50%;width:.5rem;height:.5rem;position:absolute;right:.1rem}.site-navigation__cv{cursor:not-allowed;min-height:auto;padding-top:.65rem;display:grid}.site-navigation__cv-status{color:var(--muted);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta)}.site-navigation__link:focus-visible,.site-header__identity:focus-visible,.section-link:focus-visible{outline:3px solid var(--ink);outline-offset:4px}.site-footer{z-index:2;color:var(--muted);font-family:var(--font-mono);font-size:var(--type-micro);pointer-events:none;grid-area:1/1;align-self:end;padding:1.9rem;line-height:1.5}.site-footer p{margin:0}.hero{background:var(--canvas);border-bottom:1px solid var(--line)}.hero__frame{grid-template-columns:minmax(0,.9fr) minmax(18rem,.85fr);align-items:center;gap:clamp(1.5rem,5vw,5rem);min-height:min(43rem,100svh);padding:clamp(5.75rem,12vw,10rem) clamp(0rem,1.5vw,1.25rem) clamp(4.5rem,8vw,6.5rem);display:grid;position:relative}.hero__frame:before,.hero__frame:after{content:"";border-color:var(--accent);border-style:solid;width:.8rem;height:.8rem;position:absolute}.hero__frame:before{border-width:1px 0 0 1px;top:clamp(1.5rem,4vw,3rem);left:clamp(0rem,1.5vw,1.25rem)}.hero__frame:after{border-width:0 1px 1px 0;bottom:clamp(1.5rem,4vw,3rem);right:clamp(0rem,1.5vw,1.25rem)}.hero__content{z-index:1;max-width:38rem;position:relative}.eyebrow,.section-index,.contact-points>p,.project-entry__number,.tag-list,.beyond-entry__number{font-family:var(--font-mono)}.eyebrow,.contact-points>p{color:var(--accent);font-size:var(--type-label);letter-spacing:var(--tracking-label);text-transform:uppercase;margin:0;font-weight:760;line-height:1.35}.section-index{color:var(--index);font-size:var(--type-index);letter-spacing:-.065em;margin:0;font-weight:650;line-height:.9}h1,h2,h3,p{margin-top:0}h1,h2,h3{text-wrap:balance;font-weight:650}h1{font-family:var(--font-display);font-size:var(--type-display);letter-spacing:-.065em;margin:1rem 0 1.45rem;line-height:.92}.hero__specialism{max-width:29rem;color:var(--muted);font-size:var(--type-lead);margin:0;line-height:1.65}.contact-points{flex-wrap:wrap;align-items:baseline;gap:.65rem 1.8rem;margin-top:clamp(2.8rem,6vw,4.5rem);display:flex}.contact-points ul,.tag-list,.skill-node__skills{margin:0;padding:0;list-style:none}.contact-points ul{color:var(--muted);font-size:var(--type-body-compact);flex-wrap:wrap;gap:.5rem 1.1rem;display:flex}.contact-points li{position:relative}.contact-points a{color:inherit;text-underline-offset:.22em;text-decoration:none;text-decoration-thickness:1px;transition:color .18s,text-decoration-color .18s}.contact-points a:hover{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.contact-points a:focus-visible{outline:3px solid var(--ink);outline-offset:4px}.contact-points li:not(:last-child):after{content:"";background:var(--accent);width:2px;height:2px;position:absolute;top:.5em;right:-.65rem}.hero__visual{justify-content:flex-end;align-self:stretch;align-items:center;display:flex;overflow:hidden}.hero__visual img{opacity:.29;filter:grayscale()sepia(.7)saturate(.85)hue-rotate(325deg)brightness(1.2)contrast(.7);mix-blend-mode:multiply;width:min(52rem,150%);max-width:none;transform:translate(8%)}.section{border-bottom:1px solid var(--line);padding:clamp(4.5rem,8vw,7rem) 0}.section--currently{padding-block:clamp(3.5rem,6vw,5rem)}.section--projects,.section--about-preview{background:var(--surface)}.home-about{grid-template-columns:minmax(0,.85fr) minmax(18rem,1.15fr);align-items:start;gap:clamp(2rem,7vw,7rem);padding-top:clamp(2rem,4vw,3.25rem);display:grid}.home-about__lead{max-width:30rem;color:var(--ink);font-size:var(--type-lead);letter-spacing:-.025em;margin:0;font-weight:650;line-height:1.4}.home-about__context{border-left:1px solid var(--line-strong);max-width:40rem;padding-left:clamp(1.25rem,2.75vw,2.5rem)}.home-about__label{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0 0 .8rem;font-weight:720;line-height:1.35}.home-about__context>p:not(.home-about__label){max-width:38rem;color:var(--muted);font-size:var(--type-body);margin:0;line-height:1.6}.home-about__context .section-link{margin-top:1.5rem}.section--beyond{background:var(--surface)}.about-introduction{border-bottom:1px solid var(--line);background:var(--canvas);padding:clamp(3.75rem,7vw,6rem) 0}.about-introduction__frame{grid-template-columns:minmax(8rem,14rem) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.about-introduction__lead{letter-spacing:-.035em;max-width:none;margin:-.12rem 0 0;font-family:inherit;font-size:clamp(1.35rem,2vw,1.85rem);font-weight:700;line-height:1.22}.about-section--education{padding-top:clamp(4.5rem,8vw,7rem)}.academic-timeline{margin-top:clamp(2.75rem,5vw,4.25rem)}.academic-timeline__axis{--academic-node-size:.56rem;--academic-node-top:1.44rem;height:2rem;position:relative}.academic-timeline__axis:before{top:calc(var(--academic-node-top) + (var(--academic-node-size) / 2) - .5px);content:"";background:var(--line-strong);height:1px;position:absolute;left:0;right:0}.academic-timeline__year,.academic-timeline__period{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);margin:0;font-weight:720}.academic-timeline__year{position:absolute;top:0}.academic-timeline__year--start{left:0}.academic-timeline__year--transition{left:50%;transform:translate(-50%)}.academic-timeline__year--end{right:0}.academic-timeline__node{top:var(--academic-node-top);z-index:1;width:var(--academic-node-size);height:var(--academic-node-size);border:1px solid var(--accent);background:var(--canvas);border-radius:50%;position:absolute}.academic-timeline__node--start{left:0;transform:translate(-50%)}.academic-timeline__node--transition{background:var(--accent-soft);left:50%;transform:translate(-50%)}.academic-timeline__node--end{right:0;transform:translate(50%)}.academic-timeline__entries{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.academic-timeline__entry{padding-top:1.5rem;position:relative}.academic-timeline__entry:before{content:"";background:var(--line-strong);width:1px;height:1.78rem;position:absolute;top:-.28rem}.academic-timeline__entry--edinburgh{padding-right:clamp(2rem,6vw,5rem)}.academic-timeline__entry--edinburgh:before{left:-.5px}.academic-timeline__entry--imperial{padding-left:0}.academic-timeline__entry--imperial:before{left:-.5px}.academic-timeline__period{margin-bottom:.85rem}.academic-timeline__entry h3{margin-bottom:.55rem}.academic-timeline__entry div>p{max-width:33rem;color:var(--muted);font-size:var(--type-body);margin:0;line-height:1.6}.academic-timeline__entry .education-entry__distinction{margin-top:.8rem}.about-section--experience{background:var(--surface)}.journey-scroll-scene{height:500vh;margin-top:clamp(2.5rem,5vw,4rem)}.journey-scroll-scene__sticky{place-items:center;min-height:100svh;display:grid;position:sticky;top:0}.journey-timeline{--journey-rail-offset:clamp(9rem, 17vw, 12rem);--journey-card-offset:calc(var(--journey-rail-offset) + 1.5rem);--journey-card-height:clamp(18rem, 31svh, 22rem);width:min(100%,66rem);height:min(56rem,100svh - 5rem);position:relative}.journey-timeline__track{top:0;bottom:0;left:calc(var(--journey-rail-offset) - .5px);background:var(--line-strong);width:1px;position:absolute}.journey-timeline__progress{transform-origin:top;background:var(--accent);position:absolute;inset:0}.journey-timeline__milestones{height:100%;margin:0;padding:0;list-style:none;position:relative}.journey-timeline__milestone{left:var(--journey-rail-offset);width:.66rem;height:.66rem;transition:opacity .36s;position:absolute;transform:translate(-50%,-50%)}.journey-timeline__node{z-index:1;border:1px solid var(--line-strong);background:var(--canvas);border-radius:50%;width:.66rem;height:.66rem;transition:border-color .36s,background-color .36s,transform .36s,opacity .22s;display:block;position:relative}.journey-timeline__year{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);margin:0 0 .38rem;font-weight:720}.journey-timeline__marker-label{color:var(--muted);font-size:var(--type-micro);margin:0;font-weight:650;line-height:1.35}.journey-timeline__narrative{max-width:36rem;color:var(--muted);font-size:var(--type-body-compact);margin:0;line-height:1.6}.journey-timeline__milestone.is-passed .journey-timeline__node{border-color:var(--accent);background:var(--accent-soft);transform:scale(.84)}.journey-timeline__milestone.is-current .journey-timeline__node{border-color:var(--accent);background:var(--accent-soft);opacity:0;transform:scale(1.24)}.journey-scroll-scene--reduced{height:auto}.journey-scroll-scene--reduced .journey-scroll-scene__sticky{min-height:0;padding:.25rem 0;position:static}.journey-scroll-scene--reduced .journey-timeline{--journey-rail-offset:.25rem;height:auto;padding-bottom:0;padding-left:2rem}.journey-scroll-scene--reduced .journey-timeline__track{bottom:.25rem}.journey-scroll-scene--reduced .journey-timeline__milestone{opacity:1;grid-template-columns:.9rem minmax(0,1fr);align-items:start;gap:1rem;width:100%;height:auto;display:grid;position:relative;left:0;transform:none;top:auto!important}.journey-scroll-scene--reduced .journey-timeline__milestone.is-current .journey-timeline__node{opacity:1}.journey-timeline{--journey-index-width:clamp(12rem, 20vw, 15.5rem);grid-template-columns:var(--journey-index-width) minmax(0, 1fr);gap:clamp(3rem,7vw,6.25rem);width:min(100%,68rem);height:min(48rem,100svh - 6rem);display:grid}.journey-timeline__index{min-width:0;position:relative}.journey-timeline__track{top:0;bottom:0;left:.425rem}.journey-timeline__milestones{grid-template-rows:repeat(5,minmax(0,1fr));height:100%;display:grid}.journey-timeline__milestone{grid-template-columns:.85rem minmax(0,1fr);align-items:center;gap:.95rem;width:auto;height:auto;transition:opacity .28s;display:grid;position:relative;left:auto;transform:none;top:auto!important}.journey-timeline__node{width:.66rem;height:.66rem;transform:none}.journey-timeline__select{cursor:pointer;background:0 0;border:0;place-items:center;width:2rem;height:2rem;margin-left:-.575rem;padding:0;display:grid}.journey-timeline__select:focus-visible{outline:2px solid var(--ink);outline-offset:.16rem}.journey-timeline__select:hover .journey-timeline__node{border-color:var(--accent);background:var(--accent-soft)}.journey-timeline__index-copy{min-width:0}.journey-timeline__marker-label{color:var(--ink);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);font-weight:650}.journey-timeline__mobile-content{display:none}.journey-timeline__detail{border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);align-self:center;align-items:center;min-width:0;min-height:clamp(20rem,42svh,26rem);display:grid}.journey-timeline__detail-content{width:100%;padding:clamp(1.4rem,3vw,2.35rem) 0}.journey-timeline__detail-eyebrow{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);margin:0 0 .75rem;font-weight:650}.journey-timeline__detail h3{margin:0 0 1rem;font-size:clamp(1.55rem,3.1vw,2.25rem)}.journey-timeline__detail .journey-timeline__narrative{max-width:36rem}.journey-timeline__milestone.is-passed{opacity:.72}.journey-timeline__milestone.is-upcoming{opacity:.48}.journey-timeline__milestone.is-current{opacity:1}.journey-timeline__milestone.is-passed .journey-timeline__node{transform:scale(.92)}.journey-timeline__milestone.is-current .journey-timeline__node{opacity:1;transform:scale(1.22)}.journey-scroll-scene--reduced .journey-timeline{width:min(100%,42rem);height:auto;padding:0;display:block}.journey-scroll-scene--reduced .journey-timeline__index{padding-left:0}.journey-scroll-scene--reduced .journey-timeline__track{top:.45rem;bottom:.45rem;left:.425rem}.journey-scroll-scene--reduced .journey-timeline__milestones{gap:2.2rem;height:auto;display:grid}.journey-scroll-scene--reduced .journey-timeline__milestone{opacity:1;grid-template-columns:.85rem minmax(0,1fr);gap:.95rem;width:auto;display:grid}.journey-scroll-scene--reduced .journey-timeline__detail{display:none}.journey-scroll-scene--reduced .journey-timeline__mobile-content{max-width:36rem;padding-top:.8rem;display:block}.about-section--beyond{background:var(--canvas)}.experience-records{margin-top:clamp(2.75rem,5vw,4.25rem)}.experience-record{border-bottom:1px solid var(--line);grid-template-columns:minmax(8rem,14rem) minmax(0,1fr);gap:clamp(1rem,4vw,4rem);padding:clamp(2.25rem,5vw,4.25rem) 0;display:grid}.experience-record__metadata>p,.experience-record__type,.experience-record__keywords{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0;font-weight:720}.experience-record__content{max-width:48rem}.experience-record__institution{color:var(--muted);font-size:var(--type-body-compact);margin:.6rem 0 0;line-height:1.55}.experience-record__rule{background:var(--line-strong);height:1px;margin:clamp(1.45rem,3vw,2rem) 0}.experience-record__content h3{font-family:var(--font-display);letter-spacing:-.045em;margin:0;font-size:clamp(1.65rem,3.3vw,2.55rem);line-height:1.05}.experience-record__narrative{max-width:43rem;color:var(--muted);font-size:var(--type-body);margin:1rem 0 0;line-height:1.65}.experience-record__footer{justify-content:space-between;align-items:baseline;gap:1.5rem;margin-top:clamp(1.65rem,3vw,2.25rem);display:flex}.experience-record__link{color:var(--accent);font-size:var(--type-body-compact);white-space:nowrap;font-weight:720;text-decoration:none;transition:color .18s}.experience-record__link:hover{color:var(--ink)}.experience-record__link:focus-visible{outline:2px solid var(--ink);outline-offset:.25rem}.about-beyond{grid-template-columns:minmax(0,.8fr) minmax(18rem,1.15fr);align-items:flex-start;gap:clamp(2rem,7vw,7rem);padding:clamp(2rem,4vw,3.25rem) 0 0;display:grid}.about-beyond__lead{max-width:29rem;color:var(--ink);font-size:var(--type-lead);letter-spacing:-.025em;margin:0;font-weight:650;line-height:1.4}.about-beyond__topic{border-left:1px solid var(--line-strong);max-width:39rem;padding-left:clamp(1.25rem,2.75vw,2.5rem)}.about-beyond__topic-label,.beyond-entry__eyebrow{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0 0 .8rem;font-weight:720;line-height:1.35}.about-beyond__topic-copy{max-width:37rem;color:var(--muted);font-size:var(--type-body);margin:0;line-height:1.6}.about-beyond__topic .section-link{margin-top:1.5rem}.page-hero{border-bottom:1px solid var(--line);background:var(--surface)}.page-hero__frame{min-height:min(27rem,65svh);padding:clamp(5rem,10vw,7.5rem) 0 clamp(3.5rem,7vw,5.25rem)}.page-hero h1{max-width:none;font-size:var(--type-page-display);margin-bottom:1.1rem}.page-hero p:last-child{max-width:34rem;color:var(--muted);font-size:var(--type-lead);margin-bottom:0;line-height:1.65}.section-heading{border-bottom:1px solid var(--line);grid-template-columns:minmax(4rem,7rem) minmax(0,1fr);align-items:start;gap:1rem;padding-bottom:clamp(2rem,4vw,3.4rem);display:grid}.section-index{padding-top:0}h2{max-width:21ch;font-family:var(--font-display);font-size:var(--type-section-heading);letter-spacing:-.055em;margin:.55rem 0 0;line-height:1}h3{font-size:var(--type-content-heading);letter-spacing:-.035em;margin-bottom:.5rem;line-height:1.22}.project-entry__content>p,.beyond-entry div>p{color:var(--muted);font-size:var(--type-body);margin-bottom:0;line-height:1.6}.beyond-entry{grid-template-columns:minmax(4rem,7rem) minmax(0,1fr);gap:1rem;max-width:51rem;margin-top:clamp(2.75rem,5vw,4.25rem);display:grid}.beyond-entry h3{max-width:38rem;font-family:var(--font-display);font-size:var(--type-content-heading);letter-spacing:-.04em;margin:0 0 .65rem;line-height:1.05}.beyond-entry div>.beyond-entry__eyebrow{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);margin-bottom:.75rem;font-weight:720;line-height:1.35}.beyond-entry__copy{max-width:31rem}.project-entry__number,.beyond-entry__number{color:var(--accent);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);margin:0;font-weight:720}.education-entry__distinction{color:var(--accent);font-size:var(--type-body-compact);margin:.8rem 0 0;font-weight:650}.project-list--preview{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem;margin-top:clamp(2rem,3.5vw,3rem);display:grid;position:relative}.project-list--preview .project-entry{border:1px solid var(--line);border-top-color:var(--line-strong);background:color-mix(in srgb, var(--canvas) 82%, transparent);grid-template-columns:3rem minmax(0,1fr) auto;align-items:start;gap:1rem;min-height:12.2rem;padding:1.2rem;transition:border-color .18s;display:grid;position:relative;overflow:visible}.project-list--preview .project-entry--link{color:inherit;cursor:pointer;text-decoration:none}.project-list--preview .project-entry--link:focus-visible{outline:2px solid var(--ink);outline-offset:.22rem}.project-list--preview .project-entry:before{z-index:0;content:"";background:var(--line-strong);opacity:.72;height:1px;transition:background-color .18s,opacity .18s;position:absolute;top:.78rem;left:.78rem;right:.78rem}.project-list--preview .project-entry:not(:last-child):before{right:-1.2rem}.project-list--preview .project-entry:after{z-index:1;content:"";border:1px solid var(--line-strong);background:var(--canvas);border-radius:50%;width:.54rem;height:.54rem;transition:border-color .18s,background-color .18s;position:absolute;top:.52rem;left:2.305rem}.project-list--preview .project-entry:hover{border-color:var(--accent)}.project-list--preview .project-entry:hover:before{background:var(--accent);opacity:.9}.project-list--preview .project-entry:hover:after{border-color:var(--accent);background:var(--accent-soft)}.project-list--preview .project-entry__number{z-index:1;width:2.75rem;height:2.75rem;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 38%, var(--line));font-size:var(--type-meta);border-radius:.5rem;place-items:center;transition:border-color .18s,background-color .18s;display:grid;position:relative}.project-list--preview .project-entry__number:before{content:"";background:var(--line-strong);width:1px;height:.68rem;transition:background-color .18s;position:absolute;top:-.68rem;left:calc(50% - .5px)}.project-list--preview .project-entry:hover .project-entry__number{border-color:var(--accent);background:var(--accent-soft)}.project-list--preview .project-entry:hover .project-entry__number:before{background:var(--accent)}.project-entry__content h3{margin-bottom:.55rem}.project-list--preview .project-entry__content>p{font-size:var(--type-body-compact);line-height:1.55}.project-entry__arrow{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;align-self:center;font-weight:720;line-height:1.2}.tag-list{color:var(--accent);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);flex-wrap:wrap;gap:.4rem .7rem;margin-top:1rem;font-weight:720;display:flex}.tag-list li{align-items:center;gap:.35rem;display:inline-flex}.tag-list li:before{content:"";background:currentColor;border-radius:50%;flex:none;width:.26rem;height:.26rem}.project-explorer{overflow-anchor:none;margin-top:0;position:relative}.project-explorer:before{content:"";background:var(--line-strong);opacity:.72;width:1px;transition:opacity .18s;position:absolute;top:clamp(3rem,6vw,5rem);bottom:clamp(3rem,6vw,5rem);left:.28rem}.project-module{border-bottom:1px solid var(--line);background:0 0;transition:border-color .18s,opacity .18s,max-height .28s,padding .28s;position:relative;overflow:visible}.project-module:before{z-index:1;content:"";border:1px solid var(--line-strong);background:var(--canvas);border-radius:50%;width:.58rem;height:.58rem;transition:border-color .18s,background-color .18s;position:absolute;top:calc(clamp(3rem,6vw,5rem) + .82rem);left:0}.project-module:after{content:"";background:var(--line-strong);opacity:.72;width:1.35rem;height:1px;transition:background-color .18s,opacity .18s;position:absolute;top:calc(clamp(3rem,6vw,5rem) + 1.1rem);left:.56rem}.project-module:hover{border-bottom-color:var(--accent)}.project-module:hover:before{border-color:var(--accent);background:var(--accent-soft)}.project-module:hover:after{background:var(--accent);opacity:.9}.project-module__summary,.project-detail__header{grid-template-columns:minmax(4rem,7rem) minmax(0,1fr) auto;align-items:start;gap:1rem;padding:clamp(3rem,6vw,5rem) 0;display:grid}.project-module__summary{transition:padding 1s cubic-bezier(.22,.85,.25,1),gap 1s cubic-bezier(.22,.85,.25,1)}.project-module__number{z-index:1;width:3.25rem;height:2.2rem;color:var(--accent);border:1px solid var(--line);background:var(--canvas);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);border-radius:.2rem;place-items:center;margin:0 0 0 1.35rem;padding:0;font-weight:720;line-height:1;transition:border-color .18s,background-color .18s,width 1s cubic-bezier(.22,.85,.25,1),height 1s cubic-bezier(.22,.85,.25,1),margin 1s cubic-bezier(.22,.85,.25,1);display:grid;position:relative}.project-module__trigger{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;justify-items:start;gap:.68rem;padding:0;display:grid}.project-module__trigger:hover .project-module__title{color:var(--accent)}.project-module__trigger:focus-visible,.project-detail__triangle:focus-visible{outline:2px solid var(--ink);outline-offset:.35rem}.project-module__title,.project-module__title{color:var(--ink);font-family:var(--font-display);letter-spacing:-.045em;margin:0;font-size:clamp(1.7rem,3vw,2.65rem);font-weight:650;line-height:1.04;transition:color .18s,font-size 1s cubic-bezier(.22,.85,.25,1),letter-spacing 1s cubic-bezier(.22,.85,.25,1)}.project-module__summary-copy,.project-module__summary-copy{color:var(--muted);font-size:var(--type-body);margin:0;line-height:1.6}.project-module__summary-copy,.project-module__tags{max-height:4rem;transition:opacity .7s,transform 1s cubic-bezier(.22,.85,.25,1),max-height 1s cubic-bezier(.22,.85,.25,1);overflow:hidden}.project-module__tags{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:720;line-height:1.5}.project-module--condensing .project-module__summary{grid-template-columns:minmax(4rem,5.8rem) minmax(0,1fr) auto;gap:.7rem;padding:.78rem 1rem}.project-module--condensing .project-module__number{width:3rem;height:2rem;margin-left:0}.project-module--condensing .project-module__title{letter-spacing:-.04em;font-size:clamp(1.25rem,2.2vw,1.75rem)}.project-module--condensing .project-module__summary-copy,.project-module--condensing .project-module__tags{opacity:0;max-height:0;transform:translateY(-.3rem)}.project-detail__triangle{width:2.45rem;height:2.45rem;color:var(--accent);border:1px solid var(--line-strong);background:var(--canvas);cursor:pointer;border-radius:.18rem;place-items:center;margin-top:.08rem;display:grid}.project-detail__triangle:hover{border-color:var(--accent);background:var(--accent-soft)}.project-detail__triangle span{transform-origin:42%;border-top:.34rem solid #0000;border-bottom:.34rem solid #0000;border-left:.48rem solid;width:0;height:0;display:block}.project-explorer--detail-open:before{opacity:0}.project-explorer--detail-open{min-height:calc(100svh + 12rem);padding-bottom:100svh}.project-explorer--docking{padding-bottom:100svh}.project-explorer--returning{overflow-anchor:none}.project-explorer--detail-open.project-explorer--returning .project-module--inactive{border-bottom-color:var(--line);visibility:visible;opacity:1;pointer-events:none;transition:border-color 1s cubic-bezier(.22,.85,.25,1),opacity 1s cubic-bezier(.22,.85,.25,1)}.project-explorer--detail-open.project-explorer--returning .project-module--inactive:before,.project-explorer--detail-open.project-explorer--returning .project-module--inactive:after{opacity:.72;transition:opacity 1s cubic-bezier(.22,.85,.25,1)}.project-explorer--detail-open .project-module--inactive{visibility:hidden;opacity:0;pointer-events:none;border-bottom-color:#0000}.project-explorer--detail-open .project-module--inactive:before,.project-explorer--detail-open .project-module--inactive:after{opacity:0}.project-module--docked{z-index:3;border:1px solid var(--line-strong);background:var(--canvas);box-shadow:0 .8rem 2rem color-mix(in srgb, var(--ink) 7%, transparent);position:sticky;top:0}.project-module--docked:before,.project-module--docked:after{display:none}.project-detail__header{border-bottom:1px solid var(--line);grid-template-columns:minmax(4rem,5.8rem) minmax(0,1fr) auto;min-height:5.65rem;padding:.78rem 1rem}.project-detail__header .project-module__number{align-self:center;margin-left:0}.project-detail__header-content{min-width:0}.project-detail__eyebrow,.project-detail__annotation-id,.project-dataflow__heading p{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0;font-weight:750;line-height:1.4}.project-detail__header h2{max-width:none;font-family:var(--font-display);letter-spacing:-.04em;margin:.22rem 0 0;font-size:clamp(1.25rem,2.2vw,1.75rem);line-height:1.06}.project-detail__header .tag-list{gap:.25rem .55rem;margin:.42rem 0 0}.project-detail__header-controls{justify-content:flex-end;align-items:center;gap:.55rem;display:flex}.project-detail__canvas-shell{overflow:hidden}.project-detail__canvas{background:0 0;padding:clamp(1.2rem,3vw,2.5rem)}.project-detail__canvas-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:1rem;padding-bottom:1.25rem;display:flex}.project-detail__canvas-heading h3{font-family:var(--font-display);letter-spacing:-.045em;margin:.35rem 0 0;font-size:clamp(1.7rem,3.5vw,2.7rem);line-height:1.05}.project-detail__canvas-heading>p{max-width:18rem;color:var(--muted);font-size:var(--type-body-compact);text-align:right;margin:0;line-height:1.55}.project-detail__overview-grid,.project-detail__notes-grid{gap:1rem;display:grid}.project-detail__overview-grid{grid-template-columns:1.15fr .85fr;margin-top:1rem}.project-detail__annotation,.project-detail__note{border:1px solid var(--line);background:color-mix(in srgb, var(--canvas) 58%, transparent);padding:1.1rem 1.15rem;position:relative}.project-detail__annotation:before,.project-detail__note:before{content:"";background:var(--accent);width:1.45rem;height:1px;position:absolute;top:0;left:1.1rem}.project-detail__annotation h4,.project-detail__note h4{font-size:var(--type-content-heading);margin:.75rem 0 .4rem;line-height:1.25}.project-detail__annotation>p:last-child,.project-detail__note>p:last-child{color:var(--muted);font-size:var(--type-body-compact);margin:0;line-height:1.6}.graduation-overview{border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);grid-template-columns:minmax(7rem,.42fr) minmax(0,1fr) minmax(14rem,.78fr);align-items:start;gap:1.1rem;margin-top:1rem;padding:1.25rem 1.15rem;display:grid}.graduation-overview h4,.graduation-process h4,.graduation-domain__heading h4,.graduation-module h5{color:var(--ink);margin:0}.graduation-overview h4,.graduation-process h4{font-size:var(--type-content-heading);line-height:1.2}.graduation-overview div>p,.graduation-overview__context{color:var(--muted);font-size:var(--type-body-compact);margin:.5rem 0 0;line-height:1.6}.graduation-overview__context{border-left:1px solid var(--line);margin-top:0;padding-left:1.1rem}.graduation-system{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--canvas) 70%, transparent);grid-template-columns:minmax(0,1fr) minmax(0,.95fr);margin-top:1rem;display:grid}.graduation-domain{min-width:0;padding:1.2rem}.graduation-domain--rtl{border-right:1px solid var(--line)}.graduation-domain--uvm{border-left:0}.graduation-domain__heading{border-bottom:1px solid var(--line);padding-bottom:.95rem}.graduation-domain__heading h4{font-size:var(--type-content-heading);margin-top:.72rem;line-height:1.2}.graduation-domain__heading>p:last-child{color:var(--muted);font-size:var(--type-body-compact);margin:.35rem 0 0;line-height:1.5}.rtl-map,.uvm-map{gap:.8rem;margin-top:1rem;display:grid}.rtl-map{grid-template-columns:minmax(0,1fr) minmax(0,.72fr);align-items:start}.uvm-map{grid-template-columns:repeat(2,minmax(0,1fr))}.graduation-module{border:1px solid var(--line);background:var(--surface);min-width:0;padding:.9rem;position:relative}.graduation-module:before{content:"";background:var(--accent);width:1.35rem;height:1px;position:absolute;top:-1px;left:.9rem}.graduation-module h5{font-size:var(--type-body-compact);margin-top:.5rem;line-height:1.2}.graduation-module>p:last-child{color:var(--muted);font-size:var(--type-micro);margin:.42rem 0 0;line-height:1.55}.graduation-module__port{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0;font-weight:750;line-height:1.4}.graduation-module--distance,.graduation-module--tree,.graduation-module--stimulus,.graduation-module--monitor{grid-column:1/-1}.graduation-module--tree{border-color:var(--line-strong);min-height:9rem;padding-top:1.25rem}.graduation-module--controller{border-style:dashed;margin-top:1.65rem}.graduation-module--register{margin-top:1.65rem}.graduation-module--reference,.graduation-module--scoreboard{min-height:8.5rem}.graduation-process{border-top:1px solid var(--line-strong);background:color-mix(in srgb, var(--canvas) 62%, transparent);grid-template-columns:minmax(7rem,.42fr) minmax(0,1fr);gap:1.1rem;margin-top:1rem;padding:1.25rem 1.15rem;display:grid}.graduation-process div>p{max-width:53rem;color:var(--muted);font-size:var(--type-body-compact);margin:.52rem 0 0;line-height:1.6}.giflib-record{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--canvas) 72%, transparent);grid-template-columns:minmax(0,1fr) minmax(12rem,.38fr);align-items:end;gap:1.15rem;margin-top:1rem;padding:1.2rem 1.15rem;display:grid}.giflib-record h4,.giflib-boundary__heading h4,.giflib-build__heading h4{font-size:var(--type-content-heading);margin:.7rem 0 0;line-height:1.2}.giflib-record div>p:last-child,.giflib-boundary__heading>p:last-child{max-width:45rem;color:var(--muted);font-size:var(--type-body-compact);margin:.48rem 0 0;line-height:1.6}.giflib-record__link{border:1px solid var(--accent);color:var(--ink);font-size:var(--type-body-compact);justify-items:start;gap:.3rem;padding:.85rem .9rem;line-height:1.35;display:grid}.giflib-record__link span{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:750}.giflib-record__link strong{font-weight:720}.giflib-record__link:hover{background:var(--accent);color:var(--canvas)}.giflib-record__link:hover span{color:var(--canvas)}.giflib-record__link:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.giflib-boundary{border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);margin-top:1rem;padding:1.2rem 1.15rem 1.15rem}.giflib-boundary__heading{grid-template-columns:minmax(8rem,.3fr) minmax(0,1fr);align-items:start;gap:.3rem 1.1rem;display:grid}.giflib-boundary__heading .project-detail__annotation-id{grid-row:span 2}.giflib-boundary__heading h4,.giflib-boundary__heading>p:last-child{grid-column:2}.giflib-boundary__map{grid-template-rows:minmax(7rem,auto) minmax(6.5rem,auto);grid-template-columns:minmax(0,.78fr) minmax(0,1.3fr) minmax(0,.9fr);gap:.85rem;margin-top:1.15rem;display:grid}.giflib-boundary__application,.giflib-boundary__seam,.giflib-boundary__decoder{border:1px solid var(--line);background:var(--surface);min-width:0;padding:.9rem;position:relative}.giflib-boundary__application:before,.giflib-boundary__seam:before,.giflib-boundary__decoder:before,.giflib-build__items section:before{content:"";background:var(--accent);width:1.4rem;height:1px;position:absolute;top:-1px;left:.9rem}.giflib-boundary__application>p,.giflib-boundary__seam>p,.giflib-boundary__decoder>p,.giflib-build__items section>p{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0;font-weight:750;line-height:1.4}.giflib-boundary h5,.giflib-build__items h5{font-size:var(--type-body-compact);margin:.52rem 0 0;line-height:1.22}.giflib-boundary span,.giflib-build__items span{color:var(--muted);font-size:var(--type-micro);margin-top:.42rem;line-height:1.55;display:block}.giflib-boundary__application--source{grid-area:1/1}.giflib-boundary__seam{border-style:dashed;grid-area:2/1}.giflib-boundary__decoder{border-color:var(--line-strong);background:color-mix(in srgb, var(--canvas) 86%, var(--surface));grid-area:1/2/span 2;align-content:center;padding:1.35rem;display:grid}.giflib-boundary__decoder h5{max-width:16rem;font-size:var(--type-content-heading)}.giflib-boundary__application--output{grid-area:1/3/span 2;align-self:center}.giflib-build{border:1px solid var(--line);grid-template-columns:minmax(13rem,.55fr) minmax(0,1fr);gap:1.1rem;margin-top:1rem;padding:1.2rem 1.15rem;display:grid}.giflib-build__heading h4{margin-top:.7rem}.giflib-build__items{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;display:grid}.giflib-build__items section{border:1px solid var(--line);background:color-mix(in srgb, var(--canvas) 55%, transparent);min-width:0;padding:.8rem;position:relative}.project-dataflow{border:1px solid var(--line-strong);background:var(--canvas);margin-top:1rem;padding:1.15rem;position:relative}.project-dataflow__heading{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.project-dataflow__heading span{color:var(--muted);font-size:var(--type-micro)}.project-dataflow__stages{grid-template-columns:repeat(6,minmax(0,1fr));gap:.8rem;margin-top:1.05rem;display:grid}.project-dataflow__dependencies{color:var(--muted);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;grid-template-columns:repeat(6,minmax(0,1fr));gap:.8rem;margin-top:.8rem;font-weight:720;display:grid}.project-dataflow__dependencies span{border:1px solid var(--line);justify-self:stretch;align-items:center;min-height:1.9rem;padding:.35rem .55rem;display:inline-flex;position:relative}.project-dataflow__dependencies span:before{border-left:1px solid var(--accent);content:"";border-radius:0;width:.35rem;height:.8rem;position:absolute;bottom:100%;left:50%}.project-dataflow__dependency--codebook{grid-column:3}.project-dataflow__dependency--pq-codes{grid-column:5}.project-dataflow__stage{z-index:1;min-height:6.85rem;color:var(--ink);border:1px solid var(--line);background:var(--surface);font-size:var(--type-body-compact);align-content:end;padding:.8rem;font-weight:720;line-height:1.25;display:grid;position:relative}.project-dataflow__stage:not(:last-child):after{z-index:-1;content:"";background:var(--line-strong);width:.8rem;height:1px;position:absolute;top:50%;left:100%}.project-dataflow__stage-id{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);align-self:start;font-weight:750}.project-dataflow__caption{border-top:1px solid var(--line);color:var(--muted);font-size:var(--type-body-compact);margin:1rem 0 0;padding-top:.8rem;line-height:1.5}.project-detail__notes-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:1rem}.project-detail__note{min-height:10.8rem}.section-link{border-bottom:1px solid var(--accent);color:var(--accent);font-size:var(--type-body-compact);gap:.5rem;margin-top:clamp(2rem,4vw,3rem);padding-bottom:.35rem;font-weight:750;display:inline-flex}.section-link:hover{color:var(--ink)}.section-intro{max-width:38rem;color:var(--muted);font-size:var(--type-body);margin:1.5rem 0 2rem;line-height:1.65}.section--skills-map{padding-top:clamp(2.75rem,5vw,4.5rem)}.section--skills-map .section-intro{margin:0 0 clamp(1.35rem,2.6vw,2rem)}.skill-map{border:1px solid var(--line-strong);background:#ecebe5;position:relative;overflow:hidden}.skill-map--detail-open{min-height:43rem}.skill-map__diagram{isolation:isolate;grid-template-rows:repeat(2,minmax(14rem,auto));grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"digital-ic digital-hardware ann""embedded soc.";gap:clamp(1.5rem,3vw,2.75rem);padding:clamp(1.25rem,3vw,2.5rem);transition:opacity .24s,transform .24s;display:grid}.skill-map--detail-open .skill-map__diagram{opacity:.22;pointer-events:none;transform:scale(.985)}.skill-map--connections-suppressed .skill-map__connection{opacity:0;transition:none}.skill-map__connection{z-index:0;background:var(--line-strong);opacity:.72;pointer-events:none;transition:background-color .18s,opacity .18s}.skill-map__connection--embedded-soc{grid-area:2/1/auto/3;align-self:center;height:1px}.skill-map__connection--hardware-ic{grid-area:1/1/auto/3;align-self:center;height:1px}.skill-map__connection--hardware-ann{grid-area:1/2/auto/4;align-self:center;height:1px}.skill-map__connection--hardware-soc{grid-area:1/2/3;justify-self:center;width:1px}.skill-map__connection--active{background:var(--accent);opacity:1}.skill-map__connection--inactive{opacity:.18}.skill-node{z-index:1;border:1px solid var(--line-strong);color:var(--ink);background:var(--canvas);cursor:pointer;text-align:left;border-radius:0;padding:2.45rem clamp(1rem,2.2vw,1.6rem) clamp(1rem,2.2vw,1.6rem);transition:background-color .18s,border-color .18s,opacity .18s;position:relative}.skill-node--related{border-color:color-mix(in srgb, var(--accent) 65%, var(--line-strong))}.skill-node--active{border-color:var(--accent);background:color-mix(in srgb, var(--canvas) 86%, var(--accent-soft))}.skill-node--inactive{opacity:.46}.skill-node:disabled{cursor:default}.skill-node--embedded{grid-area:embedded}.skill-node--digital-hardware{grid-area:digital-hardware}.skill-node--digital-ic{grid-area:digital-ic}.skill-node--soc{grid-area:soc}.skill-node--ann{grid-area:ann}.skill-node--embedded-placeholder{pointer-events:none;background:0 0;border-color:#0000;grid-area:embedded}.skill-node__port{z-index:2;border:1px solid var(--line-strong);background:var(--canvas);border-radius:50%;width:.54rem;height:.54rem;transition:border-color .18s,background-color .18s;position:absolute}.skill-node__port--embedded-soc{top:calc(50% - .27rem);right:-.3rem}.skill-node--soc .skill-node__port--embedded-soc{left:-.3rem;right:auto}.skill-node--digital-hardware .skill-node__port--hardware-ic{top:calc(50% - .27rem);left:-.3rem}.skill-node--digital-ic .skill-node__port--hardware-ic,.skill-node--digital-hardware .skill-node__port--hardware-ann{top:calc(50% - .27rem);right:-.3rem}.skill-node--ann .skill-node__port--hardware-ann{top:calc(50% - .27rem);left:-.3rem}.skill-node--digital-hardware .skill-node__port--hardware-soc{bottom:-.3rem;left:calc(50% - .27rem)}.skill-node--soc .skill-node__port--hardware-soc{top:-.3rem;left:calc(50% - .27rem)}.skill-node__port--active{border-color:var(--accent);background-color:var(--accent-soft)}.skill-node__block-id{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:720;position:absolute;top:.95rem;left:clamp(1rem,2.2vw,1.6rem)}.skill-node__title{max-width:16ch;font-size:var(--type-content-heading);letter-spacing:-.025em;margin-bottom:1.25rem;font-weight:700;line-height:1.1;display:block}.skill-node__skills{border-left:1px solid var(--line);color:var(--muted);font-size:var(--type-meta);gap:.4rem;padding-left:.75rem;line-height:1.35;display:grid}.skill-node__expand-hint{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:720;position:absolute;bottom:1rem;right:clamp(1rem,2.2vw,1.6rem)}.skill-node--expandable:hover{border-color:var(--accent)}.skill-detail{z-index:3;padding:clamp(.5rem,1.4vw,1rem);display:grid;position:absolute;inset:0}.skill-detail__frame{border:1px solid var(--accent);background:var(--canvas);flex-direction:column;min-height:100%;display:flex;overflow:hidden}.skill-detail__header{border-bottom:1px solid var(--line-strong);justify-content:space-between;align-items:flex-start;gap:1.5rem;padding:clamp(1.2rem,2.8vw,2rem);display:flex}.skill-detail__level,.skill-detail__node-id,.skill-detail__status{font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0;font-weight:720}.skill-detail__level{color:var(--accent)}.skill-detail__header h3{font-family:var(--font-display);letter-spacing:-.05em;margin:.55rem 0 0;font-size:clamp(1.9rem,4vw,3rem);line-height:.95}.skill-detail__close{border:1px solid var(--line-strong);min-height:2.35rem;color:var(--ink);cursor:pointer;font-family:var(--font-mono);font-size:var(--type-micro);letter-spacing:var(--tracking-meta);text-transform:uppercase;background:0 0;border-radius:0;align-items:center;gap:.5rem;padding:.5rem .7rem;font-weight:720;transition:border-color .18s,color .18s,background-color .18s;display:inline-flex}.skill-detail__close:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.skill-detail__close:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.skill-detail__diagram{isolation:isolate;flex:1;grid-template-rows:repeat(3,minmax(6.75rem,1fr));grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,3vw,2.4rem);padding:clamp(1.25rem,3vw,2.5rem);display:grid;position:relative}.skill-detail__connection{z-index:0;border-color:var(--line-strong);pointer-events:none;border-style:solid;transition:border-color .18s,opacity .18s}.skill-detail__connection--horizontal{border-width:1px 0 0;align-self:center;height:0}.skill-detail__connection--vertical{border-width:0 0 0 1px;justify-self:center;width:0}.skill-detail__connection--future{border-style:dashed}.skill-detail__connection--active{border-color:var(--accent);opacity:1}.skill-detail__connection--inactive{opacity:.18}.skill-detail__diagram--embedded{grid-template-areas:"embedded-stm32 embedded-firmware embedded-freertos""embedded-lvgl. ."".embedded-esp."}.skill-detail__connection--embedded-firmware-stm32{grid-area:1/1/auto/3}.skill-detail__connection--embedded-firmware-freertos{grid-area:1/2/auto/4}.skill-detail__connection--embedded-stm32-lvgl{grid-area:1/1/3}.skill-detail__connection--embedded-firmware-esp{grid-area:1/2/4}.skill-detail__diagram--digital-hardware{grid-template-areas:"hardware-language hardware-rtl hardware-pipeline"".hardware-fpga hardware-resources"".hardware-ila."}.skill-detail__connection--digital-hardware-language-rtl{grid-area:1/1/auto/3}.skill-detail__connection--digital-hardware-rtl-pipeline{grid-area:1/2/auto/4}.skill-detail__connection--digital-hardware-rtl-fpga{grid-area:1/2/3}.skill-detail__connection--digital-hardware-fpga-resources{grid-area:2/2/auto/4}.skill-detail__connection--digital-hardware-fpga-ila{grid-area:2/2/4}.skill-detail__diagram--digital-ic{grid-template-areas:"ic-design ic-verification ic-systemverilog"".ic-uvm ic-randomized"". . ."}.skill-detail__connection--digital-ic-design-verification{grid-area:1/1/auto/3}.skill-detail__connection--digital-ic-verification-systemverilog{grid-area:1/2/auto/4}.skill-detail__connection--digital-ic-verification-uvm{grid-area:1/2/3}.skill-detail__connection--digital-ic-uvm-randomized{grid-area:2/2/auto/4}.skill-detail__diagram--soc{grid-template-areas:"soc-codesign soc-zynq soc-pspl"".soc-axi soc-dma"".soc-memory soc-coherency"}.skill-detail__connection--soc-codesign-zynq{grid-area:1/1/auto/3}.skill-detail__connection--soc-zynq-pspl{grid-area:1/2/auto/4}.skill-detail__connection--soc-zynq-axi{grid-area:1/2/3}.skill-detail__connection--soc-axi-dma{grid-area:2/2/auto/4}.skill-detail__connection--soc-axi-memory{grid-area:2/2/4}.skill-detail__connection--soc-dma-coherency{grid-area:2/3/4}.skill-detail__diagram--ann{grid-template-areas:"ann-ann-search ann-opq.""ann-ivf ann-pq ann-adc"".ann-pipeline ann-fpga"}.skill-detail__connection--ann-ann-ivf{grid-area:1/1/3}.skill-detail__connection--ann-opq-pq{grid-area:1/2/3}.skill-detail__connection--ann-ivf-pq{grid-area:2/1/auto/3}.skill-detail__connection--ann-pq-adc{grid-area:2/2/auto/4}.skill-detail__connection--ann-adc-fpga{grid-area:2/3/4}.skill-detail__connection--ann-fpga-pipeline{grid-area:3/2/auto/4}.skill-detail__node{z-index:1;border:1px solid var(--line-strong);min-height:6.75rem;color:var(--ink);background:var(--canvas);cursor:pointer;text-align:left;border-radius:0;padding:1.8rem 1rem .85rem;transition:border-color .18s,background-color .18s,opacity .18s;position:relative}.skill-detail__node--embedded-stm32{grid-area:embedded-stm32}.skill-detail__node--embedded-firmware{grid-area:embedded-firmware}.skill-detail__node--embedded-freertos{grid-area:embedded-freertos}.skill-detail__node--embedded-lvgl{grid-area:embedded-lvgl}.skill-detail__node--embedded-esp{grid-area:embedded-esp}.skill-detail__node--digital-hardware-language{grid-area:hardware-language}.skill-detail__node--digital-hardware-rtl{grid-area:hardware-rtl}.skill-detail__node--digital-hardware-pipeline{grid-area:hardware-pipeline}.skill-detail__node--digital-hardware-fpga{grid-area:hardware-fpga}.skill-detail__node--digital-hardware-resources{grid-area:hardware-resources}.skill-detail__node--digital-hardware-ila{grid-area:hardware-ila}.skill-detail__node--digital-ic-design{grid-area:ic-design}.skill-detail__node--digital-ic-verification{grid-area:ic-verification}.skill-detail__node--digital-ic-systemverilog{grid-area:ic-systemverilog}.skill-detail__node--digital-ic-uvm{grid-area:ic-uvm}.skill-detail__node--digital-ic-randomized{grid-area:ic-randomized}.skill-detail__node--soc-codesign{grid-area:soc-codesign}.skill-detail__node--soc-zynq{grid-area:soc-zynq}.skill-detail__node--soc-pspl{grid-area:soc-pspl}.skill-detail__node--soc-axi{grid-area:soc-axi}.skill-detail__node--soc-dma{grid-area:soc-dma}.skill-detail__node--soc-memory{grid-area:soc-memory}.skill-detail__node--soc-coherency{grid-area:soc-coherency}.skill-detail__node--ann-ann-search{grid-area:ann-ann-search}.skill-detail__node--ann-opq{grid-area:ann-opq}.skill-detail__node--ann-ivf{grid-area:ann-ivf}.skill-detail__node--ann-pq{grid-area:ann-pq}.skill-detail__node--ann-adc{grid-area:ann-adc}.skill-detail__node--ann-pipeline{grid-area:ann-pipeline}.skill-detail__node--ann-fpga{grid-area:ann-fpga}.skill-detail__node--active{border-color:var(--accent);background:color-mix(in srgb, var(--canvas) 86%, var(--accent-soft))}.skill-detail__node--related{border-color:color-mix(in srgb, var(--accent) 65%, var(--line-strong))}.skill-detail__node--inactive{opacity:.42}.skill-detail__node--future{color:var(--muted);border-style:dashed}.skill-detail__node:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.skill-detail__node-id{color:var(--accent);position:absolute;top:.65rem;left:.85rem}.skill-detail__node-title{font-size:var(--type-body-compact);letter-spacing:-.02em;font-weight:700;line-height:1.15;display:block}.skill-detail__node-detail,.skill-detail__status{color:var(--muted);font-size:var(--type-micro);margin-top:.55rem;line-height:1.35;display:block}.skill-detail__status{font-family:var(--font-mono);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:720}.skill-detail__port{z-index:2;border:1px solid var(--line-strong);background:var(--canvas);border-radius:50%;width:.48rem;height:.48rem;transition:border-color .18s,background-color .18s;position:absolute}.skill-detail__port--left{top:calc(50% - .24rem);left:-.27rem}.skill-detail__port--right{top:calc(50% - .24rem);right:-.27rem}.skill-detail__port--top{top:-.27rem;left:calc(50% - .24rem)}.skill-detail__port--bottom{bottom:-.27rem;left:calc(50% - .24rem)}.skill-detail__port--future{border-style:dashed}.skill-detail__port--active{border-color:var(--accent);background:var(--accent-soft)}.beyond-feature-section{background:var(--surface)}.beyond-feature{border-top:1px solid var(--line-strong)}.beyond-feature__heading{border-bottom:1px solid var(--line);grid-template-columns:minmax(3.5rem,6rem) minmax(0,1fr) minmax(12rem,.45fr);align-items:end;gap:clamp(1.25rem,3vw,3.25rem);padding:clamp(2.25rem,4vw,3.5rem) 0 clamp(2rem,3.5vw,3rem);display:grid}.beyond-feature__index{color:var(--index);font-family:var(--font-mono);letter-spacing:-.08em;margin:0 0 .15rem;font-size:clamp(2.5rem,3.7vw,3.6rem);font-weight:700;line-height:1}.beyond-feature__heading h2{max-width:42rem;font-family:var(--font-display);letter-spacing:-.045em;margin:.55rem 0 0;font-size:clamp(2.25rem,3.6vw,3.5rem);font-weight:650;line-height:1.02}.beyond-feature__formula{color:var(--ink);font-family:var(--font-display);letter-spacing:-.055em;white-space:nowrap;justify-content:flex-end;align-items:center;gap:.15em;padding-bottom:.15em;font-size:clamp(2.35rem,5vw,4.75rem);font-weight:500;line-height:1;display:flex}.beyond-feature__formula sub,.beyond-feature__formula sup{letter-spacing:0;font-family:inherit;font-size:.42em;font-weight:600;line-height:0}.beyond-feature__formula sub{vertical-align:-.28em}.beyond-feature__formula sup{vertical-align:.55em}.beyond-feature__content{padding:clamp(1.25rem,2vw,1.75rem) 0 0}.beyond-feature__strand{border-top:1px solid var(--line);grid-template-columns:minmax(11rem,.72fr) minmax(0,1.6fr);gap:clamp(1.25rem,4vw,5rem);padding:clamp(1.5rem,3.5vw,2.75rem) 0;display:grid}.beyond-feature__strand:first-child{border-top:0}.beyond-feature__strand:last-child{border-bottom:1px solid var(--line-strong)}.beyond-feature__strand-label{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0;font-weight:720}.beyond-feature__strand>p:last-child{max-width:42rem;color:var(--muted);font-size:var(--type-lead);margin:0;line-height:1.58}.gimps-story{gap:1rem;max-width:43rem;display:grid}.gimps-story__course,.gimps-story__discovery{margin:0}.gimps-story__course{color:var(--ink);font-size:var(--type-lead);line-height:1.58}.gimps-story__discovery{max-width:40rem;color:var(--muted);font-size:var(--type-body);line-height:1.58}.gimps-story__anchor{width:fit-content;color:var(--accent);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;align-items:baseline;gap:.7rem;margin-top:.55rem;padding-top:.85rem;font-size:.78rem;font-weight:700;line-height:1.35;display:flex}.gimps-story__anchor time{white-space:nowrap}.gimps-story__anchor span{color:var(--muted)}.gimps-participation{gap:.95rem;max-width:44rem;display:grid}.gimps-participation__lead,.gimps-participation__summary{margin:0}.gimps-participation__lead{max-width:42rem;color:var(--ink);font-size:var(--type-lead);line-height:1.58}.gimps-participation__summary{max-width:39rem;color:var(--muted);font-size:var(--type-body);line-height:1.58}.gimps-participation__as-of{color:var(--muted);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:-.15rem 0 0;font-weight:700;line-height:1.4}.gimps-participation__as-of time{color:var(--accent)}.gimps-participation__records{border-top:1px solid var(--line-strong);margin:.35rem 0 0;padding:0;display:grid}.gimps-participation__record{border-bottom:1px solid var(--line);grid-template-columns:minmax(15rem,1fr) minmax(0,1.1fr);gap:clamp(1rem,3vw,2.5rem);padding:1.1rem 0;display:grid}.gimps-participation__record dt,.gimps-participation__record dd{margin:0}.gimps-participation__record dt{align-items:baseline;gap:.8rem;display:flex}.gimps-participation__record strong{color:var(--ink);font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(2rem,4vw,2.75rem);font-weight:700;line-height:.9}.gimps-participation__record dt span{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:700;line-height:1.4}.gimps-participation__record dd{color:var(--muted);font-size:var(--type-body-compact);align-self:end;line-height:1.48}.gimps-participation__selected{gap:.7rem;margin-top:.55rem;display:grid}.gimps-participation__selected-heading{gap:.25rem;display:grid}.gimps-participation__selected-heading p,.gimps-participation__selected-heading span{margin:0}.gimps-participation__selected-heading p{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:700}.gimps-participation__selected-heading span{color:var(--muted);font-size:var(--type-body-compact);line-height:1.45}.gimps-participation__selected-list{border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.gimps-participation__selected-list li{align-content:start;min-height:7rem;padding:1rem clamp(.75rem,1.5vw,1.25rem) 1rem 0;display:grid}.gimps-participation__selected-list li+li{border-left:1px solid var(--line);padding-left:clamp(.75rem,1.5vw,1.25rem)}.gimps-participation__selected-list p,.gimps-participation__selected-list strong,.gimps-participation__selected-list span{margin:0}.gimps-participation__selected-list p{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:700;line-height:1.35}.gimps-participation__selected-list strong{color:var(--ink);font-family:var(--font-display);letter-spacing:-.04em;margin-top:.35rem;font-size:clamp(1.7rem,3vw,2.35rem);font-weight:700;line-height:.95}.gimps-participation__selected-list span{color:var(--muted);font-size:var(--type-body-compact);margin-top:.55rem;line-height:1.45}.gimps-explainer{gap:1rem;max-width:48rem;display:grid}.gimps-explainer__lead,.gimps-explainer__copy{margin:0}.gimps-explainer__lead{color:var(--ink);font-size:var(--type-lead);line-height:1.58}.gimps-explainer__copy{max-width:44rem;color:var(--muted);font-size:var(--type-body);line-height:1.65}.gimps-facts{border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin:clamp(.75rem,2vw,1.35rem) 0 0;padding:0;list-style:none;display:grid}.gimps-facts li{min-height:6rem;padding:1rem clamp(.75rem,1.5vw,1.25rem) 1rem 0}.gimps-facts li+li{border-left:1px solid var(--line);padding-left:clamp(.75rem,1.5vw,1.25rem)}.gimps-facts p,.gimps-facts strong,.gimps-facts span{margin:0;display:block}.gimps-facts p{color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:720}.gimps-facts strong{color:var(--ink);font-family:var(--font-display);letter-spacing:-.035em;margin-top:.48rem;font-size:clamp(1.35rem,2vw,1.85rem);font-weight:600;line-height:1.05}.gimps-facts span{color:var(--muted);font-size:var(--type-body-compact);margin-top:.45rem;line-height:1.45}.gimps-explainer__source-link{width:fit-content;color:var(--accent);font-family:var(--font-mono);font-size:var(--type-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin-top:.2rem;font-weight:720;text-decoration:none}.gimps-explainer__source-link:hover{color:var(--ink)}.gimps-explainer__source-link:focus-visible{outline:3px solid var(--ink);outline-offset:4px}.skill-node:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@media (width<=70rem){.site-shell{grid-template-columns:11.5rem minmax(0,1fr)}.site-header,.site-footer{padding-inline:1.35rem}.content-frame{width:min(100% - 4rem,80rem)}.hero__frame{grid-template-columns:minmax(0,1fr) minmax(14rem,.7fr)}.hero__visual img{opacity:.23;width:min(44rem,180%)}.project-list--preview{grid-template-columns:1fr;gap:.9rem;padding-left:1.35rem}.project-list--preview:before{content:"";background:var(--line-strong);opacity:.72;width:1px;position:absolute;top:.78rem;bottom:.78rem;left:.28rem}.project-list--preview .project-entry{min-height:auto}.project-list--preview .project-entry:before,.project-list--preview .project-entry:not(:last-child):before{width:3.91rem;left:-1.33rem;right:auto}.project-list--preview .project-entry:after{left:2.305rem}.project-dataflow__stages{grid-template-columns:repeat(3,minmax(0,1fr))}.project-dataflow__stage:after{display:none}.project-dataflow__dependencies{grid-template-columns:repeat(3,minmax(0,1fr))}.project-dataflow__dependency--codebook{grid-column:3}.project-dataflow__dependency--pq-codes{grid-column:2}.graduation-overview{grid-template-columns:minmax(6.2rem,.4fr) minmax(0,1fr)}.graduation-overview__context{border-left:0;grid-column:2;padding-left:0}}@media (width<=52rem){.site-shell{flex-direction:column;display:flex}.site-rail{border-right:0;border-bottom:1px solid var(--line)}.site-header{height:auto;padding:1rem;position:static}.site-header__inner{gap:1rem}.site-header__identity{font-size:1.25rem}.site-navigation{width:100%;margin:0}.site-navigation ul{flex-wrap:wrap;gap:.2rem .75rem;display:flex}.site-navigation__link{width:auto;min-height:1.65rem;font-size:var(--type-body-compact)}.site-navigation__link,.contact-points a,.section-link,.experience-record__link{align-items:center;min-height:2.75rem;margin-inline:-.25rem;padding-inline:.25rem;display:inline-flex}.site-navigation__link,.contact-points a{margin-block:-.85rem;padding-block:.85rem}.section-link,.experience-record__link{margin-block:-.6rem;padding-block:.6rem}.site-navigation__link--active:after{display:none}.site-navigation li:last-child{flex-basis:100%;margin-top:.2rem}.site-navigation__cv{font-size:var(--type-body-compact);align-items:baseline;gap:.5rem;padding:0;display:inline-flex}.site-footer{border-top:1px solid var(--line);background:var(--surface);order:3;padding:1.25rem 1rem}.content-frame{width:min(100% - 2rem,80rem)}.hero__frame{min-height:auto;padding:5.5rem 0 4.5rem;display:block}.hero__frame:before{left:0}.hero__frame:after{right:0}.hero__visual{display:none}h1{font-size:clamp(2.6rem,9vw,3.1rem)}.beyond-feature__heading{grid-template-columns:1fr;gap:1.15rem;padding-block:2.25rem}.beyond-feature__index{margin:0;font-size:clamp(2.8rem,12vw,3.6rem)}.beyond-feature__heading h2{font-size:clamp(2.35rem,10vw,3.25rem);line-height:1.02}.beyond-feature__formula{justify-content:flex-start;min-height:0;padding-inline:0;font-size:clamp(2.35rem,13vw,3.75rem)}.beyond-feature__strand{grid-template-columns:1fr;gap:.7rem;padding-block:1.6rem}.gimps-facts{grid-template-columns:1fr}.gimps-facts li{min-height:0;padding:1rem 0}.gimps-facts li+li{border-top:1px solid var(--line);border-left:0;padding-left:0}.gimps-participation__record{grid-template-columns:1fr;gap:.6rem}.gimps-participation__selected-list{grid-template-columns:1fr}.gimps-participation__selected-list li{min-height:0;padding:1rem 0}.gimps-participation__selected-list li+li{border-top:1px solid var(--line);border-left:0;padding-left:0}.section-heading,.beyond-entry{grid-template-columns:1fr}.section-heading{gap:.75rem}.about-introduction__frame,.home-about{grid-template-columns:1fr;gap:.75rem}.about-introduction__lead{margin-top:0}.about-beyond{grid-template-columns:1fr;gap:1.5rem;min-height:0}.home-about{gap:1.5rem}.home-about__context,.about-beyond__topic{padding-left:1.25rem}.section-index{padding-top:0}.academic-timeline__axis{display:none}.academic-timeline__entries{grid-template-columns:1fr;gap:0;position:relative}.academic-timeline__entries:before{content:"";background:var(--line-strong);width:1px;position:absolute;top:.28rem;bottom:1.5rem;left:.25rem}.academic-timeline__entry,.academic-timeline__entry--edinburgh,.academic-timeline__entry--imperial{padding:0 0 clamp(2.75rem,8vw,4rem) 2rem}.academic-timeline__entry:before{z-index:1;border:1px solid var(--accent);background:var(--canvas);border-radius:50%;width:.56rem;height:.56rem;top:.02rem;left:0}.academic-timeline__entry--imperial:before{background:var(--accent-soft)}.project-list--preview .project-entry{grid-template-columns:3rem minmax(0,1fr) auto}.project-module__summary,.project-detail__header{grid-template-columns:4.1rem minmax(0,1fr) auto}.project-detail__overview-grid,.giflib-record,.giflib-build{grid-template-columns:1fr}.giflib-boundary__heading{grid-template-columns:1fr;gap:.5rem}.giflib-boundary__heading .project-detail__annotation-id,.giflib-boundary__heading h4,.giflib-boundary__heading>p:last-child{grid-area:auto}.giflib-boundary__map{grid-template-columns:minmax(0,.78fr) minmax(0,1.3fr)}.giflib-boundary__application--output{grid-area:3/1/auto/-1}}@media (width<=42rem){.skill-map__diagram{grid-template-rows:repeat(3,minmax(12rem,auto));grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"digital-ic digital-hardware""embedded soc""ann.";gap:clamp(.8rem,3vw,1.25rem);padding:clamp(.8rem,3vw,1.25rem)}.skill-node{min-height:12rem;padding:2.25rem .9rem 1rem}.skill-node__block-id{left:.9rem}.skill-node__title{font-size:var(--type-body);margin-bottom:.8rem}.skill-node__skills{font-size:var(--type-micro);gap:.32rem}.skill-map__connection--hardware-ic{grid-area:1/1/auto/3}.skill-map__connection--hardware-soc{grid-area:1/2/3}.skill-map__connection--hardware-ann,.skill-node__port--hardware-ann{display:none}.skill-node--embedded .skill-node__port--embedded-soc{left:-.3rem;right:auto}.skill-node--soc .skill-node__port--embedded-soc{left:auto;right:-.3rem}.skill-map--detail-open{min-height:43rem}.skill-detail{padding:.35rem}.skill-detail__header{gap:.8rem;padding:1rem}.skill-detail__header h3{font-size:clamp(1.6rem,8vw,2rem)}.skill-detail__close{white-space:nowrap;min-height:2.1rem;padding:.4rem .5rem}.skill-detail__diagram{grid-template-rows:repeat(3,minmax(8rem,auto));gap:.65rem;padding:.8rem}.skill-detail__node{min-height:8rem;padding:1.55rem .55rem .7rem}.skill-detail__node-id{top:.5rem;left:.55rem}.skill-detail__node-title{font-size:var(--type-micro);line-height:1.2}.skill-detail__status{margin-top:.45rem}.project-explorer{margin-top:1.75rem}.project-module__summary{grid-template-columns:3.4rem minmax(0,1fr) auto;gap:.7rem;padding:2.6rem 0}.project-module__number{width:2.7rem;height:2rem;margin-left:.72rem}.project-module__title{font-size:clamp(1.45rem,7vw,1.9rem)}.project-module--docked{position:relative;top:auto}.project-detail__header{grid-template-columns:3.4rem minmax(0,1fr);gap:.7rem;padding:.8rem}.project-detail__header .project-module__number{margin-left:0}.project-detail__header h2{font-size:clamp(1.22rem,5.7vw,1.55rem)}.project-detail__header-controls{border-top:1px solid var(--line);grid-column:1/-1;justify-content:flex-end;padding-top:.65rem}.project-detail__canvas{padding:.9rem}.rtl-map,.uvm-map{grid-template-columns:1fr}.giflib-record,.giflib-boundary,.giflib-build{padding-left:.9rem;padding-right:.9rem}.giflib-boundary__map,.giflib-build__items{grid-template-columns:1fr}.giflib-boundary__application--source,.giflib-boundary__seam,.giflib-boundary__decoder,.giflib-boundary__application--output{grid-area:auto}.giflib-boundary__decoder{min-height:10rem}.graduation-module--distance,.graduation-module--tree,.graduation-module--stimulus,.graduation-module--monitor{grid-column:auto}.graduation-module--controller,.graduation-module--register{margin-top:0}.graduation-module--tree:after,.graduation-module--stimulus:after,.graduation-module--monitor:after,.graduation-module--scoreboard:after{display:none}.project-detail__canvas-heading{align-items:start;gap:.7rem;display:grid}.project-detail__canvas-heading h3{font-size:clamp(1.55rem,8vw,2rem)}.project-detail__canvas-heading>p{text-align:left;max-width:none}.graduation-overview,.graduation-process{grid-template-columns:1fr;gap:.7rem}.graduation-overview__context{border-top:1px solid var(--line);grid-column:auto;padding-top:.7rem}.graduation-system{grid-template-columns:1fr}.graduation-domain{padding:1rem}.graduation-domain--rtl{border-right:0;border-bottom:1px solid var(--line)}.graduation-domain--uvm{border-top:0;border-left:0}.project-dataflow{padding:.8rem}.project-dataflow__heading{gap:.25rem;display:grid}.project-dataflow__stages{grid-template-columns:1fr;gap:.8rem}.project-dataflow__stage{min-height:4.7rem}.project-dataflow__stage:not(:last-child):after{width:1px;height:.8rem;display:block;top:100%;left:50%}.project-dataflow__dependencies{grid-template-columns:1fr;gap:.8rem}.project-dataflow__dependency--codebook,.project-dataflow__dependency--pq-codes{grid-column:1}.project-dataflow__dependencies span:before{display:none}.project-detail__notes-grid{grid-template-columns:1fr}.project-detail__note{min-height:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=52rem){.experience-record{grid-template-columns:1fr;gap:1rem;padding:2.25rem 0}.experience-record__footer{flex-direction:column;align-items:flex-start;gap:1rem}.project-explorer--detail-open{min-height:0;padding-bottom:0}.project-explorer--detail-open.project-explorer--unfolding,.project-explorer--detail-open.project-explorer--collapsing,.project-explorer--detail-open.project-explorer--returning{min-height:calc(100svh + 12rem);padding-bottom:100svh}.project-explorer--detail-open:not(.project-explorer--unfolding):not(.project-explorer--returning):not(.project-explorer--collapsing) .project-module--docked~.project-module--inactive{display:none}.journey-scroll-scene,.journey-scroll-scene--reduced{height:auto}.journey-scroll-scene__sticky,.journey-scroll-scene--reduced .journey-scroll-scene__sticky{min-height:0;padding:0;position:static}.journey-timeline,.journey-scroll-scene--reduced .journey-timeline{width:min(100%,42rem);height:auto;padding:0;display:block}.journey-timeline__index,.journey-scroll-scene--reduced .journey-timeline__index{padding-left:0}.journey-timeline__track,.journey-scroll-scene--reduced .journey-timeline__track{top:.45rem;bottom:.45rem;left:.425rem}.journey-timeline__progress{transform:scaleY(1)!important}.journey-timeline__milestones,.journey-scroll-scene--reduced .journey-timeline__milestones{gap:2.2rem;height:auto;display:grid}.journey-timeline__milestone,.journey-scroll-scene--reduced .journey-timeline__milestone{opacity:1;grid-template-columns:.85rem minmax(0,1fr);gap:.95rem;width:auto;height:auto;display:grid}.journey-timeline__milestone.is-passed,.journey-timeline__milestone.is-upcoming,.journey-timeline__milestone.is-current{opacity:1;transition:none}.journey-timeline__node,.journey-timeline__milestone.is-passed .journey-timeline__node,.journey-timeline__milestone.is-current .journey-timeline__node{border-color:var(--accent);background:var(--canvas);opacity:1;transform:none}.journey-timeline__detail{display:none}.journey-timeline__mobile-content{max-width:36rem;padding-top:.8rem;display:block}}
