@font-face{font-family:Manrope;src:url('../assets/fonts/manrope-variable.ttf') format('truetype');font-style:normal;font-weight:200 800;font-display:swap}
:root{--bg:#101b30;--bg-2:#15243b;--panel:#192d43;--line:rgba(217,236,244,.19);--text:#f5f9fc;--muted:#becedb;--cyan:#a0f3ef;--cyan-2:#59d9e6;--violet:#c2b0ff;--pink:#f4bddc;--mono:ui-monospace,'Cascadia Code','SFMono-Regular',Consolas,monospace;--display:Manrope,sans-serif;--body:Manrope,sans-serif;color-scheme:dark}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:76px}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.55 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.menu-open{overflow:hidden}
button,input,textarea{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
h1,h2,h3,p{margin:0}
::selection{background:#79dce5;color:#07111b}
:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
.skip-link{position:absolute;top:-80px;left:12px;background:var(--cyan);color:#061019;padding:12px 16px;z-index:1000}
.skip-link:focus{top:12px}
.page-grain{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.6' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.13'/%3E%3C/svg%3E")}
.section-shell{max-width:1600px;margin:0 auto;padding-left:clamp(24px,6vw,104px);padding-right:clamp(24px,6vw,104px)}
.eyebrow,.section-topline-note,.section-topline,.stack-bottom,.owda-bottom,.contact-footer,.site-footer,.scroll-cue,.hero-location,.portrait-tag,.portrait-index,.project-type,.project-media-note,.project-pagination,.project-controls,.stack-overline,.stack-context,.stack-display-caption,.stack-dots,.category-index,.project-proof small{font-family:var(--mono);font-size:11px;letter-spacing:.09em}
.eyebrow{font-weight:700;color:var(--cyan);text-transform:uppercase}
.accent-period{color:var(--cyan)}
.site-header{height:82px;padding:0 clamp(24px,6vw,104px);display:flex;align-items:center;justify-content:space-between;gap:28px;position:fixed;z-index:100;top:0;left:0;right:0;border-bottom:1px solid transparent;transition:background .3s,border-color .3s,backdrop-filter .3s}
.site-header.is-stuck,.site-header.menu-visible{background:rgba(9,13,25,.89);border-color:var(--line);backdrop-filter:blur(20px)}
.wordmark{font:700 25px/1 var(--display);letter-spacing:-.06em;display:inline-flex;align-items:center;gap:10px;white-space:nowrap}
.wordmark-logo{width:30px;height:48px;object-fit:contain;flex-shrink:0;mask-image:url('../assets/brand/owda-io-original-mask.png');mask-mode:luminance;mask-size:contain;mask-position:center;mask-repeat:no-repeat;filter:brightness(1.5)}
.wordmark-dot{color:var(--cyan)}
.primary-nav{display:flex;align-items:center;gap:clamp(15px,2.2vw,36px)}
.primary-nav a{font-size:13px;font-weight:600;color:#bfcbd3;transition:color .25s}
.primary-nav a:focus-visible{color:var(--cyan)}
.header-contact{border:1px solid rgba(152,236,241,.55);border-radius:999px;padding:11px 17px;font-size:13px;font-weight:700;white-space:nowrap;transition:background .25s,color .25s,transform .25s}

.header-contact span{margin-left:20px}
.menu-toggle{display:none;background:none;border:0;padding:8px;z-index:101}
.menu-toggle span{display:block;width:23px;height:2px;background:var(--text);margin:6px 0;transition:transform .25s}
.hero{min-height:760px;height:min(920px,100svh);padding-top:82px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,.8fr);gap:clamp(28px,5vw,100px);align-items:center;position:relative;isolation:isolate;overflow:hidden}
.hero:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 73% 43%,rgba(43,74,120,.26),transparent 38%),linear-gradient(100deg,transparent 68%,rgba(48,74,103,.06));z-index:-2}
.hero-ambient{position:absolute;border-radius:50%;pointer-events:none;filter:blur(60px);z-index:-1}
.hero-ambient-one{width:380px;height:380px;right:12%;top:15%;background:rgba(55,153,181,.14);animation:ambient-drift 12s ease-in-out infinite alternate}
.hero-ambient-two{width:280px;height:280px;right:0;bottom:4%;background:rgba(122,82,223,.13);animation:ambient-drift 15s ease-in-out infinite alternate-reverse}
.hero-copy{position:relative;z-index:2;padding:28px 0 72px}
.hero-kicker{display:flex;align-items:center;gap:12px;margin-bottom:37px}
.signal-dot,.tag-pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 5px rgba(152,236,241,.09),0 0 17px var(--cyan);animation:pulse 2.6s ease-in-out infinite}
.eyebrow-separator{color:#536879;margin:0 2px}
.hero h1{font:650 clamp(48px,5.25vw,82px)/1.08 var(--display);letter-spacing:-.055em;max-width:930px}
.hero-line{display:block;white-space:nowrap;opacity:0;transform:translateY(30px);animation:hero-rise .9s cubic-bezier(.16,1,.3,1) forwards}
.hero-line:nth-child(2){animation-delay:.14s}
.hero h1 em,.section-heading-row h2 em,.owda-copy h2 em{font-weight:400;font-style:normal;color:var(--cyan)}
.hero-lede{max-width:580px;color:#e1ecf4;font-size:clamp(16px,1.25vw,18px);line-height:1.75;margin-top:28px}
.hero-bio{max-width:580px;color:var(--muted);font-size:14px;line-height:1.85;margin-top:16px}
.hero-actions{display:flex;align-items:center;gap:30px;margin-top:39px;flex-wrap:wrap}
.button{min-height:54px;display:inline-flex;align-items:center;justify-content:space-between;gap:28px;padding:14px 20px;border-radius:4px;font:700 13px/1.1 var(--body);letter-spacing:.02em;border:1px solid transparent;transition:transform .25s,box-shadow .25s,background .25s,color .25s}
.button span{font-size:18px;font-weight:400}

.button-primary{background:var(--cyan);color:#071521;box-shadow:0 0 0 rgba(152,236,241,0)}

.button-light{background:#ebf1f1;color:#0d1522}

.text-link{font-weight:700;font-size:13px;border-bottom:1px solid var(--cyan);padding-bottom:8px;transition:color .25s}

.text-link span{margin-left:19px}
.hero-location{display:flex;align-items:center;gap:13px;color:#b5cad9;margin-top:35px;white-space:nowrap}
.tiny-cross{color:var(--cyan);font-size:17px}
.hero-location-line{display:block;width:35px;height:1px;background:#6a8191}
.hero-visual{height:min(67vh,640px);min-height:470px;position:relative;align-self:center;margin-right:5px}
.portrait-halo{position:absolute;inset:0;border:1px solid rgba(125,206,230,.14);border-radius:48% 48% 8px 8px;transform:translate(22px,-24px)}
.portrait-halo:after{content:'';position:absolute;inset:18px;border:1px solid rgba(125,206,230,.1);border-radius:inherit}
.portrait-frame{position:absolute;inset:30px 10px 12px 0;overflow:hidden;border-radius:48% 48% 3px 3px;background:#151c2c;box-shadow:0 25px 75px #02040b8a}
.portrait-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 17%;filter:saturate(1.05) brightness(1.06);transition:transform .7s ease,filter .7s}
.portrait-frame:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(3,10,24,.04) 45%,rgba(3,10,24,.72)),linear-gradient(105deg,rgba(109,230,237,.07),transparent 65%);pointer-events:none}
.portrait-shine{position:absolute;inset:-50%;background:linear-gradient(105deg,transparent 38%,rgba(204,246,255,.13) 50%,transparent 61%);transform:translateX(-65%) rotate(5deg);animation:shine-pass 8s ease-in-out infinite;pointer-events:none;z-index:2}
.portrait-tag{position:absolute;background:rgba(15,24,40,.84);border:1px solid rgba(152,236,241,.28);backdrop-filter:blur(18px);color:#e1edf0;padding:14px 16px;z-index:3;box-shadow:0 15px 35px #02071155}
.portrait-tag-top{right:-38px;top:18%;font-family:var(--body);font-size:12px;letter-spacing:0;max-width:190px;display:flex;gap:10px;align-items:center;animation:float-soft 5s ease-in-out infinite}
.tag-spark{color:var(--cyan);font-size:20px}
.portrait-tag-bottom{left:-46px;bottom:16%;display:flex;align-items:center;gap:11px;animation:float-soft 6s ease-in-out infinite reverse}
.portrait-index{position:absolute;right:-20px;bottom:0;color:var(--cyan)}
.scroll-cue{position:absolute;bottom:38px;left:clamp(24px,6vw,104px);display:flex;align-items:center;gap:18px;color:#7e92a2}
.scroll-cue-line{width:75px;height:1px;background:#63808d;position:relative;overflow:hidden}
.scroll-cue-line:after{content:'';position:absolute;width:24px;height:1px;background:var(--cyan);animation:scroll-line 2s ease-in-out infinite}
.section-topline{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-top:28px;border-top:1px solid var(--line);text-transform:uppercase;color:#77909d}
.section-topline-note{text-transform:uppercase}
.section-heading-row{display:flex;justify-content:space-between;align-items:end;gap:40px;padding:50px 0 52px}
.section-heading-row h2{font:600 clamp(45px,6vw,86px)/1 var(--display);letter-spacing:-.065em}
.section-heading-row p{max-width:320px;color:var(--muted);font-size:16px}
.stack-section{padding-top:55px;padding-bottom:95px;background:radial-gradient(circle at 65% 62%,rgba(60,108,146,.1),transparent 42%)}
.stack-shell{display:grid;grid-template-columns:250px minmax(0,1fr);height:470px}
.stack-categories{position:relative;padding:22px 20px 22px 0;display:flex;flex-direction:column;justify-content:center;--divider-position:0%}
.stack-categories:before,.stack-categories:after{content:'';position:absolute;right:0;top:0;bottom:0;width:2px;border-radius:4px;pointer-events:none}
.stack-categories:before{background:linear-gradient(180deg,#91e5ee44,#bcb1ff88,#91e5ee44)}
.stack-categories:after{height:25%;background:linear-gradient(180deg,#a0f3ef,#c2b0ff);box-shadow:0 0 20px #87e9e97a;transform:translateY(var(--divider-position));transition:transform .6s cubic-bezier(.22,.7,.25,1)}
.category-button{border:0;border-left:3px solid transparent;background:transparent;color:#94a6b2;text-align:left;padding:23px 22px;display:grid;grid-template-columns:27px 1fr 16px;gap:7px;align-items:center;font:600 14px var(--body);transition:background .25s,color .25s,border .25s}

.category-button.is-active{color:var(--text);background:linear-gradient(90deg,#90e9f010,transparent)}
.category-index{color:#7b96a4}
.category-button.is-active .category-index,.category-button.is-active .category-arrow{color:var(--cyan)}
.category-arrow{justify-self:end;opacity:.8}
.stack-stage{min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) 72px;position:relative}
.stack-viewport{position:relative;overflow:hidden;min-width:0;min-height:0}
.stack-item{height:100%;width:100%;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);position:relative;--icon-glow:#73e5e940;--icon-filter:invert(92%) sepia(18%) saturate(740%) hue-rotate(118deg)}
.stack-item[data-tone="violet"]{--icon-glow:#b79bff40;--icon-filter:invert(78%) sepia(32%) saturate(1020%) hue-rotate(209deg)}
.stack-item[data-tone="rose"]{--icon-glow:#ed9dcc38;--icon-filter:invert(85%) sepia(16%) saturate(783%) hue-rotate(289deg)}
.stack-item[data-tone="ice"]{--icon-glow:#95d0ff40;--icon-filter:invert(87%) sepia(21%) saturate(934%) hue-rotate(175deg)}
.stack-description{padding:30px clamp(22px,3vw,48px);display:flex;flex-direction:column;justify-content:center;min-width:0;position:relative;z-index:2}
.stack-description h3{font:600 clamp(35px,3.2vw,55px)/1 var(--display);letter-spacing:-.05em;margin:22px 0}
.stack-description p{color:#b4c5d0;max-width:420px;font-size:15px;line-height:1.7}
.stack-context{color:#7696a6;margin-top:26px;text-transform:uppercase}
.stack-display{min-width:0;min-height:0;position:relative;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,var(--icon-glow),transparent 67%)}
.stack-display:before,.stack-display:after{content:'';position:absolute;width:250px;height:250px;border:1px solid rgba(111,212,231,.13);border-radius:50%;transform:scaleY(.54) rotate(-20deg)}
.stack-display:after{width:340px;height:340px;transform:scaleY(.57) rotate(35deg);border-color:#b398ff1a}
.stack-lighting{position:absolute;width:180px;height:180px;border-radius:50%;background:var(--icon-glow);filter:blur(45px);animation:float-soft 7s ease-in-out infinite}
.stack-icon-wrap{width:145px;height:145px;display:grid;place-items:center;position:relative;z-index:1;transition:transform .5s}

.stack-icon-wrap img{width:108px;height:108px;object-fit:contain;filter:var(--icon-filter);opacity:1}
.stack-display-caption{position:absolute;bottom:18px;left:20px;right:20px;display:flex;align-items:center;justify-content:space-between;gap:15px;color:#8099a8;z-index:1}
.stack-display-caption strong{color:var(--cyan);font:700 11px var(--mono)}
.stack-controls{display:flex;align-items:center;justify-content:center;gap:18px;min-height:72px}
.circle-button{border:1px solid #63829480;background:transparent;color:var(--text);width:42px;height:42px;border-radius:50%;font:23px/1 var(--body);display:grid;place-items:center;transition:background .25s,transform .25s,color .25s}

.stack-dots,.project-pagination{display:flex;align-items:center;gap:7px}
.stack-dots button,.project-pagination button{width:16px;height:32px;border:0;background:transparent;padding:0;position:relative}
.stack-dots button:after,.project-pagination button:after{content:'';position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:#7796a7;transform:translate(-50%,-50%);transition:background .3s,transform .3s}
.stack-dots button[aria-current="true"]:after,.project-pagination button[aria-current="true"]:after{background:var(--cyan);transform:translate(-50%,-50%) scale(1.7)}
.stack-dots button:focus-visible,.project-pagination button:focus-visible{outline-offset:5px}
.stack-bottom,.owda-bottom,.contact-footer{display:flex;justify-content:space-between;color:#708995;padding-top:18px}
.push-outgoing{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;pointer-events:none!important;z-index:4}
.projects-section{padding-top:74px;padding-bottom:105px;background:#edf1ee;color:#13202a}
.projects-section .section-topline{border-color:#172b3829;color:#536c78}
.projects-section .eyebrow,.projects-section .section-heading-row h2 em{color:#197d8e}
.projects-section .section-heading-row p{color:#596e77}
.project-view{overflow:hidden;background:#0f1a2b;box-shadow:0 27px 65px #1527332b}
.project-track{display:grid;position:relative}
.project-slide{grid-area:1/1}
.project-slide:not(.is-active){visibility:hidden;pointer-events:none}
.project-slide{flex:0 0 100%;min-width:0;display:grid;grid-template-columns:50% 50%;min-height:570px;color:#f3f6f4}
.project-media{position:relative;min-height:570px;overflow:hidden;background:#122c3c}
.project-media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;filter:saturate(.72) contrast(1.06);transition:transform 1.1s cubic-bezier(.16,1,.3,1)}
.project-slide.is-active .project-media img{transform:scale(1.025)}
.project-media:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#09122106 44%,#091221a5),linear-gradient(90deg,transparent 55%,#0f1a2b78)}
.project-media-note{position:absolute;left:25px;bottom:22px;color:#ecf1ef;z-index:1}
.project-media-symbol{position:absolute;right:22px;top:20px;color:#e3fffe;font-size:32px;z-index:1}
.project-content{padding:clamp(32px,4.7vw,75px);display:flex;flex-direction:column;justify-content:center;min-width:0;position:relative;background:radial-gradient(circle at 100% 0,#1a3b4e99,transparent 45%),#0f1a2b}
.project-top{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap}
.project-type{color:#8fa8b5}
.project-content h3{font:600 clamp(43px,4.4vw,74px)/1 var(--display);letter-spacing:-.065em;margin:55px 0 19px}
.project-content>p{max-width:540px;color:#b6c9d0;font-size:clamp(15px,1.15vw,18px);line-height:1.67}
.project-proof{display:flex;gap:28px;margin:38px 0 42px;flex-wrap:wrap}
.project-proof span{min-width:80px;display:flex;flex-direction:column;gap:5px}
.project-proof b{font:600 29px/1 var(--display);color:#e7f6f6}
.project-proof small{color:#8da8b4}
.project-actions{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.project-repo{font-size:13px;font-weight:700;border-bottom:1px solid #6f9caf;padding-bottom:6px}

.project-bottom{display:flex;justify-content:space-between;align-items:center;gap:25px;padding:24px 0 0}
.projects-section .project-pagination button{background:#728a90}
.projects-section .project-pagination button[aria-current="true"]{background:#178697}
.project-controls{display:flex;align-items:center;gap:9px;color:#48616d}
.project-controls>span{margin-right:17px}
.project-controls i{font-style:normal;color:#9bb0b6;margin:0 8px}
.circle-button-light{border-color:#94aab0;color:#13242d}

.owda-section{min-height:650px;padding-top:35px;padding-bottom:25px;position:relative;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 79% 55%,#193f6e7a,transparent 40%),linear-gradient(122deg,#090d1b,#0b1c36 61%,#101537)}
.owda-section:before{content:'';position:absolute;inset:0;z-index:-2;background-image:linear-gradient(#86c8dc0b 1px,transparent 1px),linear-gradient(90deg,#86c8dc0b 1px,transparent 1px);background-size:55px 55px;mask-image:linear-gradient(90deg,transparent,#000)}
.owda-section .section-topline{border-color:#8bd6e72c;position:relative;z-index:2}
.owda-stars{position:absolute;inset:0;pointer-events:none;z-index:-1;background-image:radial-gradient(circle,#b5ffff80 1px,transparent 1.5px);background-size:91px 83px;opacity:.22}
.owda-flare{position:absolute;right:16%;top:35%;width:350px;height:350px;border-radius:50%;background:#3d5eda;filter:blur(110px);opacity:.26;z-index:-1}
.owda-inner{display:grid;grid-template-columns:1fr minmax(320px,.85fr);gap:30px;align-items:center;min-height:520px;position:relative}
.owda-copy{position:relative;z-index:2}
.owda-copy h2{font:600 clamp(47px,5vw,79px)/1.04 var(--display);letter-spacing:-.062em;margin:26px 0}
.owda-copy>p{max-width:545px;color:#adc4d2;font-size:17px;line-height:1.72;margin-bottom:32px}
.owda-mark-stage{height:450px;position:relative;display:grid;place-items:center}
.owda-mark-stage img{position:relative;z-index:2;width:min(64%,270px);height:auto;filter:drop-shadow(0 0 24px #73e8ff6b) drop-shadow(0 0 50px #805cfe58);animation:logo-float 5.5s ease-in-out infinite}
.owda-mark-rings{position:absolute;width:390px;height:390px;border:1px solid #89ddef38;border-radius:50%;box-shadow:0 0 80px #42b9ce26,inset 0 0 65px #5071b530;animation:orbit-turn 24s linear infinite}
.owda-mark-rings:before,.owda-mark-rings:after{content:'';position:absolute;inset:35px;border:1px solid #a497ec40;border-radius:50%}
.owda-mark-rings:after{inset:82px;border-color:#9feef544}
.mark-orbit{position:absolute;width:9px;height:9px;border-radius:50%;background:#b8f7ff;box-shadow:0 0 22px #b4ffff}
.mark-orbit-one{top:58px;right:87px;animation:float-soft 5s ease-in-out infinite}
.mark-orbit-two{bottom:72px;left:55px;background:#a589ff;box-shadow:0 0 20px #a589ff;animation:float-soft 6s ease-in-out infinite reverse}
.owda-bottom{border-top:1px solid var(--line);position:relative;z-index:1}
.contact-section{padding-top:95px;padding-bottom:65px}
.contact-shell{display:grid;grid-template-columns:minmax(230px,340px) minmax(0,1fr);border:1px solid var(--line);background:linear-gradient(130deg,#111b2a,#0b1423)}
.contact-methods{padding:25px 0;border-right:1px solid var(--line)}
.contact-method{width:100%;min-height:86px;border:0;border-left:3px solid transparent;background:transparent;color:#d9e7e9;padding:14px 24px;display:grid;grid-template-columns:40px 1fr 18px;align-items:center;gap:17px;text-align:left;transition:background .25s,border-color .25s}

.contact-method.is-active{background:linear-gradient(90deg,#82e8ee14,transparent);border-left-color:var(--cyan)}
.method-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:#a2dce814}
.method-icon img{width:20px;height:20px;filter:invert(90%) sepia(13%) saturate(845%) hue-rotate(142deg) brightness(107%)}
.contact-method strong{display:block;font-size:15px}.contact-method small{display:block;color:#90a8b3;font-size:12px;margin-top:3px}
.contact-method>span:last-child{color:var(--cyan)}
.contact-panel{padding:clamp(30px,5vw,70px);min-height:545px;display:flex;flex-direction:column;justify-content:center}
.contact-panel-intro h3{font:600 clamp(36px,3.9vw,60px)/1.04 var(--display);letter-spacing:-.055em;margin:14px 0}
.contact-panel-intro p{color:#acc0ca;margin-bottom:30px}
#contact-form{display:grid;gap:18px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
label{display:block;font-size:12px;font-weight:700;color:#dbe8ea}
label span{color:#819aa6;font-weight:400}
input,textarea{width:100%;background:#0c1422;border:1px solid #395162;color:var(--text);padding:14px 15px;margin-top:7px;border-radius:2px;outline:none;transition:border-color .2s,box-shadow .2s;resize:vertical}
input::placeholder,textarea::placeholder{color:#7b929f}
input:focus,textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #79e4e421}
.form-bottom{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:3px}
.form-bottom small{color:#91a7b3;font-size:11px}
.contact-profile{display:grid;grid-template-columns:130px 1fr;align-items:center;gap:30px;margin-top:20px}
.contact-profile>img{width:130px;height:130px;object-fit:cover;object-position:50% 16%;border-radius:50%;border:3px solid #97e9ed}
.contact-profile>img.profile-x-image{object-fit:cover;object-position:center;background:#fff;border-radius:50%;border:3px solid #97e9ed;padding:5px}
.contact-profile p{color:#a9bfca;margin-top:8px;max-width:420px}
.contact-profile .button{margin-top:22px}
.contact-footer{margin-top:24px}
.site-footer{max-width:1600px;margin:0 auto;padding:25px clamp(24px,6vw,104px) 35px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;color:#8499a5}

.toast{position:fixed;right:25px;bottom:25px;z-index:120;background:#d9f6f4;color:#0b1820;box-shadow:0 20px 50px #02060f7a;padding:14px 18px;border-radius:4px;max-width:360px;font-size:13px;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .25s,transform .25s}
.toast.is-visible{opacity:1;transform:translateY(0)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .75s ease,transform .75s cubic-bezier(.16,1,.3,1)}
.reveal.is-visible{opacity:1;transform:none}
@keyframes hero-rise{to{opacity:1;transform:translateY(0)}}
@keyframes brand-turn{to{transform:rotate(360deg)}}
@keyframes pulse{50%{box-shadow:0 0 0 7px rgba(152,236,241,.03),0 0 25px var(--cyan)}}
@keyframes ambient-drift{to{transform:translate(40px,-25px)}}
@keyframes shine-pass{10%{transform:translateX(70%) rotate(5deg)}100%{transform:translateX(70%) rotate(5deg)}}
@keyframes float-soft{50%{transform:translateY(-11px)}}
@keyframes logo-float{50%{transform:translateY(-18px) rotate(2deg)}}
@keyframes orbit-turn{to{transform:rotate(360deg)}}
@keyframes scroll-line{from{transform:translateX(-25px)}to{transform:translateX(75px)}}
@keyframes slide-in-right{from{opacity:.12;transform:translateX(34px)}to{opacity:1;transform:none}}
@keyframes slide-in-left{from{opacity:.12;transform:translateX(-34px)}to{opacity:1;transform:none}}
@keyframes slide-in-up{from{opacity:.12;transform:translateY(38px)}to{opacity:1;transform:none}}
@keyframes slide-in-down{from{opacity:.12;transform:translateY(-38px)}to{opacity:1;transform:none}}
/* Secondary pages share the same visual language. */
.inner-page{min-height:100vh;display:flex;flex-direction:column}
.inner-page main{flex:1}
.inner-hero{min-height:470px;padding-top:180px;padding-bottom:70px;position:relative;overflow:hidden;background:radial-gradient(circle at 77% 44%,#19406680,transparent 38%)}
.inner-hero h1{font:600 clamp(55px,8vw,110px)/.96 var(--display);letter-spacing:-.07em;margin:24px 0}
.inner-hero p{max-width:700px;color:var(--muted);font-size:18px;line-height:1.7}
.inner-panel{padding-top:45px;padding-bottom:110px}
.inner-card{border:1px solid var(--line);padding:clamp(25px,5vw,65px);background:linear-gradient(140deg,#132037,#0b1423);display:grid;grid-template-columns:1fr minmax(200px,.6fr);gap:35px;align-items:center}
.inner-card h2{font:600 clamp(35px,4vw,60px)/1.08 var(--display);letter-spacing:-.05em;margin:14px 0}
.inner-card p{color:var(--muted);max-width:620px;line-height:1.7;margin-bottom:25px}
.inner-card img{width:100%;max-height:350px;object-fit:cover;border-radius:3px}
.inner-card .project-media-note{position:static;display:block;margin-top:12px}
.inner-form{max-width:820px;margin-top:25px;display:grid;gap:18px}
.inner-form .button{justify-self:start}
@media(max-width:1100px){.hero{grid-template-columns:1.15fr .85fr;gap:20px}.hero h1{font-size:clamp(58px,7.4vw,100px)}.hero-visual{height:520px;min-height:430px}.portrait-tag-top{right:-12px}.portrait-tag-bottom{left:-14px}.stack-shell{grid-template-columns:230px 1fr}.stack-stage{grid-template-columns:1fr 1fr}.stack-description{padding:35px}.project-content{padding:38px}.project-content h3{margin-top:35px}.project-media,.project-slide{min-height:540px}}
@media(max-width:820px){.site-header{height:72px}.header-contact{margin-left:auto}.menu-toggle{display:block}.primary-nav{position:fixed;top:72px;left:0;right:0;background:#0b1322;padding:25px 30px 35px;display:flex;flex-direction:column;align-items:stretch;gap:0;border-bottom:1px solid var(--line);opacity:0;visibility:hidden;transform:translateY(-12px);transition:opacity .25s,transform .25s,visibility .25s;box-shadow:0 20px 50px #0008}.primary-nav.is-open{opacity:1;visibility:visible;transform:none}.primary-nav a{font:600 20px var(--display);padding:14px;border-bottom:1px solid var(--line)}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}.hero{height:auto;min-height:0;padding-top:150px;padding-bottom:100px;grid-template-columns:1fr}.hero-copy{padding:0}.hero h1{font-size:clamp(62px,10vw,100px)}.hero-visual{height:490px;min-height:0;width:min(450px,90%);margin:15px auto 0}.hero-location{margin-top:46px}.scroll-cue{bottom:35px}.section-heading-row{align-items:start}.stack-shell{grid-template-columns:1fr}.stack-categories{border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;padding:0}.category-button{padding:16px;border-bottom:1px solid var(--line)}.stack-stage{min-height:330px}.project-slide{grid-template-columns:1fr}.project-media{min-height:380px}.project-content{min-height:400px}.project-content h3{margin:32px 0 15px}.project-proof{margin:25px 0}.owda-inner{grid-template-columns:1fr}.owda-copy{padding-top:70px}.owda-mark-stage{height:310px}.owda-mark-rings{width:280px;height:280px}.owda-mark-stage img{width:200px}.contact-shell{grid-template-columns:1fr}.contact-methods{display:grid;grid-template-columns:1fr 1fr;border-right:0;border-bottom:1px solid var(--line)}.contact-method{min-height:70px}.contact-panel{min-height:500px}}
@media(max-width:600px){.section-shell{padding-left:22px;padding-right:22px}.site-header{padding:0 22px}.header-contact{display:none}.hero{padding-top:125px}.hero-kicker{margin-bottom:27px;font-size:9px}.hero h1{font-size:clamp(56px,13vw,82px)}.hero-lede{margin-top:25px}.hero-actions{gap:22px;margin-top:27px}.hero-location{white-space:normal;font-size:10px;flex-wrap:wrap;gap:8px}.hero-location-line{width:19px}.hero-visual{height:440px;width:min(340px,88%);margin-top:5px}.portrait-frame{inset:25px 0 0}.portrait-halo{transform:translate(14px,-15px)}.portrait-tag{padding:9px 10px;font-size:9px}.portrait-tag-top{right:-20px;max-width:145px}.portrait-tag-bottom{left:-20px}.portrait-index{right:-12px}.section-topline-note{display:none}.section-heading-row{display:block;padding:36px 0}.section-heading-row h2{font-size:clamp(44px,11vw,64px)}.section-heading-row p{margin-top:18px}.stack-section,.projects-section,.contact-section{padding-top:55px;padding-bottom:70px}.stack-categories{grid-template-columns:1fr 1fr}.category-button{grid-template-columns:20px 1fr;gap:6px;font-size:11px;padding:15px 9px}.category-arrow{display:none}.stack-stage{grid-template-columns:1fr;grid-template-rows:auto auto auto}.stack-description{border-right:0;border-bottom:1px solid var(--line);padding:30px 25px}.stack-description:before{display:none}.stack-description h3{margin:12px 0}.stack-context{margin-top:15px}.stack-display{min-height:245px}.stack-icon-wrap{width:115px;height:115px}.stack-controls{grid-column:auto}.stack-bottom span:last-child{display:none}.project-media{min-height:270px}.project-content{padding:28px 24px;min-height:440px}.project-content h3{font-size:49px}.project-top{gap:6px}.project-type{font-size:9px}.project-proof{gap:20px}.project-proof b{font-size:24px}.project-proof small{font-size:9px}.project-bottom{padding-top:18px}.project-controls>span{margin-right:4px}.owda-section{padding-top:45px}.owda-inner{min-height:0}.owda-copy{padding-top:80px}.owda-copy h2{font-size:clamp(45px,11vw,67px)}.owda-mark-stage{height:300px}.owda-bottom span:last-child{display:none}.contact-methods{grid-template-columns:1fr 1fr}.contact-method{grid-template-columns:30px 1fr;gap:8px;padding:12px;font-size:13px}.contact-method>span:last-child{display:none}.method-icon{width:30px;height:30px}.method-icon img{width:16px;height:16px}.contact-method small{font-size:10px}.contact-panel{padding:27px 22px;min-height:0}.form-row{grid-template-columns:1fr;gap:18px}.contact-profile{grid-template-columns:1fr}.contact-profile img{width:100px;height:100px}.contact-footer{font-size:10px}.site-footer{padding:24px 22px 35px}.inner-hero{padding-top:145px;min-height:400px}.inner-card{grid-template-columns:1fr}}
/* One animated canvas runs behind every section without restarting at a boundary. */
body{isolation:isolate}
body:before{content:'';position:fixed;inset:-20%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 12% 20%,var(--wash-a,#275770),transparent 53%),radial-gradient(ellipse at 86% 76%,var(--wash-b,#514378),transparent 56%),radial-gradient(ellipse at 63% 6%,var(--wash-c,#247078),transparent 48%),var(--wash-base,#12223b);animation:section-gradient 22s ease-in-out infinite alternate;transform-origin:center}
section.section-shell{position:relative;isolation:isolate;overflow:hidden;background:transparent}
section.section-shell:before{content:none}
@keyframes section-gradient{0%{transform:translate3d(-6%,-4%,0) rotate(-4deg) scale(1)}50%{transform:translate3d(5%,3%,0) rotate(3deg) scale(1.07)}100%{transform:translate3d(-1%,6%,0) rotate(-1deg) scale(1.03)}}
.hero-copy{padding-bottom:46px}.hero-kicker{margin-bottom:26px}.hero-actions{margin-top:28px}
.hero:before{opacity:.9}.hero-ambient-one{background:#65e4ed24}.hero-ambient-two{background:#b58bff2b}
.section-heading-row h2,.owda-copy h2{letter-spacing:-.055em}
.stack-description h3{font-size:clamp(28px,2.6vw,42px);line-height:1.13;overflow-wrap:anywhere;margin:18px 0}
.stack-description p{color:#c1d2dd}.stack-context{color:#a0bacb;font-size:10px;line-height:1.7}
.stack-overline{font-size:10px;letter-spacing:.06em}
.stack-display-caption{flex-direction:column;justify-content:center;text-align:center;gap:7px;color:#a7bfce;bottom:28px;font-size:9px}
.stack-display-caption strong{font-size:10px;max-width:100%;overflow-wrap:anywhere}
.stack-bottom,.owda-bottom,.contact-footer{color:#a2bdc9}
.stack-dots{gap:2px;flex-wrap:wrap;justify-content:center;max-width:210px}
.stack-categories .category-button{padding:24px 12px;grid-template-columns:24px 1fr 16px;line-height:1.5}
.projects-section .project-pagination button,.projects-section .project-pagination button[aria-current="true"]{background:transparent}
.projects-section .project-pagination button:after{background:#637d88}
.projects-section .project-pagination button[aria-current="true"]:after{background:#147687}
.contact-shell{background:#142b3b66}
.contact-panel{position:relative;overflow:hidden;display:block;padding:0;height:690px;min-height:0}
.contact-content{height:100%;padding:clamp(30px,4vw,60px);display:flex;flex-direction:column;justify-content:center}
.contact-panel-intro h3{font-size:clamp(32px,3.5vw,52px)}
@media(max-width:1100px){.hero h1{font-size:clamp(48px,5.6vw,67px)}.stack-shell{grid-template-columns:210px minmax(0,1fr);height:490px}.stack-stage{grid-template-columns:1fr}.stack-description{padding:26px}.stack-item{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}.stack-icon-wrap img{width:88px;height:88px}}
@media(max-width:820px){.hero h1{font-size:clamp(50px,7.5vw,66px)}.hero-copy{padding:0}.hero-visual{margin-top:35px}.hero-location{margin-top:32px}.stack-shell{height:600px;grid-template-columns:1fr;grid-template-rows:136px minmax(0,1fr)}.stack-categories{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;padding:0 0 16px;border:0}.stack-categories .category-button{border:0;padding:12px 18px}.stack-categories:before,.stack-categories:after{top:auto;left:0;right:0;bottom:0;width:auto;height:2px}.stack-categories:after{width:25%;transform:translateX(var(--divider-position))}.stack-stage{min-height:0;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) 72px}.stack-description{border:0}.stack-display{min-height:0}.contact-content{padding:38px}.contact-panel{height:670px}}
@media(max-width:600px){.hero h1{font-size:clamp(35px,9.7vw,57px);letter-spacing:-.055em}.hero-line{white-space:normal}.hero-kicker{font-size:9px;gap:8px;flex-wrap:wrap}.hero-bio{font-size:14px;line-height:1.8}.hero-visual{height:420px;margin-top:32px}.hero-lede{margin-top:24px}.stack-shell{height:710px;grid-template-rows:132px minmax(0,1fr)}.stack-categories .category-button{font-size:12px;grid-template-columns:22px 1fr;padding:10px 8px}.stack-item{grid-template-columns:1fr;grid-template-rows:310px minmax(0,1fr)}.stack-description{padding:24px 6px 14px;justify-content:center}.stack-description h3{font-size:32px;margin:15px 0;max-width:100%}.stack-description p{font-size:14px}.stack-context{margin-top:16px}.stack-overline{font-size:9px}.stack-display:before{width:170px;height:170px}.stack-display:after{width:230px;height:230px}.stack-icon-wrap{width:105px;height:105px;margin-bottom:30px}.stack-icon-wrap img{width:79px;height:79px}.stack-display-caption{bottom:8px;gap:4px}.stack-controls{gap:10px}.stack-dots{max-width:200px;gap:0}.stack-dots button{width:15px}.contact-panel{height:890px}.contact-content{padding:28px 22px}.contact-panel-intro h3{font-size:34px}.contact-profile{gap:20px}.section-heading-row h2{letter-spacing:-.06em}.stack-bottom{font-size:9px}}
/* Browser review: quieter chrome, a rectangular portrait, and full-width work. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.header-talk{display:inline-flex;align-items:center;gap:18px;padding:10px 0;font-size:13px;font-weight:700;border-bottom:1px solid #a0f3ef80}

.header-talk span{font-size:18px}
.hero{height:auto;min-height:860px;min-height:max(780px,100svh);padding-top:140px;padding-bottom:100px;grid-template-areas:'bio portrait'}
.hero-copy{grid-area:bio;padding:0}
.hero-visual{grid-area:portrait;width:100%;max-width:460px;height:auto;min-height:0;aspect-ratio:4/5;margin:0;justify-self:end;position:relative}
.portrait-frame{inset:0;border-radius:3px;background:#09131d;box-shadow:none}
.portrait-frame img{filter:none;transform:none;transition:none}
.portrait-frame:after{background:linear-gradient(0deg,#07142635,transparent 35%)}
.portrait-lens-flare{position:absolute;top:4%;right:-7%;width:140px;height:140px;pointer-events:none;z-index:3;background:radial-gradient(ellipse at 50% 50%,#fff 0%,#edffffd9 1%,#b6f1ff70 3%,#81c9ed16 12%,transparent 55%);mix-blend-mode:screen}
.portrait-lens-flare:before,.portrait-lens-flare:after{content:'';position:absolute;left:50%;top:50%;background:linear-gradient(90deg,transparent,#b4eaff30 28%,#eafcff 50%,#b4eaff30 72%,transparent);transform:translate(-50%,-50%) rotate(-12deg);width:140px;height:1px}
.portrait-lens-flare:after{width:72px;transform:translate(-50%,-50%) rotate(78deg);opacity:.75}
.stack-section{padding-top:80px;padding-bottom:100px}
.stack-section .section-heading-row{padding-top:0}
.stack-display{background:none;overflow:visible}
.stack-display:before,.stack-display:after{content:none}
.stack-lighting{inset:6% -1% 9%;width:auto;height:auto;border-radius:0;filter:none;opacity:.8;background:radial-gradient(ellipse at 40% 36%,var(--icon-glow),transparent 46%),radial-gradient(ellipse at 67% 59%,#a589f026,transparent 48%),radial-gradient(ellipse at 27% 69%,#6ee6dc15,transparent 42%);mask-image:radial-gradient(ellipse at center,#000 12%,transparent 69%);animation:light-breathe 8s ease-in-out infinite alternate}
@keyframes light-breathe{from{transform:translate(-3%,-1%) rotate(-8deg);opacity:.65}to{transform:translate(3%,2%) rotate(5deg);opacity:.95}}
.projects-section{max-width:none;padding-left:0;padding-right:0;padding-bottom:95px;color:var(--text)}
.projects-section>.section-topline,.projects-section>.section-heading-row,.projects-section>.project-bottom{max-width:1600px;margin-left:auto;margin-right:auto;padding-left:clamp(24px,6vw,104px);padding-right:clamp(24px,6vw,104px)}
.projects-section>.section-topline{border-top:0}
.projects-section .eyebrow,.projects-section .section-heading-row h2 em{color:var(--cyan)}
.projects-section .section-heading-row p{color:var(--muted)}
.projects-section .section-topline{color:#a7bfcd}
.project-view{background:transparent;box-shadow:none}
.project-slide{position:relative;display:grid;grid-template-columns:1fr;align-items:end;min-height:max(720px,90svh)}
.project-media{position:absolute;inset:0;min-height:0;background:transparent;mask-image:linear-gradient(180deg,transparent,#000 12%,#000 83%,transparent)}
.project-media img{object-fit:cover;filter:saturate(.9);transition:none}
.project-slide.is-active .project-media img{transform:none}
.project-media:after{background:linear-gradient(0deg,#06101cf2 2%,#071321c9 38%,#07132120 85%),linear-gradient(90deg,#07132191,transparent 80%)}
.project-media-note{top:12%;bottom:auto;left:auto;right:clamp(24px,6vw,104px);font-size:9px;color:#fff;text-shadow:0 1px 5px #000}
.project-media-symbol{display:none}
.project-content{position:relative;width:100%;max-width:1600px;min-height:0;justify-self:center;padding:190px clamp(24px,6vw,104px) 100px;background:transparent;justify-content:end}
.project-content>p{max-width:620px;color:#e2ebf0;text-shadow:0 1px 10px #0005}
.project-content h3{font-size:clamp(50px,6vw,88px);margin:22px 0;letter-spacing:-.055em}
.project-type{color:#c9e5ec}
.project-proof{margin:28px 0 32px}
.project-proof small{color:#b6d2df}
.project-bottom{padding-top:8px}
.project-controls{color:var(--text)}
.circle-button-light{color:var(--text);border-color:#8ebec380}
.projects-section .project-pagination button:after{background:#92acbb}
.projects-section .project-pagination button[aria-current="true"]:after{background:var(--cyan)}
.owda-stars{mask-image:linear-gradient(transparent,#000 35%,#000 65%,transparent)}
section.owda-section{isolation:auto}
.owda-mark-stage img{width:min(280px,85%);height:440px;max-height:100%;object-fit:contain;filter:none;animation:none}
.owda-mark-stage{height:480px;min-width:0;isolation:auto;mix-blend-mode:screen}
.owda-flare{opacity:.13}
@media(max-width:820px){.header-talk{margin-left:auto}.hero{grid-template-areas:'portrait' 'bio';grid-template-columns:minmax(0,1fr);min-height:0;padding-top:116px;padding-bottom:80px;gap:52px}.hero-visual{justify-self:center;width:min(100%,420px);height:auto;min-height:0;margin:0;aspect-ratio:4/5}.hero-copy{padding:0}.portrait-lens-flare{right:-5%;top:2%}.project-slide{min-height:max(800px,100svh)}.project-content{padding-top:280px;padding-bottom:90px}.project-content h3{font-size:62px}.owda-mark-stage{height:400px}}
@media(max-width:600px){.header-talk{display:inline-flex;font-size:12px;gap:14px}.site-header{gap:22px}.wordmark-logo{width:23px;height:40px}.wordmark{font-size:23px;gap:7px}.hero{padding-top:105px;gap:36px}.hero-visual{width:100%;height:auto;margin:0;aspect-ratio:4/5}.portrait-frame{inset:0}.portrait-lens-flare{width:100px;height:100px;right:-3%;top:0}.portrait-lens-flare:before{width:110px}.portrait-lens-flare:after{width:62px}.stack-section{padding-top:60px;padding-bottom:75px}.projects-section{padding-left:0;padding-right:0}.projects-section>.section-topline,.projects-section>.section-heading-row,.projects-section>.project-bottom{padding-left:22px;padding-right:22px}.project-content{padding:280px 24px 95px}.project-content h3{font-size:52px}.project-content>p{font-size:15px}.project-proof{margin:24px 0}.project-media-note{right:24px;top:10%;font-size:8px}.project-slide{min-height:max(850px,100svh)}.owda-mark-stage{height:350px}}
@media(max-width:820px){.owda-mark-stage img{height:360px}.project-slide[data-project="ai-cat-vet"] .project-media img{object-position:35% center}}
@media(max-width:600px){.owda-mark-stage img{height:310px}}
.contact-section>.section-heading-row{display:flex;flex-direction:column;align-items:flex-start;gap:24px;padding-top:0}
.contact-section>.section-heading-row>p{width:100%;max-width:760px;margin:0;color:#e2eef5;font-size:clamp(19px,2vw,25px);line-height:1.65}
.stack-display-caption strong{font-size:12px;letter-spacing:.08em}
.owda-section{padding-top:65px;padding-bottom:65px;min-height:0}
.owda-copy{padding-top:0}
/* Motion is automatic or triggered by scrolling/clicking, never by hovering. */
.hero-lede,.hero-bio,.hero-actions,.hero-location{animation:bio-arrive .85s cubic-bezier(.16,1,.3,1) both}
.hero-lede{animation-delay:.18s}.hero-bio{animation-delay:.28s}.hero-actions{animation-delay:.38s}.hero-location{animation-delay:.48s}
.portrait-lens-flare{animation:flare-breathe 7s ease-in-out infinite alternate}
.stack-icon-wrap img{animation:technology-float 7s ease-in-out infinite}
.owda-stars{animation:stars-drift 36s linear infinite alternate}
@keyframes bio-arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes flare-breathe{from{opacity:.5}to{opacity:.95}}
@keyframes technology-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes stars-drift{from{background-position:0 0;opacity:.16}to{background-position:22px -28px;opacity:.28}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hero-line,.reveal{opacity:1;transform:none}.hero-lede,.hero-bio,.hero-actions,.hero-location{animation:none;opacity:1;transform:none}}

/* Keep the stack navigation and selected item focused on their names. */
.stack-categories .category-button{grid-template-columns:minmax(0,1fr);gap:0;padding-left:24px}
.stack-description h3{margin-top:0}
.projects-section>.section-heading-row{padding-top:0}

/* The right-hand field reads clearly while fading out before the copy. */
.owda-stars{background-image:radial-gradient(circle,#b8fbff 1.65px,transparent 2.1px);background-size:91px 83px;mask-image:linear-gradient(90deg,transparent 0%,transparent 43%,#0008 61%,#000 82%);animation:owda-dots-drift 30s linear infinite alternate}
@keyframes owda-dots-drift{from{background-position:0 0;opacity:.64}to{background-position:18px -24px;opacity:.82}}
.owda-copy .button-conversation-icon{width:20px;height:20px;display:inline-grid;place-items:center}
.owda-copy .button-conversation-icon svg{display:block;width:20px;height:20px}

/* Layered brand art supplies a soft light bloom behind the crisp mark. */
.owda-mark-stage{isolation:auto;overflow:visible;mix-blend-mode:lighten}
.owda-mark-stage:before{content:'';position:absolute;z-index:0;width:min(500px,105%);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#7cdeff42 0%,#5e77ef34 32%,#825eff1f 53%,transparent 72%);filter:blur(18px);animation:owda-light-pulse 7s ease-in-out infinite alternate}
.owda-mark-stage img.owda-light-art{position:absolute;z-index:0;width:90%;height:90%;object-fit:contain;opacity:.3;filter:blur(28px) saturate(1.8);mix-blend-mode:screen;transform:scale(1.15);animation:owda-light-pulse 8s ease-in-out infinite alternate;pointer-events:none}
.owda-mark-stage img.owda-mark{position:relative;z-index:3;width:min(280px,85%);height:440px;max-height:100%;object-fit:contain;filter:drop-shadow(0 0 24px #73e8ff55);mix-blend-mode:screen;mask-image:radial-gradient(ellipse 55% 65% at center,#000 54%,transparent 100%);animation:owda-mark-breathe 8s ease-in-out infinite}
.owda-tech-orbit{position:absolute;z-index:1;width:min(430px,98%);aspect-ratio:1;border:1px solid #8cefff4d;border-radius:50%;box-shadow:0 0 28px #71e8fb18,inset 0 0 24px #71e8fb12;animation:owda-orbit 24s linear infinite;pointer-events:none}
.owda-tech-orbit:before{content:'';position:absolute;top:13%;left:13%;width:7px;height:7px;border-radius:50%;background:#b9ffff;box-shadow:0 0 0 5px #79e8f322,0 0 15px 5px #6beeff}
.owda-tech-orbit-two{width:min(360px,82%);border-color:#ad8cff57;transform:rotate(80deg);animation-duration:32s;animation-direction:reverse}
.owda-tech-orbit-two:before{background:#c5adff;box-shadow:0 0 0 5px #aa8cff24,0 0 15px 5px #aa8cff}
.owda-tech-sweep{position:absolute;z-index:1;width:min(510px,113%);height:min(510px,113%);border-radius:50%;background:conic-gradient(from 30deg,transparent 0deg 290deg,#8af9ff17 326deg,#8af9ff56 346deg,transparent 360deg);mask-image:radial-gradient(circle,transparent 56%,#000 61%,transparent 73%);animation:owda-orbit 15s linear infinite;pointer-events:none}
@keyframes owda-orbit{to{transform:rotate(360deg)}}
@keyframes owda-light-pulse{from{opacity:.3;transform:scale(1.08)}to{opacity:.5;transform:scale(1.2)}}
@keyframes owda-mark-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@media(max-width:820px){.owda-mark-stage img.owda-mark{height:360px}.owda-tech-orbit{width:min(350px,96%)}.owda-tech-orbit-two{width:min(290px,79%)}}
@media(max-width:600px){.stack-categories .category-button{grid-template-columns:minmax(0,1fr);padding-left:12px}.owda-mark-stage img.owda-mark{height:310px}.owda-tech-orbit{width:min(300px,96%)}.owda-tech-orbit-two{width:min(250px,79%)}}

/* Work technologies and teaching experience have separate presentations. */
.stack-categories:after{height:20%}
.teaching-area{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,1.6fr);gap:clamp(32px,5vw,80px);border-top:1px solid var(--line);margin-top:65px;padding-top:38px}
.teaching-intro h2{font:600 clamp(30px,3.3vw,48px)/1.1 var(--display);letter-spacing:-.055em;margin:16px 0}
.teaching-intro p,.teaching-topics p{color:#b3c8d4;font-size:14px;line-height:1.65}
.teaching-intro p{max-width:360px}
.teaching-topics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.teaching-topics article{border-left:1px solid #a4e4ef55;padding-left:20px}
.teaching-topics h3{font:600 19px/1.25 var(--display);margin:3px 0 12px}
@media(max-width:820px){.stack-shell{grid-template-rows:168px minmax(0,1fr);height:632px}.stack-categories{grid-template-rows:repeat(3,minmax(0,1fr));padding:0}.stack-categories:after{display:none}.stack-categories .category-button.is-active{border-bottom:2px solid var(--cyan)}.teaching-area{grid-template-columns:1fr;gap:25px}.teaching-topics{gap:18px}}
@media(max-width:600px){.stack-shell{grid-template-rows:168px minmax(0,1fr);height:742px}.stack-categories .category-button{padding:9px 11px;font-size:12px}.teaching-area{margin-top:45px;padding-top:28px}.teaching-topics{grid-template-columns:1fr;gap:18px}.teaching-topics article{padding-left:16px}.teaching-intro p{max-width:none}}

.project-state{font:700 10px/1.2 var(--mono);letter-spacing:.1em;color:#a8f3e9;border:1px solid #8df3e878;border-radius:999px;padding:8px 11px;white-space:nowrap}
.project-state.is-progress{color:#d8c5ff;border-color:#c6b0ff86}
.project-evidence{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(25px,4vw,64px);border-top:1px solid var(--line);margin-top:45px;padding-top:38px}
.project-evidence article{min-width:0}
.project-evidence-title{display:inline-flex;align-items:center;min-height:25px;padding-bottom:9px;border-bottom:1px solid #9eeaf080;color:#b9fbf3;font:800 14px/1.15 var(--display);letter-spacing:.075em;text-transform:uppercase}
.project-evidence p{font-size:15px;line-height:1.7;color:#b9cbd8;margin:15px 0 0}
.project-source-links{display:flex;flex-wrap:wrap;gap:20px 30px;border-top:1px solid var(--line);margin-top:42px;padding-top:25px}
.inner-card #project-outcome{font-size:clamp(31px,4vw,56px);line-height:1.08}
.inner-card #project-image{max-height:420px}
@media(max-width:820px){.project-evidence{grid-template-columns:1fr;gap:25px}.project-evidence p{margin-top:8px}}
.stack-section{padding-bottom:20px}
.teaching-section{padding-bottom:90px}
.teaching-section .teaching-area{margin-top:0}
@media(max-width:600px){.stack-section{padding-bottom:15px}.teaching-section{padding-bottom:65px}}

/* Blue light moves with scrolling and drifts gently between scroll events. */
body>main,body>.site-footer{position:relative;z-index:1}
body:before{background:radial-gradient(ellipse at 12% 20%,var(--wash-a,#205989),transparent 53%),radial-gradient(ellipse at 86% 76%,var(--wash-b,#244991),transparent 56%),radial-gradient(ellipse at 63% 6%,var(--wash-c,#1c79ac),transparent 48%),var(--wash-base,#081b3b)}

/* Each functional unit shows its complete set of logos. Click or keyboard focus selects a detail. */
.stack-shell{height:auto;min-height:540px;grid-template-columns:220px minmax(0,1fr)}
.stack-categories{justify-content:flex-start;padding-top:22px;padding-bottom:22px}
.stack-categories .category-button{min-height:92px;padding-right:16px}
.stack-stage{display:grid;grid-template-rows:auto auto;align-content:center;gap:26px;padding:10px 0 10px clamp(18px,3vw,48px)}
.stack-hive{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:stretch}
.stack-cell{position:relative;min-width:0;min-height:116px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:0;padding:16px 18px;color:#e3f4fc;background:linear-gradient(145deg,#88daff70,#5d8ee945);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);isolation:isolate}
.stack-cell:before{content:'';position:absolute;z-index:-1;inset:2px;background:linear-gradient(135deg,#183e66e8,#102a4bdd);clip-path:inherit}
.stack-cell.is-active{background:linear-gradient(145deg,#bbf4ff,#56b9ee);filter:drop-shadow(0 0 12px #61d7ff55)}
.stack-cell.is-active:before{background:linear-gradient(135deg,#205582,#15395f)}
.stack-cell:focus-visible{outline:0;filter:drop-shadow(0 0 16px #c5f6ff)}
.stack-cell img{width:37px;height:37px;object-fit:contain;filter:brightness(0) invert(1);opacity:.92}
.stack-cell span{font:700 11px/1.2 var(--body);text-align:center;max-width:95px}
.stack-detail{display:grid;grid-template-columns:64px minmax(0,1fr);gap:22px;align-items:center;min-height:112px;border-top:1px solid #a5daf04a;padding:22px 4px 0}
.stack-detail>img{width:56px;height:56px;object-fit:contain;filter:brightness(0) invert(1)}
.stack-detail h3{font:600 clamp(24px,2.5vw,38px)/1.12 var(--display);letter-spacing:-.045em;margin:0 0 7px}
.stack-detail p{max-width:670px;color:#d5e6f1;font-size:14px;line-height:1.6}

/* Teaching is a vertical reading sequence, separate from tools used in project work. */
.teaching-area{grid-template-columns:1fr;gap:30px;max-width:870px}
.teaching-intro h2{margin-top:0}
.teaching-intro p{max-width:740px}
.teaching-topics{grid-template-columns:1fr;gap:0}
.teaching-topics article{display:grid;grid-template-columns:minmax(180px,.4fr) 1fr;gap:24px;align-items:start;border-left:0;border-top:1px solid #a4e4ef55;padding:22px 0}
.teaching-topics h3{margin:0}

/* The project photograph remains behind the details and the carousel controls. */
.project-view{position:relative}
.project-view{border-top:1px solid #a0e6f27a;border-bottom:1px solid #a0e6f27a;box-shadow:0 -1px 14px #55d4e51a,0 1px 14px #55d4e51a}
.project-slide{min-height:max(790px,100svh)}
.project-media{mask-image:none;-webkit-mask-image:none}
.project-content{padding-bottom:160px}
.project-bottom{position:absolute;z-index:5;left:0;right:0;bottom:0;max-width:1600px;margin:0 auto;padding:18px clamp(24px,6vw,104px) 31px;background:linear-gradient(180deg,transparent,#0715269c)}
.project-top{justify-content:flex-start}
.project-action-icon{display:block;width:20px;height:20px;object-fit:contain;flex:none}
.inner-card .button{justify-content:flex-start;gap:12px}
.inner-card .project-action-icon{width:20px;height:20px}
.project-repo{display:inline-flex;align-items:center;gap:8px}
.project-repo .project-action-icon{width:17px;height:17px;filter:brightness(0) invert(1)}
.project-source-links .text-link{display:inline-flex;align-items:center;gap:8px}
.project-source-links .project-action-icon{width:16px;height:16px;filter:brightness(0) invert(1)}
.contact-method{grid-template-columns:40px 1fr}

@media(max-width:820px){.stack-shell{grid-template-columns:1fr;grid-template-rows:auto auto;min-height:0;height:auto}.stack-categories{grid-template-rows:none;grid-auto-rows:minmax(58px,auto);padding:0 0 16px}.stack-categories .category-button{min-height:58px}.stack-stage{padding:22px 0 0;gap:25px}.stack-hive{grid-template-columns:repeat(3,minmax(0,1fr))}.project-content{padding-bottom:160px}}
@media(max-width:600px){.stack-shell{height:auto;grid-template-rows:auto auto}.stack-categories{grid-auto-rows:minmax(53px,auto)}.stack-categories .category-button{min-height:53px}.stack-hive{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.stack-cell{min-height:105px;padding:14px}.stack-cell img{width:32px;height:32px}.stack-cell span{font-size:10px}.stack-detail{grid-template-columns:45px 1fr;gap:14px}.stack-detail>img{width:42px;height:42px}.stack-detail p{font-size:13px}.teaching-topics article{grid-template-columns:1fr;gap:8px}.project-slide{min-height:max(910px,100svh)}.project-content{padding:260px 24px 160px}.project-bottom{padding:15px 22px 26px}.contact-method{grid-template-columns:30px 1fr}}
@media(prefers-reduced-motion:reduce){body::after{animation:none;opacity:.68}}

/* A timed canvas draws moving blue ribbons; the former star overlay is gone. */
body::after{content:none;animation:none}
.ambient-energy{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;mix-blend-mode:screen;opacity:.86}
.portrait-lens-flare{display:none}

/* A luminous architectural frame gives the portrait a deliberate edge. */
.hero-visual:before{content:'';position:absolute;inset:13px -13px -13px 13px;border:1px solid #93dbfa8a;box-shadow:0 0 0 6px #73bbef14,0 0 35px #67c5f545;pointer-events:none;z-index:0}
.hero-visual:after{content:'';position:absolute;inset:0 -13px -13px 0;pointer-events:none;z-index:4;background:linear-gradient(#b8efff,#b8efff) left top/49px 2px no-repeat,linear-gradient(#b8efff,#b8efff) left top/2px 49px no-repeat,linear-gradient(#b8efff,#b8efff) right bottom/49px 2px no-repeat,linear-gradient(#b8efff,#b8efff) right bottom/2px 49px no-repeat;filter:drop-shadow(0 0 8px #82ddff)}
.portrait-frame{z-index:1;border:1px solid #a6ddf0a3;box-shadow:0 23px 75px #02040b8a,0 0 28px #70ccf733}

/* One interlocking hive. Cells show artwork only; the floating card carries the copy. */
.stack-section{padding-top:75px;padding-bottom:105px}
.stack-hive{display:grid;grid-template-columns:repeat(var(--hive-columns,8),minmax(0,1fr));gap:clamp(8px,1.15vw,14px);width:100%;max-width:1000px;margin:0 auto;padding:13px 0 25px}
.stack-cell{position:relative;aspect-ratio:1;min-width:0;min-height:0;width:auto;height:auto;flex:none;display:flex;align-items:center;justify-content:center;padding:12px;gap:0;border:1px solid #94dfff63;border-radius:14px;clip-path:none;background:linear-gradient(145deg,#94dfff30,#658fe129);isolation:isolate}
.stack-cell:before{content:none}
.stack-cell img{width:46%;height:46%;max-width:58px;max-height:58px;object-fit:contain;opacity:.98}
.stack-cell img[src$="kestra.svg"]{filter:none}
.stack-cell img[src$="openvino.svg"]{width:92%;height:auto;max-width:none;max-height:none;filter:none}
.stack-cell img[src$="typesafe-jev.png"]{width:48%;height:48%;border-radius:50%;filter:none}
.stack-cell.is-active{filter:drop-shadow(0 0 15px #90e7ffbb)}
.stack-cell:focus-visible{filter:drop-shadow(0 0 18px #d6f7ff)}
.stack-cell span{display:none}
.stack-tooltip{position:fixed;z-index:200;width:min(330px,calc(100vw - 24px));padding:17px 19px 20px;border:1px solid #94d8f3a3;border-radius:8px;background:linear-gradient(145deg,#112b4af2,#0b1d38f7);box-shadow:0 18px 46px #020a1dd9,0 0 26px #73cfff32;backdrop-filter:blur(16px);pointer-events:auto}
.stack-tooltip[hidden]{display:none}
.stack-tooltip small{font:700 10px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:#9addf5}
.stack-tooltip h3{font:650 22px/1.16 var(--display);letter-spacing:-.04em;margin:8px 0}
.stack-tooltip p{font-size:13px;line-height:1.55;color:#d6e8f1}

/* Keep controls within reach of each project's action links. */
.project-slide{min-height:max(650px,100svh)}
.project-content{padding-top:125px;padding-bottom:60px}
.project-bottom{padding-top:8px;padding-bottom:12px}
.project-proof{margin:20px 0 22px}
.project-content h3{margin:18px 0 14px}

.action-icon{display:block;width:19px;height:19px;object-fit:contain;flex:none}
.action-with-icon{display:inline-flex;align-items:center;gap:12px}
.action-with-icon .action-icon{width:17px;height:17px;filter:brightness(0) invert(1)}

@media(max-width:600px){.stack-hive{gap:8px;padding-top:8px}.stack-cell{padding:8px;border-radius:11px}.stack-cell img{width:48%;height:48%}.stack-tooltip{width:min(310px,calc(100vw - 24px))}.project-slide{min-height:max(770px,100svh)}.project-content{padding-top:205px;padding-bottom:60px}.project-bottom{padding-bottom:12px}.hero-visual:before{inset:9px -8px -9px 8px}.hero-visual:after{inset:0 -8px -9px 0}}
@media(prefers-reduced-motion:reduce){.ambient-energy{display:none}}

/* Keep carousel navigation at the image's vertical midpoint and center its dots below. */
.project-controls{position:absolute;z-index:6;top:50%;left:10px;right:10px;justify-content:space-between;gap:12px;transform:translateY(-50%);pointer-events:none}
.project-controls button{pointer-events:auto;background:#0b1b2cbd;color:#e2faff;border-color:#a0e6f288;box-shadow:0 4px 16px #02091470;backdrop-filter:blur(8px)}
.project-bottom{bottom:48px;justify-content:center;padding:0;background:none}
.project-state{display:block;align-self:flex-start;border:0;border-radius:0;padding:0;background:none;color:#a8f3e9;font:700 10px/1.2 var(--mono);letter-spacing:.1em}
.project-state.is-progress{color:#d8c5ff}
.stack-hive{gap:8px}
.stack-cell{border-radius:10px;padding:8px}
.stack-cell img{filter:none}
@media(max-width:600px){.project-controls{left:10px;right:10px}.project-controls button{width:38px;height:38px}.project-state{margin-left:42px}.project-bottom{position:relative;left:auto;right:auto;bottom:auto;margin-top:0;padding:16px 22px 12px;background:none}}
@media(min-width:601px){.project-slide{min-height:max(540px,calc(100svh - 80px))}.project-content{padding-top:70px;padding-bottom:70px}}

/* Continuous logo marquee for the supplied technology marks. */
.stack-section{padding-top:75px;padding-bottom:72px;overflow:hidden}
.stack-section .section-heading-row{padding:0 0 22px}
.stack-marquee{display:grid;gap:5px;width:calc(100% + 2 * var(--shell-pad, 36px));margin-left:calc(-1 * var(--shell-pad, 36px));}
.stack-marquee-row{position:relative;overflow:hidden;width:100%;mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.stack-marquee-track{display:flex;width:max-content;animation:stack-marquee-scroll 48s linear infinite;will-change:transform}
.stack-marquee-row.is-reverse .stack-marquee-track{animation-direction:reverse;animation-duration:56s}
.stack-marquee-row:hover .stack-marquee-track,.stack-marquee-row:focus-within .stack-marquee-track{animation-play-state:paused}
.stack-marquee-group{display:flex;flex:none;align-items:center;gap:clamp(24px,3vw,42px);padding:6px clamp(24px,3vw,42px) 6px 0}
.stack-logo{display:grid;place-items:center;flex:none;width:clamp(48px,5vw,66px);height:clamp(48px,5vw,66px);padding:4px;border:0;border-radius:14px;background:transparent;cursor:pointer;transition:transform .2s ease,filter .2s ease}
.stack-logo img{display:block;width:100%;height:100%;object-fit:contain}
.stack-logo:hover,.stack-logo:focus-visible{transform:translateY(-3px) scale(1.08);filter:drop-shadow(0 0 12px #9ceaff80);outline:none}
.stack-logo:focus-visible{border:1px solid #a8f3e9}
.stack-detail{position:relative;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:50px 54px;justify-items:center;align-content:center;gap:8px;height:164px;min-height:164px;max-height:164px;box-sizing:border-box;overflow:hidden;margin:7px 0;padding:16px 22px;border-top:1px solid #7edcfb80;border-bottom:1px solid #7edcfb80;text-align:center}
.stack-detail h3{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;font:800 clamp(30px,3.2vw,42px)/1.15 var(--body);letter-spacing:-.045em;color:#f5fbff;text-shadow:0 2px 18px #00132f72}
.stack-detail>p:last-child{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-width:760px;height:54px;margin:0;color:#cfdae8;font-size:clamp(14px,1.5vw,18px);line-height:1.5}
@keyframes stack-marquee-scroll{to{transform:translateX(-50%)}}
@media(max-width:600px){.stack-section{padding-top:58px;padding-bottom:58px}.stack-section .section-heading-row{padding-bottom:18px}.stack-marquee{gap:5px;width:calc(100% + 44px);margin-left:-22px}.stack-marquee-group{gap:21px;padding-right:21px}.stack-logo{width:46px;height:46px;border-radius:11px}.stack-detail{grid-template-columns:minmax(0,1fr);grid-template-rows:42px 48px;height:148px;min-height:148px;max-height:148px;padding:14px 18px}.stack-detail>p:last-child{height:48px;font-size:14px;line-height:1.5}}
@media(prefers-reduced-motion:reduce){.stack-marquee-row{mask-image:none;overflow:visible}.stack-marquee-track{width:100%;animation:none;will-change:auto}.stack-marquee-group{flex-wrap:wrap;justify-content:center;width:100%;padding:6px 14px}.stack-marquee-group[aria-hidden="true"]{display:none}.stack-marquee{gap:4px}}
