*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,Segoe UI,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.portfolio-shell{position:relative;width:100%;overflow-x:hidden;overflow-x:clip;color:var(--text);background:var(--paper)}.section-shell{width:min(1120px,calc(100% - 40px));margin-inline:auto}.section-pad{padding-block:110px}.section-surface{position:relative;isolation:isolate}.section-surface:before{position:absolute;inset:0 calc(50% - 50vw);z-index:-1;content:"";background:linear-gradient(90deg,rgba(24,213,209,.06),transparent 28%,rgba(247,201,72,.07)),#fff;border-block:1px solid rgba(15,23,42,.08)}.section-heading{display:grid;grid-template-columns:1fr;gap:18px;max-width:900px;margin-bottom:46px}.eyebrow,.card-eyebrow{margin:0;color:#008f91;font-size:.82rem;font-weight:900;text-transform:uppercase}.section-heading .eyebrow{padding-top:0}.section-copy{max-width:720px;margin-top:18px;color:var(--muted);font-size:1.08rem;line-height:1.72}.btn{display:inline-flex;min-height:52px;align-items:center;justify-content:center;gap:10px;border:1px solid transparent;border-radius:8px;padding:14px 20px;color:#fff;font-weight:900;transition:transform .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease}.btn:hover,.btn:focus-visible{transform:translateY(-2px);outline:none}.btn-primary{color:#070a0f;background:linear-gradient(135deg,#fff,#c9fffb);box-shadow:0 22px 56px #18d5d13d}.btn-secondary{border-color:#ffffff47;background:#ffffff14;box-shadow:inset 0 1px #ffffff14}.btn-secondary:hover,.btn-secondary:focus-visible{border-color:#f7c948ad;background:#f7c9481f}.site-nav{position:fixed;z-index:60;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 42px;color:#ffffffeb;transition:background .18s ease,border-color .18s ease,box-shadow .18s ease}.site-nav--solid{color:#111827;border-bottom:1px solid rgba(15,23,42,.1);background:#ffffffe6;box-shadow:0 16px 40px #0f172a17;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.nav-logo{flex:0 0 auto;color:inherit;font-size:1rem;font-weight:950}.nav-links{display:flex;align-items:center;justify-content:flex-end;gap:20px;color:#ffffffc7;font-size:.88rem;font-weight:800}.nav-links a{transition:color .16s ease,transform .16s ease}.nav-links a:hover,.nav-links a:focus-visible{color:#fff;transform:translateY(-1px);outline:none}.site-nav--solid .nav-links{color:#4b5563}.site-nav--solid .nav-links a:hover,.site-nav--solid .nav-links a:focus-visible{color:#008f91}.nav-resume{display:inline-flex;min-height:42px;align-items:center;gap:8px;border:1px solid rgba(24,213,209,.42);border-radius:8px;padding:10px 14px;color:#071014;background:linear-gradient(135deg,#c9fffb,#fff);box-shadow:0 16px 36px #18d5d138}.site-nav--solid .nav-resume{color:#071014}.nav-toggle{display:none;width:44px;height:42px;place-items:center;gap:4px;border:1px solid rgba(255,255,255,.22);border-radius:8px;color:#fff;background:#ffffff14}.site-nav--solid .nav-toggle{color:#111827;border-color:#0f172a24;background:#fff}.nav-toggle span{display:block;width:18px;height:2px;background:currentColor}.hero-section{position:relative;isolation:isolate;min-height:92vh;overflow:hidden;display:grid;align-items:end;padding-top:118px;padding-bottom:64px;color:#fff;background:#080a0f}.hero-stage,.hero-stage:after{position:absolute;inset:0}.hero-stage{z-index:0}.hero-stage:after{content:"";background:linear-gradient(90deg,#080a0ff5,#080a0fa8 42%,#080a0f2e),linear-gradient(180deg,#080a0f33,#080a0fdb);pointer-events:none}.analytics-engine{display:block;width:100%;height:100%}.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:42px;align-items:end}.hero-copy-block{max-width:900px}.hero-section .eyebrow{color:var(--cyan)}.hero-titleline{max-width:720px;margin-top:20px;color:#fff;font-size:1.35rem;font-weight:850;line-height:1.36}.hero-subtitle{max-width:760px;margin-top:24px;color:#ffffffd6;font-size:1.16rem;line-height:1.72}.hero-support{max-width:720px;margin-top:14px;color:#ffffffad;font-size:1rem;line-height:1.64}.hero-meta,.hero-tags{display:flex;flex-wrap:wrap;gap:10px}.hero-meta{margin-top:24px}.hero-meta span,.hero-tags span,.skill-tags span,.project-tags span,.education-honor__meta span{border:1px solid rgba(255,255,255,.15);border-radius:999px;padding:8px 12px;font-size:.82rem;font-weight:850;line-height:1}.hero-meta span,.hero-tags span{color:#ffffffdb;background:#ffffff12}.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px}.hero-panel{overflow:hidden;border:1px solid rgba(255,255,255,.16);border-radius:8px;padding:18px;background:linear-gradient(180deg,#ffffff1f,#ffffff0d),#070c129e;box-shadow:0 26px 80px #00000052;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.hero-photo{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:linear-gradient(135deg,#18d5d13d,#f7c9481a),#ffffff14;box-shadow:inset 0 1px #ffffff1a}.hero-photo img{display:block;width:100%;aspect-ratio:1 / 1;-o-object-fit:cover;object-fit:cover;-o-object-position:center top;object-position:center top}.hero-photo:after{position:absolute;inset:auto 0 0;height:42%;content:"";background:linear-gradient(180deg,#080a0f00,#080a0fe0);pointer-events:none}.hero-photo__caption{position:absolute;right:14px;bottom:14px;left:14px;z-index:1;display:grid;gap:5px;color:#fff}.hero-photo__caption span{color:var(--cyan);font-size:.72rem;font-weight:950;text-transform:uppercase}.hero-photo__caption strong{color:#fff;font-size:.98rem;line-height:1.24}.metric-row{display:grid;gap:10px}.metric-row--single{margin-top:10px}.metric-row div{padding:16px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:#ffffff12}.metric-row strong{display:block;color:#fff;font-size:2rem;line-height:1}.metric-row span{display:block;margin-top:8px;color:#ffffffb8;font-size:.86rem;font-weight:800;line-height:1.42}.hero-tags{margin-top:14px}.glass-panel,.about-focus div,.experience-card,.skill-card,.education-card,.contact-grid a{border:1px solid var(--line-dark);border-radius:8px;background:#ffffffd1;box-shadow:0 20px 50px #0f172a14}.about-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.58fr);gap:22px}.about-summary{padding:38px}.about-summary p{color:#2d3748;font-size:1.18rem;line-height:1.74}.about-summary p+p{margin-top:20px}.about-focus{display:grid;gap:14px}.about-focus div{padding:22px;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.about-focus div:hover,.experience-card:hover,.skill-card:hover,.contact-grid a:hover,.contact-grid a:focus-visible{transform:translateY(-3px);border-color:#18d5d15c;box-shadow:0 26px 62px #0f172a1f;outline:none}.about-focus span,.experience-index{color:#008f91;font-weight:950}.about-focus strong{display:block;margin-top:10px;color:#111827;font-size:1.06rem}.about-focus p{margin-top:8px;color:var(--muted);line-height:1.62}.experience-list{display:grid;gap:16px}.experience-card{display:grid;grid-template-columns:66px minmax(0,1fr);gap:22px;padding:28px;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.experience-index{font-size:1.25rem}.experience-card h3,.skill-card h3,.education-entry h3,.education-honor h3,.contact-grid strong{color:#10141a}.experience-project{margin-top:10px;color:#008f91;font-weight:900;line-height:1.45}.experience-card ul,.project-card ul{display:grid;gap:10px;margin:18px 0 0;padding:0;list-style:none}.experience-card li,.project-card li{position:relative;padding-left:18px;color:#596273;line-height:1.58}.experience-card li:before,.project-card li:before{position:absolute;top:.72em;left:0;width:7px;height:7px;content:"";border-radius:2px;background:var(--cyan);transform:rotate(45deg)}.project-section{position:relative;isolation:isolate;color:#fff;background:#090a0d}.project-section:before{position:absolute;inset:0 calc(50% - 50vw);z-index:-1;content:"";background:linear-gradient(180deg,#090a0d,#10131a 52%,#0a0c11)}.project-section .section-copy{color:#ffffffb3}.project-section .eyebrow{color:var(--gold)}.project-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:22px}.project-card{grid-column:span 3;overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#111827;background:#fff;box-shadow:0 26px 80px #0003;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.project-card:hover{transform:translateY(-4px);border-color:#18d5d15c;box-shadow:0 34px 90px #00000047}.project-card--detailed,.project-card--interactive{grid-column:span 6}.project-card--featured{display:block;color:#fff;background:linear-gradient(135deg,rgba(24,213,209,.14),transparent 30%),linear-gradient(180deg,#10151d,#080a0f)}.project-preview{position:relative;min-height:260px;display:grid;place-items:center;overflow:hidden;color:#fff;background:linear-gradient(145deg,#18d5d133,#f7c9481f),#10151d}.project-preview>img{display:block;width:100%;height:100%;min-height:260px;-o-object-fit:cover;object-fit:cover}.project-content{padding:30px}.project-card--featured .project-content{padding:36px}.project-card--featured h3,.project-card--featured .project-content>p{color:#fff}.project-content>p{margin-top:16px;color:#596273;line-height:1.66}.project-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px}.project-badge,.featured-label,.project-embed-link{display:inline-flex;min-height:34px;align-items:center;justify-content:center;border-radius:999px;padding:8px 12px;font-size:.72rem;font-weight:950;text-transform:uppercase}.project-badge{color:#071014;background:var(--cyan)}.featured-label{color:#261b00;background:var(--gold)}.project-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.project-tags span,.skill-tags span,.education-honor__meta span{color:#334155;border-color:#0f172a1a;background:#f3f6fb}.project-card--featured .project-tags span{color:#ffffffdb;border-color:#ffffff29;background:#ffffff14}.project-insight-grid{display:grid;gap:22px;margin-top:26px}.project-insight-group{padding-top:18px;border-top:1px solid rgba(255,255,255,.12)}.project-card:not(.project-card--featured) .project-insight-group{border-top-color:#0f172a1a}.project-insight-group h4{color:var(--gold)}.project-card:not(.project-card--featured) .project-insight-group h4{color:#008f91}.project-card--featured li{color:#ffffffb8}.project-card--featured li:before{background:var(--gold)}.project-preview--capital-charts,.project-preview--stormont-discover,.project-preview--interactive,.project-preview--loan-carousel,.project-preview--dashboard-carousel{min-height:0}.project-preview--capital-charts{display:block;padding:18px;background:linear-gradient(135deg,#18d5d12e,#f7c9480f),#0c1118}.project-gallery{width:100%;height:100%;display:grid;gap:10px;padding:12px}.project-gallery__item{position:relative;isolation:isolate;overflow:hidden;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:#ffffff12}.project-gallery__item img{display:block;width:100%;height:100%;min-height:0;-o-object-fit:cover;object-fit:cover;transition:transform .22s ease}.project-card:hover .project-gallery__item img{transform:scale(1.015)}.project-gallery__overlay{position:absolute;right:0;bottom:0;left:0;display:grid;gap:6px;padding:18px;color:#fff;background:linear-gradient(180deg,#080a0f00,#080a0fd6);pointer-events:none}.project-gallery__overlay span,.project-gallery__overlay strong,.project-gallery__overlay small{display:block}.project-gallery__overlay span{color:var(--cyan);font-size:.72rem;font-weight:900;text-transform:uppercase}.project-gallery__overlay strong{max-width:22ch;font-size:1.15rem;line-height:1.15}.project-gallery__overlay small{color:#ffffffc7;font-size:.75rem;font-weight:900;text-transform:uppercase}.project-gallery__overlay small:after{content:" >"}.project-gallery--capital-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));height:auto;gap:14px;padding:0}.project-gallery--capital-charts .project-gallery__item{display:grid;place-items:center;width:100%;min-height:0;margin:0;padding:10px;background:#fff}.project-gallery--capital-charts .project-gallery__item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}.project-preview--stormont-discover:before{position:absolute;z-index:5;top:16px;right:16px;content:"Scroll images";border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:8px 12px;color:#ffffffeb;background:#080a0fa8;font-size:.72rem;font-weight:950;text-transform:uppercase;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}.project-gallery--stormont-discover{display:block;height:590px;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:14px;scroll-behavior:smooth;scroll-snap-type:y mandatory;scrollbar-color:rgba(24,213,209,.8) rgba(255,255,255,.08);scrollbar-gutter:stable}.project-gallery--stormont-discover:focus-visible{outline:2px solid var(--cyan);outline-offset:-4px}.project-gallery--stormont-discover::-webkit-scrollbar{width:8px}.project-gallery--stormont-discover::-webkit-scrollbar-track{background:#ffffff14}.project-gallery--stormont-discover::-webkit-scrollbar-thumb{border-radius:999px;background:#18d5d1c2}.project-gallery--stormont-discover .project-gallery__item{min-height:450px;margin-bottom:14px;scroll-snap-align:start}.project-gallery--stormont-discover .project-gallery__item:not(.project-gallery__item--1){padding:18px 18px 90px;background:#fff}.project-gallery--stormont-discover .project-gallery__item:not(.project-gallery__item--1) img{-o-object-fit:contain;object-fit:contain;background:#fff}.project-gallery--stormont-discover .project-gallery__item--1 img{-o-object-fit:cover;object-fit:cover}.project-gallery--stormont-discover .project-gallery__item:last-child{margin-bottom:0}.project-preview--loan-carousel,.project-preview--dashboard-carousel,.project-preview--interactive{padding:14px}.project-carousel{width:100%;display:grid;gap:12px}.project-carousel__viewport{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#fff;aspect-ratio:1.78 / 1}.project-carousel__viewport img{display:block;width:100%;height:100%;min-height:0;-o-object-fit:contain;object-fit:contain;background:#fff}.project-carousel__viewport--code{background:#080a0f}.project-code-slide{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);color:#dffbff}.project-code-slide__header{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.12);background:#ffffff0f;font-size:.78rem;font-weight:850}.project-code-slide__header strong{color:var(--gold);text-transform:uppercase}.project-code-slide pre{margin:0;overflow:hidden;padding:14px;color:#dffbff;font-size:.72rem;line-height:1.5;white-space:pre-wrap}.project-carousel__next{position:absolute;z-index:3;top:50%;right:14px;width:44px;height:74px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.24);border-radius:8px;color:#fff;background:#080a0fb8;box-shadow:0 16px 42px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translateY(-50%);transition:transform .18s ease,background .18s ease}.project-carousel__next:hover,.project-carousel__next:focus-visible{transform:translateY(-50%) translate(-2px);background:#080a0fe0;outline:none}.project-carousel__next-icon{width:0;height:0;margin-left:4px;border-top:11px solid transparent;border-bottom:11px solid transparent;border-left:15px solid rgba(255,255,255,.94)}.project-carousel__footer{color:#ffffffc7;font-size:.82rem;font-weight:800}.project-carousel__meta{display:flex;justify-content:space-between;gap:12px}.project-live-frame,.project-live-fallback .project-carousel__viewport{width:100%;overflow:hidden;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#11161f;aspect-ratio:2.1 / 1}.project-live-frame iframe{display:block;width:100%;height:100%;border:0}.project-embed-link{color:#071014;background:var(--gold)}.preview-grid{position:absolute;inset:28px;display:grid;grid-template-columns:1fr 1fr;gap:12px;opacity:.46}.preview-grid span{border:1px solid rgba(255,255,255,.18);border-radius:8px;background:#ffffff14}.project-preview p{position:relative;border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:10px 14px;background:#080a0fa8;font-weight:950}.skills-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.skill-card{padding:24px;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.skill-tags{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}.education-card{padding:22px}.education-list--grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.education-entry{padding:24px;border:1px solid rgba(15,23,42,.1);border-radius:8px;background:#fff}.education-entry p:not(.card-eyebrow){margin-top:12px;color:#596273;line-height:1.55}.education-entry span,.education-entry strong{display:block;margin-top:9px;color:#596273;line-height:1.45}.education-entry strong{color:#008f91;font-weight:950}.education-card--achievements{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1fr);gap:18px;align-items:start}.education-honor{overflow:hidden;border:1px solid rgba(15,23,42,.1);border-radius:8px;background:#fff;box-shadow:0 16px 42px #0f172a12}.education-honor__media{padding:14px 14px 0}.education-honor__media img{display:block;width:100%;aspect-ratio:4 / 5;border-radius:8px;-o-object-fit:contain;object-fit:contain;-o-object-position:center top;object-position:center top;background:#f3f6fb}.education-honor__body{padding:20px}.education-honor__body p:not(.card-eyebrow){margin-top:10px;color:#596273;line-height:1.64}.education-honor__meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.education-honor-list{display:grid;gap:14px}.education-honor--compact{display:grid;grid-template-columns:minmax(170px,.42fr) minmax(0,.58fr);align-items:start}.education-honor__media--compact{padding:14px}.education-honor__media--compact img{aspect-ratio:1.55 / 1;max-height:172px;border:1px solid rgba(15,23,42,.1);-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;background:#fff}.education-honor--compact .education-honor__body{padding-left:0}.contact-section{position:relative;isolation:isolate;color:#fff;background:#090a0d}.contact-section:before{position:absolute;inset:0 calc(50% - 50vw);z-index:-1;content:"";background:#090a0d}.contact-section .section-copy{color:#ffffffb3}.contact-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.contact-grid a{min-height:170px;display:grid;align-content:start;gap:10px;padding:22px;color:#10141a;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.contact-grid svg{color:#008f91}.contact-grid span{color:#008f91;font-weight:950}.contact-linkedin{display:flex;flex-direction:column;gap:2px}.contact-linkedin span:first-child{color:#596273;font-size:.78rem;text-transform:uppercase}.contact-linkedin span:last-child{color:#10141a}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:28px 42px;color:#ffffffa3;background:#090a0d;border-top:1px solid rgba(255,255,255,.12)}.site-footer a{color:var(--cyan);font-weight:900}.reveal{animation:reveal-up .68s ease both}.reveal-delay{animation-delay:.12s}.grid{display:grid}.h-4{height:1rem}.h-5{height:1.25rem}.min-h-screen{min-height:100vh}.w-4{width:1rem}.w-5{width:1.25rem}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#090a0d;--ink: #f7fbff;--paper: #f7f8fb;--text: #15171c;--muted: #667085;--panel: #11161f;--line: rgba(255, 255, 255, .14);--line-dark: rgba(15, 23, 42, .12);--cyan: #18d5d1;--gold: #f7c948;--red: #ff5a4f;--green: #31d27c}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:hidden;overflow-x:clip}body{margin:0;min-width:320px;color:var(--text);overflow-x:hidden;overflow-x:clip;background:linear-gradient(180deg,#090a0d,#10131a 28%,#f7f8fb 28% 100%)}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}section[id]{scroll-margin-top:92px}h1,h2,h3,h4,p,strong,span,a,li{overflow-wrap:anywhere;letter-spacing:0}h1,h2,h3,h4,p{margin:0}h1{max-width:900px;color:#fff;font-size:5.4rem;line-height:.92;font-weight:900}h2{color:inherit;font-size:3.2rem;line-height:1.02;font-weight:900}h3{font-size:1.35rem;line-height:1.18;font-weight:850}h4{font-size:.86rem;line-height:1.25;font-weight:900;text-transform:uppercase}::-moz-selection{color:#080a0f;background:#18d5d18c}::selection{color:#080a0f;background:#18d5d18c}@keyframes reveal-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:1100px){h1{font-size:4.2rem}h2{font-size:2.55rem}.site-nav{padding-inline:24px}.nav-toggle{display:grid}.nav-links{position:absolute;top:calc(100% - 1px);left:24px;right:24px;display:none;flex-direction:column;align-items:stretch;gap:4px;padding:14px;color:#111827;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#fffffff2;box-shadow:0 18px 46px #0f172a24}.nav-links--open{display:flex}.nav-links a{padding:11px 12px}.nav-resume{justify-content:center}.hero-grid,.about-grid,.project-card--featured,.education-card--achievements{grid-template-columns:1fr}.hero-panel{max-width:720px}.metric-row{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-row--single{grid-template-columns:1fr}.section-heading{grid-template-columns:1fr;gap:16px}.section-heading .eyebrow{padding-top:0}.project-card,.project-card--detailed,.project-card--interactive{grid-column:span 6}.skills-grid,.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){h1{font-size:3.35rem}h2{font-size:2rem}h3{font-size:1.16rem}.section-shell{width:min(100% - 30px,1200px)}.section-pad{padding-block:78px}.hero-section{min-height:auto;padding-top:112px;padding-bottom:44px}.hero-stage{opacity:.72}.hero-grid{gap:30px}.hero-titleline{font-size:1.08rem}.hero-subtitle{font-size:1rem}.hero-actions,.metric-row,.education-list--grid,.skills-grid,.contact-grid{grid-template-columns:1fr}.hero-actions{display:grid}.btn{width:100%}.metric-row{display:grid}.experience-card{grid-template-columns:1fr;padding:22px}.project-content,.project-card--featured .project-content{padding:24px}.project-gallery--capital-charts{grid-template-columns:1fr}.project-gallery--stormont-discover{height:500px;padding:12px}.project-gallery--stormont-discover .project-gallery__item{min-height:340px}.project-gallery--stormont-discover .project-gallery__item:not(.project-gallery__item--1){padding:12px 12px 78px}.project-preview--loan-carousel,.project-preview--dashboard-carousel,.project-preview--interactive{padding:10px}.project-carousel__viewport,.project-live-frame,.project-live-fallback .project-carousel__viewport{aspect-ratio:16 / 10}.project-code-slide pre{font-size:.64rem}.education-card{padding:14px}.education-honor--compact{grid-template-columns:1fr}.education-honor--compact .education-honor__body{padding:0 18px 18px}.education-honor__media--compact{padding:14px 14px 0}.education-honor__media--compact img{max-height:150px}.site-footer{flex-direction:column;align-items:flex-start;padding-inline:24px}}
