/* Material Design 3 baseline: system roles, type scale, shapes, state layers. */
@font-face{font-family:Roboto;src:url('assets/roboto-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Roboto;src:url('assets/roboto-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Roboto;src:url('assets/roboto-700.woff2') format('woff2');font-weight:700;font-display:swap}
:root{
 --md-ref-typeface-plain:Roboto,'Microsoft YaHei','PingFang SC',sans-serif;--md-ref-typeface-brand:var(--md-ref-typeface-plain);
 --md-sys-shape-corner-none:0px;--md-sys-shape-corner-extra-small:4px;--md-sys-shape-corner-small:8px;--md-sys-shape-corner-medium:12px;--md-sys-shape-corner-large:16px;--md-sys-shape-corner-extra-large:28px;--md-sys-shape-corner-full:9999px;
 --md-sys-motion-easing-standard:cubic-bezier(.2,0,0,1);--md-sys-motion-duration-short2:100ms;--md-sys-motion-duration-medium2:300ms;
 --md-sys-typescale-display-large-font:var(--md-ref-typeface-brand);--md-sys-typescale-display-large-size:57px;--md-sys-typescale-display-large-line-height:64px;--md-sys-typescale-display-large-weight:400;--md-sys-typescale-display-large-tracking:-.25px;
 --md-sys-typescale-display-medium-font:var(--md-ref-typeface-brand);--md-sys-typescale-display-medium-size:45px;--md-sys-typescale-display-medium-line-height:52px;--md-sys-typescale-display-medium-weight:400;--md-sys-typescale-display-medium-tracking:0px;
 --md-sys-typescale-display-small-font:var(--md-ref-typeface-brand);--md-sys-typescale-display-small-size:36px;--md-sys-typescale-display-small-line-height:44px;--md-sys-typescale-display-small-weight:400;--md-sys-typescale-display-small-tracking:0px;
 --md-sys-typescale-headline-large-font:var(--md-ref-typeface-brand);--md-sys-typescale-headline-large-size:32px;--md-sys-typescale-headline-large-line-height:40px;--md-sys-typescale-headline-large-weight:400;--md-sys-typescale-headline-large-tracking:0px;
 --md-sys-typescale-headline-medium-font:var(--md-ref-typeface-brand);--md-sys-typescale-headline-medium-size:28px;--md-sys-typescale-headline-medium-line-height:36px;--md-sys-typescale-headline-medium-weight:400;--md-sys-typescale-headline-medium-tracking:0px;
 --md-sys-typescale-headline-small-font:var(--md-ref-typeface-brand);--md-sys-typescale-headline-small-size:24px;--md-sys-typescale-headline-small-line-height:32px;--md-sys-typescale-headline-small-weight:400;--md-sys-typescale-headline-small-tracking:0px;
 --md-sys-typescale-title-large-font:var(--md-ref-typeface-brand);--md-sys-typescale-title-large-size:22px;--md-sys-typescale-title-large-line-height:28px;--md-sys-typescale-title-large-weight:400;--md-sys-typescale-title-large-tracking:0px;
 --md-sys-typescale-title-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-title-medium-size:16px;--md-sys-typescale-title-medium-line-height:24px;--md-sys-typescale-title-medium-weight:500;--md-sys-typescale-title-medium-tracking:.15px;
 --md-sys-typescale-title-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-title-small-size:14px;--md-sys-typescale-title-small-line-height:20px;--md-sys-typescale-title-small-weight:500;--md-sys-typescale-title-small-tracking:.1px;
 --md-sys-typescale-body-large-font:var(--md-ref-typeface-plain);--md-sys-typescale-body-large-size:16px;--md-sys-typescale-body-large-line-height:24px;--md-sys-typescale-body-large-weight:400;--md-sys-typescale-body-large-tracking:.5px;
 --md-sys-typescale-body-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-body-medium-size:14px;--md-sys-typescale-body-medium-line-height:20px;--md-sys-typescale-body-medium-weight:400;--md-sys-typescale-body-medium-tracking:.25px;
 --md-sys-typescale-body-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-body-small-size:12px;--md-sys-typescale-body-small-line-height:16px;--md-sys-typescale-body-small-weight:400;--md-sys-typescale-body-small-tracking:.4px;
 --md-sys-typescale-label-large-font:var(--md-ref-typeface-plain);--md-sys-typescale-label-large-size:14px;--md-sys-typescale-label-large-line-height:20px;--md-sys-typescale-label-large-weight:500;--md-sys-typescale-label-large-tracking:.1px;
 --md-sys-typescale-label-medium-font:var(--md-ref-typeface-plain);--md-sys-typescale-label-medium-size:12px;--md-sys-typescale-label-medium-line-height:16px;--md-sys-typescale-label-medium-weight:500;--md-sys-typescale-label-medium-tracking:.5px;
 --md-sys-typescale-label-small-font:var(--md-ref-typeface-plain);--md-sys-typescale-label-small-size:11px;--md-sys-typescale-label-small-line-height:16px;--md-sys-typescale-label-small-weight:500;--md-sys-typescale-label-small-tracking:.5px;
 --type-display-large:400 57px/64px var(--md-ref-typeface-brand);--type-display-medium:400 45px/52px var(--md-ref-typeface-brand);--type-display-small:400 36px/44px var(--md-ref-typeface-brand);
 --type-headline-large:400 32px/40px var(--md-ref-typeface-brand);--type-headline-medium:400 28px/36px var(--md-ref-typeface-brand);--type-headline-small:400 24px/32px var(--md-ref-typeface-brand);
 --type-title-large:400 22px/28px var(--md-ref-typeface-brand);--type-title-medium:500 16px/24px var(--md-ref-typeface-plain);--type-title-small:500 14px/20px var(--md-ref-typeface-plain);
 --type-body-large:400 16px/24px var(--md-ref-typeface-plain);--type-body-medium:400 14px/20px var(--md-ref-typeface-plain);--type-body-small:400 12px/16px var(--md-ref-typeface-plain);
 --type-label-large:500 14px/20px var(--md-ref-typeface-plain);--type-label-medium:500 12px/16px var(--md-ref-typeface-plain);--type-label-small:500 11px/16px var(--md-ref-typeface-plain);
}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{margin:0;background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);font:var(--type-body-large);letter-spacing:.5px;-webkit-font-smoothing:antialiased;padding-left:80px}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}button{font:inherit}img{display:block;max-width:100%}svg{width:24px;height:24px}::selection{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}:focus-visible{outline:3px solid var(--md-sys-color-primary);outline-offset:3px}.wrap{width:min(1200px,calc(100% - 64px));margin-inline:auto}.skip{position:fixed;top:-60px;left:100px;z-index:100;background:var(--md-sys-color-secondary-container);padding:16px;border-radius:8px}.skip:focus{top:8px}[hidden]{display:none!important}.blue{color:var(--md-sys-color-primary)}.soft{color:var(--md-sys-color-on-surface-variant)}.eyebrow{font:var(--type-label-large);color:var(--md-sys-color-primary);display:flex;align-items:center;gap:8px;letter-spacing:.1px}.section{padding-block:64px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:32px;margin-bottom:32px}.section-head .eyebrow{margin-bottom:12px}h2{font:var(--type-headline-large)}.section-note{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant);text-align:right;flex-shrink:0}md-filled-button,md-filled-tonal-button,md-outlined-button,md-text-button{vertical-align:middle}md-icon-button{--md-icon-button-state-layer-shape:9999px}md-text-button[trailing-icon]{--md-text-button-trailing-space:12px}
.site-header{height:64px;position:sticky;top:0;z-index:30;background:var(--md-sys-color-surface-container)}.nav-wrap{height:64px;padding-inline:32px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;gap:16px;align-items:center}.brand-mark{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);font:var(--type-title-large)}.brand-label{font:var(--type-title-large);display:flex;align-items:center;gap:16px}.brand-label>span{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant)}.nav-actions{display:flex;align-items:center;gap:8px}.theme-button{width:48px;height:48px}.nav-download{min-width:132px}
.navigation{position:fixed;left:0;top:0;bottom:0;width:80px;z-index:40;background:var(--md-sys-color-surface-container);display:flex;align-items:center;flex-direction:column;gap:12px;padding-top:104px}.navigation a{width:72px;min-height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:16px;color:var(--md-sys-color-on-surface-variant);font:var(--type-label-medium);letter-spacing:.5px}.nav-icon{width:56px;height:32px;display:grid;place-items:center;border-radius:9999px;position:relative;transition:background var(--md-sys-motion-duration-short2) var(--md-sys-motion-easing-standard)}.navigation a.active{color:var(--md-sys-color-on-secondary-container)}.navigation a.active .nav-icon{background:var(--md-sys-color-secondary-container)}.navigation a:hover .nav-icon:after,.navigation a:active .nav-icon:after{content:'';position:absolute;inset:0;border-radius:inherit;background:currentColor;opacity:.08}.navigation a:active .nav-icon:after{opacity:.12}
.hero{margin-top:24px;background:var(--md-sys-color-surface-container-low);border-radius:28px;padding:48px;display:grid;grid-template-columns:minmax(0,1fr) 272px;align-items:center;gap:48px}.hero-copy{min-width:0}.hero h1{font:var(--type-headline-small);margin-top:24px}.hero-title{font:var(--type-display-large);letter-spacing:-.25px;display:block;margin-top:16px}.hero-intro{font:var(--type-body-large);color:var(--md-sys-color-on-surface-variant);margin-top:24px}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.availability{font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant);margin-top:24px;display:flex;gap:8px;align-items:baseline}.availability>span{width:6px;height:6px;background:var(--md-sys-color-tertiary);border-radius:50%;flex-shrink:0}.status-dot{height:8px;width:8px;border-radius:50%;background:var(--md-sys-color-primary);flex-shrink:0}.hero-profile{justify-self:center;width:272px}.portrait-wrap{width:256px;height:256px;border-radius:50%;overflow:hidden;margin:auto;background:var(--md-sys-color-primary-container)}.portrait-wrap img{height:256px;width:256px;object-fit:cover;object-position:center 24%}.profile-caption{text-align:center;margin-top:24px}.profile-caption strong{font:var(--type-title-large);display:block}.profile-caption span{display:block;font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant);margin-top:8px}
.proof-strip{padding-top:24px}.proof-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.proof-grid>div{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:16px;padding:24px}.proof-grid>div:nth-child(2){background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.proof-grid>div:nth-child(3){background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.proof-label{font:var(--type-body-small);display:block;margin-bottom:12px}.proof-grid strong{font:var(--type-title-large);display:block}.proof-grid strong.number{font:var(--type-display-small);font-variant-numeric:tabular-nums}.number small{font:var(--type-title-medium)}.proof-sub{display:block;font:var(--type-body-small);margin-top:8px}
.featured-project{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;overflow:hidden;background:var(--md-sys-color-surface)}.project-visual{display:flex;flex-direction:column;justify-content:space-between;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);padding:24px;overflow:hidden}.visual-top,.visual-footer{display:flex;justify-content:space-between;gap:16px;align-items:center;font:var(--type-label-small)}.small-dot{width:8px;height:8px;border-radius:50%;background:var(--md-sys-color-primary)}.track-art{width:100%;height:auto;margin-block:16px;color:var(--md-sys-color-on-primary-container)}.track-base{fill:none;stroke:var(--md-sys-color-primary);stroke-opacity:.22;stroke-width:30;stroke-linecap:round}.track-dash{fill:none;stroke:var(--md-sys-color-on-primary-container);stroke-opacity:.65;stroke-width:1.5;stroke-dasharray:5 7}.track-art text{fill:var(--md-sys-color-on-primary-container);font-family:var(--md-ref-typeface-plain)}.track-art>path:not(.track-base):not(.track-dash){stroke:var(--md-sys-color-on-primary-container)}.track-art circle{fill:var(--md-sys-color-on-primary-container)}.track-art g rect:first-child{fill:var(--md-sys-color-tertiary-container);stroke:var(--md-sys-color-on-tertiary-container)}.track-art g rect:nth-child(2){fill:var(--md-sys-color-on-tertiary-container)}.track-art g path{stroke:var(--md-sys-color-on-tertiary-container)}.visual-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-on-primary-container) 24%,transparent);padding-top:24px;margin-top:24px}.visual-stats strong{font:var(--type-headline-medium)}.visual-stats strong span{font:var(--type-body-medium)}.visual-stats small{display:block;font:var(--type-body-small);margin-top:8px}
.project-copy{padding:24px;min-width:0}.project-meta{display:flex;justify-content:space-between;align-items:center;gap:16px;font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant)}.pill{display:inline-flex;align-items:center;padding:8px 12px;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:8px;font:var(--type-label-medium)}.project-copy h3{font:var(--type-headline-large);margin-top:24px}.project-role{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant);margin-top:12px}.project-summary{font:var(--type-body-large);color:var(--md-sys-color-on-surface-variant);margin-top:16px}.project-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.project-tags span{display:inline-flex;align-items:center;min-height:32px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:6px 12px;font:var(--type-label-small);color:var(--md-sys-color-on-surface-variant)}.race-result{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding-block:16px;margin-top:16px;border-block:1px solid var(--md-sys-color-outline-variant)}.race-result>strong{font:var(--type-headline-large);color:var(--md-sys-color-primary);white-space:nowrap;font-variant-numeric:tabular-nums}.race-result>strong small{font:var(--type-body-large)}.race-result p{font:var(--type-body-small)}.race-result p span{color:var(--md-sys-color-on-surface-variant)}.project-copy>md-text-button{margin-top:16px;margin-left:-12px}.project-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:24px}.project-card{display:flex;flex-direction:column;min-width:0;border-radius:12px;padding:24px;background:var(--md-sys-color-surface-container-low)}.project-card h3{font:var(--type-headline-medium);margin-top:16px}.project-card .pill{align-self:start}.project-number{font:var(--type-label-small)}.project-card .project-tags{margin-bottom:24px}.card-bottom{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:auto;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant);font:var(--type-body-medium)}.card-bottom small{font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant)}.card-bottom md-text-button{flex-shrink:0;margin-right:-12px}.robot-visual,.iot-visual{height:160px;background:var(--md-sys-color-surface-container-high);border-radius:8px;margin-block:24px;display:flex;align-items:center;justify-content:center;padding:16px}.signal-chip{padding:16px 12px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-primary);font:var(--type-label-large)}.signal-chip small{display:block;font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant);margin-top:8px}.signal-line{width:24px;height:1px;background:var(--md-sys-color-outline);position:relative}.signal-line:after{content:'';position:absolute;right:-2px;top:-3px;border:3px solid transparent;border-left-color:var(--md-sys-color-outline)}.iot-visual{gap:16px;background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.water-gauge{width:64px;height:88px;border:1px solid currentColor;border-radius:4px 4px 12px 12px;position:relative;overflow:hidden}.water-gauge span{position:absolute;inset:35% 0 0;background:var(--md-sys-color-tertiary);opacity:.3;border-radius:20% 35% 0 0}.water-gauge small{font:var(--type-label-small);position:absolute;bottom:8px;text-align:center;left:0;right:0}.data-stream{width:96px;position:relative;display:flex;justify-content:center;gap:8px}.data-stream i{width:4px;height:4px;border-radius:50%;background:currentColor}.data-stream span{position:absolute;top:16px;white-space:nowrap;font:var(--type-label-small)}.mini-dashboard{width:104px;height:88px;padding:12px;border:1px solid currentColor;border-radius:8px}.mini-dashboard>span{font:var(--type-label-small)}.bars{height:32px;display:flex;gap:5px;align-items:end;margin-top:8px}.bars i{width:6px;height:60%;background:var(--md-sys-color-tertiary)}.bars i:nth-child(2n){height:90%}.bars i:nth-child(3n){height:40%}
.chain-section{padding-block:48px;background:var(--md-sys-color-surface-container)}.chain-section .section-head{margin-bottom:24px}.chain{width:100%;--md-secondary-tab-container-color:var(--md-sys-color-surface-container);--md-secondary-tab-active-indicator-height:3px}.chain md-secondary-tab{flex:1;min-width:0}.chain-detail{display:grid;grid-template-columns:1fr 1.5fr;gap:48px;padding-top:24px;min-height:120px}.chain-detail strong{font:var(--type-title-medium)}.chain-detail p{font:var(--type-body-large);color:var(--md-sys-color-on-surface-variant)}
.skills-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:32px}.skill-row{display:flex;gap:24px;padding-block:24px;border-top:1px solid var(--md-sys-color-outline-variant)}.skill-row:first-child{border:0;padding-top:0}.skill-index{font:var(--type-label-large);color:var(--md-sys-color-primary);padding-top:4px}.skill-row h3{font:var(--type-title-large)}.skill-row p{font:var(--type-body-large);color:var(--md-sys-color-on-surface-variant);margin-top:16px}.ai-card{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:16px;padding:24px;position:relative}.ai-symbol{position:absolute;right:24px;top:24px;font-size:36px;line-height:40px;opacity:.5}.ai-card .eyebrow{color:inherit;padding-right:40px}.ai-card h3{font:var(--type-headline-medium);margin-top:24px}.ai-card>p:not(.eyebrow){font:var(--type-body-large);margin-top:16px}.ai-loop{display:grid;grid-template-columns:1fr 16px 1fr;gap:8px;align-items:center;margin-top:24px}.ai-loop span{font:var(--type-label-medium);border:1px solid color-mix(in srgb,var(--md-sys-color-on-secondary-container) 35%,transparent);border-radius:8px;padding:8px;text-align:center}.ai-loop b{font-size:16px;font-weight:400;transform:rotate(-90deg)}.ai-loop b:nth-child(4){display:none}.ai-card p.ai-footnote{font:var(--type-body-small);padding-top:16px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-on-secondary-container) 24%,transparent);margin-top:24px}.toolbox{border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;margin-top:24px;overflow:hidden}.toolbox summary{display:flex;align-items:center;justify-content:space-between;min-height:64px;padding:16px 24px;cursor:pointer;font:var(--type-title-medium);list-style:none;transition:background .1s}.toolbox summary::-webkit-details-marker{display:none}.toolbox summary:hover{background:color-mix(in srgb,var(--md-sys-color-on-surface) 8%,transparent)}.toolbox-toggle{font-size:24px;line-height:24px;color:var(--md-sys-color-on-surface-variant)}.toolbox[open] .toolbox-toggle{transform:rotate(45deg)}.toolbox-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:0 24px 24px}.toolbox h4{font:var(--type-title-medium);margin-bottom:12px}.toolbox p{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant)}
.maker-strip{display:grid;grid-template-columns:160px 1fr auto;gap:24px;align-items:center;padding-bottom:48px}.maker-strip img{height:120px;width:160px;object-fit:cover;border-radius:12px}.maker-strip .eyebrow{font:var(--type-label-medium)}.maker-strip h3{font:var(--type-title-large);margin-top:12px}.maker-strip p:not(.eyebrow){font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant);margin-top:12px}.maker-strip md-text-button{white-space:nowrap}
.about-section{padding-block:48px;background:var(--md-sys-color-surface-container-low)}.about-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:64px}.about-grid h2{font:var(--type-headline-large);margin-top:16px}.about-intro{font:var(--type-body-large);color:var(--md-sys-color-on-surface-variant);margin-top:24px}.about-grid>div>md-text-button{margin-top:16px;margin-left:-12px}.about-info article{border-top:1px solid var(--md-sys-color-outline-variant);padding:24px 0}.about-info article:first-child{border-top:0;padding-top:0}.about-label{font:var(--type-label-medium);color:var(--md-sys-color-primary)}.about-info h3{font:var(--type-title-large);margin-top:12px}.about-info p{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant);margin-top:12px}.about-info small{display:block;font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant);margin-top:8px}.award-row{display:flex;justify-content:space-between;gap:16px;align-items:center}.award-row md-text-button{flex-shrink:0}.personal-note{padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant);font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant)}.note-divider{padding:0 12px}
.contact-section{margin-top:48px;margin-bottom:48px;border-radius:28px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);padding:40px}.contact-section .eyebrow{color:inherit}.contact-heading{margin-top:16px}.contact-heading h2{font:var(--type-display-small)}.contact-heading .blue{color:inherit}.contact-bottom{display:flex;justify-content:space-between;gap:32px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-on-primary-container) 24%,transparent);padding-top:24px;margin-top:24px}.contact-bottom>p{font:var(--type-body-medium)}.contact-links>a{display:flex;align-items:center;gap:24px;min-height:48px;font:var(--type-title-large);overflow-wrap:anywhere}.contact-links>div{display:flex;align-items:center;justify-content:space-between;gap:24px;font:var(--type-body-large);min-height:48px}.contact-links>div>a{display:inline-flex;align-items:center;min-height:48px}.contact-links md-text-button{--md-text-button-label-text-color:var(--md-sys-color-on-primary-container)}.footer{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid var(--md-sys-color-outline-variant);padding-block:16px;font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant)}.footer a{min-height:48px;display:inline-flex;align-items:center}.footer a:hover{color:var(--md-sys-color-primary)}
md-dialog{width:min(720px,calc(100vw - 48px));max-height:calc(100svh - 48px);--md-dialog-container-shape:28px}.project-dialog [slot=headline]{font:var(--type-headline-small)}.dialog-meta{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant)}.dialog-callout{font:var(--type-title-small);background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:8px;padding:16px;margin-top:16px}.dialog-section{margin-top:24px;border-top:1px solid var(--md-sys-color-outline-variant);padding-top:24px}.dialog-section h3{font:var(--type-title-medium)}.dialog-section p{font:var(--type-body-large);color:var(--md-sys-color-on-surface-variant);margin-top:12px}.dialog-formula{font:var(--type-body-medium);font-family:Consolas,monospace;display:block;padding:16px;background:var(--md-sys-color-surface-container-highest);border-radius:8px;overflow-wrap:anywhere;margin-top:16px}.dialog-sources{display:flex;flex-wrap:wrap;margin-top:24px;gap:8px}.dialog-sources md-text-button{margin-left:-12px}.award-dialog{width:min(600px,calc(100vw - 48px))}.award-dialog img{width:100%;height:auto}.dialog-open{overflow:hidden}.snackbar{position:fixed;bottom:24px;left:calc(50% + 40px);transform:translate(-50%,16px);opacity:0;pointer-events:none;z-index:60;min-height:48px;border-radius:4px;padding:14px 16px;font:var(--type-body-medium);background:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);box-shadow:0 3px 5px color-mix(in srgb,var(--md-sys-color-shadow) 20%,transparent);transition:opacity .15s,transform .15s}.snackbar.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1600px){.hero{padding:64px;gap:64px}.wrap{width:min(1280px,calc(100% - 96px))}}
@media(max-width:1199px){.hero{padding:32px;gap:32px;grid-template-columns:minmax(0,1fr) 224px}.hero-profile{width:224px}.portrait-wrap,.portrait-wrap img{width:208px;height:208px}.hero-title{font:var(--type-display-medium)}.project-copy h3{font:var(--type-headline-medium)}.project-summary{font:var(--type-body-medium)}.project-role{font:var(--type-body-small)}.skills-layout{gap:24px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.about-grid{gap:32px}.signal-chip{font:var(--type-label-medium);padding:12px 8px}.signal-chip small{font:var(--type-label-small)}.signal-line{width:16px}.visual-stats{gap:8px}.visual-stats strong{font:var(--type-headline-small)}.proof-grid>div{padding:20px}.proof-grid strong{font:var(--type-title-medium)}.project-copy .project-meta{align-items:start;flex-wrap:wrap}.maker-strip{grid-template-columns:128px 1fr}.maker-strip img{width:128px}.maker-strip>md-text-button{grid-column:2;justify-self:start;margin-top:-16px}}
@media(max-width:839px){body{padding-left:0;padding-bottom:80px}.navigation{left:0;right:0;top:auto;bottom:0;width:100%;height:80px;flex-direction:row;justify-content:space-around;align-items:center;padding:0;gap:0;box-shadow:0 -1px 0 var(--md-sys-color-outline-variant)}.navigation a{flex:1;width:auto;min-height:64px}.nav-wrap{padding-inline:24px}.wrap{width:calc(100% - 48px)}.snackbar{bottom:96px;left:50%;width:max-content;max-width:calc(100% - 32px)}.hero{grid-template-columns:minmax(0,1fr) 192px;padding:32px 24px;gap:24px}.hero-profile{width:192px}.portrait-wrap,.portrait-wrap img{width:176px;height:176px}.hero-title{font:var(--type-display-small)}.hero h1{font:var(--type-title-large)}.profile-caption strong{font:var(--type-title-medium)}.profile-caption span{font:var(--type-body-small)}.proof-grid{gap:12px}.proof-grid>div{padding:16px}.proof-label{font:var(--type-label-small)}.proof-grid strong{font:var(--type-title-small)}.proof-grid strong.number{font:var(--type-headline-large)}.section{padding-block:48px}.section-head{gap:24px}.section-head h2{font:var(--type-headline-medium)}.section-head h2 .soft{display:block}.section-note{display:none}.project-pair{gap:16px}.project-card{padding:16px}.project-card h3{font:var(--type-headline-small)}.robot-visual,.iot-visual{margin-block:16px;padding:12px;height:144px}.signal-chip{padding:12px 6px}.signal-chip small{font-size:11px}.signal-line{width:12px}.iot-visual{gap:8px}.data-stream{width:64px}.data-stream span{font-size:11px}.water-gauge{width:56px}.mini-dashboard{width:88px}.card-bottom{flex-wrap:wrap}.featured-project{grid-template-columns:1fr}.track-art{max-height:320px}.skills-layout{grid-template-columns:1fr}.ai-card{padding:24px}.ai-card h3 br{display:none}.ai-loop{display:flex;gap:8px}.ai-loop b:nth-child(4){display:block}.ai-loop span{flex:1}.toolbox-grid{grid-template-columns:1fr;gap:24px}.about-grid{grid-template-columns:1fr;gap:32px}.about-grid h2 br{display:none}.contact-section{padding:32px}.contact-bottom{flex-direction:column;gap:24px}.contact-links{max-width:400px}.chain-detail{grid-template-columns:1fr;gap:16px;min-height:160px}.chain md-secondary-tab{--md-secondary-tab-label-text-size:14px}.footer{gap:16px}.brand-label>span{display:none}}
@media(max-width:599px){.wrap{width:calc(100% - 32px)}.nav-wrap{padding-inline:16px;gap:12px}.brand{gap:12px}.brand-mark{width:32px;height:32px;font:var(--type-title-medium)}.brand-label{font:var(--type-title-large)}.nav-download{min-width:0;--md-filled-tonal-button-leading-space:16px;--md-filled-tonal-button-trailing-space:16px}.nav-download svg{display:none}.nav-actions{gap:0}.hero{margin-top:16px;grid-template-columns:1fr;padding:24px;gap:24px}.hero .eyebrow{font:var(--type-label-medium)}.hero h1{margin-top:20px}.hero-title{font:var(--type-display-medium);letter-spacing:0;margin-top:16px}.hero-intro{font:var(--type-body-large);margin-top:24px}.hero-profile{grid-row:1;display:flex;align-items:center;justify-self:start;width:auto;gap:16px}.portrait-wrap,.portrait-wrap img{width:80px;height:80px}.profile-caption{margin-top:0;text-align:left}.profile-caption strong{font:var(--type-title-large)}.profile-caption span{font:var(--type-body-small);margin-top:8px}.availability{font:var(--type-body-small)}.proof-strip{padding-top:16px}.proof-grid{grid-template-columns:1fr 1fr;gap:12px}.proof-grid>div:last-child{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center}.proof-grid>div:last-child .proof-label{margin:0}.proof-grid>div:last-child strong{font:var(--type-title-medium)}.proof-label{font:var(--type-label-small);margin-bottom:8px}.proof-grid strong.number{font:var(--type-headline-large)}.section-head h2{font:var(--type-headline-small)}.section-head .eyebrow{font:var(--type-label-medium);margin-bottom:12px}.project-copy{padding:24px}.project-copy h3{font:var(--type-headline-medium)}.project-copy h3 br{display:none}.project-summary{font:var(--type-body-large)}.project-role{font:var(--type-body-medium)}.project-visual{padding:16px}.visual-footer{flex-wrap:wrap;gap:4px}.visual-stats{margin-top:16px;padding-top:16px}.visual-stats strong{font:var(--type-headline-small)}.visual-stats small{font:var(--type-label-small)}.project-pair{grid-template-columns:1fr;gap:16px;margin-top:16px}.project-card{padding:24px}.project-card h3{font:var(--type-headline-medium)}.signal-chip{font:var(--type-label-medium);padding:16px 12px}.signal-line{width:24px}.robot-visual,.iot-visual{height:152px;margin-block:24px}.water-gauge{width:64px}.mini-dashboard{width:104px}.data-stream{width:80px}.card-bottom{flex-wrap:nowrap}.chain-section{padding-block:32px}.chain md-secondary-tab{--md-secondary-tab-label-text-size:12px;--md-secondary-tab-label-text-tracking:0px;--md-secondary-tab-container-height:48px}.chain-detail{padding-top:24px;gap:12px}.chain-detail p{font:var(--type-body-medium)}.skill-row{gap:16px}.skill-row p{font:var(--type-body-large)}.ai-card h3{font:var(--type-headline-small)}.ai-loop span{font:var(--type-label-small);padding:8px 4px}.toolbox summary{padding:16px;font:var(--type-title-small)}.toolbox-grid{padding:0 16px 24px}.maker-strip{grid-template-columns:96px 1fr;gap:16px;padding-bottom:32px}.maker-strip img{width:96px;height:112px}.maker-strip h3{font:var(--type-title-medium);margin-top:8px}.maker-strip .eyebrow{font:var(--type-label-small)}.maker-strip p:not(.eyebrow){font:var(--type-body-small);margin-top:8px}.maker-strip>md-text-button{margin-top:-8px;margin-left:-12px}.about-section{padding-block:32px}.about-grid h2{font:var(--type-headline-medium)}.award-row{display:block}.award-row md-text-button{margin-top:12px;margin-left:-12px}.contact-section{padding:24px;margin-block:32px}.contact-heading h2{font:var(--type-headline-medium)}.contact-links>a{font:var(--type-title-medium);gap:8px}.contact-links>div{font:var(--type-body-medium);gap:12px}.contact-bottom>p{font:var(--type-body-medium)}.footer{flex-wrap:wrap;padding-block:12px;gap:8px}.footer>a:nth-child(2){display:none}.footer>a:last-child{margin-left:auto}.footer>span{font:var(--type-label-small)}md-dialog{width:calc(100vw - 32px);max-height:calc(100svh - 32px)}.award-dialog{width:calc(100vw - 32px)}.dialog-section p{font:var(--type-body-medium)}}
@media(max-width:359px){.hero-title{font:var(--type-display-small)}.hero{padding:20px}.hero-profile{gap:12px}.profile-caption strong{font:var(--type-title-medium)}.profile-caption span{font:var(--type-label-small)}.portrait-wrap,.portrait-wrap img{width:64px;height:64px}.project-copy,.project-card{padding:16px}.signal-chip{padding:12px 8px}.signal-line{width:16px}.ai-loop{gap:4px}.ai-loop span{padding-inline:2px}.nav-download{--md-filled-tonal-button-label-text-size:12px}.brand-label{font:var(--type-title-medium)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

@media(min-width:600px) and (max-width:839px){body{padding-left:80px;padding-bottom:0}.navigation{width:80px;height:auto;top:0;bottom:0;right:auto;flex-direction:column;justify-content:flex-start;gap:12px;padding-top:104px;box-shadow:none}.navigation a{flex:none;width:72px}.snackbar{bottom:24px;left:calc(50% + 40px)}}

/* Portfolio evidence uses the same MD3 roles, shapes and typography. */
.architecture-section{padding-top:32px}.architecture-section md-tabs{--md-secondary-tab-container-height:48px;border-bottom:1px solid var(--md-sys-color-outline-variant)}#architecture-panel{padding-top:28px}.architecture-intro h3{font:var(--type-headline-small)}.architecture-intro>p{color:var(--md-sys-color-on-surface-variant);margin-top:12px}.scope-line{display:block;margin-top:12px;font:var(--type-label-large);color:var(--md-sys-color-primary)}.architecture-flow{list-style:none;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:28px 0}.architecture-flow li{position:relative;padding:24px;background:var(--md-sys-color-surface-container);border-radius:12px}.flow-number{display:block;font:var(--type-label-medium);color:var(--md-sys-color-primary);margin-bottom:16px}.architecture-flow strong{font:var(--type-title-medium)}.architecture-flow p{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant);margin-top:8px}.architecture-case{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:24px;padding:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.architecture-case h4{font:var(--type-title-small);color:var(--md-sys-color-primary);margin-bottom:12px}.architecture-case p{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant)}.dialog-project-image{width:100%;max-height:280px;object-fit:cover;border-radius:12px;margin-top:24px}.capability-evidence{margin-top:32px}.capability-evidence h3{font:var(--type-title-large);margin-bottom:16px}.capability-table{border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;overflow:hidden}.capability-table table{width:100%;border-collapse:collapse;font:var(--type-body-medium)}.capability-table th,.capability-table td{padding:20px;text-align:left;vertical-align:top;border-bottom:1px solid var(--md-sys-color-outline-variant)}.capability-table thead{background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface-variant)}.capability-table tbody th{font:var(--type-title-small);width:25%}.capability-table tbody tr:last-child>*{border-bottom:0}.game-build-details{margin-top:24px}.game-build-details .toolbox-grid{margin-top:0}
@media(max-width:839px){.architecture-flow{grid-template-columns:repeat(2,minmax(0,1fr))}.architecture-case{grid-template-columns:1fr;gap:24px}.capability-table th,.capability-table td{padding:16px}}
@media(max-width:599px){.architecture-flow{gap:12px}.architecture-flow li{padding:16px}.architecture-intro h3{font:var(--type-title-large)}.capability-table thead{display:none}.capability-table table,.capability-table tbody,.capability-table tr,.capability-table td,.capability-table th{display:block;width:100%!important}.capability-table tbody tr{padding:16px;border-bottom:1px solid var(--md-sys-color-outline-variant)}.capability-table tbody tr:last-child{border-bottom:0}.capability-table tbody tr>*{padding:0;border:0}.capability-table tbody td{margin-top:8px}.capability-table tbody td:last-child{color:var(--md-sys-color-primary);font:var(--type-label-medium)}.architecture-section md-secondary-tab{--md-secondary-tab-label-text-size:12px}}
.hero{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:40px}.hero-title{font:var(--type-display-medium)}.field-profile{width:100%;align-self:stretch;display:flex;flex-direction:column;justify-content:center}.field-profile>img{width:100%;height:340px;object-fit:cover;border-radius:16px}.field-profile .profile-caption{text-align:left;margin-top:16px}.field-profile .profile-caption strong{font:var(--type-title-medium)}
.evidence-section{display:grid;grid-template-columns:minmax(0,1fr) 220px;align-items:center;gap:48px;padding:40px;margin-top:32px;background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border-radius:28px}.evidence-copy .eyebrow{color:inherit;margin-bottom:16px}.evidence-copy p:not(.eyebrow){margin-top:16px;max-width:680px}.evidence-copy md-outlined-button{margin-top:24px}.certificate-preview{padding:12px;background:var(--md-sys-color-surface);border-radius:12px}.certificate-preview img{width:100%;height:auto}
.field-gallery{padding:0;justify-content:flex-start;background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface)}.field-gallery>img{width:100%;height:360px;object-fit:cover}.gallery-caption{padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:8px;font:var(--type-label-large)}.gallery-caption>div{display:flex}.field-gallery .visual-stats{margin:0;padding:24px;gap:12px;border-color:var(--md-sys-color-outline-variant)}.project-photo{margin:24px 0;overflow:hidden;border-radius:12px;background:var(--md-sys-color-surface-container-low)}.project-photo img{height:240px;width:100%;object-fit:cover}.robot-card .project-photo img{object-position:center 40%}.iot-card .project-photo img{object-position:center 30%}.project-photo figcaption{padding:12px 16px;font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant)}
.engineering-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}.engineering-grid article{padding:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.engineering-grid h3{font:var(--type-title-large);margin-top:12px}.engineering-grid p:not(.eyebrow){margin-top:16px;color:var(--md-sys-color-on-surface-variant)}.module-note{display:block;margin-top:20px;font:var(--type-label-medium);color:var(--md-sys-color-primary);overflow-wrap:anywhere}
.game-overview{display:grid;grid-template-columns:1fr 280px;gap:32px}.game-overview h3{font:var(--type-title-large)}.game-overview p{margin-top:16px;color:var(--md-sys-color-on-surface-variant)}.game-controls-note{background:var(--md-sys-color-surface-container);padding:24px;border-radius:12px}.demo-toolbar{display:flex;flex-wrap:wrap;gap:12px;margin-block:24px}.game-stage{min-height:360px;background:var(--md-sys-color-surface-container-high);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;overflow:hidden;display:grid;place-items:center}.demo-placeholder{text-align:center;padding:48px 24px}.demo-placeholder>span{font:var(--type-display-medium);color:var(--md-sys-color-primary)}.demo-placeholder h3{font:var(--type-title-large);margin-block:16px}.demo-placeholder p{color:var(--md-sys-color-on-surface-variant)}.game-stage iframe{display:block;width:100%;height:660px;border:0}.game-stage:fullscreen{border-radius:0}.game-stage:fullscreen iframe{height:100vh}.demo-note{margin-top:12px;font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant)}
.practice-section{padding-block:24px 64px}.practice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.practice-grid article{border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;overflow:hidden}.practice-grid img{width:100%;height:240px;object-fit:cover}.practice-grid article:first-child img{object-position:center 45%}.practice-grid article:last-child img{object-fit:contain;background:var(--md-sys-color-surface-container-low)}.practice-grid h3{font:var(--type-title-large);padding:20px 20px 0}.practice-grid p{padding:12px 20px 24px;color:var(--md-sys-color-on-surface-variant);font:var(--type-body-medium)}
@media(max-width:1199px){.hero{gap:24px}.field-profile>img{height:300px}.hero-title{font:var(--type-display-small)}.gallery-caption{flex-wrap:wrap}.game-overview{grid-template-columns:1fr 240px}}
@media(max-width:839px){.hero{grid-template-columns:1fr}.field-profile>img{height:300px}.field-profile{grid-row:auto;display:block}.evidence-section{padding:24px;gap:24px;grid-template-columns:1fr 160px}.engineering-grid{grid-template-columns:1fr}.game-overview{grid-template-columns:1fr}.practice-grid{grid-template-columns:1fr 1fr}.game-stage iframe{height:560px}}
@media(max-width:599px){.hero{gap:24px}.field-profile>img{height:220px}.field-profile .profile-caption span{font:var(--type-body-medium)}.evidence-section{grid-template-columns:1fr;padding:24px}.certificate-preview{width:160px;justify-self:center}.evidence-copy h2{font:var(--type-headline-medium)}.field-gallery>img{height:240px}.gallery-caption{padding:12px 16px}.engineering-grid article{padding:20px}.practice-grid{grid-template-columns:1fr}.practice-grid img{height:260px}.game-stage{min-height:280px}.game-stage iframe{height:500px}.demo-placeholder{padding:32px 16px}.demo-placeholder>span{font:var(--type-display-small)}.game-controls-note{padding:20px}.project-photo img{height:240px}}

/* Final interaction and rhythm refinements. */
.san-overview{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:40px}.san-product-copy h3{font:var(--type-headline-medium);margin-top:20px}.san-product-copy>p{font:var(--type-body-large);line-height:1.8;color:var(--md-sys-color-on-surface-variant);margin-top:16px}.san-product-copy>md-text-button{margin-top:20px;margin-left:-12px}.san-module-list{padding:24px;background:var(--md-sys-color-surface-container-low);border-radius:16px}.san-module-list h3{font:var(--type-title-large)}.san-module-list ul{list-style:none;padding:0;margin:16px 0 0}.san-module-list li{display:grid;grid-template-columns:112px minmax(0,1fr);gap:16px;padding:12px 0;border-bottom:1px solid var(--md-sys-color-outline-variant);font:var(--type-body-medium)}.san-module-list li:last-child{border-bottom:0;padding-bottom:0}.san-module-list strong{font:var(--type-title-small)}.san-module-list li>span{color:var(--md-sys-color-on-surface-variant)}.san-engineering{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:32px}.san-engineering article{padding:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:16px}.san-engineering h3{font:var(--type-title-large);margin-top:12px}.san-engineering p{font:var(--type-body-medium);line-height:1.7;color:var(--md-sys-color-on-surface-variant);margin-top:16px}.san-flow-demo{margin-top:32px;padding:28px;background:var(--md-sys-color-surface-container-low);border-radius:16px}.san-demo-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:20px}.san-demo-heading h3{font:var(--type-title-large)}.san-demo-heading>span{font:var(--type-label-medium);color:var(--md-sys-color-on-surface-variant)}#san-tabs{--md-secondary-tab-container-color:var(--md-sys-color-surface-container-low);border-bottom:1px solid var(--md-sys-color-outline-variant)}#san-flow-panel{padding-top:24px}#san-flow-description{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant)}.san-step-markers{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:24px}.san-step-mark{height:4px;background:var(--md-sys-color-outline-variant);border-radius:4px}.san-step-mark.current,.san-step-mark.complete{background:var(--md-sys-color-primary)}.san-step-content{padding-top:24px;min-height:152px}#san-step-count{font:var(--type-label-large);color:var(--md-sys-color-primary)}#san-step-title{font:var(--type-headline-small);margin-top:12px}#san-step-text{font:var(--type-body-large);color:var(--md-sys-color-on-surface-variant);margin-top:12px;max-width:800px;line-height:1.7}.san-step-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}
@media(max-width:839px){.san-overview{grid-template-columns:1fr;gap:24px}.san-engineering{grid-template-columns:1fr}.san-engineering article{padding:20px}.san-demo-heading{flex-wrap:wrap;gap:8px}.san-step-content{min-height:188px}}
@media(max-width:599px){.san-product-copy h3{font:var(--type-headline-small)}.san-product-copy h3 br{display:none}.san-module-list{padding:20px}.san-module-list li{grid-template-columns:88px minmax(0,1fr);gap:12px}.san-flow-demo{padding:20px}.san-engineering{gap:16px}.san-step-content{min-height:208px}#san-step-title{font:var(--type-title-large)}#san-step-text{font:var(--type-body-medium)}#san-tabs md-secondary-tab{--md-secondary-tab-label-text-size:12px}.san-step-actions>*{flex:1}.san-demo-heading>span{font:var(--type-label-small)}}
.reading-progress{position:fixed;top:64px;left:80px;right:0;height:2px;z-index:40;pointer-events:none}.reading-progress span{display:block;width:100%;height:100%;background:var(--md-sys-color-primary);transform:scaleX(0);transform-origin:left}.section-head{align-items:center}.project-card,.featured-project,.engineering-grid article,.practice-grid article{border-radius:16px}.project-card{border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-lowest);padding:28px}.project-photo{margin-block:20px}.project-card .project-meta{min-height:24px}.project-card h3{font:var(--type-headline-small);line-height:1.5}.project-card .project-summary{line-height:1.8}.project-card .project-tags{margin-bottom:20px}.featured-project .project-copy{padding:32px}.gallery-thumbnails{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0 20px 20px}.gallery-thumbnails button{border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface);border-radius:12px;cursor:pointer;padding:4px;min-height:88px;color:var(--md-sys-color-on-surface-variant);overflow:hidden;transition:background 100ms,border-color 100ms}.gallery-thumbnails button img{width:100%;height:64px;object-fit:cover;border-radius:8px}.gallery-thumbnails button span{display:block;padding:8px 0 4px;font:var(--type-label-medium)}.gallery-thumbnails button:hover{background:var(--md-sys-color-surface-container-high)}.gallery-thumbnails button[aria-pressed=true]{border:2px solid var(--md-sys-color-primary);padding:3px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.photo-dialog{width:min(1040px,calc(100vw - 48px))}.photo-dialog [slot=content]{padding-top:0}.photo-dialog img{width:100%;max-height:70svh;object-fit:contain;border-radius:12px}.photo-dialog p{margin-top:16px;font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant)}
.evidence-section{margin-top:0;margin-bottom:32px}.chain-section{padding-block:0;background:var(--md-sys-color-surface)}.control-disclosure{border-block:1px solid var(--md-sys-color-outline-variant)}.control-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 0;cursor:pointer;list-style:none;font:var(--type-title-large)}.control-disclosure>summary::-webkit-details-marker{display:none}.control-disclosure>summary small{display:block;font:var(--type-label-medium);color:var(--md-sys-color-primary);margin-bottom:8px}.control-disclosure[open]>summary .toolbox-toggle{transform:rotate(45deg)}.control-disclosure>.wrap{width:100%;padding-bottom:32px}.control-disclosure .section-head{display:none}.control-disclosure .chain{--md-secondary-tab-container-color:var(--md-sys-color-surface)}.game-stage{position:relative}.demo-placeholder{width:100%;min-height:360px;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.demo-placeholder>span:not(.demo-badge){font:var(--type-display-large);letter-spacing:1px;color:inherit}.demo-placeholder>.demo-badge{font:var(--type-label-large);padding:8px 16px;background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:9999px;margin-bottom:24px}.demo-placeholder p{color:inherit;opacity:.85;max-width:520px}.demo-loading::before{content:'正在加载试玩…';position:absolute;inset:0;z-index:1;display:grid;place-items:center;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface);font:var(--type-title-medium)}.practice-grid a{display:block;overflow:hidden}.practice-grid a:focus-visible{outline-offset:-4px}.practice-grid a:hover{background:var(--md-sys-color-surface-container)}.toolbox-toggle{transition:transform 100ms}.architecture-flow li{min-height:154px}.hero-intro{line-height:1.8;max-width:640px}.about-intro{line-height:1.8}.section{padding-block:56px}.practice-section{padding-top:0}.project-tags span{font:var(--type-label-medium)}
@media(max-width:839px){.project-card{padding:24px}.featured-project .project-copy{padding:24px}.architecture-flow li{min-height:132px}.control-disclosure>summary{font:var(--type-title-medium)}}
@media(max-width:599px){.reading-progress{left:0}.section{padding-block:40px}.project-card{padding:20px}.featured-project .project-copy{padding:20px}.gallery-thumbnails{gap:8px;padding:0 16px 16px}.gallery-thumbnails button img{height:56px}.project-card h3{font:var(--type-headline-small)}.photo-dialog{width:calc(100vw - 24px)}.hero-intro{line-height:1.75}.demo-placeholder{min-height:300px}.demo-placeholder>span:not(.demo-badge){font:var(--type-display-small)}.demo-toolbar{gap:8px}.demo-toolbar md-filled-button,.demo-toolbar md-outlined-button{flex:1}.demo-toolbar md-text-button{flex:1}.project-card .card-bottom{flex-wrap:wrap}.evidence-section{margin-bottom:0}.architecture-section{padding-top:40px}}

/* Compact MD3 app bar: desktop navigation integrated, adaptive rail/bar. */
.site-header{height:72px;background:var(--md-sys-color-surface);border-bottom:1px solid transparent;transition:background 150ms,border-color 150ms}.site-header.scrolled{background:var(--md-sys-color-surface-container-low);border-bottom-color:var(--md-sys-color-outline-variant)}.nav-wrap{height:72px;width:min(1280px,100%);margin:auto;padding-inline:32px;gap:24px}.brand{gap:12px;flex-shrink:0;min-height:48px}.brand-mark{width:40px;height:40px;overflow:hidden;border-radius:12px;background:var(--md-sys-color-primary-container)}.brand-mark img{width:40px;height:40px;object-fit:cover;object-position:center 24%}.brand-label{display:block;font:var(--type-title-medium);letter-spacing:.2px}.brand-label>span{display:block;font:var(--type-label-small);color:var(--md-sys-color-on-surface-variant);margin-top:2px;letter-spacing:.2px}.nav-actions{gap:8px;flex-shrink:0}.reading-progress{top:72px}.field-records{padding-top:0}.field-photo-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px}.field-photo{margin:0;min-width:0;overflow:hidden;border-radius:16px;background:var(--md-sys-color-surface-container-low)}.field-photo button{display:block;cursor:zoom-in;padding:0;width:100%;border:0;background:var(--md-sys-color-surface-container);overflow:hidden;min-height:48px}.field-photo img{width:100%;height:228px;object-fit:cover;transition:transform 300ms var(--md-sys-motion-easing-standard)}.field-photo button:hover img{transform:scale(1.025)}.field-photo button:focus-visible{outline-offset:-4px}.field-photo figcaption{padding:16px 20px}.field-photo figcaption strong{font:var(--type-title-medium);display:block}.field-photo figcaption span{font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant);display:block;margin-top:4px}.field-photo-wide{grid-column:span 2}.field-photo-wide img{height:340px}.field-photo-tall{grid-column:3;grid-row:span 2;display:flex;flex-direction:column}.field-photo-tall button{flex:1}.field-photo-tall img{height:100%;min-height:340px;object-fit:cover;object-position:35% center}.field-photo:nth-child(3) img{object-position:center 30%}
@media(min-width:1100px){body{padding-left:0}.nav-wrap{display:grid;grid-template-columns:auto 1fr auto}.navigation{position:static;width:auto;height:48px;padding:0;flex-direction:row;gap:4px;background:transparent;justify-content:center;z-index:auto}.navigation a{width:auto;min-width:64px;min-height:48px;border-radius:9999px;padding:0 16px;display:flex;font:var(--type-label-large);position:relative;transition:background 100ms,color 100ms}.navigation .nav-icon{display:none}.navigation a.active{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.navigation a:hover{background:var(--md-sys-color-surface-container-high)}.navigation a.active:hover{background:var(--md-sys-color-secondary-container)}.reading-progress{left:0}.snackbar{left:50%}.skip{left:24px}}
@media(min-width:600px) and (max-width:1099px){body{padding-left:80px;padding-bottom:0}.navigation{position:fixed;left:0;top:0;bottom:0;right:auto;width:80px;height:auto;padding-top:104px;display:flex;flex-direction:column;justify-content:flex-start;gap:12px;background:var(--md-sys-color-surface-container-low);box-shadow:none}.navigation a{flex:none;width:72px}.brand-label>span{display:block}.reading-progress{left:80px}.snackbar{left:calc(50% + 40px)}}
@media(max-width:839px){.field-photo-grid{grid-template-columns:1fr 1fr;gap:16px}.field-photo-tall{grid-column:auto;grid-row:auto;display:block}.field-photo-wide{grid-column:1/-1}.field-photo-wide img{height:300px}.field-photo-tall img{height:228px;min-height:0;object-position:center center}.field-photo:nth-child(4){grid-column:1/-1}.field-photo:nth-child(4) img{height:300px}.nav-wrap{padding-inline:24px}}
@media(max-width:599px){.site-header,.nav-wrap{height:64px}.nav-wrap{width:100%;padding-inline:16px;gap:8px}.brand{gap:8px}.brand-mark,.brand-mark img{width:36px;height:36px}.brand-label{font:var(--type-title-medium)}.brand-label>span{display:none}.nav-actions{gap:0}.nav-download{min-width:0;--md-filled-tonal-button-leading-space:12px;--md-filled-tonal-button-trailing-space:12px;--md-filled-tonal-button-label-text-size:12px}.reading-progress{top:64px;left:0}.field-photo-grid{gap:16px}.field-photo img,.field-photo-tall img{height:192px}.field-photo-wide img,.field-photo:nth-child(4) img{height:228px}.field-photo figcaption{padding:12px}.field-photo figcaption strong{font:var(--type-title-small)}.field-photo figcaption span{font:var(--type-label-small)}.field-photo-tall img{object-position:35% center}.field-records .section-head h2 .soft{display:block}}

/* Project reader: overview, evidence, summary and indexed chapters. */
.project-dialog{width:min(1120px,calc(100vw - 64px));--md-dialog-container-shape:28px;--md-dialog-headline-size:24px}.project-dialog [slot=headline]{font:var(--type-headline-small);padding-bottom:16px;border-bottom:1px solid var(--md-sys-color-outline-variant)}.project-dialog [slot=actions]{border-top:1px solid var(--md-sys-color-outline-variant)}.detail-intro>.eyebrow{margin-bottom:12px}.detail-lead{font:var(--type-title-large);line-height:1.7;margin-top:20px;max-width:920px;color:var(--md-sys-color-on-surface)}.detail-intro .dialog-callout{font:var(--type-title-medium);line-height:1.6;border-radius:12px}.detail-hero{margin:28px 0 0;background:var(--md-sys-color-surface-container-high);overflow:hidden;border-radius:16px}.detail-hero img{width:100%;height:340px;object-fit:cover}.detail-hero figcaption{font:var(--type-body-small);padding:12px 20px;color:var(--md-sys-color-on-surface-variant)}.detail-hero-robot img,.detail-hero-iot img{height:320px;object-fit:contain}.detail-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:36px;align-items:start;margin-top:32px}.detail-sidebar{position:sticky;top:0;background:var(--md-sys-color-surface-container-low);border-radius:16px;padding:20px}.detail-sidebar h3{font:var(--type-title-medium)}.detail-sidebar dl{margin:16px 0 0}.detail-sidebar dl>div{padding:12px 0;border-bottom:1px solid var(--md-sys-color-outline-variant)}.detail-sidebar dl>div:last-child{border-bottom:0}.detail-sidebar dt{font:var(--type-label-medium);color:var(--md-sys-color-on-surface-variant)}.detail-sidebar dd{font:var(--type-body-medium);line-height:1.7;margin:4px 0 0;overflow-wrap:anywhere}.detail-toc{margin-top:24px;border-top:1px solid var(--md-sys-color-outline-variant);padding-top:20px}.detail-toc h3{margin-bottom:12px}.detail-toc a{display:flex;align-items:baseline;gap:12px;min-height:48px;font:var(--type-body-small);line-height:1.7;padding:12px 8px;border-radius:8px;color:var(--md-sys-color-on-surface-variant)}.detail-toc a>span{font:var(--type-label-small);color:var(--md-sys-color-primary)}.detail-toc a:hover,.detail-toc a:focus-visible{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.detail-articles{min-width:0}.detail-articles .dialog-section{padding-top:28px;margin-top:28px;scroll-margin-top:20px}.detail-articles .dialog-section:first-child{margin-top:0;padding-top:0;border-top:0}.detail-section-heading{display:flex;align-items:baseline;gap:12px}.detail-section-heading>span{font:var(--type-label-medium);color:var(--md-sys-color-primary)}.detail-section-heading h3{font:var(--type-title-large);line-height:1.5}.detail-articles .dialog-section p{line-height:1.9}.dialog-section:focus{outline:none}.formula-label{margin-top:20px;font:var(--type-label-medium);color:var(--md-sys-color-on-surface-variant)}.detail-references{margin-top:32px;padding:24px;background:var(--md-sys-color-surface-container-low);border-radius:16px}.detail-references h3{font:var(--type-title-medium)}.detail-references p{font:var(--type-body-medium);color:var(--md-sys-color-on-surface-variant);margin-top:8px}.detail-references .dialog-sources{margin-top:16px}.detail-app-flow{display:flex;align-items:center;justify-content:center;gap:20px;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);padding:32px;border-radius:16px;margin-top:28px}.detail-app-flow span{font:var(--type-title-medium);padding:16px;border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.detail-app-flow b{font-weight:400}.detail-end{margin-top:36px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--md-sys-color-outline-variant);padding-top:16px}.detail-end>span{font:var(--type-label-medium);color:var(--md-sys-color-on-surface-variant)}
@media(max-width:839px){.project-dialog{width:calc(100vw - 32px)}.detail-layout{grid-template-columns:1fr;gap:28px}.detail-sidebar{position:static}.detail-sidebar dl{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.detail-toc{display:none}.detail-lead{font:var(--type-body-large);line-height:1.8}.detail-hero img{height:280px}.detail-app-flow{gap:12px;padding:20px}.detail-app-flow span{font:var(--type-body-medium);padding:12px}}
@media(max-width:599px){.project-dialog{width:calc(100vw - 16px);max-height:calc(100svh - 16px);--md-dialog-container-shape:16px}.project-dialog [slot=headline]{font:var(--type-title-large)}.detail-intro .dialog-callout{font:var(--type-body-medium)}.detail-sidebar{padding:16px}.detail-sidebar dl{gap:0 16px}.detail-hero img,.detail-hero-robot img,.detail-hero-iot img{height:220px}.detail-section-heading h3{font:var(--type-title-medium)}.detail-articles .dialog-section p{line-height:1.85}.detail-app-flow{flex-direction:column;align-items:stretch}.detail-app-flow b{transform:rotate(90deg);text-align:center}.detail-app-flow span{text-align:center}.detail-end{flex-wrap:wrap}.detail-references{padding:20px}.detail-end>span{font:var(--type-label-small)}}
.project-dialog{max-width:min(1120px,calc(100vw - 64px));--md-dialog-container-color:var(--md-sys-color-surface)}.photo-dialog{max-width:min(1040px,calc(100vw - 48px))}
@media(max-width:839px){.project-dialog{max-width:calc(100vw - 32px)}}
@media(max-width:599px){.project-dialog{max-width:calc(100vw - 16px)}.photo-dialog{max-width:calc(100vw - 24px)}}
.detail-hero-car img{object-fit:contain;background:var(--md-sys-color-surface-container-low)}
/* Bridge showcase follows the same MD3 surface, typography and spacing roles. */
.bridge-stage{min-height:0;overflow:hidden}.bridge-preview{position:relative;background:var(--md-sys-color-surface-container-low)}.bridge-preview img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}.bridge-preview-caption{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:18px 24px;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-low)}.bridge-preview-caption span{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.bridge-preview-caption strong{font-size:16px;font-weight:500}.bridge-features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:28px}.bridge-features article{padding:8px 0}.bridge-features h3{font-size:20px;line-height:1.4;margin:10px 0}.bridge-features p{color:var(--md-sys-color-on-surface-variant);font-size:14px;line-height:1.8;margin:0}.detail-hero-bridge img{object-fit:contain;background:var(--md-sys-color-surface-container-low)}
@media(max-width:839px){.bridge-features{gap:16px}.bridge-features h3{font-size:18px}.bridge-preview-caption{align-items:flex-start;flex-direction:column;gap:6px;padding:16px}}
@media(max-width:599px){.bridge-features{grid-template-columns:1fr;gap:12px}.bridge-features article+article{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:20px}.bridge-preview-caption strong{font-size:14px}.bridge-stage iframe{height:500px}}
/* Portfolio layout: consistent editorial grid and compact playable workspaces. */
:root{--portfolio-gap:24px;--portfolio-section:56px}
.section{padding-block:var(--portfolio-section)}
.section-head{margin-bottom:28px;gap:24px}.section-head h2{max-width:780px;line-height:1.35}.section-note{max-width:260px;line-height:1.6}
.project-index{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:28px}.project-index a{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:80px;padding:14px 36px 14px 16px;border-radius:12px;background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);transition:background 100ms}.project-index a:hover{background:var(--md-sys-color-surface-container-high)}.project-index span{font:var(--type-title-medium)}.project-index small{font:var(--type-body-small);color:var(--md-sys-color-on-surface-variant);margin-top:4px;line-height:1.5}.project-index b{position:absolute;right:16px;top:18px;font-weight:400;color:var(--md-sys-color-primary)}
.featured-project{scroll-margin-top:96px;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}.featured-project .project-copy{display:flex;flex-direction:column;justify-content:center;padding:32px}.project-copy .project-summary{line-height:1.8}.project-card{padding:24px}.project-pair{gap:24px}.project-photo{margin:20px 0}.project-photo img{height:232px;object-fit:cover;border-radius:12px}.project-card .card-bottom{min-height:72px}.project-card .project-tags{margin-top:auto;padding-top:20px;margin-bottom:16px}
.san-overview{gap:32px;align-items:start}.san-module-list{padding:24px}.san-engineering{gap:24px}.san-engineering article{background:var(--md-sys-color-surface-container-low);border:0;padding:24px}.san-engineering h3,.bridge-features h3{font:var(--type-title-large)}
.game-section,.bridge-section{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);column-gap:32px;row-gap:20px;align-items:start;grid-template-areas:'heading heading' 'copy preview' 'toolbar preview' 'note preview' 'features features'}
.game-section>.section-head,.bridge-section>.section-head{grid-area:heading;margin-bottom:8px}.game-section>.game-overview,.bridge-section>.game-overview{grid-area:copy;display:block;margin:0}.game-overview h3{font:var(--type-headline-small);line-height:1.5}.game-overview>div>p{line-height:1.8;margin-top:14px}.game-controls-note{margin-top:24px;padding:16px 20px;border-radius:12px;background:var(--md-sys-color-surface-container-low)}.game-controls-note p{font:var(--type-body-small);line-height:1.8;margin-top:8px}.game-overview .project-tags{gap:6px}.game-overview .project-tags span{font:var(--type-label-small);padding:6px 10px}.game-overview md-text-button{margin-top:12px;margin-left:-12px}
.game-section>.demo-toolbar,.bridge-section>.demo-toolbar{grid-area:toolbar;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.game-section>.game-stage,.bridge-section>.game-stage{grid-area:preview;align-self:start;width:100%;min-width:0;min-height:420px}.game-section>.demo-note,.bridge-section>.demo-note{grid-area:note;margin:0;line-height:1.7}.game-section>.game-build-details,.bridge-section>.bridge-features{grid-area:features;margin-top:4px}.game-stage .demo-placeholder{min-height:420px;padding:40px 24px}.game-stage .demo-placeholder>span:not(.demo-badge){font:var(--type-display-medium)}.bridge-preview img{aspect-ratio:4/3;object-fit:cover}.bridge-preview-caption{flex-direction:column;align-items:start;padding:16px 20px;gap:6px}.bridge-preview-caption strong{font:var(--type-title-medium)}.bridge-stage:has(iframe),.game-stage:has(iframe){grid-column:1/-1;grid-row:auto;grid-area:auto}.game-section:has(iframe),.bridge-section:has(iframe){grid-template-areas:'heading heading' 'copy copy' 'toolbar toolbar' 'preview preview' 'note note' 'features features'}.game-section:has(iframe)>.game-overview,.bridge-section:has(iframe)>.game-overview{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:32px}.game-section:has(iframe) .game-controls-note,.bridge-section:has(iframe) .game-controls-note{margin-top:0}.game-section:has(iframe)>.demo-toolbar,.bridge-section:has(iframe)>.demo-toolbar{display:flex;flex-wrap:wrap}.game-stage:fullscreen{width:100%;height:100vh;min-height:100vh;grid-area:auto}.game-stage:fullscreen iframe{height:100vh}.bridge-features{gap:24px}.bridge-features article{padding:24px;border-radius:16px;background:var(--md-sys-color-surface-container-low)}.bridge-features h3{margin-top:12px;margin-bottom:16px}
.field-records .section-head{margin-bottom:24px}.field-photo-grid{gap:16px}.field-photo figcaption{padding:16px 18px}.practice-grid{gap:24px}.practice-grid img{height:240px;object-fit:cover}.practice-grid article{overflow:hidden}.contact-section{margin-top:24px}
@media(max-width:1099px){.game-section,.bridge-section{grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:20px}.project-index{grid-template-columns:repeat(2,minmax(0,1fr))}.game-overview h3{font:var(--type-title-large)}.bridge-preview img{aspect-ratio:3/4}.project-photo img{height:216px}}
@media(max-width:839px){:root{--portfolio-section:44px}.game-section,.bridge-section{display:flex;flex-direction:column;gap:20px}.game-section>*,.bridge-section>*{width:100%}.game-section>.section-head,.bridge-section>.section-head{margin-bottom:4px}.game-section>.game-overview,.bridge-section>.game-overview,.game-section:has(iframe)>.game-overview,.bridge-section:has(iframe)>.game-overview{display:grid;grid-template-columns:1fr;gap:16px}.game-controls-note,.game-section:has(iframe) .game-controls-note,.bridge-section:has(iframe) .game-controls-note{margin-top:0}.game-section>.demo-toolbar,.bridge-section>.demo-toolbar{display:flex;flex-wrap:wrap;gap:8px}.game-section>.game-stage,.bridge-section>.game-stage{min-height:0}.bridge-preview img{aspect-ratio:16/9}.game-stage .demo-placeholder{min-height:320px}.bridge-features{grid-template-columns:1fr;gap:12px}.bridge-features article{padding:20px}.bridge-features article+article{border:0}.san-engineering{gap:12px}.san-engineering article{padding:20px}.featured-project{grid-template-columns:1fr}.section-head{margin-bottom:24px}.project-card{padding:20px}}
@media(max-width:599px){:root{--portfolio-section:36px}.project-index{gap:8px;margin-bottom:20px}.project-index a{min-height:84px;padding:12px 28px 12px 12px}.project-index span{font:var(--type-title-small)}.project-index small{font-size:11px}.project-index b{right:10px;top:12px}.featured-project .project-copy{padding:24px}.project-pair{gap:16px}.project-photo img{height:224px}.project-card .project-tags{margin-top:0;padding-top:0}.game-stage .demo-placeholder>span:not(.demo-badge){font:var(--type-display-small)}.game-stage .demo-placeholder{padding:28px 16px;min-height:280px}.game-section>.demo-toolbar,.bridge-section>.demo-toolbar{display:grid;grid-template-columns:1fr 1fr}.bridge-preview-caption{padding:12px 16px}.bridge-preview-caption strong{font:var(--type-title-small)}.san-module-list li{grid-template-columns:88px minmax(0,1fr);gap:12px}.san-overview{gap:24px}.san-flow-demo{padding:20px}.field-photo-grid{gap:12px}.field-photo figcaption{padding:12px 14px}.practice-grid{gap:16px}.practice-grid img{height:240px}.hero{padding:24px;gap:20px}.hero-intro{margin-top:20px}.hero-actions{gap:8px}.proof-grid>div{padding:16px}.section-head h2{line-height:1.4}.contact-section{margin-top:16px}}
.game-section>.game-stage:has(iframe),.bridge-section>.game-stage:has(iframe){grid-area:preview}
.bridge-preview{width:100%}.game-stage>.demo-placeholder{width:100%}
@media(min-width:840px){.game-section>.game-stage:not(:has(iframe)){height:100%;align-self:stretch}.game-section>.game-stage:not(:has(iframe))>.demo-placeholder{height:100%}}
/* AI-made experiments share a single, secondary portfolio section. */
.ai-works-intro{font:var(--type-body-large);line-height:1.8;color:var(--md-sys-color-on-surface-variant);max-width:840px;margin-bottom:28px}.ai-works-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start}.ai-works-grid>.ai-work-card{display:flex;flex-direction:column;gap:20px;padding:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;background:var(--md-sys-color-surface-container-lowest);min-width:0}.ai-work-card>*{width:100%;min-width:0}.ai-work-card>.section-head{margin:0;display:block}.ai-work-card>.section-head .eyebrow{font:var(--type-label-medium);margin-bottom:8px}.ai-work-card>.section-head h3{font:var(--type-headline-small)}.ai-work-card>.section-head .section-note{display:none}.ai-work-card>.game-overview{display:block!important}.ai-work-card .game-overview h3{font:var(--type-title-medium)}.ai-work-card .game-overview>div>p{font:var(--type-body-medium);line-height:1.8}.ai-work-card .game-controls-note{margin-top:16px!important;padding:16px}.ai-work-card>.demo-toolbar{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}.ai-work-card>.game-stage{min-height:0;height:auto!important}.ai-work-card .demo-placeholder{min-height:324px;height:auto!important;padding:32px 20px}.ai-work-card .demo-placeholder>span:not(.demo-badge){font:var(--type-display-small)}.ai-work-card .demo-placeholder h3{font:var(--type-title-medium)}.ai-work-card .demo-placeholder p{font:var(--type-body-medium)}.ai-work-card .bridge-preview img{aspect-ratio:16/9;object-fit:contain}.ai-work-card .bridge-preview-caption{padding:12px 16px}.ai-work-card .bridge-preview-caption strong{font:var(--type-title-small)}.ai-work-card .toolbox{margin:0}.ai-work-card .bridge-features{grid-template-columns:1fr;margin:0;gap:16px}.ai-work-card .bridge-features article{padding:0;background:transparent}.ai-work-card .bridge-features h3{font:var(--type-title-medium);margin:8px 0}.ai-work-card .bridge-features p{font:var(--type-body-medium)}.ai-work-card:has(iframe){grid-column:1/-1}.ai-work-card:has(iframe)>.game-overview{display:grid!important;grid-template-columns:minmax(0,1fr) 300px;gap:24px}.ai-work-card:has(iframe) .game-controls-note{margin:0!important}.ai-work-card:has(iframe)>.demo-toolbar{display:flex!important;flex-wrap:wrap}.ai-work-card .game-stage:fullscreen{height:100vh!important}
@media(max-width:839px){.ai-works-grid{grid-template-columns:1fr;gap:16px}.ai-works-grid>.ai-work-card{padding:20px}.ai-work-card:has(iframe)>.game-overview{display:block!important}.ai-work-card:has(iframe) .game-controls-note{margin-top:16px!important}.ai-work-card .demo-placeholder{min-height:280px}.ai-works-intro{margin-bottom:24px}}
