@font-face{font-family:"Portfolio Serif";src:url("fonts/portfolio-serif.woff2") format("woff2");font-style:normal;font-weight:500;font-display:swap}
/* Shared portfolio design system. Product sites retain their own styles. */
:root{--paper:#f7f5ef;--surface:#fffefa;--paper-2:#eeece4;--ink:#263b33;--ink-soft:#536159;--ink-faint:#68726a;--line:#dcded4;--accent:#315e4c;--green:#203f35;--gold:#b49162;--serif:"Portfolio Serif","Noto Serif SC","Source Han Serif SC","Songti SC","SimSun",Georgia,serif;--sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;--mono:"JetBrains Mono","SFMono-Regular",Consolas,monospace}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:92px}
body{background:var(--paper);color:var(--ink);font:16px/1.8 var(--sans);-webkit-font-smoothing:antialiased}
::selection{color:var(--surface);background:var(--green)}
a{color:var(--accent);text-decoration:none;text-underline-offset:4px}
a:hover{text-decoration:underline}
a:focus-visible{outline:3px solid var(--accent);outline-offset:5px}
main:focus{outline:none}
img{display:block;max-width:100%}
.wrap{width:100%;max-width:1280px;margin-inline:auto;padding-inline:48px}
.skip-link{position:fixed;z-index:100;top:10px;left:20px;padding:10px 18px;background:var(--surface)}
.skip-link:not(:focus){clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap;padding:0}

/* Masthead and native section navigation. */
nav{position:sticky;top:0;z-index:50;background:rgba(247,245,239,.94);backdrop-filter:blur(16px);border-bottom:1px solid rgba(38,59,51,.10)}
.nav-shell{display:flex;align-items:center;justify-content:space-between;gap:32px}
nav .brand{flex:none;display:inline-flex;align-items:center;min-height:76px;padding-right:16px;color:var(--ink);font:600 18px/1.6 var(--sans);letter-spacing:.10em}
nav .brand:hover{text-decoration:none}
.nav-links{display:flex;align-items:stretch;gap:26px;min-width:0;overflow-x:auto;scrollbar-width:thin}
.nav-links a{position:relative;display:inline-flex;align-items:center;min-height:76px;padding:3px 1px 0;white-space:nowrap;color:var(--ink-soft);font-size:13px}
.nav-links a::after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--accent);transform:scaleX(0);transition:transform .18s ease}
.nav-links a:hover,.nav-links a[aria-current]{color:var(--accent);text-decoration:none}
.nav-links a:hover::after,.nav-links a[aria-current]::after{transform:scaleX(1)}
.nav-links a:focus-visible{outline-offset:-4px}

/* Opening spread. */
.hero{position:relative;padding:68px 0 78px;overflow:clip}
.hero-layout{display:grid;grid-template-columns:.82fr 1.18fr;align-items:center;gap:50px}
.eyebrow{font:500 12px/1.8 var(--sans);letter-spacing:.10em;color:var(--green);margin-bottom:18px;display:flex;align-items:center;gap:12px}
h1{font:600 clamp(48px,4.8vw,68px)/1.2 var(--sans);letter-spacing:.02em}
.hero-statement{font:500 clamp(24px,2.15vw,31px)/1.8 var(--serif);margin-top:25px;letter-spacing:-.025em;color:var(--green)}
.tagline{max-width:440px;font-size:14px;line-height:2;color:var(--ink-soft);margin-top:22px}
.cta,.actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.cta{margin-top:29px;gap:15px}
.btn,.abtn{display:inline-flex;justify-content:center;align-items:center;gap:12px;min-height:44px;padding:10px 17px;border:1px solid var(--line);border-radius:30px;background:transparent;color:var(--ink);font:500 13px/1.5 var(--sans);transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}
.btn{min-height:50px;padding-inline:23px;border-radius:30px;font-size:13px}
.btn.primary,.abtn.fill{background:var(--green);border-color:var(--green);color:var(--surface)}
.btn:hover,.abtn:hover{text-decoration:none;border-color:var(--green);background:#e7ece3;color:var(--green)}
.btn.primary:hover,.abtn.fill:hover{background:#16372e;border-color:#16372e;color:#fff}

/* Chapter rhythm and shared project cards. */
section{padding:90px 0;border-top:1px solid var(--line);scroll-margin-top:20px}
.anchor-alias{display:block;height:0;scroll-margin-top:130px}
h2{font:500 34px/1.5 var(--serif);letter-spacing:-.025em}
.num{display:inline-block;font:11px/1.5 var(--mono);letter-spacing:0;color:var(--accent);vertical-align:baseline;margin-right:16px}
.sub{color:var(--ink-faint);font-size:14px;line-height:1.85;margin-top:14px}
.section-head .sub{max-width:760px}
.demo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:60px 36px}
.demo-card{min-width:0;display:flex;flex-direction:column;background:transparent}
.demo-card:hover{transform:none}
.preview{aspect-ratio:16/10;background:#e9ece2;overflow:hidden;border:1px solid rgba(32,39,35,.08);border-radius:18px}
.preview>img{width:100%;height:100%;object-fit:contain;object-position:center;transition:transform .55s cubic-bezier(.2,.7,.2,1)}
.preview>.forest-cover{object-fit:contain;background:#dde7cb}
.reality-preview{background:#0e0f12}
.reality-preview>img{object-fit:contain}
.demo-info{display:flex;flex:1;flex-direction:column;padding:24px 2px 0}
.kind,.skill-category{font:500 11px/1.7 var(--sans);letter-spacing:.06em;color:var(--accent);margin-bottom:9px}
.demo-info h3{font:600 28px/1.45 var(--sans);letter-spacing:-.035em;margin-bottom:13px}
.demo-info>p{color:var(--ink-soft);font-size:14px;line-height:1.95;margin-bottom:17px;max-width:620px}
.demo-info>p:not(.project-note){flex:1}
.demo-info .project-note{font-size:12px;color:var(--ink-faint);margin-bottom:18px;line-height:1.85}
.demo-info .actions{gap:10px 14px}
.demo-info .abtn{font-size:12px;padding-inline:17px;border-radius:30px}

/* Shipped venture. */
.live-product{padding:0 0 84px;border-top:0;background:var(--paper)}
.live-layout{display:grid;grid-template-columns:1fr 1.12fr;gap:60px;align-items:center;padding:0 0 35px;position:relative}
.live-kicker{font:500 12px/1.7 var(--sans);color:#c4d8c9;margin-bottom:16px}
.live-copy h3{font:500 65px/1.15 var(--sans);letter-spacing:-.055em}
.live-intro{color:#e2e9df;font-size:14px;line-height:2.1;max-width:510px}
.live-copy .actions{margin-top:27px}
.live-copy .abtn{border-color:#819382;color:#f3f0e5}
.live-copy .abtn.fill{background:#e4ddc5;border-color:#e4ddc5;color:#203b31}
.live-copy .abtn:hover{background:#365247}
.live-copy .abtn.fill:hover{background:#f2ead4}
.live-product a:focus-visible{outline-color:#e4ddc5}
.delivery-strip{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid #527160}
.delivery-strip article{padding:24px 25px 4px;border-right:1px solid #5a7666}
.delivery-strip article:first-child{padding-left:0}
.delivery-strip article:last-child{padding-right:0;border-right:0}
.delivery-strip article>span{font-size:11px;color:#bed2c2}
.delivery-strip h4{font:500 17px/1.6 var(--sans);margin:8px 0}
.delivery-strip p{font-size:13px;color:#dce6d8;line-height:1.85}
.live-note{position:relative;color:#c5d2c1;font-size:11px;line-height:1.8;margin-top:26px}

/* Research and engineering practice. */
#projects{background:var(--surface)}
.research-feature{background:#f0f2e9;border:0;border-radius:18px;padding:37px 40px 26px;margin-bottom:46px;scroll-margin-top:100px}
.research-feature-head{display:flex;justify-content:space-between;align-items:center;gap:16px;font:500 12px/1.6 var(--sans);color:var(--green)}
.conference-badge{display:inline-flex;align-items:baseline;gap:13px;padding:4px 0 6px;border-bottom:1px solid #bfa575;color:var(--green);white-space:nowrap}
.conference-badge strong{font:600 19px/1.35 var(--sans);letter-spacing:.015em}.conference-badge>span{font:500 12px/1.8 var(--sans);color:#745c3b}
.research-feature-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:55px;margin-top:28px}
.research-feature-copy,.research-contributions{min-width:0}
.research-feature h3{font:500 36px/1.4 var(--sans);letter-spacing:-.035em}
.paper-title{font-size:13px;color:var(--ink-faint);line-height:1.75;margin-top:11px}
.research-question{color:var(--green);font:500 25px/1.65 var(--serif);margin-top:24px}
.research-summary{font-size:14px;line-height:1.9;color:var(--ink-soft);margin:13px 0 21px}
.research-contributions{border-top:1px solid var(--line)}
.research-contributions>div{border-bottom:1px solid var(--line);padding:17px 0}
.research-contributions dt{font:600 16px/1.7 var(--sans)}
.research-contributions dt>span{display:block;font:9px/1.7 var(--mono);color:var(--ink-faint);margin-bottom:6px}
.research-contributions dd{font-size:13px;line-height:1.9;color:var(--ink-soft);margin-top:7px}
.research-status{font-size:11px;color:var(--ink-faint);line-height:1.9;border-top:1px solid var(--line);padding-top:16px;margin-top:24px}
.practice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:44px}
.practice-card{min-width:0;display:flex;flex-direction:column;padding:28px 30px;border:1px solid var(--line);border-radius:16px;background:transparent;scroll-margin-top:100px}
.practice-meta{display:flex;justify-content:space-between;gap:10px;font:12px/1.8 var(--sans);color:var(--green)}
.practice-card h3{font:600 24px/1.5 var(--sans);letter-spacing:-.03em;margin:16px 0 13px}
.practice-intro{font-size:14px;line-height:1.9;color:var(--ink-soft)}
.practice-work{margin:22px 0;border-top:1px solid var(--line)}
.practice-work>div{display:grid;grid-template-columns:68px 1fr;gap:14px;padding:15px 0;border-bottom:1px solid var(--line)}
.practice-work dt{font-size:12px;color:var(--green);font-weight:500}
.practice-work dd{font-size:13px;line-height:1.9;color:var(--ink-soft)}
.practice-bottom{margin-top:auto;display:flex;flex-wrap:wrap;align-items:center;gap:15px}
.tags,.tl-tags{display:flex;flex-wrap:wrap;gap:6px}
.tag,.tl-tag{font-size:10px;line-height:1.8;color:#5d6859;background:#e7eadf;border-radius:3px;padding:3px 8px}
.practice-note,.research-note{font-size:11px;line-height:1.9;color:var(--ink-faint)}
.research-note{padding-top:15px;border-top:1px solid var(--line);margin-top:19px}

/* The six existing Skills cards. */
.skill-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}
.skill-card{display:flex;flex-direction:column;min-width:0;color:var(--ink);background:var(--surface);border:1px solid rgba(63,66,49,.09);border-radius:16px;overflow:hidden;transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}
.skill-card:hover{transform:translateY(-5px);border-color:#a6b3a1;box-shadow:0 14px 25px -18px rgba(25,47,36,.24);text-decoration:none}
.skill-art{aspect-ratio:16/9;background:var(--paper-2);border-bottom:1px solid var(--line)}
.skill-art img{width:100%;height:100%;object-fit:contain}
.skill-body{display:flex;flex:1;flex-direction:column;padding:22px}
.skill-category{font-size:10px;margin-bottom:8px}
.skill-card h3{font:600 20px/1.5 var(--sans);letter-spacing:-.025em;overflow-wrap:anywhere;margin-bottom:11px}
.skill-card p{flex:1;font-size:13px;line-height:1.9;color:var(--ink-soft);margin-bottom:20px}
.skill-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);padding-top:14px}
.skill-tags{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11px;line-height:1.8;color:var(--ink-faint)}
.skill-tags>span+span::before{content:"/";margin-right:10px;color:#8b9484}
.skill-link{font:11px/1.8 var(--mono);white-space:nowrap;color:var(--green)}
.skill-link>span{margin-left:3px}
.skills-more{color:var(--ink-faint);font-size:12px;line-height:2;margin-top:25px;overflow-wrap:anywhere}
.skills-more a{display:inline-flex;align-items:center;min-height:44px;gap:8px;margin-left:16px}

/* Dated notes. */
#timeline{background:var(--paper)}
.timeline{position:relative;border-top:0}
.tl-item{position:relative;display:grid;grid-template-columns:180px minmax(0,1fr);column-gap:55px;padding:26px 0;border-bottom:1px solid var(--line)}
.tl-date{grid-column:1;grid-row:1/4;padding-top:3px;color:var(--ink-faint);font:12px/1.9 var(--sans)}
.tl-item h4{grid-column:2;font:600 18px/1.6 var(--sans);margin-bottom:7px}
.tl-item p{grid-column:2;font-size:13px;line-height:1.95;color:var(--ink-soft);max-width:790px}
.tl-tags{grid-column:2;margin-top:11px;gap:6px 14px}
.tl-tag{background:transparent;padding:0;font-size:10px;color:#687367}

/* Contact and colophon. */
footer{padding:72px 0 20px;background:var(--green);color:var(--paper);scroll-margin-top:65px}
.contact-layout{display:grid;grid-template-columns:1.5fr 1fr;gap:70px;align-items:center}
.contact-layout h2{font:500 35px/1.5 var(--serif);letter-spacing:-.03em}
.contact-layout .eyebrow{margin-bottom:21px;font:9px/1.8 var(--mono);letter-spacing:.14em}
.contact-layout .sub{margin:18px 0 0;font-size:14px;color:#c6d2c6}
.contact-link{display:flex;justify-content:space-between;align-items:center;gap:28px;border-bottom:1px solid #748a7a;padding:22px 0;color:#e7ede0;font-size:13px}
.contact-link:hover{text-decoration:none;border-color:#eee8d8;color:#fff}
.contact-link small{display:block;font:30px/1.8 Georgia,serif;color:var(--paper);margin-top:7px}
.contact-link>span:last-child{display:flex;align-items:center;justify-content:center;width:54px;height:54px;flex:none;border:1px solid #748a7a;border-radius:50%;font-size:27px;transition:background .2s,color .2s}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 22px;border-top:1px solid #4b6958;margin-top:56px;padding-top:20px;font-size:11px;color:#c3cfc1}
.footer-bottom a{min-height:44px;display:inline-flex;align-items:center;color:#dfe7d8}

.section-head{position:relative;display:flex;justify-content:space-between;align-items:baseline;gap:26px;margin-bottom:40px;padding-top:20px}

/* Screens from the work itself anchor the opening. */
.hero-work{min-width:0;position:relative}
.hero-work-image{display:block;position:relative;transform:rotate(2deg);background:var(--surface);border:7px solid var(--surface);border-radius:12px;box-shadow:0 25px 50px -25px rgba(35,56,43,.35);transition:transform .4s ease,box-shadow .4s ease}
.hero-work-image:hover{transform:rotate(0);box-shadow:0 30px 55px -26px rgba(35,56,43,.4)}
.hero-work-image img{width:100%;height:auto;border-radius:6px}
.hero-work figcaption{display:flex;justify-content:flex-end;gap:12px;padding:17px 3px 0;font-size:11px;color:var(--ink-faint)}
.hero-work figcaption>span:first-child{font-weight:500;color:var(--ink)}
.section-caption{font-size:12px;color:var(--ink-faint)}
.venture-panel{position:relative;isolation:isolate;overflow:hidden;padding:44px 46px 29px;border-radius:22px;background:var(--green);color:#f6f8ef;box-shadow:0 15px 36px -26px rgba(22,52,40,.45)}
.live-statement{font:400 23px/1.65 var(--sans);margin-top:17px;color:#e2e9d9}
.live-details .actions{margin-top:24px}
.live-details .abtn{color:#f6f8ef;border-color:#718c7d;border-radius:30px}
.live-details .abtn.fill{background:#f1eddb;color:#244533;border-color:#f1eddb}
.live-details .abtn:hover{background:#3e6551;color:#fff}
.live-details .abtn.fill:hover{background:#fff;color:#244533}
.demo-card:hover .preview>img{transform:scale(1.015)}
.skill-category{font-size:11px}
.research-feature .abtn,.practice-card .abtn{border-radius:30px}

/* Graph Cube: an awarded research product, distinct from deployment practice. */
.tulifang-feature{padding:33px 37px 27px;margin-bottom:35px;background:#f7f4e9;border:1px solid #e0d9c6;border-radius:18px;scroll-margin-top:110px}
.tulifang-feature-top{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px;color:var(--ink-soft)}
.tulifang-awards{display:flex;align-items:center;gap:22px;max-width:100%}.tulifang-feature-top>span{flex:none}
.tulifang-award{display:flex;align-items:baseline;gap:5px;color:#765730;white-space:nowrap}.tulifang-award+.tulifang-award{padding-left:22px;border-left:1px solid #d5c6aa}
.tulifang-award>span{font:500 13px/1.8 var(--sans)}.tulifang-award strong{font:600 17px/1.6 var(--sans);letter-spacing:.025em}
.tulifang-feature-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:42px;align-items:center;margin-top:30px}
.tulifang-feature-copy{min-width:0}.tulifang-feature h3{font:600 38px/1.4 var(--sans);letter-spacing:-.04em}.tulifang-feature h3>span{display:block;font:400 17px/1.8 var(--sans);letter-spacing:.015em;color:#6d745f;margin-top:5px}
.tulifang-feature-subtitle{font-size:17px;color:var(--green);margin-top:16px}.tulifang-feature-intro{font-size:14px;line-height:1.95;color:var(--ink-soft);margin-top:17px}
.tulifang-feature-topics{display:flex;flex-wrap:wrap;gap:9px 17px;margin:20px 0 23px;font-size:11px;color:#6d745f}.tulifang-feature-topics>span+span::before{content:"/";margin-right:17px;color:#a2a68e}
.tulifang-feature .abtn{border-radius:30px;font-size:12px}.tulifang-feature .abtn:not(.fill){background:transparent;border-color:#d6ceb9}
.tulifang-feature-visual{min-width:0}.tulifang-feature-visual img{width:100%;height:auto;border-radius:12px}.tulifang-feature-visual figcaption{font-size:11px;line-height:1.8;color:#6d745f;padding:12px 3px 0}
.tulifang-feature-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;border-top:1px solid #dcd7c6;margin-top:29px;padding-top:21px}.tulifang-feature-facts dt{font-size:11px;color:#717764;margin-bottom:5px}.tulifang-feature-facts dd{font-size:13px;color:var(--ink)}
@media(max-width:1000px){.tulifang-feature{padding:29px}.tulifang-feature-grid{gap:28px}.tulifang-feature h3{font-size:33px}.tulifang-feature-subtitle{font-size:15px}.tulifang-feature-intro{font-size:13px}}
@media(max-width:760px){.tulifang-feature{padding:25px 22px;scroll-margin-top:90px}.tulifang-feature-grid{grid-template-columns:1fr;gap:27px;margin-top:26px}.tulifang-feature-top{align-items:stretch;flex-direction:column;gap:19px;font-size:11px}.tulifang-awards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.tulifang-award{align-items:flex-start;flex-direction:column;gap:2px}.tulifang-award+.tulifang-award{padding-left:16px}.tulifang-award>span{font-size:11px}.tulifang-award strong{font-size:18px}.tulifang-feature h3{font-size:33px}.tulifang-feature h3>span{font-size:16px}.tulifang-feature-subtitle{font-size:16px}.tulifang-feature-intro{font-size:14px}.tulifang-feature-topics{margin-block:17px 21px}.tulifang-feature .abtn{font-size:11px;padding-inline:14px}.tulifang-feature-facts{grid-template-columns:1fr;gap:13px;margin-top:24px;padding-top:19px}.tulifang-feature-facts>div{display:grid;grid-template-columns:67px 1fr;gap:10px;align-items:baseline}.tulifang-feature-facts dt{margin:0}.tulifang-feature-facts dd{font-size:12px}}
@media(max-width:370px){.tulifang-feature{padding:23px 18px}.tulifang-feature-subtitle{font-size:15px}.tulifang-feature .actions{gap:7px}.tulifang-feature .abtn{padding-inline:11px;gap:7px}}

/* Composition and quiet emphasis, using only the existing project artwork. */
.eyebrow::before{content:"";width:24px;height:1px;background:var(--gold)}
.hero-composition{position:relative;padding:16px 0 78px 26px}
.hero-composition::before{content:"";position:absolute;inset:-22px -26px 38px 10%;border-radius:46% 42% 44% 40%;background:#e9e9de;transform:rotate(-12deg);z-index:-1}
.hero-companion{display:block;position:absolute;bottom:0;left:0;width:40%;padding:6px;background:var(--surface);border-radius:9px;transform:rotate(-5deg);box-shadow:0 14px 30px -16px rgba(24,43,32,.45);transition:transform .35s ease;z-index:1}
.hero-companion img{width:100%;height:auto;aspect-ratio:1.40625;object-fit:contain;border-radius:4px;background:#0b2b2e}
.hero-companion>span{display:flex;justify-content:space-between;padding:9px 8px 5px;font-size:11px;color:var(--ink)}
.hero-companion:hover{transform:rotate(-2deg) translateY(-3px);text-decoration:none}
.hero-work-image:focus-visible,.hero-companion:focus-visible{outline:3px solid var(--accent);outline-offset:6px}
.hero .btn.ghost{border-color:transparent;padding-inline:14px}
.hero .btn.ghost:hover{background:#eeeee5}
.section-head::before{content:"";position:absolute;top:0;left:0;width:30px;height:2px;background:var(--gold)}
.product-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:66px 38px}
.product-grid .demo-card:nth-child(1),.product-grid .demo-card:nth-child(4){grid-column:span 7}
.product-grid .demo-card:nth-child(2),.product-grid .demo-card:nth-child(3){grid-column:span 5}
.product-grid .preview{height:335px;aspect-ratio:auto}
.product-grid .demo-card:nth-child(1) .preview{background:#0a292c}
.product-grid .demo-card:nth-child(2) .preview{background:#f0ebe2}
.product-grid .demo-card:nth-child(3) .preview{background:#dde7cb}
.product-grid .demo-card:nth-child(4) .preview{background:#e9e7da;padding:19px}
.product-grid .demo-card:nth-child(4) .preview img{border-radius:6px;box-shadow:0 10px 25px -16px #344135}
.demo-info .abtn:not(.fill){border-color:transparent;padding-inline:5px}
.demo-info .abtn:not(.fill):hover{background:transparent;color:var(--accent);text-decoration:underline}
.tech-grid .preview{padding:17px;background:#e5eae1}
.tech-grid .preview img{border-radius:7px;box-shadow:0 9px 22px -12px rgba(26,50,37,.3)}
.venture-panel::before,.venture-panel::after{content:"";position:absolute;z-index:-1;pointer-events:none;border:1px solid rgba(218,227,202,.08);border-radius:50%;width:650px;height:650px;right:-260px;top:-240px}
.venture-panel::after{width:480px;height:480px;right:-175px;top:-155px}
#skills{background:#eeece4}
.tl-item::before{content:"";position:absolute;left:203px;top:35px;width:6px;height:6px;border-radius:50%;background:#71866e;box-shadow:0 0 0 6px var(--paper)}
.timeline::before{content:"";position:absolute;left:206px;top:36px;bottom:40px;width:1px;background:var(--line)}
.tl-tags>span+span::before{content:"·";margin-right:14px;color:#92998b}
.contact-link:hover>span:last-child{background:var(--paper);color:var(--green)}
footer a:focus-visible{outline-color:#f1eddb}

@media(max-width:1100px){
  .wrap{padding-inline:36px}.hero{padding:52px 0 67px}.hero-layout{gap:30px;grid-template-columns:.86fr 1.14fr}h1{font-size:58px}.hero-statement{font-size:24px}.hero-composition{padding-bottom:62px}.hero-companion{width:43%}.hero-work figcaption{font-size:10px;gap:8px}
  .product-grid{gap:52px 28px}.product-grid .preview{height:285px}.demo-info h3{font-size:25px}.live-layout{gap:35px}.venture-panel{padding:35px}.live-copy h3{font-size:57px}.skill-grid{gap:19px}.skill-body{padding:20px}.skill-card h3{font-size:19px}.research-feature-grid{gap:32px}
}
@media(max-width:900px){
  .wrap{padding-inline:28px}.nav-links{gap:19px}.nav-links a{font-size:12px}.hero-layout{gap:24px;grid-template-columns:.88fr 1.12fr}.hero-statement{font-size:21px}h1{font-size:50px}.tagline{font-size:13px}.hero-composition{padding-left:10px;padding-bottom:53px}.hero-work-image{border-width:5px}.hero-companion{width:43%}.hero-companion>span{font-size:10px;padding:6px 5px 2px}.hero-work figcaption{display:block;text-align:right}.hero-work figcaption>span{display:block}.cta{gap:8px}.btn{padding-inline:17px}
  section{padding-block:70px}h2{font-size:31px}.live-layout{gap:30px}.live-copy h3{font-size:50px}.live-statement{font-size:21px}.live-intro{font-size:13px}.delivery-strip article{padding-inline:18px}.delivery-strip h4{font-size:15px}.delivery-strip p{font-size:12px}.product-grid .preview{height:230px}.demo-info h3{font-size:23px}.demo-info>p{font-size:13px}.practice-card{padding:25px}.practice-meta{font-size:10px}.practice-work>div{grid-template-columns:1fr;gap:7px}.practice-card h3{font-size:22px}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-card h3{font-size:21px}
  .tl-item{grid-template-columns:135px minmax(0,1fr);column-gap:37px}.tl-item::before{left:150px}.timeline::before{left:153px}.contact-layout{gap:35px}.contact-layout h2{font-size:29px}.contact-link small{font-size:25px}
}
@media(max-width:700px){
  html{scroll-padding-top:76px}.wrap{padding-inline:23px}.nav-shell{gap:0}nav .brand{display:none}.nav-links{gap:10px;width:100%;justify-content:space-between}.nav-links a{min-height:57px;min-width:24px;font-size:11.5px;padding-inline:0}
  .hero{padding:35px 0 42px}.hero-layout{grid-template-columns:1fr;gap:32px}.eyebrow{font-size:11px;margin-bottom:15px}h1{font-size:49px}.hero-statement{font-size:25px;margin-top:19px;line-height:1.7}.tagline{font-size:13px;margin-top:17px}.cta{margin-top:24px;gap:12px}.btn{min-height:46px;font-size:12px;padding-inline:19px}.hero-composition{padding:5px 1px 0}.hero-composition::before{inset:-13px -10px -6px 6%}.hero-work-image{transform:rotate(1deg);border-width:5px;border-radius:9px}.hero-work-image img{border-radius:4px}.hero-companion{display:none}.hero-work figcaption{display:flex;justify-content:space-between;text-align:left;font-size:10px;padding-top:15px;gap:8px}
  section{padding:55px 0}.section-head{display:block;padding-top:18px;margin-bottom:28px}h2{font-size:28px}.section-head .sub{font-size:13px;margin-top:12px}.section-caption{font-size:11px;margin-top:8px}
  .live-product{padding:0 0 48px}.venture-panel{padding:28px 25px;border-radius:17px}.live-layout{grid-template-columns:1fr;gap:22px;padding-bottom:28px}.live-kicker{font-size:11px;margin-bottom:13px}.live-copy h3{font-size:49px}.live-statement{font-size:20px;margin-top:12px}.live-statement br{display:none}.live-intro{font-size:14px;line-height:1.9}.live-details .actions{gap:9px;margin-top:19px}.live-details .abtn{font-size:11px;padding-inline:12px;gap:7px}
  .delivery-strip{grid-template-columns:1fr}.delivery-strip article,.delivery-strip article:first-child,.delivery-strip article:last-child{padding:18px 0;border-right:0;border-bottom:1px solid #527160}.delivery-strip article>span{display:none}.delivery-strip h4{font-size:15px;margin:0 0 7px}.delivery-strip p{font-size:13px}.live-note{font-size:11px;margin-top:19px}
  .demo-grid,.product-grid{grid-template-columns:1fr;gap:40px}.product-grid .demo-card:nth-child(n){grid-column:auto}.product-grid .preview{height:auto;aspect-ratio:16/11}.product-grid .demo-card:nth-child(4) .preview{padding:12px;aspect-ratio:16/10}.preview{border-radius:12px}.demo-info{padding:20px 1px 0}.demo-info h3{font-size:25px}.demo-info>p{font-size:14px;line-height:1.95}.demo-info .project-note{font-size:12px;margin-bottom:16px}.kind{font-size:11px}.demo-info .actions{gap:7px 12px}.demo-info .abtn{font-size:12px;padding-inline:16px}.demo-info .abtn:not(.fill){padding-inline:3px}.tech-grid .preview{padding:12px}
  .research-feature{padding:24px 22px;margin-bottom:35px;border-radius:14px}.research-feature-head{align-items:flex-start;flex-direction:column;gap:13px;font-size:11px}.conference-badge{gap:12px;padding-bottom:5px}.conference-badge strong{font-size:18px}.conference-badge>span{font-size:11px}.research-feature-grid{grid-template-columns:1fr;gap:25px;margin-top:22px}.research-feature h3{font-size:29px}.research-question{font-size:23px;margin-top:21px}.research-summary{font-size:14px}.research-contributions dd{font-size:13px}.research-status{font-size:11px}.research-feature .abtn{font-size:12px;padding-inline:12px}
  .practice-grid{grid-template-columns:1fr;gap:23px;margin-top:35px}.practice-card{padding:24px 22px}.practice-card h3{font-size:23px}.practice-meta{font-size:11px}.practice-intro{font-size:14px}.practice-work>div{grid-template-columns:1fr;gap:7px}.practice-work dt{font-size:13px}.practice-work dd{font-size:13px}.practice-note,.research-note{font-size:11px}
  .skill-grid{grid-template-columns:1fr;gap:13px}.skill-card{display:grid;grid-template-columns:88px minmax(0,1fr);gap:15px;padding:17px;border-radius:12px;align-items:start}.skill-art{aspect-ratio:1;height:88px;border:1px solid var(--line);border-radius:7px;overflow:hidden;display:flex;align-items:center}.skill-art img{height:auto;object-fit:contain}.skill-body{padding:0;min-width:0}.skill-card h3{font-size:17px;margin-bottom:7px;line-height:1.6}.skill-card p{font-size:12px;margin-bottom:12px;line-height:1.85}.skill-category{font-size:10px;margin-bottom:4px}.skill-bottom{gap:8px;padding-top:9px;flex-wrap:wrap}.skill-tags{font-size:9px;gap:3px 7px}.skill-tags>span+span::before{margin-right:7px}.skill-link{font-size:10px}.skills-more{font-size:11px;margin-top:20px}.skills-more a{display:flex;width:fit-content;margin-left:0}
  .timeline::before{left:3px;top:29px;bottom:25px}.tl-item{grid-template-columns:1fr;gap:0;padding:22px 0 22px 24px}.tl-item::before{left:0;top:30px}.tl-date{grid-row:auto;padding:0;margin-bottom:8px;font-size:11px}.tl-item h4,.tl-item p,.tl-tags{grid-column:1}.tl-item h4{font-size:17px}.tl-item p{font-size:13px}.tl-tags{gap:5px 10px}.tl-tag{font-size:10px}.tl-tags>span+span::before{margin-right:10px}
  footer{padding:44px 0 18px}.contact-layout{grid-template-columns:1fr;gap:22px}.contact-layout h2{font-size:28px}.contact-layout .sub{font-size:13px}.contact-link{padding:15px 0}.contact-link small{font-size:27px}.contact-link>span:last-child{width:46px;height:46px}.footer-bottom{margin-top:32px;gap:5px 20px;justify-content:flex-start;font-size:10px}.footer-bottom>span{width:100%}
}
@media(max-width:370px){
  .wrap{padding-inline:18px}h1{font-size:44px}.hero-statement{font-size:22px}.tagline{font-size:12px}.hero-work figcaption{font-size:9px;gap:7px}h2{font-size:25px}.venture-panel{padding:25px 20px}.live-copy h3{font-size:44px}.live-statement{font-size:18px}.live-details .abtn{font-size:11px;padding-inline:10px;gap:5px}
  .demo-info .abtn{font-size:11px;padding-inline:12px;gap:8px}.demo-info h3{font-size:23px}.demo-info>p{font-size:14px}.research-feature,.practice-card{padding:22px 19px}.research-feature .abtn{font-size:11px;padding-inline:10px}.practice-meta{font-size:10px}.skill-card{grid-template-columns:65px minmax(0,1fr);gap:12px;padding:15px}.skill-art{height:65px}.skill-card h3{font-size:16px}.contact-layout h2{font-size:25px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.demo-card:hover,.skill-card:hover,.demo-card:hover .preview>img{transform:none}.hero-work-image,.hero-work-image:hover,.hero-companion,.hero-companion:hover{transform:none}}
@media print{
  body{background:#fff;font-size:11pt}nav,.skip-link{display:none}.wrap{max-width:none;padding-inline:0}.hero{padding:20px 0}section,footer{padding:25px 0}.hero-layout{gap:30px}.hero-work-image{box-shadow:none;transform:none}.hero-companion{display:none}.hero-composition{padding:0}.demo-card,.skill-card,.practice-card,.tl-item,.research-feature{break-inside:avoid;transform:none}.venture-panel,footer{print-color-adjust:exact;-webkit-print-color-adjust:exact}
}
