@layer tokens{:root{--cat-design:#be4434;--cat-art:#763498;--cat-architecture:#3034a8;--cat-urbanism:#1c5876;--cat-software:#3a6c98;--cat-lamps:#f09902;--grey-50:#f5f5f5;--grey-100:#f0f0f0;--grey-200:#e8e8e8;--grey-300:#d3d3d3;--grey-500:#999;--grey-800:#333;--grey-900:#111;--black-a05:#0000000d;--black-a10:#0000001a;--black-a20:#0003;--black-a30:#0000004d;--black-a60:#0009;--black-a80:#000c;--white-a60:#fff9;--white-a80:#fffc;--link-blue:#0000a3;--hover-red:invert(18%) sepia(49%) saturate(4708%) hue-rotate(336deg) brightness(94%) contrast(95%);--active-purple:invert(18%) sepia(52%) saturate(4747%) hue-rotate(241deg) brightness(63%) contrast(127%);--space-0h:2px;--space-1:4px;--space-2:8px;--space-2h:12px;--space-3:16px;--space-4:24px;--space-5:40px;--hairline:1px;--border:var(--hairline) solid var(--black-a10);--stripe:4px;--gutter:20px;--card-w:200px;--logo-w:180px;--header-bar-h:calc(var(--logo-w) * 47.52 / 184.93 + 1px);--nav-h:40px;--header-h:90px;--min-box:100px;--content-w:800px;--cv-w:690px;--cv-photo:120px;--shadow-pop:0 var(--space-2) var(--space-4) var(--black-a10);--shadow-paper:0 var(--space-0h) var(--space-3) var(--black-a20);--glow-dark:0 0 var(--space-5) var(--black-a80), 0 var(--space-1) var(--space-3) var(--black-a60);--glow-light:0 0 var(--space-5) var(--white-a80), 0 var(--space-1) var(--space-3) var(--white-a60);--font:"Montserrat Variable", "Montserrat fallback", sans-serif;--fs-2xs:9px;--fs-xs:11px;--fs-sm:13px;--fs-md:16px;--fs-lg:20px;--fs-xl:24px;--fs-2xl:28px;--fs-display-sm:42px;--fs-display:72px;--z-base:0;--z-raised:1;--z-header:10;--z-dropdown:20;--z-overlay:30;--radius-sm:2px;--radius-md:8px;--t-fast:.2s;--t-base:.3s;--t-fade:.4s;--t-slow:.6s;--global-max-width:1200px;--simple-padding:16px;--padding-tolerance:min(var(--simple-padding), max(0px, calc(var(--global-max-width) + var(--simple-padding) * 2 - 100vw)));--header-content-width:min(100vw - 2 * var(--gutter), var(--global-max-width));--header-content-inset:max(var(--gutter), calc((100vw - var(--global-max-width)) * .5))}[data-category=Design]{--cat:var(--cat-design)}[data-category=Art]{--cat:var(--cat-art)}[data-category=Architecture]{--cat:var(--cat-architecture)}[data-category=Urbanism]{--cat:var(--cat-urbanism)}[data-category=Software]{--cat:var(--cat-software)}[data-category=Lamps]{--cat:var(--cat-lamps)}}@layer base{body{font-weight:500;font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4,p{margin:0}:root{&::-webkit-scrollbar{width:var(--space-2);height:var(--space-2);border:var(--hairline) solid var(--black-a20);background-color:#000}&::-webkit-scrollbar-thumb{background-color:var(--white-a60);border-radius:var(--space-1)}&::-webkit-scrollbar-track{background:0 0}}}@layer primitives{.stack{flex-direction:column;display:flex}.cluster{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.tag{align-items:center;gap:var(--space-1);padding:var(--hairline) var(--space-2);font-size:var(--fs-xs);border:var(--hairline) solid color-mix(in srgb, currentColor 20%, transparent);border-radius:var(--radius-sm);transition:background-color var(--t-fast), border-color var(--t-fast), color var(--t-fast);font-weight:400;display:inline-flex;&:hover,&.tag--solid{color:#fff;background-color:#000;border-color:#000}&.tag--solid:hover{background-color:var(--grey-800)}}.quiet-link{transition:text-decoration-color var(--t-fast);text-decoration:underline #0000;&:hover{text-decoration-color:currentColor}}.tint-hover{transition:filter var(--t-slow);&[aria-current=page]{filter:var(--active-purple)}&:hover{filter:var(--hover-red)}}}@layer layout{.header{z-index:var(--z-header);background:var(--white-a60);backdrop-filter:blur(var(--space-2));border-bottom:var(--border);padding-top:env(safe-area-inset-top,0px);position:fixed;top:0;left:0;right:0}.header-content{left:var(--header-content-inset);width:var(--header-content-width);justify-content:space-between;align-items:center;display:flex;position:relative}.header-logo img{width:var(--logo-w)}.header-right{position:relative}.nav-toggle{display:none;@media (width<=570px){&.show{align-items:center;display:flex}}}.nav-menu{align-items:center;display:flex;@media (width<=570px){display:none;&.show{right:calc(-1 * var(--header-content-inset));background-color:var(--white-a80);min-width:var(--min-box);z-index:var(--z-dropdown);flex-direction:column;display:flex;position:absolute;top:0}}}.nav-link{min-height:var(--nav-h);padding-inline:var(--space-2);font-size:var(--fs-md);align-items:center;display:inline-flex}.project-layout{max-width:min(var(--global-max-width), 100vw);margin:0 auto}.project-content{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--padding-tolerance)}.project-grid{grid-template-columns:repeat(auto-fill, var(--card-w));justify-content:center;align-items:start;gap:var(--space-3);max-width:calc(6 * var(--card-w) + 5 * var(--space-3));margin:var(--header-h) auto 0;padding:0 var(--space-2);display:grid;&.masonry{grid-auto-rows:1px;grid-auto-flow:dense;row-gap:0}@media (width>=571px){:root.js &:not(.masonry){visibility:hidden}}@media (width<=570px){grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:var(--card-w);scroll-snap-type:x proximity;padding:0 calc(50vw - var(--card-w) / 2) var(--space-3);scrollbar-width:none;justify-content:start;max-width:none;overflow-x:auto;&>.project-card{scroll-snap-align:center}}}}@layer components{.project-card{--card-bg:color-mix(in srgb, var(--cat,var(--grey-100)) 12%, var(--grey-100));--stripe-w:var(--stripe);--img-filter:brightness(.8) contrast(.85) saturate(.75) brightness(1.25);width:var(--card-w);background-color:var(--card-bg);transition:all var(--t-base);position:relative;&:is(:hover,.in-focus){--card-bg:var(--cat);--stripe-w:20%;--img-filter:none;color:#fff}@media (width>=571px){&:hover{transform:scale(1.035)}}& img{width:100%;min-height:var(--min-box);object-fit:cover;filter:var(--img-filter);transition:all var(--t-base)}& h2{font-weight:500;font-size:var(--fs-lg)}& h3{gap:var(--space-1);font-size:var(--fs-xs);align-items:center;font-weight:400;text-decoration:underline;display:flex;& svg{width:1em;height:1em;transition:transform var(--t-slow);transform:rotate(180deg)}&.open svg{transform:none}}& h4{font-size:var(--fs-xs);font-weight:300}& p{font-weight:300;font-size:var(--fs-sm)}}.project-card-content{gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-1);isolation:isolate;position:relative;overflow:hidden;&:before{content:"";width:var(--stripe-w);background-color:var(--cat,transparent);height:100%;transition:width var(--t-base) ease;z-index:var(--z-base);position:absolute;top:0;left:0}&>*{z-index:var(--z-raised);position:relative}}.keywords{max-height:200px;transition:max-height var(--t-fade) ease;overflow:hidden;&.keywords-hidden{max-height:0;transition:max-height var(--t-base) ease}}.project-chip{text-transform:lowercase;opacity:.85;transition:all var(--t-base);&.hidden{opacity:0;width:0;height:0;padding:0}}.keyword-filter-inner{gap:var(--space-2);padding:0 var(--header-content-inset);margin:var(--space-2)}.kf-chip span{font-size:var(--fs-sm);opacity:.6;font-weight:300;line-height:1}.kf-input-wrap{flex:1;position:relative}.kf-input{font-size:var(--fs-xs);color:var(--grey-800);letter-spacing:.04em;background:0 0;border:none;outline:none;width:100%;min-width:120px;font-weight:400;&::placeholder{color:var(--black-a30);font-style:italic}}.kf-dropdown{top:calc(100% + var(--space-2));z-index:var(--z-dropdown);border:var(--border);min-width:180px;max-height:260px;box-shadow:var(--shadow-pop);background:#fff;position:absolute;left:0;overflow-y:auto}.kf-suggestion{padding:var(--space-2) var(--space-3);font-size:var(--fs-xs);letter-spacing:.03em;text-transform:lowercase;text-align:left;color:var(--grey-800);border-bottom:var(--hairline) solid var(--black-a05);transition:background-color var(--t-fast);font-weight:400;&:last-child{border-bottom:none}&:hover{background-color:var(--grey-50);color:#000}}.project-meta-block-left{border-left:var(--stripe) solid var(--cat,transparent)}.project-meta-block{border-block:var(--border);flex-wrap:wrap;display:flex;@media (width<=570px){flex-flow:column}}.meta-item{gap:var(--space-1);padding:var(--space-2h) var(--space-4);border-right:var(--border);min-width:var(--min-box);@media (width<=570px){align-items:baseline;gap:var(--space-2h);padding:var(--space-2) var(--space-3);border-right:none;border-bottom:var(--border);min-width:unset;flex-direction:row;&:last-child{border-bottom:none}}}.meta-item--keywords{border-right:none;flex:1;@media (width<=570px){flex-wrap:wrap;align-items:flex-start}}.meta-label{font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;opacity:.45;font-weight:300;@media (width<=570px){width:var(--min-box);flex-shrink:0}}.meta-value{font-size:var(--fs-sm)}.meta-partners{gap:var(--space-0h)}.meta-keywords{margin-top:var(--space-0h);@media (width<=570px){margin-top:0}}.text-block{--title-size:var(--fs-2xl);--text-size:var(--fs-xl);column-gap:var(--space-5);width:100%;@media (width<=750px){--title-size:var(--fs-md);--text-size:var(--fs-md)}&.columns-2{column-count:2;@media (width<=750px){column-count:1}}& h2{font-size:var(--title-size);padding-bottom:var(--space-4);font-weight:600}& p{font-size:var(--text-size);margin-bottom:var(--space-4);font-weight:400}& a{padding:var(--space-2h) var(--space-4);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;border:var(--hairline) solid var(--black-a80);transition:background-color var(--t-base) ease, color var(--t-base) ease;display:inline-block;&:hover{color:#fff;background-color:#000}@media (width<=750px){padding:var(--space-2) var(--space-3)}}}.link-list{gap:var(--space-4);flex-wrap:wrap;display:flex}.link-block{align-items:center;gap:var(--space-5);display:flex;@media (width<=750px){gap:var(--space-2h);flex-direction:column}}.image-text-block{gap:var(--space-5);align-items:flex-start;width:100%;display:flex;&.right{@media (width>=751px){flex-direction:row-reverse}}@media (width<=750px){flex-direction:column;align-items:stretch}&>*{flex:1;min-width:0}& .project-image img{width:100%}}.responsive-img{background-color:var(--grey-200);color:#0000;transition:background-color var(--t-fade) ease;&.loaded{animation:fade-in var(--t-fade) ease;background-color:#0000}}.project-image{text-align:center;color:#fff;max-width:min(100%, var(--content-w));position:relative;& img{object-fit:cover}&.main-image{max-width:100%;@media (width<=570px){margin-top:calc(var(--header-bar-h) + env(safe-area-inset-top,0px))}& img{width:100%;max-height:100vh;@media (width<=570px){min-height:15rem}}& .caption{max-height:100%}}}.caption{position:absolute;&[data-pos=center-center]{top:min(50%,50vh);left:50%;transform:translate(-50%,-50%)}&[data-pos=bottom-right]{bottom:0;right:0}}.caption--small{font-size:var(--fs-sm);padding:var(--space-0h) var(--space-1);background-color:#000}.caption--large{font-size:var(--fs-display);letter-spacing:-.02em;padding:var(--space-4);text-shadow:var(--glow-dark);transition:all var(--t-base);font-weight:200;line-height:1.1;@media (width<=570px){font-size:var(--fs-display-sm);padding:var(--space-3)}}.caption--dark{color:#000;text-shadow:var(--glow-light)}.image-link{z-index:var(--z-raised);color:#fff;line-height:1.2;top:0;right:0;@media (hover:hover){opacity:0;transition:opacity var(--t-fast) ease;:is(.project-image,.image-grid-content):hover &,&:focus-visible{opacity:1}}}.image-grid{columns:2;column-gap:var(--space-2);width:100%;@media (width<=570px){columns:1}}.image-grid-content{break-inside:avoid;margin-bottom:var(--space-2);color:#fff;font-weight:300;position:relative;overflow:hidden;& img{width:100%;transition:transform var(--t-slow) ease}&:hover img{transform:scale(1.03)}}.cv-content{max-width:var(--cv-w);margin:var(--space-5) auto;padding:var(--gutter);position:relative;@media print{max-width:none;margin:0;padding:0;&[style*=--cv-pages]{min-height:calc(var(--cv-pages) * 267mm - 1px);& .cv-print-footer{inset-inline:0;margin:0;position:absolute;bottom:0}}}& a{color:linktext;text-decoration:underline}}.cv-download{display:block;@media print{display:none}}.cv-download-link{align-items:center;gap:var(--space-1);padding:var(--space-2) 0;font-size:var(--fs-sm);color:var(--link-blue);transition:opacity var(--t-slow);display:flex;&:hover{opacity:.7}& img{width:var(--space-4);height:var(--space-4)}}.cv-header{justify-content:space-between;gap:var(--gutter);display:flex;@media screen and (width<=750px){flex-direction:column-reverse}}.cv-header-photo,.cv-header-title{width:calc((100% - var(--gutter)) * var(--share));@media screen and (width<=750px){width:100%}}.cv-header-photo{--share:.4}.cv-header-title{--share:.6;justify-content:space-between;gap:var(--gutter)}.cv-profile{width:var(--cv-photo);height:var(--cv-photo);border-radius:50%}.cv-logo{width:100%;height:75%;@media print{height:auto}}.cv-grid{gap:var(--gutter);margin-bottom:calc(-1.5 * var(--gutter));grid-template-columns:1fr 1.5fr;display:grid;@media screen and (width<=750px){grid-template-columns:1fr}}.cv-row{display:flex}.cv-title{margin:var(--space-0h) 0;font-size:var(--fs-2xl);text-align:left;font-weight:800}.cv-tagline-title{font-size:var(--fs-sm);font-weight:600}.cv-primary{font-size:var(--fs-sm);font-weight:400}.cv-secondary{margin-top:var(--space-1);font-size:var(--fs-2xs);font-weight:400}.cv-regular{font-size:var(--fs-2xs);text-align:left;color:var(--grey-800);font-weight:200}.cv-regular-bold{font-size:var(--fs-2xs);font-weight:400}.cv-skill-list{font-size:var(--fs-2xs);text-align:right;font-weight:200}.cv-position{margin-top:var(--space-1)}.cv-keep{break-inside:avoid}.cv-space{height:var(--space-1)}.cv-space--s{height:var(--space-2)}.cv-space--m{height:var(--space-2h)}.cv-space--l{height:var(--gutter)}.cv-line{height:calc(var(--hairline) / 2);background-color:var(--grey-500)}.cv-rule{height:var(--space-1);background-color:#000}.cv-text-start{text-align:left}.cv-text-end{text-align:right}.cv-print-footer{display:none;@media print{justify-content:center;align-items:center;gap:var(--space-2);margin-top:var(--space-4);font-size:var(--fs-2xs);break-inside:avoid;display:flex;& a{color:#000}& img{width:var(--space-5);height:var(--space-5)}}}}@layer pages;@layer utilities{[hidden]{display:none}.fade-in{animation:fade-in var(--t-slow) forwards}@keyframes fade-in{0%{opacity:0}to{opacity:1}}}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/montserrat-cyrillic-ext-wght-normal.CO5hGrJv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/montserrat-cyrillic-wght-normal.EAA9jha_.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/montserrat-vietnamese-wght-normal.k7S-YeeD.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/montserrat-latin-ext-wght-normal.BsZE-iaG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/montserrat-latin-wght-normal.l_AIctKy.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Montserrat fallback;src:local(Arial),local(Helvetica),local(Liberation Sans);size-adjust:113.17%;ascent-override:85.54%;descent-override:22.18%;line-gap-override:0%}
