@font-face{font-family:Roboto;src:url('/portfolio-assets/roboto-400.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Roboto;src:url('/portfolio-assets/roboto-500.ttf') format('truetype');font-style:normal;font-weight:500;font-display:swap}
@font-face{font-family:Roboto;src:url('/portfolio-assets/roboto-700.ttf') format('truetype');font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:Roboto;src:url('/portfolio-assets/roboto-900.ttf') format('truetype');font-style:normal;font-weight:900;font-display:swap}
*{box-sizing:border-box}html{background:#fcfbf8;color:#080e16}body{margin:0;font-family:Roboto,Arial,sans-serif}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid #31583d;outline-offset:5px}h1,h2,p{margin:0}img{display:block;max-width:100%}.portfolio{position:relative;isolation:isolate;width:100%;max-width:1920px;margin:auto;container-type:inline-size;background:radial-gradient(ellipse at 74% 20%,#f4f4e9 0,transparent 46%),#fcfbf8;padding-bottom:2.7cqw}.hero{position:relative;height:22.73cqw}.identity{position:absolute;left:4.3cqw;top:1.05cqw;z-index:3}.name{font-size:2.16cqw;font-weight:700;letter-spacing:-.06cqw;line-height:1.25}.profession{font-size:1.32cqw;color:#596273;line-height:1.5}.intro{position:absolute;left:4.3cqw;top:7.52cqw;z-index:2}h1{font-size:4.98cqw;line-height:.93;letter-spacing:-.16cqw;font-weight:900}h1 span{display:block}h1 span+span{color:#2b432b;margin-top:.3cqw}.intro-description{color:#303846;font-size:1.88cqw;line-height:1.25;margin-top:1.0cqw;letter-spacing:.005cqw}.portrait{position:absolute;left:48.445cqw;top:0;width:51.555cqw;z-index:1}.portrait img{width:100%;height:auto}.contact{position:absolute;right:2.03cqw;top:2.74cqw;z-index:4;display:flex;flex-direction:column;align-items:flex-end;gap:.4cqw}.discuss{display:flex;align-items:center;justify-content:center;gap:.8cqw;background:linear-gradient(135deg,#fff,#fcfbf9);border:1px solid #e2e0db;border-radius:5cqw;box-shadow:0 .4cqw 1.5cqw #26332812;font-size:1.36cqw;font-weight:700;width:16.4cqw;height:3.9cqw}.discuss svg{width:1.8cqw;height:1.8cqw;fill:none;stroke:currentColor;stroke-width:2.7;stroke-linecap:round;stroke-linejoin:round}.personal-site{display:flex;align-items:center;gap:.5cqw;font-size:1.12cqw;line-height:1.4;padding-right:.4cqw}.personal-site svg{width:1.05cqw;height:1.05cqw;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.projects{position:relative;z-index:2;display:grid;grid-template-columns:1.08fr 1fr 1.08fr;gap:.88cqw;margin:0 1.68cqw}.project{padding:.18cqw;border:1px solid #ffffffd9;border-radius:1.9cqw;box-shadow:0 .45cqw 1cqw #34391a1a;min-width:0}.project-walls{background:radial-gradient(ellipse at 30% 80%,#ffe9cb,#ffe2bc)}.project-light{background:radial-gradient(ellipse at 60% 90%,#ddf2ff,#ccecff)}.project-triza{background:radial-gradient(ellipse at 70% 80%,#e7ecd5,#d8e2c5)}.project-photo{width:100%;height:18.08cqw;object-fit:cover;border-radius:1.55cqw}.project-content{padding:.85cqw 1.8cqw 1.17cqw}.project h2{font-size:2.67cqw;line-height:1.13;letter-spacing:-.06cqw;font-weight:700;white-space:nowrap}.project p{font-size:1.33cqw;color:#263234;line-height:1.35;margin-top:.35cqw;white-space:nowrap}.project-link{display:flex;align-items:center;justify-content:space-between;gap:1.25cqw;background:#fff;border:1px solid #f3f4f4;border-radius:4cqw;width:max-content;min-width:20.2cqw;height:4.08cqw;margin-top:1.05cqw;padding:0 1.35cqw 0 2.3cqw;font-size:1.36cqw;font-weight:700;box-shadow:0 .3cqw .8cqw #878f7520;transition:transform .18s,box-shadow .18s}.project-link:hover,.discuss:hover{transform:translateY(-2px);box-shadow:0 .5cqw 1.2cqw #26332820}.arrow{display:grid;place-items:center;width:2.75cqw;height:2.75cqw;border-radius:50%;background:radial-gradient(circle at 65% 40%,#25303c,#060e17);color:white;font-family:Arial,sans-serif;font-size:2.05cqw;font-weight:400;line-height:1;padding-bottom:.18cqw}.leaf{position:absolute;pointer-events:none;z-index:0}.leaf-top{display:none;left:49.3cqw;top:4.9cqw;width:9.2cqw;transform:rotate(-15deg);opacity:.6}.leaf-right{display:none}.leaf-left{left:0;bottom:0;width:5cqw;transform:none}.mobile-top-right{display:none}.arrow svg{width:60%;height:60%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.leaf-bottom{right:0;bottom:0;width:7.4cqw;z-index:3}
/* Fit the complete desktop composition inside the available browser viewport.
   Child cqw units follow the fitted canvas width, keeping the original proportions. */
@media(min-width:901px){
 body.portfolio-page{min-height:100vh;min-height:100dvh;display:grid;place-items:center}
 .portfolio{width:min(100%,calc((100vh - 12px) * 1.7768),1920px);width:min(100%,calc((100dvh - 12px) * 1.7768),1920px);padding-bottom:0}
 .portfolio::after{content:"";display:block;height:2.7cqw}
}
@media(max-width:900px){
 .mobile-top-right{display:block;position:absolute;right:0;top:0;width:15.365cqw;z-index:2}.portfolio{padding-bottom:.5cqw;background:#fcfbf8}.hero{height:84.9cqw}.identity{left:6.52cqw;top:2.7cqw}.name{font-size:3.95cqw;letter-spacing:-.11cqw;line-height:1.3}.profession{font-size:2.53cqw;line-height:1.6}.intro{left:6.52cqw;top:14.25cqw;width:48cqw}h1{font-size:7.73cqw;line-height:.88;letter-spacing:-.18cqw}h1 span:first-child{max-width:46cqw}h1 span+span{margin-top:.4cqw;max-width:47cqw}.intro-description{font-size:3.35cqw;line-height:1.07;letter-spacing:0;max-width:41cqw;margin-top:1.9cqw}.portrait{left:27.34375cqw;top:7.552cqw;width:72.65625cqw}.contact{left:6.25cqw;right:auto;top:71.22cqw;flex-direction:row;align-items:center;gap:3.55cqw}.discuss{width:41.4cqw;height:10cqw;border-radius:8cqw;font-size:3.37cqw;gap:2.2cqw;box-shadow:0 .8cqw 3cqw #26332815;white-space:nowrap}.discuss svg{width:4.5cqw;height:4.5cqw}.personal-site{font-size:3.36cqw;padding:0 0 0 3.7cqw;border-left:1px solid #aaaeb1;line-height:5.7cqw;gap:0}.personal-site svg{display:none}.projects{display:flex;flex-direction:column;gap:1.9cqw;margin:0 3.65cqw 0 4.17cqw}.project{border-radius:4.4cqw;padding:.65cqw;box-shadow:0 1cqw 2.2cqw #34391a1b}.project-photo{height:auto;border-radius:3.4cqw;width:100%}.project-content{padding:1.0cqw 3.3cqw 1.0cqw}.project h2{font-size:5.72cqw;line-height:1.12;letter-spacing:-.12cqw}.project p{font-size:3.27cqw;line-height:1.25;margin-top:.15cqw;white-space:nowrap}.project-link{height:9.3cqw;min-width:46.5cqw;margin-top:1.05cqw;padding:0 2.5cqw 0 5cqw;border-radius:7cqw;gap:3cqw;font-size:3.12cqw}.arrow{width:6.5cqw;height:6.5cqw;font-size:4.6cqw;padding-bottom:.4cqw}.project-light .project-link{min-width:48.5cqw}.project-triza .project-link{min-width:45cqw;height:8.4cqw;margin-top:.6cqw}.project-triza .arrow{width:6.1cqw;height:6.1cqw}.project-triza .project-content{padding-top:.35cqw;padding-bottom:.3cqw}.leaf-top{display:block;left:46.7cqw;top:2.1cqw;width:15.75cqw;transform:none;opacity:1}.leaf-right{display:none}.leaf-left{left:0;top:56.1cqw;bottom:auto;width:10.8cqw;transform:none;z-index:2}.leaf-bottom{width:12.5cqw;bottom:0}
}
@media(prefers-reduced-motion:reduce){a{transition:none!important}}

/* Phone content stays in flow; text size is not tied to a scaled screenshot. */
@media(max-width:600px){
 .hero{height:auto;display:grid;grid-template-columns:minmax(0,1fr)}
 .leaf-top,.leaf-left,.mobile-top-right{display:none}
 .identity{position:relative;inset:auto;margin:18px 24px 22px}
 .name{font-size:clamp(18px,3.95cqw,24px);line-height:1.25}
 .profession{font-size:14px;line-height:1.5;margin-top:4px}
 .intro{display:contents}
 .intro h1{grid-area:2/1;z-index:2;align-self:start;margin:0 0 0 6.2cqw;width:50cqw;font-size:clamp(26px,7.73cqw,46px);line-height:1.05;letter-spacing:-.025em}
 .intro h1 span,.intro h1 span:first-child,.intro h1 span+span{max-width:none}
 .intro h1 span+span{margin-top:5px}
 .portrait{grid-area:2/1;position:relative;inset:auto;width:70%;margin:24px 0 0 auto;align-self:end}
 .intro-description{grid-area:3/1;z-index:2;max-width:none;margin:12px 24px 0;font-size:16px;line-height:1.4}
 .contact{position:relative;inset:auto;flex-wrap:wrap;justify-content:center;gap:12px;margin:18px 24px 24px;align-items:center}
 .discuss{min-width:205px;width:auto;min-height:48px;height:auto;padding:12px 18px;font-size:16px;gap:12px;border-radius:30px}
 .discuss svg{width:23px;height:23px;flex:none}
 .personal-site{border:0;padding:4px 0;font-size:15px;line-height:1.5;min-height:36px}
 .projects{gap:18px;margin:0 16px 20px}
 .project-content,.project-triza .project-content{padding:14px 14px 16px}
 .project h2{font-size:clamp(23px,5.72cqw,32px);white-space:normal;line-height:1.15;letter-spacing:-.025em}
 .project p{font-size:16px;line-height:1.4;white-space:normal;margin-top:6px}
 .project-link,.project-triza .project-link,.project-light .project-link{width:100%;min-width:0;min-height:48px;height:auto;margin-top:14px;padding:9px 12px 9px 18px;font-size:16px;line-height:1.4;gap:12px;border-radius:30px}
 .arrow,.project-triza .arrow{width:32px;height:32px;flex:none;padding:0}
}

/* Contact choice lives in the top layer and does not change the landing layout. */
html.contact-dialog-open{overflow:hidden}
.contact-dialog{position:fixed;inset:0;margin:auto;width:min(440px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:34px 28px 26px;border:1px solid #e4e7dc;border-radius:28px;background:#fcfbf8;color:#111a15;box-shadow:0 24px 90px #14231838;overflow:auto}
.contact-dialog::backdrop{background:#101a1770;backdrop-filter:blur(5px)}
.contact-dialog-close{position:absolute;top:10px;right:10px;margin:0}
.contact-dialog-close button{display:grid;place-items:center;width:44px;height:44px;padding:11px;border:0;border-radius:50%;background:transparent;color:#53604e;cursor:pointer}
.contact-dialog-close button:hover{background:#eaf0e2}
.contact-dialog-close button:focus-visible{outline:3px solid #31583d;outline-offset:1px}
.contact-dialog-close svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}
.contact-dialog h2{padding-right:28px;font-size:27px;line-height:1.15;font-weight:700;letter-spacing:-.6px}
.contact-dialog p{margin-top:10px;font-size:16px;line-height:1.5;color:#5a635b}
.contact-options{display:grid;gap:10px;margin-top:25px}
.contact-options a{display:flex;align-items:center;gap:14px;min-height:66px;padding:10px 16px;border:1px solid #e2e7dc;border-radius:17px;background:#fff;font-size:18px;font-weight:500;transition:background .15s,border-color .15s}
.contact-options a:hover{background:#f1f6eb;border-color:#acbda0}
.contact-option-icon{display:grid;place-items:center;width:40px;height:40px;flex:none}
.contact-option-icon img{object-fit:contain}
.contact-option-arrow{width:21px;height:21px;margin-left:auto;fill:none;stroke:#63725b;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.contact-main-site{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;margin-top:16px;font-size:15px;color:#52664a;text-decoration:underline;text-underline-offset:4px}
@media(max-width:600px){
 .contact-dialog{inset:auto 0 0;width:100%;max-width:100%;max-height:calc(100dvh - 16px);margin:0;border-radius:26px 26px 0 0;padding:32px 22px max(20px,env(safe-area-inset-bottom))}
 .contact-dialog h2{font-size:25px}
 .contact-options{margin-top:22px}
}
