*{margin:0;padding:0;box-sizing:border-box;}
:root{
  --bg:#FAFAFA;
  --bg2:#F9EEE3;
  --ink:#170B00;
  --ink2:#333333;
  --muted:#B2B2B2;
  --red:#E64A19;
  --red2:#C03D14;
  --line:rgba(23,11,0,0.10);
  --line2:rgba(23,11,0,0.18);
}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:'DM Sans',sans-serif;
  font-weight:300;
  line-height:1.7;
  cursor:none;
  overflow-x:hidden;
}
#cursor{position:fixed;top:0;left:0;pointer-events:none;z-index:9999;transition:none;}
#cursor-dot{
  width:10px;height:10px;
  background:var(--red);
  border-radius:50%;
  position:absolute;
  transform:translate(-50%,-50%);
  transition:width .2s,height .2s,background .2s,box-shadow .2s;
}
#cursor-ring{
  width:32px;height:32px;
  border:1px solid var(--red);
  border-radius:50%;
  position:absolute;
  transform:translate(-50%,-50%);
  opacity:0.5;
  transition:width .35s cubic-bezier(.25,.46,.45,.94),height .35s cubic-bezier(.25,.46,.45,.94),opacity .3s;
}
body.hovering #cursor-dot{width:6px;height:6px;background:var(--red2);}
body.hovering #cursor-ring{width:48px;height:48px;opacity:0.25;}
body.hovering #cursor-dot::after{content:'';position:absolute;inset:-3px;border-radius:50%;background:var(--red);opacity:0.15;}
::-webkit-scrollbar{width:3px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:2px;}
.logo{
  font-family:'Cormorant Garamond',serif;
  font-size:22px;font-weight:400;letter-spacing:0.04em;
  color:var(--ink);text-decoration:none;
  display:flex;align-items:center;gap:10px;
}
.logo-mark{
  width:24px;height:24px;
  background:var(--red);border-radius:50%;
  display:inline-block;flex-shrink:0;
  position:relative;
}
.logo-mark::after{
  content:'';position:absolute;inset:3px;
  border:1px solid rgba(255,255,255,0.4);border-radius:50%;
}
nav{display:flex;align-items:center;gap:36px;}
nav a{
  font-size:13px;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--ink2);text-decoration:none;
  position:relative;transition:color .2s;
}
nav a::after{
  content:'';position:absolute;bottom:-2px;left:0;right:0;
  height:1px;background:var(--red);
  transform:scaleX(0);transform-origin:left;
  transition:transform .3s cubic-bezier(.25,.46,.45,.94);
}
nav a:hover{color:var(--ink);}
nav a:hover::after{transform:scaleX(1);}
.burger{display:none;flex-direction:column;gap:5px;cursor:none;padding:4px;}
.burger span{display:block;width:22px;height:1px;background:var(--ink);transition:.3s;}
.burger.open span:nth-child(1){transform:rotate(45deg) translate(4px,4px);}
.burger.open span:nth-child(2){opacity:0;}
.burger.open span:nth-child(3){transform:rotate(-45deg) translate(4px,-4px);}
.mobile-menu{
  display:none;position:fixed;top:0;left:0;right:0;bottom:0;
  background:var(--bg);z-index:99;
  flex-direction:column;align-items:center;justify-content:center;gap:40px;
}
.mobile-menu.open{display:flex;}
.mobile-menu a{
  font-family:'Cormorant Garamond',serif;font-size:38px;font-weight:300;
  color:var(--ink);text-decoration:none;letter-spacing:0.04em;
  transition:color .2s;
}
.mobile-menu a:hover{color:var(--red);}
section{padding:120px 48px;}
.container{max-width:1200px;margin:0 auto;}
#hero{
  min-height:100vh;display:flex;align-items:center;
  padding-top:140px;padding-bottom:80px;
  position:relative;overflow:hidden;
}
.hero-bg-photo{
  position:absolute;top:0;left:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
  transform:scale(1);transform-origin:center center;
  will-change:transform,opacity;z-index:0;
  opacity:0.8;transition:opacity .8s ease;
}
.hero-bg-overlay{
  position:absolute;inset:0;z-index:0;
  background:var(--bg);opacity:0.72;
}
.hero-grid{
  display:flex;flex-direction:column;align-items:center;
  width:100%;max-width:1300px;margin:0 auto;text-align:center;
}
.hero-text{display:flex;flex-direction:column;align-items:center;will-change:transform,opacity;}
.hero-eyebrow{
  font-family:'Montserrat Alternates',sans-serif;font-weight:500;
  font-size:11px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--ink2);margin-bottom:28px;
  display:flex;align-items:center;justify-content:center;gap:14px;
}
h1{
  font-family:'Montserrat Alternates',sans-serif;
  font-size:clamp(46px,7.5vw,110px);
  text-align:center;
  font-weight:600;line-height:1.05;letter-spacing:-0.05em;
  margin-bottom:28px;
}
h1 .line-1{
  white-space:nowrap;
  display:inline-block;
  transform:scale(0.6);
  opacity:0;
  transition:transform 1.15s cubic-bezier(.16,.84,.32,1),opacity 1.15s ease-out;
  will-change:transform,opacity;
}
h1 em{font-style:italic;color:var(--ink);}
#hero-title.shrink .line-1{
  transform:scale(1);
  opacity:1;
}
.hero-brush{
  display:inline-block;
  line-height:0;
  clip-path:inset(0 100% 0 0);
  transition:clip-path 1.1s ease-in-out;
}
.hero-brush svg{
  width:clamp(220px,28vw,420px);
  aspect-ratio:518/123;
  height:auto;
  display:block;
  margin:6px auto 0;
}
.hero-brush path{
  fill:#E64A19;
}
.hero-brush.drawn{
  clip-path:inset(0 0 0 0);
}
.hero-bio{
  font-family:'Outfit',sans-serif;
  font-size:16px;line-height:1.75;color:var(--ink2);
  max-width:560px;margin:0 auto 44px;text-align:center;
}
.btn-primary,.btn-hero-sm,.about-cv-btn,.cs-live-link,.contact-submit{
  -webkit-mask-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3NTcuMzIgMTc1Ljc3IiBmaWxsPSIjZmZmZmZmIj4KICA8cGF0aCBkPSJNMTQ5LjAyLDE3NC45NmMtLjgyLDEuNzctMi41Ni4yOS0xLjQtLjkybDcuODQtLjI3YzEuNjMtLjA2LDMuOTYtMi4xNyw1LjYyLjc3bC0xMi4wNi40M1oiLz4KICA8cGF0aCBkPSJNNS43OSw4Mi4xMmMuNTcsMS44MS0xLjI1LDIuMi0xLjg3Ljk3LTEuNjgtMS43LDEuMS0zLjQ0LDEuODctLjk3WiIvPgogIDxwYXRoIGQ9Ik03MjUuNzYsNC4xYy45LjQ0LjMyLDEuMjUtLjI3LDEuNDhzLTEuMjIuMzEtMi4wMi0xLjA5Yy4yNC0uNDEsMS4wMi0xLjAxLDIuMjktLjM4WiIvPgogIDxnPgogICAgPHBhdGggZD0iTTY2LjQzLDEyMC40MWMtNi4xNS0uMTMtMTEuNjQtMS45MS0xNS0xLjMycy02LjY0LTEuNTktMTAuMjYtMS43MWwtMTQuNzktLjQ5Yy0zLjAxLS4xLTUuNjctMS40Ny05LjIxLTEuMi0xLjU1LDEuMDctMi44NC0uODctMS4xMy0xLjcyLDEuNS41OCwzLjM0LS4wNywzLjQ2LS43Mi43NS00LjEzLTQuMS0yLjg5LTguNDItNC4wMi0zLjM3LS44OC02LjMyLTEuOTQtMTAuMTktMS43LS43LTEuMzYuNTktMS44MiwxLjM4LTEuMDEsMS4wMS4wOCwyLjAxLS4wOCwyLjQzLS4zMy40NC0uMjcuNDgtMS4wNS0uMDYtMS45MSwxLjkxLjA0LDMuMjEtLjQ5LDQuODgtMS4xNCwyLjE1LS44Myw0LjU0LjUxLDYuMzcuNDUsMi4yLS4wNywzLjY5LS4zNiw1Ljc0LS4xNSwxLjgxLjE4LDcuOTYtMS42Niw4LjA2LTEuOTQuMy0uNzktLjM2LTEuMS0xLjAzLTEuODNsLTMuOTMtNC4yNmM2LjUxLTEuNDcsMTEuMy4zMSwxMi44Ni4zNGwxMS4zMy4yNmMuNC0uMTcuNTMtLjUyLjUzLS42OGwtNy44OS0uNWMtMS43MS0uMTEtMy4xNi0xLjE3LTUuMTMtLjgxLTEuOTMuMzUtMy41LS4yLTUuMjEtLjY1bC00Ljg0LTEuMjYtNi45NC0uMDRjLS45NiwwLTEuNzctMS4wOS0xLjY1LTEuNTkuMi0uODYsMS4yNi0xLjU2LDIuODUtMS41OC0uNy0xLjMtMi4wMy0xLjAzLTMuMDktLjc3LTIuNjMtMi41Ni01LjUtMy42LTkuNDctMy4yNy0xLjg2LjY0LTIuMTUtMS45OS0uMTctMS44LDMuOS0yLjg5LDEwLjIsMS41OCwxNS4xMi0uNTIsMi4wMi0uODYsMy4wMi00LjQsMi40My02LjMxcy0yLjE2LTIuNzUtMy40NS0zLjYyYy0zLjIxLTIuMTctNC40OSwyLjE3LTYuOTMsMS4yNy0uODYtLjMyLTEuMzgtMS4wMS0xLjQ5LTIuMy0uMDctLjksMy42Ni00LjY1LDcuNzMtNC43NywzLjE5LS4xLDQuOS0yLjYyLDQuMzktNS44My0uMjMtMS41LjMtMy4xOC0uODQtNC41OC0uMzEtLjM4LS44NS0uNjYtLjk4LS45LS42OC0xLjIyLDIuMjgtMS4yLDUuMDctMi45Ny41MS0uMTQsMi4xOC45MiwyLjctLjI3LjM0LTEuMzQsMi4wOC0yLjU5LDMuMTUtMS41Ny40Mi40LDEuNzEsMi4wNCwyLjM5LDEuNSwyLjM2LTEuOTIsNC43OS0xLjIyLDYuNzktMS44MywyLjIyLS42OCwzLjkxLTEuNzUsNi4zNi4wOC44OC42NiwyLjIyLS4wMiwzLjIzLS4wNmw4Ljk2LS4zOWMuOTQtLjA0LDEuNy0uOTIsMi4xMy0xLjc0LTIuNDUtLjA0LTIuODEtMS4zNS00LjExLTIuNDMtMi4wNi0xLjcxLTcuNjctMS45Ny0xNC4yNy0zLjM4LTUuMTYtMS4xLTEyLjY0LjY0LTE3LjI4LTIuMTQtNS41Ny0zLjM0LTEwLjcxLTIuMjQtMTYuNzItNC4yOS0uOTIuMzQtMS45OC0uMTctMS40LTEuNDcsOC4yMS0xLjQ4LDE1LjQ3LDEuMzcsMjEuNjUtMS4wOGwtNC4zMy0xLjI1LTcuNjYtMS41Yy0uODktLjE4LS45Mi0xLjc5LS4xMS0yLjU5bC02Ljc4LTIuNGMtMi4yNS0uOC0zLjk5LTEuNC01LjExLTMuMzdsNi45NS0uMDljMS4zMi0uMDIsMi4zNS4yOSwzLjExLTEuMTctNS44LjE0LTE0LjAyLTMuNTYtMTMuOTktMy41Mi0uMi0uMjguNy0xLjI0LDEuMDUtMS4xMiwzLjIsMS4xLDUuMS0yLjksNy45OC0uMTUsMS4zNy0uNjYuNjItMS44MS0uMzctMi4wMUM2LjQ5LDEyLjkyLS40OCwxMi4wMy4wMyw5LjJjLjI4LTEuNTYsMy4zNi0xLjMyLDQuNjktLjY0LDIuNiwxLjM0LDQuOTEsMS4yMSw3LjU1LDEuNzZsOC4xMiwxLjY3YzIuNDkuNTEsNC42Ni4yOSw3LjEyLjc1bDUuMDcuOTUsMTMuNzQsMS41MywzLjg5LjI3YzMuNDguMjQsNS44NC0uMTUsOC4zOS0yLjQ0bDguNDYtLjQ5LDMuNi0xLjI4YzUuMjUsMi4xOSwxMS43OC0uNzYsMjEuNzctLjMsMi41OC4xMiw0Ljc5LS41Niw3LjItLjU2bDEyLjYyLjA0YzEuNjMsMCwyLjc1LjM1LDQuMzctLjEzLDIuOTEtLjg3LDUuOTMuNDksOC44MS41MmwyNS45LjI0Yy42NiwwLDEuNTkuNjEsMi4xMy45LDIuMDYtMS4zOSw2LjQ4LS43MywxMS4xNy0uMzlsOC43MS42M2MzLjEuMjMsNS40NC41OSw4LjQuNTEsMS4zOC0uMDQsMy4zMS0uNDcsNC43NC0uMzcsNC4xLjI4LDcuNDIuNTYsMTIuMzYuMThsOC4zNS0uNjVjMi45OS0uMjMsNC41OC0uOTMsNy41My0uMyw1LjEsMS4wOCw4LjU3LS45OCwxMi43Ny0uODUsMi4yLjA3LDQuNzMuNzksNi41OC42NSwzLjItLjI0LDYuMDctLjk2LDkuMTIuMTZsMy4yMS0uNTYsMzAuNjQtLjQ2YzIuNzQtLjA0LDUuMDUtLjQ2LDcuNjUuMTIsMS42Ni4zNyw0LjU3LTEuMDMsNi43My0uODMsNy44Ni43NCwxNS4yMi4wNywyMy4wMy4wMSwxLjk1LS4wMSwzLjI3LS41Nyw1LjE2LS42OGw5LjYzLS41MWMzLjg0LS4yLDcuMzItLjUsMTEuMjEtLjU1bDIyLjAxLS4yOGMzLjAzLS4wNCw1Ljc0LS45Miw5LjAzLS45NmwxNy41OS0uMiw1LjU2LjAyYzguNTIuMDMsMTguOC45NCwyNC4yNi0uMywxLjU1LS4zNSwyLjM0LjIyLDMuODcuMjVsMTEuNzMuMjIsNC42OC45YzIuMDcuNCwzLjMxLS4zMiw1LjMtLjE4bDUsLjM0LDMxLjk3LjY0YzQuODkuMSwxMC43LS4zLDEzLjM1LS4xN2w2LjA3LjMxYzEuMzYuMDcsMy4xOC0uMTksNC42LS4wOGw3LC41YzMuMDIuMjIsNS4zLTEuMjgsNy44Mi0xLjMyLDEuODEtLjAzLDQuMzgsMi40MSw3LjE2LDEuMDJzNi4xNy0uODMsOC44NC4yOGMuOTItLjQ1LDMtMi4wMSwzLjgzLTEuNDgsMi4xNSwxLjM4LDQuMTcsMS45Niw2LjU3LjUyLDEuMy0uNzgsMi45Ni41OSwzLjg4LjZsNS42My4wNGMuMzQsMCwxLjE5LS45OCwxLjMyLTEuMjguMjItLjUsMS41NS4zMSwyLjAzLjQ1bDE3LjgzLjA1Yy41OSwwLDIuNDQtMS4xNSwyLjk2LS44NywxLjg0LDEuMzgsNC4yLjM4LDYuMzEuMTlsOS4yLS44MiwxMC40Ni0uODIsNy4xOC0uNjYsMTIuNjEtMS40M2MxLjQtLjE2LDIuNjUtMS4wMSw0LjM3LS43MiwzLjUzLjU5LDYuNy0uNDksMTAuMS0uNmwxMC45LS4zNCw2LjkzLS4yNCw0LjM0LS4yMSw1Ljc0LS40Myw2LjkzLS45MywzMi4wNS0uMDksMjYsLjIyYzIuOS4wMiw1LjI2LS4zLDguMTQuNDFsMy43NS0uNDRjMS4zMS0uMTUsMi43OC44MSwzLjk3LjQ0LDMuNjYtMS4xMiw0Ljg1LjU2LDcuMzMuMjMuOTguMDcuOTEsMS4yMS0uMDQsMS4xN2wtMTAuNzUuNDdoLTUuNjJzLTExLjc1LjI2LTExLjc1LjI2bC02Ljc5LS4xMWMtMi4zNS0uMDQtNC4wOS4zOS02LjYtLjMyLTMuNjgtMS4wMy03LjcyLjQ5LTExLjU2LjU0bC0yMC4wOS4yNi01Ljk2LjkxLTE3LjY2LjM3Yy0yLjU4LjA1LTQuNDcuOTUtNy42My41Ny43MSwxLjU4LDEuNjQsMS42NywzLjQ0LDIuNDktMi42OS4zNS00Ljk3LjgyLTguNDguNDEuOTYtMS40LDIuMzEtMS4zMywzLjc2LTEuNDcsMS4wMi0xLjE3LS4zNC0xLjg1LTEtMS4wNS0xLjUuOC0yLjgzLjY3LTQuNDIuNjVsLTEyLjE0LS4xNi00Ljc4LDEuMzEtOC4yMS0uMThjLS45NC0uMDItMS44Ni44Ny0yLjA2LDIuMSwxLjUxLjEsMi4zNC0uMzYsMy40Ni0uOTUsMS4yMS0uNjQsMi4zNC40MiwxLjcyLDEuODktLjk1LDIuMjctMy41Ni0uODMtNC40Ny0uMTgtLjQ3LjM0LTEuMTguOTktMS41NCwyLjFsMTAuOC0uMzVjNC4wMS0uMTMsOS4zMi4wNiw5LjMyLjA2LDMuMiwxLjk0LDUuNzEuODEsOS4wOC43NGwxMC43Ny0uMjIsNi4wMi0xLjA0LDExLjE0LS42OCwyMC44Mi0uNzljNC4zNi0uMTcsOC43Ni0yLjA1LDEyLjg3LS40NWw0LjIzLDEuNjUsOS45LjIsMTYuMDUtLjA2YzIuNjgtLjAxLDUuMTQuODksOC4xNi0uMjQsMS4wNi4xNS44MywxLjQtLjE0LDEuMTEtNC43NiwxLjkzLTkuMzQuODQtMTQuMTUuOTRsLTIxLjc3LjQ2LTUuMzIuNzJjLS45OS0uNjctMi4xNi4zNy0xLjMxLDEuMTUsNS4zNC0uNzcsOS4yNS43NSwxMi44My40N2w0Ljc5LS4zNywxMS44OC0uMDYsNi42MywxLjQxYzEuNTQuMzMsMi4zMiwyLDQuODUuOTEuNTEtMS4yMywyLjExLS4xOSwxLjA3LjQ5LTQuMDgsMi40Ny05LjA1LDMuMTYtMTMuODEsMy4xOC0xLjExLTEuMzItMi42Mi4zMi0xLjI4LDEuMTQsMy44Mi44Niw3LjczLS40NCwxMC43My4xOS0zLjkyLDEuODMtNy4yOSwxLjQ3LTExLjI3LDEuNTQtLjY5LS4zNS0xLjM4LjQ2LS42LDEuMDIsMS43NS0uNDQsMS44NiwxLjU4LjA5LDEuMTlsLTYsMS4yMWMtMS44Ni4zNy0zLjE1LDIuNDktNS40NSwyLjIycy0zLjU4LDEuNDctNS4zMywxLjY4bC05LjE5LDEuMDctOC41MywxLjFjNC40OC45NSw5LjA5LjQsMTQuMzYuMjgsMS44Ny0uMzUsMi4xOCwxLjgxLS4zOSwxLjY5LDIuMTQsMS4zNCw0LjYxLjQyLDcuMjUtLjI1LDQuNDQtMS4xMyw5LjAxLjM5LDExLjQ2LDMuOTdsLTEuNiw0LjA5Yy45MywxLjYyLTEuMjUsMi42My0xLjc4Ljg3LS4xNy0uNjQtLjg2LTEuMzEtMS4yOC0xLjM3LTEuNTguNTQtMS41NSwyLjYyLTIuNzksMy41NGwtMy4yMiwyLjM5Yy0xLjI3Ljk0LjYyLDIuNzcsMi4wMiwyLjUyLjgzLS4xNSwxLjYxLjA3LDEuOTUuNzkuMy42My41MywxLjA1LjU3LDEuNDIuMTIsMS4yNC01LjQ2LDIuNjctNC41NCw0LjAyLjczLDEuMDcsNC41My0uMTMsMi41NSwxLjk0LS42MSwxLjI5LTEuNjcsMi4zMy0yLjg3LDIuNDUtLjIxLjE5LS4zNi40My0uNDUuNjgtLjI5LjgxLS43OCwxLjI2LTIuMzQsMS40NC0uOTMuMTEtLjkyLDIuMTEuMjUsMi43N2wtNS4wNS41MmMuMS4zNS43My44OS43MiwxLjE3cy0uNi40NC0uMjksMS40MmMxLjI0LS40LDIuMDIuODQuODMsMS42NS04LjI1LTIuNDQtMTMuNjUsMS41OS0xNC44LDEuNzhsLTcuNTgsMS4yNCw1LjkyLjY0YzIuMjguMjUsMy43Ljc1LDYuNTYuODktMi42NywyLjYzLTYuMTItLjE0LTYuNDMsMy4wMiwzLjczLS41Nyw4LjM0Ljk2LDguNywyLjkxLTMuNjYtLjg3LTUuMDMsMi42NC05LjgsMy42MmwtNS4xMiwxLjA2LTEwLjgzLjg5LDE1LjExLjU2LDE0Ljk2LS4yOGMxLjc1LS4wMywzLjEyLTEuMDksNS4xLjA4czQuMzYsMi4wMyw3LjEyLDEuMTFjLjk4LS4zNywxLjAzLDEuNDYtLjI3Ljc3LTIuNzgsNC4yNC0xMC42Ni0uMTYtMTYuMjIsNS42OS42MS40NywyLjAyLDIuMzEsMy4yNywyLjQ2LDMuMjkuMDYsNS41OC4yLDguNDQsMS41LDEuNDIuNjQsNC44OS0uMTIsNS45LjkzLDIuODcsMyw3LjgsMS4wNSw3LjY5LDMuMy0uMSwxLjk2LTEuODYsMS45Mi0yLjg3LDEuOTlsLTUuMDkuMzdjLjI0LjgzLjYsMS44Mi40OCwyLjMtLjE1LjYyLTEuMiwxLjA3LTIuMTMsMS4wMy0yLjY0LS4xLTIuMTUsMi44Ni0yLjg1LDMuNjctLjM3LjQzLTEuMzQuODUtMi43LjU4LTEuNTQtLjIyLTEuNTcsMS42Ny0uMDMsMS40NCwyLjUxLS40OCw0LjQ0LjI0LDYuMDMsMS41OS0yLjEzLDEuNjItMy43NCw0LjU3LTYuMTksNC44MmwtNi4zNC42NWMtMS42LjE2LTEuOTUsMi40NC0yLjUxLDMuNzMtNi45NCw0LjItMTEuNzYsMS42My0xNy44OSwyLjg5LTMuNzMuNzctNy43My0uMTctMTEuMDcsMS45NCw2LjQ3LjEsMTEuNTIsMy44MiwxOC43MiwxLjgyLDQuMTktMS4xNyw5LjgzLS42LDEyLjQ2LDEuNTktNC4wMS0uNDItNy4xOC40LTExLjA2LjdsLTUuODUuNDZjLTEuNjEsMy41MS01LjIzLDIuOTctNi4wOCw0LjQtLjM1LjU5LS4zNSwyLjY5LjI2LDMuMDksMi4wNS4wOCwzLjc5LjgzLDUuOTUuOTlsNy42Mi41OCw3LjY2LDIuODRjLjA0Ljk5LjAzLDEuOTQtLjAzLDIuMDQtMS4zNywwLTEuNjguNzUtMS43NywxLjg0LTMuNjgtMS43LTguMTgtMS45OC0xMi44Ni0yLjY4LDIuMTUsMy4zMiw1LjYyLDIuNTgsNi4xOSw0LjctMi45OSwyLjkyLTcuNy0uNDEtMTIuMTYsMS40OWw3LjEyLDEuNjRjLjQzLjEsMS4yOC4yNCwxLjU3LjY0LjI3LjM3LS4xNCwxLjM0LS4xMywxLjc0LDEuMTcuNTMsMS43Ni45OCwxLjgsMi4yNi0xLjc2LjU1LTIuMTcsMS42My0xLjU0LDMuMS0xLjI0LS4wNy0yLjI2LS41NS0zLjkzLjQ1bDUuMzYsMS43NmMxLjA0LS4xNCwyLjIxLjE0LDEuNzMsMS44OS0yLjA2LTEuMDItMy43Ni0uMzQtNS44OC0uMzRoLTkuODljLTIuMjksMC00LjYxLTEuNTgtNy4zNi0uMTdsOC44MSwxLjg3YzIuMzkuNTEsMy42LDIuMDMsNi43NiwxLjY1LTEuNDcsMi41MS0zLjMyLDEuNjktNS43MiwxLjQ0bC03LjI5LS43NmMtMi0uMjEtMy4xOS0uNzUtNS4zNC0uNzdsLTIzLjgzLS4yMWMtMS4wMS0uMTgtMS45My0yLjEtNC4xOC0yLjA0bC0xMS4wMy4zMmMtMi4wNi4wNi01Ljc1LS43OS03LjIzLjQ4LTIuNywyLjMxLTQuMTkuOTgtNy4wNy44OWwtMjAuNi0uNjYtMTMuNzEtLjI0Yy0zLjgxLS4wNy02LjU1LS4wNy0xMC4zNC4yNGwtOS45Mi44MS00LjIyLjA1LTguOC40My0xNi42Ni40OC0xNy4zNS40Ni05LjA0LjE1LTMuOTIuOTMtMTAuODkuMjZjLTIsLjA1LTMuMjUuMTUtNS4yLjE4bC00LjkzLjA5LTI4LjkuNjVjLTMuMi4wNy02LjE4LDEuNjUtOS40My4yOS0uOTQtLjM5LTMuNDUuMTItNC41Mi4zOS0zLjI3LjgyLTUuNC0uMzktOC4xNy0uNzYtNC0uNTQtNy44Ny0uNzYtMTEuMTgtMi45bC0zLjkzLjAzLTE1Ljg0LS40NC01LjA1LS44LTkuMDMtLjA1LTM4LjgtLjQ1Yy02LjI0LS4wNy0xMS44Ni0uODktMTguMjQuMjhsLTguOTMuMTUtOS45Ny4xN2MtLjk2LjAyLTIuNDEsMS4zNy0zLjc2LjMyLS43LS41NS0xLjUzLTIuODUtMi4zOC0zLjE3bC04LjY1LS41OWMtMi42My0uMTgtMy44My4wNy02LjM0LjE0bC0xMC45OS4zMS0zLjgyLS43MmMtMy40OC42NC02LjUyLjYyLTEwLjEyLjc1bC01LjA2LjE4Yy0xLjgxLjA3LTMuODIuNjQtNS45LjYzbC0xNS4wOS0uMDhjLTMuMzEtLjAyLTkuODcsMy4xOC0xNC40OSwxLjU1LTIuNDItLjg1LTQuMTktLjU0LTYuNzQuNDdsLTYuNjctLjM1Yy01LjMzLDEuNjUtMTAuMjQsMi44OS0xNS42NSwxLjkyLTMuNTEtLjYzLTkuNDUsMi4yNi0xMy41LDIuMTZsLTEyLjYzLS4yOWMtMS0uMDItMi4xNi0xLjc1LTQuMzMtMS42NmwtMTEuNjcuNTNjLTMuNy4xNy05Ljk3LDIuMy0xNC4yNiwxLjY2LTIuMi0uMzMtMy45OS44My02LjA0LjkzbC01Ljk0LjNjLS41My4wMy0yLjc2LDEuNjYtNC45Ni0uNzEtLjQyLS40NS4wMS0yLjA1LDEuMjUtMi4xOSw3Ljc0LS44OCwxMS44NywyLDE0LjgtLjI0LjQzLS4zMy44MS0xLjk5LDEuOTYtMS45OWg4czUuOTktMS44Myw1Ljk5LTEuODNjMy4zNS41NCw3LjA0LDEuNTcsMTAuMjguMDksMS40OS0uNjgsMi42OC0xLjc3LDQuNjktMS4yNi44NC0xLjYtLjY0LTIuMzUtMS41NS0xLjVsLTExLjQuNzUtNy45MSwxLjExYy0yLjUyLjM1LTQuNTQsMS40MS02LjU2LTEuNDItMi4xMiw0Ljg0LTYuMzctLjg3LTkuNjksMS45Mi0xLjU0LDEuMjktMy41OSwyLjMzLTUuODMsMS45M3MtOC42NywxLjc3LTE3LjA2LDEuODJsLTI2Ljg4LjE4Yy0xLjc1LjAxLTQuMjgtMi4xNi01Ljk5LTEuNzctMi4xMi40OS0zLjE4LjctNS4yNC0uMDctMi4yLTEuNzQsMS43My0yLjM4LDguNC0xLjQzLDEuMTkuMTcsMy4wOS0uNzcsNC42NC0uNjUsNC45LjQsOS4yNi0uNzYsMTQuMDUtLjgxbDEzLjEtLjEzYy44MywwLDEuNzctLjk1LDEuODktMS45MmwtMTguOTguMDgtMTAuNDIuMTRjLS45My0uNTUtLjIyLTIuMDYsMS4xNy0xLjM4LjcxLTIuNDcsMi4wMS0yLjc3LDQuNjktMy40Ni05LjM0LTIuNDktMTguMTQsNC42Ni0yNi45OS0zLTEuMzgtLjY5LTQuNTEtMS4zNi02LjQ5LTEuNGwtNC45MS0uMTJjLS4yNi0zLjM0LTEuNjgtNS4wMS45NS03LjkzbDQuOS0uMzgsMy4xLjAyLDguNzMtMi4wMWMyLjA2LS40NywzLjU3LTIuMjgsNi42NC0xLjM0LDEuODEuMzIsMS44NS0xLjg3LS4wNS0xLjMyLTEuNDYuMjUtMi4xNy4xOS0zLjM0LDAsLjM4LTMuODItNS4xNi03Ljg4LTguOTItNy4wNXMtMTAuODMtNC43Ny0xNC4xNC01LjUxYy0zLjg5LS44Ny03LjI3LS41My0xMS4yNy0yLjE3LTEuNDUtLjYtNC45NC0uODgtNi40OC0uOC0zLjAxLjE2LTMuMTktMS45Ny00LjU5LTIuOC0yLjQxLTEuNDItNS43Ny0uNzktNy4zNy00LjMxLTEuMzMuNDQtMS41My0xLjI5LS41LTEuMjksMTEuMSwyLjI0LDIxLjQzLS4xMSwyOS40OSwxLjY5LDQuODksMS4wOSw4LjY2LTEuMjcsMTAuOTQuMTUsMS40MS44Nyw1Ljc1Ljc1LDguMzUuMDlsLjQ5LS41NFpNNjEwLjYsMTAuOTNjLS45NS0uMDctMS4yNS43OS0uMjUsMS4wMS44MS4yNSwxLjM0LS43Mi4yNS0xLjAxWk02MC4yNSwxNC41OWMwLS42Ni0uNTQtMS4yLTEuMi0xLjJzLTEuMi41NC0xLjIsMS4yLjU0LDEuMiwxLjIsMS4yLDEuMi0uNTQsMS4yLTEuMlpNNjYuNDQsMTR2MWgxNC41di0xaC0xNC41Wk05NS40NCwxN2gtMjMuNXYxaDIzLjV2LTFaTTE3My45NCwxN2wtLjUuNS41LjUuNS0uNS0uNS0uNVpNMTg4Ljk0LDE3bC0uNS41LjUuNS41LS41LS41LS41Wk02NjAuNiw0My45M2MtLjk1LS4wNy0xLjI1Ljc5LS4yNSwxLjAxLjgxLjI1LDEuMzQtLjcyLjI1LTEuMDFaTTY2NS40MSw0My45NWMtMS44Ny0uODQtMi40NywxLjU1LS4yMSwxLjIsMS4xLjI5LDEuNDgtMS4wNy4yMS0xLjJaTTY3MS40Niw0NC40NmMtMS4xNS0uNjQtMS43My0uMTItMi4wNC4wOCwxLjE1LjY0LDEuNzMuMTIsMi4wNC0uMDhaTTcxMS40Niw0OC4zM2wtMTYuODUtLjU5LTYuMjEtMS4wMS02Ljk5LDEuMDQtMTEuODMtLjAzLTUuMTMtLjg0LTE3LjA3LjYsOS4wMiwxLjI2LDI0LjAxLjM2Yy41OCwwLDEuNzcsMS4wOSwyLjcuNTQsMy40MS0xLjk5LDYuNjgsMS40OCw4Ljg5LjA5czQuNy4xNyw2LjEyLS4xNGM2LjE4LTEuMzIsOS41My43NCwxMy4zNC0xLjMxWk02NzQuMzgsNTcuN2wtNi43LS42OWMtMy4xOS0yLjE2LTYuMTktLjU5LTkuNTItLjM1LTIuMjUuMTYtNi4zNy0xLjgyLTExLjA5LDEuNDUsNi45Mi0uMzUsMTAuNzUsMy40MiwxOC45OSwxLjUxbDguMzItMS45MlpNNzE1LjM5LDYxLjZjLjY2LjcsMS4zNCwwLC42NC0uNzJsLS42NC43MlpNNjc2LjYsNjEuOTNjLS45NS0uMDctMS4yNS43OS0uMjUsMS4wMS44MS4yNSwxLjM0LS43Mi4yNS0xLjAxWk02Ni45NSwxMjEuMDJsLS41LjQ2YzEuNTYuNjgsMy41MS45Nyw1LjExLS4wNS0xLjkzLS44Mi0zLjMtLjQ1LTQuNjEtLjQyWk03OS40MywxNDMuNDhjLS43MS0uNDUtMS4yNy0uNDUtMS45NywwLC42My40OCwxLjM1LjQ4LDEuOTcsMFpNNjYzLjQsMTYyLjY5YzEuMDUuODUsMS43OS4yMSwyLjA0LS4xOS4zNC0uNTMuMDEtMS4zNS0uNjQtMS41bC0xLjQxLDEuNjlaTTY4MC40MywxNjIuNWMtMS41NS0uNjktMy41MS0uOTYtNS4xMS4wNSwxLjkzLjgyLDMuMy40NSw0LjYxLjQybC41LS40N1pNNjgwLjk0LDE2M2wtLjUuNWMxLjM0LjgzLDUuMDMuNzUsOC4wMy4xMy0uMDItLjEtLjE3LS40Mi0uNTMtLjYzaC03Wk02NjMuNDEsMTY1Ljk1Yy0xLjg3LS44NC0yLjQ3LDEuNTUtLjIxLDEuMiwxLjEuMjksMS40OC0xLjA3LjIxLTEuMlpNNjY3Ljk1LDE2NS45OWMtMS4zNC0uNzgtMi4wNCwxLjM2LS4xMSwxLjA1bC4xMS0xLjA1Wk02NjguOTUsMTY3LjAybC0uMjMuNjhjMS41MS42MiwyLjk2LjQ4LDQtLjI0LTEuNzctLjgzLTIuOC0uNDgtMy43Ny0uNDRaIi8+CiAgICA8cmVjdCB4PSI2OTguNDQiIHk9IjMuOTYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyLjA0Ii8+CiAgICA8cGF0aCBkPSJNNzEzLjM1LDQuNThjMy4wNS0xLjA3LDcuNi0uOCw4LjEtLjA5LjMzLjQ4LjA2LDEuMjQtLjQ5LDEuNDgtLjkuNC0xLjIyLS41LTEuNzMtLjU3bC01Ljg3LS44M1oiLz4KICAgIDxyZWN0IHg9IjYyNC42MiIgeT0iOC4wMiIgd2lkdGg9IjMuNjkiIGhlaWdodD0iMi40NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzguNjIgMjI2KSByb3RhdGUoLTIxLjA5KSIvPgogICAgPHBhdGggZD0iTTYzNS4zMiw4LjUyYy0uNjcsMS41Ny0zLjYsMi41NS01LjI0LjQ2Ljg3LTEuMTQsMi44NS0xLjYzLDUuMjQtLjQ2WiIvPgogICAgPHBhdGggZD0iTTY0Mi40Miw4LjgyYy0xLjQzLjg0LTIuNjQtLjM4LTEuOC0xLjguNzkuMTgsMS42MiwxLjAxLDEuOCwxLjhaIi8+CiAgICA8cGF0aCBkPSJNNjM3Ljg2LDguOTFjLTEuMzIuNTEtMS42OC0uODYtLjY1LTEuMzgsMS4wOS0xLjE1LDIuMi44OC42NSwxLjM4WiIvPgogICAgPHBhdGggZD0iTTY3NS41MiwxNzMuMjVjLS4xMi4yNy0uODgsMS4xLTIuMDUuMjQtLjEyLjE0LjQtLjU5LDIuMDUtLjI0WiIvPgogICAgPHJlY3QgeD0iNzMwLjU5IiB5PSI0LjE0IiB3aWR0aD0iLjcxIiBoZWlnaHQ9Ii43MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEwLjkxIDUxOC4xNykgcm90YXRlKC00NSkiLz4KICAgIDxyZWN0IHg9IjcyMi41OSIgeT0iNDYuMTQiIHdpZHRoPSIuNzEiIGhlaWdodD0iLjcxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNzguODcgNTI0LjgyKSByb3RhdGUoLTQ1KSIvPgogIDwvZz4KPC9zdmc+');
  mask-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3NTcuMzIgMTc1Ljc3IiBmaWxsPSIjZmZmZmZmIj4KICA8cGF0aCBkPSJNMTQ5LjAyLDE3NC45NmMtLjgyLDEuNzctMi41Ni4yOS0xLjQtLjkybDcuODQtLjI3YzEuNjMtLjA2LDMuOTYtMi4xNyw1LjYyLjc3bC0xMi4wNi40M1oiLz4KICA8cGF0aCBkPSJNNS43OSw4Mi4xMmMuNTcsMS44MS0xLjI1LDIuMi0xLjg3Ljk3LTEuNjgtMS43LDEuMS0zLjQ0LDEuODctLjk3WiIvPgogIDxwYXRoIGQ9Ik03MjUuNzYsNC4xYy45LjQ0LjMyLDEuMjUtLjI3LDEuNDhzLTEuMjIuMzEtMi4wMi0xLjA5Yy4yNC0uNDEsMS4wMi0xLjAxLDIuMjktLjM4WiIvPgogIDxnPgogICAgPHBhdGggZD0iTTY2LjQzLDEyMC40MWMtNi4xNS0uMTMtMTEuNjQtMS45MS0xNS0xLjMycy02LjY0LTEuNTktMTAuMjYtMS43MWwtMTQuNzktLjQ5Yy0zLjAxLS4xLTUuNjctMS40Ny05LjIxLTEuMi0xLjU1LDEuMDctMi44NC0uODctMS4xMy0xLjcyLDEuNS41OCwzLjM0LS4wNywzLjQ2LS43Mi43NS00LjEzLTQuMS0yLjg5LTguNDItNC4wMi0zLjM3LS44OC02LjMyLTEuOTQtMTAuMTktMS43LS43LTEuMzYuNTktMS44MiwxLjM4LTEuMDEsMS4wMS4wOCwyLjAxLS4wOCwyLjQzLS4zMy40NC0uMjcuNDgtMS4wNS0uMDYtMS45MSwxLjkxLjA0LDMuMjEtLjQ5LDQuODgtMS4xNCwyLjE1LS44Myw0LjU0LjUxLDYuMzcuNDUsMi4yLS4wNywzLjY5LS4zNiw1Ljc0LS4xNSwxLjgxLjE4LDcuOTYtMS42Niw4LjA2LTEuOTQuMy0uNzktLjM2LTEuMS0xLjAzLTEuODNsLTMuOTMtNC4yNmM2LjUxLTEuNDcsMTEuMy4zMSwxMi44Ni4zNGwxMS4zMy4yNmMuNC0uMTcuNTMtLjUyLjUzLS42OGwtNy44OS0uNWMtMS43MS0uMTEtMy4xNi0xLjE3LTUuMTMtLjgxLTEuOTMuMzUtMy41LS4yLTUuMjEtLjY1bC00Ljg0LTEuMjYtNi45NC0uMDRjLS45NiwwLTEuNzctMS4wOS0xLjY1LTEuNTkuMi0uODYsMS4yNi0xLjU2LDIuODUtMS41OC0uNy0xLjMtMi4wMy0xLjAzLTMuMDktLjc3LTIuNjMtMi41Ni01LjUtMy42LTkuNDctMy4yNy0xLjg2LjY0LTIuMTUtMS45OS0uMTctMS44LDMuOS0yLjg5LDEwLjIsMS41OCwxNS4xMi0uNTIsMi4wMi0uODYsMy4wMi00LjQsMi40My02LjMxcy0yLjE2LTIuNzUtMy40NS0zLjYyYy0zLjIxLTIuMTctNC40OSwyLjE3LTYuOTMsMS4yNy0uODYtLjMyLTEuMzgtMS4wMS0xLjQ5LTIuMy0uMDctLjksMy42Ni00LjY1LDcuNzMtNC43NywzLjE5LS4xLDQuOS0yLjYyLDQuMzktNS44My0uMjMtMS41LjMtMy4xOC0uODQtNC41OC0uMzEtLjM4LS44NS0uNjYtLjk4LS45LS42OC0xLjIyLDIuMjgtMS4yLDUuMDctMi45Ny41MS0uMTQsMi4xOC45MiwyLjctLjI3LjM0LTEuMzQsMi4wOC0yLjU5LDMuMTUtMS41Ny40Mi40LDEuNzEsMi4wNCwyLjM5LDEuNSwyLjM2LTEuOTIsNC43OS0xLjIyLDYuNzktMS44MywyLjIyLS42OCwzLjkxLTEuNzUsNi4zNi4wOC44OC42NiwyLjIyLS4wMiwzLjIzLS4wNmw4Ljk2LS4zOWMuOTQtLjA0LDEuNy0uOTIsMi4xMy0xLjc0LTIuNDUtLjA0LTIuODEtMS4zNS00LjExLTIuNDMtMi4wNi0xLjcxLTcuNjctMS45Ny0xNC4yNy0zLjM4LTUuMTYtMS4xLTEyLjY0LjY0LTE3LjI4LTIuMTQtNS41Ny0zLjM0LTEwLjcxLTIuMjQtMTYuNzItNC4yOS0uOTIuMzQtMS45OC0uMTctMS40LTEuNDcsOC4yMS0xLjQ4LDE1LjQ3LDEuMzcsMjEuNjUtMS4wOGwtNC4zMy0xLjI1LTcuNjYtMS41Yy0uODktLjE4LS45Mi0xLjc5LS4xMS0yLjU5bC02Ljc4LTIuNGMtMi4yNS0uOC0zLjk5LTEuNC01LjExLTMuMzdsNi45NS0uMDljMS4zMi0uMDIsMi4zNS4yOSwzLjExLTEuMTctNS44LjE0LTE0LjAyLTMuNTYtMTMuOTktMy41Mi0uMi0uMjguNy0xLjI0LDEuMDUtMS4xMiwzLjIsMS4xLDUuMS0yLjksNy45OC0uMTUsMS4zNy0uNjYuNjItMS44MS0uMzctMi4wMUM2LjQ5LDEyLjkyLS40OCwxMi4wMy4wMyw5LjJjLjI4LTEuNTYsMy4zNi0xLjMyLDQuNjktLjY0LDIuNiwxLjM0LDQuOTEsMS4yMSw3LjU1LDEuNzZsOC4xMiwxLjY3YzIuNDkuNTEsNC42Ni4yOSw3LjEyLjc1bDUuMDcuOTUsMTMuNzQsMS41MywzLjg5LjI3YzMuNDguMjQsNS44NC0uMTUsOC4zOS0yLjQ0bDguNDYtLjQ5LDMuNi0xLjI4YzUuMjUsMi4xOSwxMS43OC0uNzYsMjEuNzctLjMsMi41OC4xMiw0Ljc5LS41Niw3LjItLjU2bDEyLjYyLjA0YzEuNjMsMCwyLjc1LjM1LDQuMzctLjEzLDIuOTEtLjg3LDUuOTMuNDksOC44MS41MmwyNS45LjI0Yy42NiwwLDEuNTkuNjEsMi4xMy45LDIuMDYtMS4zOSw2LjQ4LS43MywxMS4xNy0uMzlsOC43MS42M2MzLjEuMjMsNS40NC41OSw4LjQuNTEsMS4zOC0uMDQsMy4zMS0uNDcsNC43NC0uMzcsNC4xLjI4LDcuNDIuNTYsMTIuMzYuMThsOC4zNS0uNjVjMi45OS0uMjMsNC41OC0uOTMsNy41My0uMyw1LjEsMS4wOCw4LjU3LS45OCwxMi43Ny0uODUsMi4yLjA3LDQuNzMuNzksNi41OC42NSwzLjItLjI0LDYuMDctLjk2LDkuMTIuMTZsMy4yMS0uNTYsMzAuNjQtLjQ2YzIuNzQtLjA0LDUuMDUtLjQ2LDcuNjUuMTIsMS42Ni4zNyw0LjU3LTEuMDMsNi43My0uODMsNy44Ni43NCwxNS4yMi4wNywyMy4wMy4wMSwxLjk1LS4wMSwzLjI3LS41Nyw1LjE2LS42OGw5LjYzLS41MWMzLjg0LS4yLDcuMzItLjUsMTEuMjEtLjU1bDIyLjAxLS4yOGMzLjAzLS4wNCw1Ljc0LS45Miw5LjAzLS45NmwxNy41OS0uMiw1LjU2LjAyYzguNTIuMDMsMTguOC45NCwyNC4yNi0uMywxLjU1LS4zNSwyLjM0LjIyLDMuODcuMjVsMTEuNzMuMjIsNC42OC45YzIuMDcuNCwzLjMxLS4zMiw1LjMtLjE4bDUsLjM0LDMxLjk3LjY0YzQuODkuMSwxMC43LS4zLDEzLjM1LS4xN2w2LjA3LjMxYzEuMzYuMDcsMy4xOC0uMTksNC42LS4wOGw3LC41YzMuMDIuMjIsNS4zLTEuMjgsNy44Mi0xLjMyLDEuODEtLjAzLDQuMzgsMi40MSw3LjE2LDEuMDJzNi4xNy0uODMsOC44NC4yOGMuOTItLjQ1LDMtMi4wMSwzLjgzLTEuNDgsMi4xNSwxLjM4LDQuMTcsMS45Niw2LjU3LjUyLDEuMy0uNzgsMi45Ni41OSwzLjg4LjZsNS42My4wNGMuMzQsMCwxLjE5LS45OCwxLjMyLTEuMjguMjItLjUsMS41NS4zMSwyLjAzLjQ1bDE3LjgzLjA1Yy41OSwwLDIuNDQtMS4xNSwyLjk2LS44NywxLjg0LDEuMzgsNC4yLjM4LDYuMzEuMTlsOS4yLS44MiwxMC40Ni0uODIsNy4xOC0uNjYsMTIuNjEtMS40M2MxLjQtLjE2LDIuNjUtMS4wMSw0LjM3LS43MiwzLjUzLjU5LDYuNy0uNDksMTAuMS0uNmwxMC45LS4zNCw2LjkzLS4yNCw0LjM0LS4yMSw1Ljc0LS40Myw2LjkzLS45MywzMi4wNS0uMDksMjYsLjIyYzIuOS4wMiw1LjI2LS4zLDguMTQuNDFsMy43NS0uNDRjMS4zMS0uMTUsMi43OC44MSwzLjk3LjQ0LDMuNjYtMS4xMiw0Ljg1LjU2LDcuMzMuMjMuOTguMDcuOTEsMS4yMS0uMDQsMS4xN2wtMTAuNzUuNDdoLTUuNjJzLTExLjc1LjI2LTExLjc1LjI2bC02Ljc5LS4xMWMtMi4zNS0uMDQtNC4wOS4zOS02LjYtLjMyLTMuNjgtMS4wMy03LjcyLjQ5LTExLjU2LjU0bC0yMC4wOS4yNi01Ljk2LjkxLTE3LjY2LjM3Yy0yLjU4LjA1LTQuNDcuOTUtNy42My41Ny43MSwxLjU4LDEuNjQsMS42NywzLjQ0LDIuNDktMi42OS4zNS00Ljk3LjgyLTguNDguNDEuOTYtMS40LDIuMzEtMS4zMywzLjc2LTEuNDcsMS4wMi0xLjE3LS4zNC0xLjg1LTEtMS4wNS0xLjUuOC0yLjgzLjY3LTQuNDIuNjVsLTEyLjE0LS4xNi00Ljc4LDEuMzEtOC4yMS0uMThjLS45NC0uMDItMS44Ni44Ny0yLjA2LDIuMSwxLjUxLjEsMi4zNC0uMzYsMy40Ni0uOTUsMS4yMS0uNjQsMi4zNC40MiwxLjcyLDEuODktLjk1LDIuMjctMy41Ni0uODMtNC40Ny0uMTgtLjQ3LjM0LTEuMTguOTktMS41NCwyLjFsMTAuOC0uMzVjNC4wMS0uMTMsOS4zMi4wNiw5LjMyLjA2LDMuMiwxLjk0LDUuNzEuODEsOS4wOC43NGwxMC43Ny0uMjIsNi4wMi0xLjA0LDExLjE0LS42OCwyMC44Mi0uNzljNC4zNi0uMTcsOC43Ni0yLjA1LDEyLjg3LS40NWw0LjIzLDEuNjUsOS45LjIsMTYuMDUtLjA2YzIuNjgtLjAxLDUuMTQuODksOC4xNi0uMjQsMS4wNi4xNS44MywxLjQtLjE0LDEuMTEtNC43NiwxLjkzLTkuMzQuODQtMTQuMTUuOTRsLTIxLjc3LjQ2LTUuMzIuNzJjLS45OS0uNjctMi4xNi4zNy0xLjMxLDEuMTUsNS4zNC0uNzcsOS4yNS43NSwxMi44My40N2w0Ljc5LS4zNywxMS44OC0uMDYsNi42MywxLjQxYzEuNTQuMzMsMi4zMiwyLDQuODUuOTEuNTEtMS4yMywyLjExLS4xOSwxLjA3LjQ5LTQuMDgsMi40Ny05LjA1LDMuMTYtMTMuODEsMy4xOC0xLjExLTEuMzItMi42Mi4zMi0xLjI4LDEuMTQsMy44Mi44Niw3LjczLS40NCwxMC43My4xOS0zLjkyLDEuODMtNy4yOSwxLjQ3LTExLjI3LDEuNTQtLjY5LS4zNS0xLjM4LjQ2LS42LDEuMDIsMS43NS0uNDQsMS44NiwxLjU4LjA5LDEuMTlsLTYsMS4yMWMtMS44Ni4zNy0zLjE1LDIuNDktNS40NSwyLjIycy0zLjU4LDEuNDctNS4zMywxLjY4bC05LjE5LDEuMDctOC41MywxLjFjNC40OC45NSw5LjA5LjQsMTQuMzYuMjgsMS44Ny0uMzUsMi4xOCwxLjgxLS4zOSwxLjY5LDIuMTQsMS4zNCw0LjYxLjQyLDcuMjUtLjI1LDQuNDQtMS4xMyw5LjAxLjM5LDExLjQ2LDMuOTdsLTEuNiw0LjA5Yy45MywxLjYyLTEuMjUsMi42My0xLjc4Ljg3LS4xNy0uNjQtLjg2LTEuMzEtMS4yOC0xLjM3LTEuNTguNTQtMS41NSwyLjYyLTIuNzksMy41NGwtMy4yMiwyLjM5Yy0xLjI3Ljk0LjYyLDIuNzcsMi4wMiwyLjUyLjgzLS4xNSwxLjYxLjA3LDEuOTUuNzkuMy42My41MywxLjA1LjU3LDEuNDIuMTIsMS4yNC01LjQ2LDIuNjctNC41NCw0LjAyLjczLDEuMDcsNC41My0uMTMsMi41NSwxLjk0LS42MSwxLjI5LTEuNjcsMi4zMy0yLjg3LDIuNDUtLjIxLjE5LS4zNi40My0uNDUuNjgtLjI5LjgxLS43OCwxLjI2LTIuMzQsMS40NC0uOTMuMTEtLjkyLDIuMTEuMjUsMi43N2wtNS4wNS41MmMuMS4zNS43My44OS43MiwxLjE3cy0uNi40NC0uMjksMS40MmMxLjI0LS40LDIuMDIuODQuODMsMS42NS04LjI1LTIuNDQtMTMuNjUsMS41OS0xNC44LDEuNzhsLTcuNTgsMS4yNCw1LjkyLjY0YzIuMjguMjUsMy43Ljc1LDYuNTYuODktMi42NywyLjYzLTYuMTItLjE0LTYuNDMsMy4wMiwzLjczLS41Nyw4LjM0Ljk2LDguNywyLjkxLTMuNjYtLjg3LTUuMDMsMi42NC05LjgsMy42MmwtNS4xMiwxLjA2LTEwLjgzLjg5LDE1LjExLjU2LDE0Ljk2LS4yOGMxLjc1LS4wMywzLjEyLTEuMDksNS4xLjA4czQuMzYsMi4wMyw3LjEyLDEuMTFjLjk4LS4zNywxLjAzLDEuNDYtLjI3Ljc3LTIuNzgsNC4yNC0xMC42Ni0uMTYtMTYuMjIsNS42OS42MS40NywyLjAyLDIuMzEsMy4yNywyLjQ2LDMuMjkuMDYsNS41OC4yLDguNDQsMS41LDEuNDIuNjQsNC44OS0uMTIsNS45LjkzLDIuODcsMyw3LjgsMS4wNSw3LjY5LDMuMy0uMSwxLjk2LTEuODYsMS45Mi0yLjg3LDEuOTlsLTUuMDkuMzdjLjI0LjgzLjYsMS44Mi40OCwyLjMtLjE1LjYyLTEuMiwxLjA3LTIuMTMsMS4wMy0yLjY0LS4xLTIuMTUsMi44Ni0yLjg1LDMuNjctLjM3LjQzLTEuMzQuODUtMi43LjU4LTEuNTQtLjIyLTEuNTcsMS42Ny0uMDMsMS40NCwyLjUxLS40OCw0LjQ0LjI0LDYuMDMsMS41OS0yLjEzLDEuNjItMy43NCw0LjU3LTYuMTksNC44MmwtNi4zNC42NWMtMS42LjE2LTEuOTUsMi40NC0yLjUxLDMuNzMtNi45NCw0LjItMTEuNzYsMS42My0xNy44OSwyLjg5LTMuNzMuNzctNy43My0uMTctMTEuMDcsMS45NCw2LjQ3LjEsMTEuNTIsMy44MiwxOC43MiwxLjgyLDQuMTktMS4xNyw5LjgzLS42LDEyLjQ2LDEuNTktNC4wMS0uNDItNy4xOC40LTExLjA2LjdsLTUuODUuNDZjLTEuNjEsMy41MS01LjIzLDIuOTctNi4wOCw0LjQtLjM1LjU5LS4zNSwyLjY5LjI2LDMuMDksMi4wNS4wOCwzLjc5LjgzLDUuOTUuOTlsNy42Mi41OCw3LjY2LDIuODRjLjA0Ljk5LjAzLDEuOTQtLjAzLDIuMDQtMS4zNywwLTEuNjguNzUtMS43NywxLjg0LTMuNjgtMS43LTguMTgtMS45OC0xMi44Ni0yLjY4LDIuMTUsMy4zMiw1LjYyLDIuNTgsNi4xOSw0LjctMi45OSwyLjkyLTcuNy0uNDEtMTIuMTYsMS40OWw3LjEyLDEuNjRjLjQzLjEsMS4yOC4yNCwxLjU3LjY0LjI3LjM3LS4xNCwxLjM0LS4xMywxLjc0LDEuMTcuNTMsMS43Ni45OCwxLjgsMi4yNi0xLjc2LjU1LTIuMTcsMS42My0xLjU0LDMuMS0xLjI0LS4wNy0yLjI2LS41NS0zLjkzLjQ1bDUuMzYsMS43NmMxLjA0LS4xNCwyLjIxLjE0LDEuNzMsMS44OS0yLjA2LTEuMDItMy43Ni0uMzQtNS44OC0uMzRoLTkuODljLTIuMjksMC00LjYxLTEuNTgtNy4zNi0uMTdsOC44MSwxLjg3YzIuMzkuNTEsMy42LDIuMDMsNi43NiwxLjY1LTEuNDcsMi41MS0zLjMyLDEuNjktNS43MiwxLjQ0bC03LjI5LS43NmMtMi0uMjEtMy4xOS0uNzUtNS4zNC0uNzdsLTIzLjgzLS4yMWMtMS4wMS0uMTgtMS45My0yLjEtNC4xOC0yLjA0bC0xMS4wMy4zMmMtMi4wNi4wNi01Ljc1LS43OS03LjIzLjQ4LTIuNywyLjMxLTQuMTkuOTgtNy4wNy44OWwtMjAuNi0uNjYtMTMuNzEtLjI0Yy0zLjgxLS4wNy02LjU1LS4wNy0xMC4zNC4yNGwtOS45Mi44MS00LjIyLjA1LTguOC40My0xNi42Ni40OC0xNy4zNS40Ni05LjA0LjE1LTMuOTIuOTMtMTAuODkuMjZjLTIsLjA1LTMuMjUuMTUtNS4yLjE4bC00LjkzLjA5LTI4LjkuNjVjLTMuMi4wNy02LjE4LDEuNjUtOS40My4yOS0uOTQtLjM5LTMuNDUuMTItNC41Mi4zOS0zLjI3LjgyLTUuNC0uMzktOC4xNy0uNzYtNC0uNTQtNy44Ny0uNzYtMTEuMTgtMi45bC0zLjkzLjAzLTE1Ljg0LS40NC01LjA1LS44LTkuMDMtLjA1LTM4LjgtLjQ1Yy02LjI0LS4wNy0xMS44Ni0uODktMTguMjQuMjhsLTguOTMuMTUtOS45Ny4xN2MtLjk2LjAyLTIuNDEsMS4zNy0zLjc2LjMyLS43LS41NS0xLjUzLTIuODUtMi4zOC0zLjE3bC04LjY1LS41OWMtMi42My0uMTgtMy44My4wNy02LjM0LjE0bC0xMC45OS4zMS0zLjgyLS43MmMtMy40OC42NC02LjUyLjYyLTEwLjEyLjc1bC01LjA2LjE4Yy0xLjgxLjA3LTMuODIuNjQtNS45LjYzbC0xNS4wOS0uMDhjLTMuMzEtLjAyLTkuODcsMy4xOC0xNC40OSwxLjU1LTIuNDItLjg1LTQuMTktLjU0LTYuNzQuNDdsLTYuNjctLjM1Yy01LjMzLDEuNjUtMTAuMjQsMi44OS0xNS42NSwxLjkyLTMuNTEtLjYzLTkuNDUsMi4yNi0xMy41LDIuMTZsLTEyLjYzLS4yOWMtMS0uMDItMi4xNi0xLjc1LTQuMzMtMS42NmwtMTEuNjcuNTNjLTMuNy4xNy05Ljk3LDIuMy0xNC4yNiwxLjY2LTIuMi0uMzMtMy45OS44My02LjA0LjkzbC01Ljk0LjNjLS41My4wMy0yLjc2LDEuNjYtNC45Ni0uNzEtLjQyLS40NS4wMS0yLjA1LDEuMjUtMi4xOSw3Ljc0LS44OCwxMS44NywyLDE0LjgtLjI0LjQzLS4zMy44MS0xLjk5LDEuOTYtMS45OWg4czUuOTktMS44Myw1Ljk5LTEuODNjMy4zNS41NCw3LjA0LDEuNTcsMTAuMjguMDksMS40OS0uNjgsMi42OC0xLjc3LDQuNjktMS4yNi44NC0xLjYtLjY0LTIuMzUtMS41NS0xLjVsLTExLjQuNzUtNy45MSwxLjExYy0yLjUyLjM1LTQuNTQsMS40MS02LjU2LTEuNDItMi4xMiw0Ljg0LTYuMzctLjg3LTkuNjksMS45Mi0xLjU0LDEuMjktMy41OSwyLjMzLTUuODMsMS45M3MtOC42NywxLjc3LTE3LjA2LDEuODJsLTI2Ljg4LjE4Yy0xLjc1LjAxLTQuMjgtMi4xNi01Ljk5LTEuNzctMi4xMi40OS0zLjE4LjctNS4yNC0uMDctMi4yLTEuNzQsMS43My0yLjM4LDguNC0xLjQzLDEuMTkuMTcsMy4wOS0uNzcsNC42NC0uNjUsNC45LjQsOS4yNi0uNzYsMTQuMDUtLjgxbDEzLjEtLjEzYy44MywwLDEuNzctLjk1LDEuODktMS45MmwtMTguOTguMDgtMTAuNDIuMTRjLS45My0uNTUtLjIyLTIuMDYsMS4xNy0xLjM4LjcxLTIuNDcsMi4wMS0yLjc3LDQuNjktMy40Ni05LjM0LTIuNDktMTguMTQsNC42Ni0yNi45OS0zLTEuMzgtLjY5LTQuNTEtMS4zNi02LjQ5LTEuNGwtNC45MS0uMTJjLS4yNi0zLjM0LTEuNjgtNS4wMS45NS03LjkzbDQuOS0uMzgsMy4xLjAyLDguNzMtMi4wMWMyLjA2LS40NywzLjU3LTIuMjgsNi42NC0xLjM0LDEuODEuMzIsMS44NS0xLjg3LS4wNS0xLjMyLTEuNDYuMjUtMi4xNy4xOS0zLjM0LDAsLjM4LTMuODItNS4xNi03Ljg4LTguOTItNy4wNXMtMTAuODMtNC43Ny0xNC4xNC01LjUxYy0zLjg5LS44Ny03LjI3LS41My0xMS4yNy0yLjE3LTEuNDUtLjYtNC45NC0uODgtNi40OC0uOC0zLjAxLjE2LTMuMTktMS45Ny00LjU5LTIuOC0yLjQxLTEuNDItNS43Ny0uNzktNy4zNy00LjMxLTEuMzMuNDQtMS41My0xLjI5LS41LTEuMjksMTEuMSwyLjI0LDIxLjQzLS4xMSwyOS40OSwxLjY5LDQuODksMS4wOSw4LjY2LTEuMjcsMTAuOTQuMTUsMS40MS44Nyw1Ljc1Ljc1LDguMzUuMDlsLjQ5LS41NFpNNjEwLjYsMTAuOTNjLS45NS0uMDctMS4yNS43OS0uMjUsMS4wMS44MS4yNSwxLjM0LS43Mi4yNS0xLjAxWk02MC4yNSwxNC41OWMwLS42Ni0uNTQtMS4yLTEuMi0xLjJzLTEuMi41NC0xLjIsMS4yLjU0LDEuMiwxLjIsMS4yLDEuMi0uNTQsMS4yLTEuMlpNNjYuNDQsMTR2MWgxNC41di0xaC0xNC41Wk05NS40NCwxN2gtMjMuNXYxaDIzLjV2LTFaTTE3My45NCwxN2wtLjUuNS41LjUuNS0uNS0uNS0uNVpNMTg4Ljk0LDE3bC0uNS41LjUuNS41LS41LS41LS41Wk02NjAuNiw0My45M2MtLjk1LS4wNy0xLjI1Ljc5LS4yNSwxLjAxLjgxLjI1LDEuMzQtLjcyLjI1LTEuMDFaTTY2NS40MSw0My45NWMtMS44Ny0uODQtMi40NywxLjU1LS4yMSwxLjIsMS4xLjI5LDEuNDgtMS4wNy4yMS0xLjJaTTY3MS40Niw0NC40NmMtMS4xNS0uNjQtMS43My0uMTItMi4wNC4wOCwxLjE1LjY0LDEuNzMuMTIsMi4wNC0uMDhaTTcxMS40Niw0OC4zM2wtMTYuODUtLjU5LTYuMjEtMS4wMS02Ljk5LDEuMDQtMTEuODMtLjAzLTUuMTMtLjg0LTE3LjA3LjYsOS4wMiwxLjI2LDI0LjAxLjM2Yy41OCwwLDEuNzcsMS4wOSwyLjcuNTQsMy40MS0xLjk5LDYuNjgsMS40OCw4Ljg5LjA5czQuNy4xNyw2LjEyLS4xNGM2LjE4LTEuMzIsOS41My43NCwxMy4zNC0xLjMxWk02NzQuMzgsNTcuN2wtNi43LS42OWMtMy4xOS0yLjE2LTYuMTktLjU5LTkuNTItLjM1LTIuMjUuMTYtNi4zNy0xLjgyLTExLjA5LDEuNDUsNi45Mi0uMzUsMTAuNzUsMy40MiwxOC45OSwxLjUxbDguMzItMS45MlpNNzE1LjM5LDYxLjZjLjY2LjcsMS4zNCwwLC42NC0uNzJsLS42NC43MlpNNjc2LjYsNjEuOTNjLS45NS0uMDctMS4yNS43OS0uMjUsMS4wMS44MS4yNSwxLjM0LS43Mi4yNS0xLjAxWk02Ni45NSwxMjEuMDJsLS41LjQ2YzEuNTYuNjgsMy41MS45Nyw1LjExLS4wNS0xLjkzLS44Mi0zLjMtLjQ1LTQuNjEtLjQyWk03OS40MywxNDMuNDhjLS43MS0uNDUtMS4yNy0uNDUtMS45NywwLC42My40OCwxLjM1LjQ4LDEuOTcsMFpNNjYzLjQsMTYyLjY5YzEuMDUuODUsMS43OS4yMSwyLjA0LS4xOS4zNC0uNTMuMDEtMS4zNS0uNjQtMS41bC0xLjQxLDEuNjlaTTY4MC40MywxNjIuNWMtMS41NS0uNjktMy41MS0uOTYtNS4xMS4wNSwxLjkzLjgyLDMuMy40NSw0LjYxLjQybC41LS40N1pNNjgwLjk0LDE2M2wtLjUuNWMxLjM0LjgzLDUuMDMuNzUsOC4wMy4xMy0uMDItLjEtLjE3LS40Mi0uNTMtLjYzaC03Wk02NjMuNDEsMTY1Ljk1Yy0xLjg3LS44NC0yLjQ3LDEuNTUtLjIxLDEuMiwxLjEuMjksMS40OC0xLjA3LjIxLTEuMlpNNjY3Ljk1LDE2NS45OWMtMS4zNC0uNzgtMi4wNCwxLjM2LS4xMSwxLjA1bC4xMS0xLjA1Wk02NjguOTUsMTY3LjAybC0uMjMuNjhjMS41MS42MiwyLjk2LjQ4LDQtLjI0LTEuNzctLjgzLTIuOC0uNDgtMy43Ny0uNDRaIi8+CiAgICA8cmVjdCB4PSI2OTguNDQiIHk9IjMuOTYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIyLjA0Ii8+CiAgICA8cGF0aCBkPSJNNzEzLjM1LDQuNThjMy4wNS0xLjA3LDcuNi0uOCw4LjEtLjA5LjMzLjQ4LjA2LDEuMjQtLjQ5LDEuNDgtLjkuNC0xLjIyLS41LTEuNzMtLjU3bC01Ljg3LS44M1oiLz4KICAgIDxyZWN0IHg9IjYyNC42MiIgeT0iOC4wMiIgd2lkdGg9IjMuNjkiIGhlaWdodD0iMi40NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzguNjIgMjI2KSByb3RhdGUoLTIxLjA5KSIvPgogICAgPHBhdGggZD0iTTYzNS4zMiw4LjUyYy0uNjcsMS41Ny0zLjYsMi41NS01LjI0LjQ2Ljg3LTEuMTQsMi44NS0xLjYzLDUuMjQtLjQ2WiIvPgogICAgPHBhdGggZD0iTTY0Mi40Miw4LjgyYy0xLjQzLjg0LTIuNjQtLjM4LTEuOC0xLjguNzkuMTgsMS42MiwxLjAxLDEuOCwxLjhaIi8+CiAgICA8cGF0aCBkPSJNNjM3Ljg2LDguOTFjLTEuMzIuNTEtMS42OC0uODYtLjY1LTEuMzgsMS4wOS0xLjE1LDIuMi44OC42NSwxLjM4WiIvPgogICAgPHBhdGggZD0iTTY3NS41MiwxNzMuMjVjLS4xMi4yNy0uODgsMS4xLTIuMDUuMjQtLjEyLjE0LjQtLjU5LDIuMDUtLjI0WiIvPgogICAgPHJlY3QgeD0iNzMwLjU5IiB5PSI0LjE0IiB3aWR0aD0iLjcxIiBoZWlnaHQ9Ii43MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEwLjkxIDUxOC4xNykgcm90YXRlKC00NSkiLz4KICAgIDxyZWN0IHg9IjcyMi41OSIgeT0iNDYuMTQiIHdpZHRoPSIuNzEiIGhlaWdodD0iLjcxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNzguODcgNTI0LjgyKSByb3RhdGUoLTQ1KSIvPgogIDwvZz4KPC9zdmc+');
  -webkit-mask-size:100% 100%;mask-size:100% 100%;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  mask-mode:alpha;
}
.btn-primary{
  display:inline-flex;align-items:center;gap:10px;
  background:var(--ink);color:var(--bg);
  padding:18px 32px;
  font-family:'Montserrat Alternates',sans-serif;
  font-weight:700;
  font-size:16px;letter-spacing:0.04em;
  text-decoration:none;cursor:none;
  transition:background .25s,transform .2s;
  position:relative;overflow:hidden;
}
.btn-primary::before{
  content:'';position:absolute;inset:0;
  background:var(--red);transform:translateX(-100%);
  transition:transform .35s cubic-bezier(.25,.46,.45,.94);
}
.btn-primary:hover::before{transform:translateX(0);}
.btn-primary span{position:relative;z-index:1;}
.btn-arrow{position:relative;z-index:1;transition:transform .25s;}
.btn-primary:hover .btn-arrow{transform:translateX(4px);}

/* Hero-style button — reused for Show More / Download CV / See It Live, same look, smaller scale */
.btn-hero-sm{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:var(--ink);color:var(--bg);
  padding:12px 22px;
  border:none;
  font-family:'Montserrat Alternates',sans-serif;
  font-weight:700;
  font-size:13px;letter-spacing:0.03em;
  text-decoration:none;cursor:none;white-space:nowrap;
  transition:background .25s,color .25s,transform .2s;
  position:relative;overflow:hidden;
  
}
.btn-hero-sm::before{
  content:'';position:absolute;inset:0;
  background:var(--red);transform:translateX(-100%);
  transition:transform .35s cubic-bezier(.25,.46,.45,.94);
}
.btn-hero-sm:hover::before{transform:translateX(0);}
.btn-hero-sm span{position:relative;z-index:1;}
.btn-hero-sm .btn-arrow{position:relative;z-index:1;transition:transform .25s;}
.btn-hero-sm:hover .btn-arrow{transform:translateX(4px);}
.portrait-wrapper{
  position:relative;display:flex;justify-content:center;
}
.portrait-frame{
  width:100%;max-width:420px;
  aspect-ratio:3/4;
  position:relative;
}
.portrait-corner{
  position:absolute;width:32px;height:32px;
  border-color:var(--red);border-style:solid;
}
.portrait-corner.tl{top:-8px;left:-8px;border-width:2px 0 0 2px;}
.portrait-corner.tr{top:-8px;right:-8px;border-width:2px 2px 0 0;}
.portrait-corner.bl{bottom:-8px;left:-8px;border-width:0 0 2px 2px;}
.portrait-corner.br{bottom:-8px;right:-8px;border-width:0 2px 2px 0;}
.portrait-inner{
  width:100%;height:100%;
  background:var(--bg);
  border:0.5px solid var(--line2);
  overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  position:relative;
}
.portrait-inner img{width:100%;height:100%;object-fit:cover;}
.portrait-placeholder{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:20px;width:100%;height:100%;
}
.portrait-placeholder svg{opacity:0.35;}
.hero-bg-ink{
  position:absolute;right:-100px;top:50%;transform:translateY(-50%);
  opacity:0.04;pointer-events:none;
}
.section-header{margin-bottom:72px;}
.section-tag{
  font-size:11px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--red);margin-bottom:16px;
  display:flex;align-items:center;gap:12px;
}
.section-tag::after{content:'';flex:1;max-width:48px;height:1px;background:var(--red);opacity:0.5;}
h2{
  font-family:'Montserrat Alternates',sans-serif;
  font-size:clamp(36px,4vw,54px);
  font-weight:600;letter-spacing:-0.03em;line-height:1.1;
}
#works{background:var(--bg);}
.projects-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:2px;
}
.project-card{
  position:relative;overflow:hidden;cursor:none;
  background:var(--bg);
  border:0.5px solid var(--line);
  transition:border-color .3s;
}
.project-card:hover{border-color:var(--line2);}
.card-image{
  width:100%;aspect-ratio:4/3;overflow:hidden;
  position:relative;background:var(--bg);
  display:flex;align-items:center;justify-content:center;
}
.card-img-inner{
  position:absolute;inset:0;
  transition:transform .6s cubic-bezier(.25,.46,.45,.94);
}
.project-card:hover .card-img-inner{transform:scale(1.04);}
.card-ink-reveal{
  position:absolute;inset:0;background:var(--ink);
  transform:translateY(100%);
  transition:transform .5s cubic-bezier(.25,.46,.45,.94);
  opacity:0.85;
  display:flex;align-items:center;justify-content:center;
}
.project-card:hover .card-ink-reveal{transform:translateY(0);}
.card-reveal-text{
  color:#fff;font-family:'Cormorant Garamond',serif;
  font-size:15px;letter-spacing:0.1em;text-transform:uppercase;
  opacity:0;transition:opacity .3s .2s;
}
.project-card:hover .card-reveal-text{opacity:1;}
.card-body{padding:28px 28px 32px;}
.card-platform{
  display:inline-block;
  font-size:10px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--red);margin-bottom:12px;
  padding:4px 10px;border:0.5px solid rgba(230,74,25,0.3);
}
.card-title{
  font-family:'Cormorant Garamond',serif;
  font-size:24px;font-weight:400;line-height:1.2;margin-bottom:10px;
}
.card-desc{font-size:14px;color:var(--ink2);line-height:1.65;}
.mock-saas{
  width:100%;height:100%;
  background:linear-gradient(135deg,#f0f0f0,#e8e8e8);
  display:flex;flex-direction:column;
  padding:16px;gap:8px;
}
.mock-bar{height:8px;background:#ddd;border-radius:2px;}
.mock-bar.red{background:var(--red);width:40%;}
.mock-bar.sm{width:60%;height:6px;}
.mock-row{display:flex;gap:6px;}
.mock-block{flex:1;height:48px;background:#e2e2e2;border-radius:3px;}
.mock-block.tall{height:80px;}
.mock-block.r{background:rgba(230,74,25,0.12);}
.mock-mobile{
  width:70%;height:85%;margin:auto;
  border:2px solid #ccc;border-radius:16px;
  background:#fff;overflow:hidden;display:flex;flex-direction:column;
}
.mock-mobile-bar{height:6px;background:var(--red);margin:12px 16px;}
.mock-mobile-item{height:28px;background:#eee;margin:6px 16px;border-radius:4px;}
.mock-mobile-item.s{width:60%;height:20px;}
.mock-desktop{
  width:92%;height:85%;margin:auto;
  border:1.5px solid #ccc;border-radius:6px;
  background:#fff;overflow:hidden;display:flex;
}
.mock-sidebar{width:22%;background:#f4f4f4;padding:8px;}
.mock-side-item{height:14px;background:#ddd;margin:6px 0;border-radius:2px;}
.mock-side-item.red{background:rgba(230,74,25,0.4);width:70%;}
.mock-main{flex:1;padding:10px;display:flex;flex-direction:column;gap:6px;}
.mock-main-row{display:flex;gap:4px;}
.mock-cell{flex:1;height:22px;background:#eee;border-radius:2px;}
.mock-cell.h{height:36px;}
#about{background:#F0F0F0;border-top:0.5px solid var(--line);}
.about-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:100px;align-items:start;
}
.about-text p{font-size:17px;line-height:1.85;color:var(--ink2);margin-bottom:24px;}
.about-text strong{color:var(--ink);font-weight:500;}
.experience-line{
  display:flex;gap:20px;padding:20px 0;
  border-bottom:0.5px solid var(--line);
}
.exp-year{
  font-family:'Cormorant Garamond',serif;font-size:16px;
  color:var(--muted);min-width:52px;padding-top:2px;
}
.exp-role{font-size:15px;color:var(--ink);margin-bottom:4px;}
.exp-co{font-size:13px;color:var(--red);}
.skills-header{
  font-size:11px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);margin-bottom:24px;margin-top:48px;
}
.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;}
.skill-item{
  padding:18px 16px;background:var(--bg);
  border:0.5px solid var(--line);
  font-size:13px;letter-spacing:0.06em;
  transition:background .2s,border-color .2s,color .2s;
}
.skill-item:hover{background:var(--ink);color:#fff;border-color:var(--ink);}
footer{
  padding:80px 48px 48px;
  border-top:0.5px solid var(--line);
  background:var(--bg);
}
.footer-grid{
  max-width:1200px;margin:0 auto;
  display:flex;justify-content:space-between;align-items:flex-start;
  flex-wrap:wrap;gap:48px;
}
.footer-left{}
.footer-name{
  font-family:'Cormorant Garamond',serif;
  font-size:36px;font-weight:300;margin-bottom:8px;
}
.footer-tagline{font-size:14px;color:var(--muted);}
.footer-email{
  display:inline-block;margin-top:20px;
  font-size:16px;color:var(--ink);text-decoration:none;
  border-bottom:1px solid var(--red);padding-bottom:2px;
  transition:color .2s;
}
.footer-email:hover{color:var(--red);}
.footer-socials{display:flex;flex-direction:column;gap:12px;padding-top:4px;}
.social-link{
  display:flex;align-items:center;gap:10px;
  font-size:13px;letter-spacing:0.08em;
  color:var(--ink2);text-decoration:none;
  transition:color .2s,gap .2s;
}
.social-link:hover{color:var(--red);gap:14px;}
.social-link::before{
  content:'';width:20px;height:1px;
  background:currentColor;transition:width .25s;
}
.social-link:hover::before{width:28px;}
.footer-bottom{
  max-width:1200px;margin:60px auto 0;
  padding-top:24px;border-top:0.5px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;
  font-size:12px;color:var(--muted);letter-spacing:0.06em;
  flex-wrap:wrap;gap:12px;
}
.red-dot{color:var(--red);}
.ink-divider{
  display:flex;align-items:center;gap:16px;
  margin:72px 0 0;
  color:var(--muted);font-size:11px;letter-spacing:0.15em;text-transform:uppercase;
}
.ink-divider::before,.ink-divider::after{
  content:'';flex:1;height:0.5px;background:var(--line2);
}
.reveal{
  opacity:0;transform:translateY(32px);
  transition:opacity .8s cubic-bezier(.25,.46,.45,.94),transform .8s cubic-bezier(.25,.46,.45,.94);
}
.reveal.visible{opacity:1;transform:translateY(0);}
.reveal-delay-1{transition-delay:.1s;}
.reveal-delay-2{transition-delay:.2s;}
.reveal-delay-3{transition-delay:.3s;}
.reveal-delay-4{transition-delay:.4s;}
.reveal-delay-5{transition-delay:.5s;}
.hero-text .reveal{
  transition:opacity .9s cubic-bezier(.25,.46,.45,.94),transform .9s cubic-bezier(.25,.46,.45,.94);
}
.portrait-frame.reveal{
  transition:opacity 1.1s cubic-bezier(.25,.46,.45,.94),transform 1.1s cubic-bezier(.25,.46,.45,.94);
  transition-delay:.2s;
}
.sun-decoration{
  position:absolute;
  border-radius:50%;
  background:var(--red);
  pointer-events:none;
  opacity:0.85;
}
@media(max-width:900px){
  nav{display:none;}
  .burger{display:flex;}
  section{padding:100px 28px;}
  /* min-height:90vh (instead of the desktop 100vh) leaves a visible
     sliver of the next section peeking in at the bottom on tablet, as
     a scroll-affordance cue. */
  #hero{padding:120px 28px 80px;min-height:90vh;}
  /* On mobile/tablet the hero video crops to a narrower vertical sliver —
     centering it cuts off the sun on the right side of the frame. Shift
     the crop right so the sun stays visible. */
  .hero-bg-photo{object-position:right center;}
  .projects-grid{grid-template-columns:1fr;}
  .about-grid{grid-template-columns:1fr;gap:60px;}
  footer{padding:60px 28px 40px;}
  .skills-grid{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:600px){
  section{padding:80px 16px;}
  #hero{padding:110px 16px 60px;}
  .hero-grid{gap:48px;}
  .hero-eyebrow{font-size:9px;}
  h1{font-size:40px;}
  .hero-bio{font-size:14px;}
  .projects-grid{gap:2px;}
  .skills-grid{grid-template-columns:repeat(2,1fr);}
  footer{padding:48px 16px 32px;}
  .footer-grid{flex-direction:column;gap:36px;}
  .footer-bottom{flex-direction:column;align-items:flex-start;gap:8px;}
}
.btn-pill{
  display:inline-flex;align-items:center;justify-content:center;
  padding:18px 32px;font-family:'Outfit',sans-serif;
  font-size:16px;font-weight:500;letter-spacing:-0.01em;
  text-decoration:none;cursor:none;white-space:nowrap;
  transition:background .25s,color .25s,opacity .25s;
}
.btn-pill-light{background:var(--bg);color:var(--ink);}
.btn-pill-light:hover{background:var(--ink);color:var(--bg);}
.btn-pill-dark{background:var(--ink);color:var(--bg);}
.btn-pill-dark:hover{background:var(--red);}

/* WORKS — work. */
.work-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:64px;flex-wrap:wrap;gap:24px;}
.work-title{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(28px,3.4vw,37px);color:var(--red);letter-spacing:-0.03em;}
.work-row{
  display:grid;grid-template-columns:360px 1fr;gap:40px;
  padding:48px;margin-bottom:28px;align-items:start;
  background:var(--bg);border:0.5px solid var(--line);border-radius:24px;
  box-shadow:0 1px 2px rgba(20,16,12,0.04);
  text-decoration:none;color:inherit;
  transition:box-shadow .5s cubic-bezier(.16,1,.3,1),border-color .5s ease;
}
/* :last-child, not :last-of-type — work.html mixes <div> rows (disabled/
   "coming soon" cases) with <a> rows (linked case studies), and
   :last-of-type matches per-tag-name, so it was zeroing out the margin on
   the last <a> even when a <div> row followed it, leaving an inconsistent
   (missing) gap before the final row. */
.work-row:last-child{margin-bottom:0;}
.work-row:hover{box-shadow:0 24px 48px -20px rgba(20,16,12,0.18);border-color:var(--ink);}
.work-row-info{display:flex;gap:24px;}
.work-num{font-family:'Water Brush',cursive;font-size:32px;color:var(--red);line-height:1;flex-shrink:0;margin-top:2px;}
.work-content{flex:1;}
.work-product{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:18px;color:var(--ink);margin-bottom:10px;line-height:1.3;}
.work-platform{font-family:'Outfit',sans-serif;font-weight:300;font-size:16px;color:#CFCFCF;margin-bottom:18px;letter-spacing:0;}
.work-desc{font-family:'Outfit',sans-serif;font-size:16px;line-height:1.6;color:var(--ink2);margin-bottom:22px;}
.work-year{font-family:'Outfit',sans-serif;font-weight:300;font-size:16px;color:#CFCFCF;}
.work-row-image{
  width:100%;aspect-ratio:16/10;overflow:hidden;position:relative;
  background:var(--bg);
}
.work-row-image img{width:100%;height:100%;object-fit:cover;display:block;}
.work-img-fallback{
  position:absolute;inset:0;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#f0f0f0,#e4e4e4);
  font-family:'Cormorant Garamond',serif;font-size:22px;letter-spacing:0.04em;
  color:var(--muted);
}

/* Scroll Stack — work./Work-page cards pin and gently recede as the next
   one slides over them. Disabled on small phones and for reduced motion
   (handled in JS); the card visuals above degrade gracefully without it. */
@media (min-width:681px){
  .work-row-stack{
    position:sticky;
    top:110px;
    z-index:var(--stack-i,1);
    will-change:transform,filter;
  }
}

/* Lanyard badge — draggable, physics-swung card hanging on the About page.
   .lanyard-fallback is a static CSS-only badge shown until/unless the
   Three.js + Rapier canvas mounts successfully (see js/lanyard.js). */
/* About's header is now position:fixed (site-header--home, see below) so it
   overlays this stack instead of pushing it down in normal flow — padding-top
   here manually restores the same offset the sticky header used to reserve,
   so the title/badge land in the same place while the header blurs/shows
   through them on top, matching the Home page's transparent-nav look. */
.about-hero-stack{position:relative;max-width:1440px;margin:0 auto;padding-top:72px;}
@media(max-width:768px){.about-hero-stack{padding-top:64px;}}
.lanyard-section{
  /* Overlaid directly on top of the page-hero (via .about-hero-stack,
     position:relative) so the badge hangs right next to the heading
     instead of scrolling in below it. Height is taller than the hero
     itself (extending past its bottom edge, which is fine since nothing
     clips it) so the card scales up and reaches further down the page,
     close to the Download CV row. The mount below is sized to this
     section's own box; js/lanyard.js sizes/aims its camera from the
     mount's clientWidth/clientHeight, so it adapts automatically. */
  position:absolute;top:0;left:0;right:0;width:100%;height:calc(100% + 260px);
  z-index:5;pointer-events:none;
}
.lanyard-mount{position:absolute;inset:0;pointer-events:none;}
.lanyard-mount canvas{display:block;}
/* align-items:flex-end (not center) pins the static badge to the right
   edge of the mount, matching where the real 3D card hangs — centering it
   here was making it flash in the dead middle of the page on first load,
   before the canvas (if it mounts) takes over. */
.lanyard-fallback{display:flex;flex-direction:column;align-items:flex-end;gap:0;margin-top:40px;padding-right:40px;box-sizing:border-box;}
.lanyard-fallback .lf-string{width:2px;height:160px;background:var(--ink);opacity:0.3;}
.lanyard-fallback .lf-card{
  width:260px;height:364px;background:#fafafa;border:0.5px solid var(--line);border-radius:16px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  box-shadow:0 18px 36px -16px rgba(23,11,0,0.25);
  transform-origin:top center;
  animation:lf-sway 4.5s ease-in-out infinite;
}
.lanyard-fallback .lf-mark{font-size:64px;color:#111;line-height:1;}
@keyframes lf-sway{0%,100%{transform:rotate(-3deg);}50%{transform:rotate(3deg);}}


/* ABOUT — about. */
.about-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:56px;flex-wrap:wrap;gap:24px;}
.about-title{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(30px,3.4vw,38px);color:var(--red);letter-spacing:-0.03em;}
.about-headline{
  font-family:'Outfit','DM Sans',sans-serif;font-weight:500;
  font-size:clamp(26px,3.6vw,42px);line-height:1.2;letter-spacing:-0.01em;
  color:var(--ink);margin-bottom:64px;max-width:920px;
}
.about-photo-row{display:flex;gap:60px;align-items:center;margin-bottom:88px;flex-wrap:wrap;}
.about-photo{flex:1 1 600px;aspect-ratio:553/400;overflow:hidden;position:relative;background:var(--bg);border:0.5px solid var(--line);}
.about-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.about-photo-fallback{
  position:absolute;inset:0;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#efefef,#e2e2e2);
  font-family:'Cormorant Garamond',serif;font-size:22px;color:var(--muted);
}
.about-supporting{flex:0 1 309px;font-family:'Outfit','DM Sans',sans-serif;font-size:18px;line-height:1.6;color:var(--ink);letter-spacing:-0.01em;}
.about-stats{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;padding-top:56px;}
.stat-item{display:flex;flex-direction:column;align-items:center;gap:14px;}
.stat-num{font-family:'Water Brush',cursive;font-size:56px;color:var(--red);line-height:1;}
.stat-label{font-family:'Outfit',sans-serif;font-size:13px;letter-spacing:0.02em;color:var(--muted);line-height:1.6;}

/* FOOTER / CONTACT — redesign */
footer#contact{background:var(--ink);color:#fff;padding:64px 48px;border-top:none;}
.footer-social{display:flex;justify-content:flex-end;gap:32px;margin-bottom:90px;}
.footer-social-link{
  color:#fff;font-size:15px;text-decoration:none;opacity:0.8;
  transition:opacity .2s,color .2s;
}
.footer-social-link:hover{opacity:1;color:var(--red);}
.footer-cta{margin-bottom:90px;}
.footer-cta-text{
  font-family:'Montserrat Alternates',sans-serif;font-weight:500;
  font-size:clamp(26px,3.2vw,36px);line-height:1.3;letter-spacing:-0.02em;
  color:#fff;max-width:980px;margin-bottom:48px;
}
.footer-cta-text span{color:#6a6a6a;}
.footer-cta-row{display:flex;align-items:center;gap:36px;flex-wrap:wrap;}
.footer-available{display:flex;align-items:center;gap:14px;font-size:15px;color:#fff;}
.pulse-dot{position:relative;width:10px;height:10px;border-radius:50%;background:#fff;display:inline-block;}
.pulse-dot::after{
  content:'';position:absolute;inset:-8px;border-radius:50%;
  background:#28eb35;opacity:0.5;animation:footerPulse 1.8s ease-out infinite;
}
@keyframes footerPulse{
  0%{transform:scale(0.6);opacity:0.6;}
  70%{transform:scale(1.3);opacity:0;}
  100%{transform:scale(1.3);opacity:0;}
}
.footer-bottom{
  display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding-top:32px;border-top:0.5px solid rgba(255,255,255,0.14);
  font-size:14px;color:#fff;line-height:1.7;
}
.footer-contact-info a{color:#fff;text-decoration:none;}
.footer-contact-info a:hover{color:var(--red);}
.footer-copyright{text-align:right;color:#fff;opacity:0.9;}
@media(max-width:900px){
  .work-row{grid-template-columns:1fr;gap:24px;}
  .work-row-image{order:-1;}
  .about-photo-row{flex-direction:column;gap:32px;}
  .about-photo{flex:1 1 auto;width:100%;}
  .about-stats{grid-template-columns:1fr;gap:36px;}
  .footer-bottom{flex-direction:column;}
  .footer-copyright{text-align:left;}
}
/* Placed after the base .work-row rule (line ~491) so this actually wins
   the cascade at mobile widths — an earlier-in-source media query with
   equal selector specificity loses to a later unconditional rule. */
@media(max-width:600px){
  .work-row{padding:12px;}
}
#c-dot{position:fixed;width:8px;height:8px;background:#D33838;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:9999;transition:width .2s,height .2s;}
#c-ring{position:fixed;width:38px;height:38px;border:1.5px solid #D33838;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:9998;opacity:.5;transition:width .35s cubic-bezier(.25,.46,.45,.94),height .35s cubic-bezier(.25,.46,.45,.94),opacity .3s;}
body.cursor-hover #c-dot{width:5px;height:5px;}
body.cursor-hover #c-ring{width:54px;height:54px;opacity:.22;}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:'Plus Jakarta Sans',sans-serif;overflow-x:hidden;}

@keyframes sunMorph{
  0%,100%{border-radius:50%}
  20%{border-radius:46% 54% 53% 47%/52% 46% 54% 48%}
  40%{border-radius:55% 45% 46% 54%/47% 55% 45% 53%}
  60%{border-radius:48% 52% 57% 43%/55% 46% 54% 45%}
  80%{border-radius:53% 47% 44% 56%/45% 54% 46% 55%}
}
@keyframes inkReveal{
  from{opacity:0;filter:blur(14px);transform:translateY(22px)}
  to{opacity:1;filter:blur(0);transform:translateY(0)}
}
.ink{animation:inkReveal 1.1s cubic-bezier(.16,1,.3,1) forwards;opacity:0}
.d1{animation-delay:.05s}.d2{animation-delay:.22s}.d3{animation-delay:.42s}
.d4{animation-delay:.62s}.d5{animation-delay:.82s}.d6{animation-delay:1s}

/* ===== Shared sub-page header (Work / About / Contact / Case studies) ===== */
.site-header{position:sticky;top:0;left:0;right:0;z-index:200;background:rgba(250,250,250,0.7);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,0.6);width:100%;transform:translateY(0);transition:transform .5s cubic-bezier(.4,0,.2,1) .08s;}
.site-header--home{position:fixed;background:rgba(250,250,250,0.3);}
.site-header.nav-autohidden{transform:translateY(-100%);transition:transform .45s cubic-bezier(.4,0,.2,1) .04s;}
.site-header-inner{width:100%;height:72px;margin:0;padding:0 60px;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;}
/* Above 1440 the side gap is capped at 60px (never grows with the viewport).
   At 1440 and below, match the content containers' own 48px gutter
   (.page-hero/.about-page-hero/etc. all use max-width:1440px + padding:0 48px,
   so their gutter is a flat 48px at any width <=1440). */
@media(max-width:1440px){.site-header-inner{padding:0 48px;}}
@media(max-width:900px){.site-header-inner{padding:0 24px;}}
/* Header is 72px from 1920 down through 768; below that (down to the
   mobile floor at ~390) it steps down to 64px so it doesn't eat too much
   of a short mobile viewport. */
@media(max-width:768px){.site-header-inner{height:64px;}}

.site-logo{display:flex;align-items:center;gap:6px;text-decoration:none;}
.site-logo-text{font-family:'Montserrat Alternates',sans-serif;font-weight:700;font-size:22px;letter-spacing:-0.04em;color:var(--ink);}
.site-logo-text .logo-z{font-family:'Montserrat',sans-serif;}
.site-logo-mark{font-family:'Water Brush',cursive;font-size:42px;color:var(--red);line-height:1;margin-top:6px;}
.site-header-right{position:relative;display:flex;align-items:center;justify-content:flex-end;}
.site-nav-inline{position:absolute;right:50px;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:32px;max-width:0;overflow:hidden;opacity:0;white-space:nowrap;transition:max-width .45s cubic-bezier(.4,0,.2,1),opacity .3s ease;}
.site-header-right.nav-open .site-nav-inline{max-width:420px;opacity:1;}
.site-nav-inline a{font-family:'Montserrat Alternates',sans-serif;font-weight:700;font-size:13px;letter-spacing:1.56px;text-transform:uppercase;color:#333333;text-decoration:none;padding-bottom:4px;transition:color .2s;}
.site-nav-inline a:hover,.site-nav-inline a.current{color:var(--red);}
.site-menu-btn{position:relative;width:34px;height:34px;margin-right:-8px;background:none;border:none;cursor:pointer;padding:0;flex-shrink:0;transition:transform .4s cubic-bezier(.4,0,.2,1);}
.site-menu-btn .dot{position:absolute;width:5px;height:5px;background:var(--ink);transition:opacity .35s cubic-bezier(.4,0,.2,1),transform .35s cubic-bezier(.4,0,.2,1),background .2s ease;}
.site-menu-btn .dot-tl{left:calc(50% - 9px);top:calc(50% - 9px);}
.site-menu-btn .dot-tr{left:calc(50% + 4px);top:calc(50% - 9px);}
.site-menu-btn .dot-bl{left:calc(50% - 9px);top:calc(50% + 4px);}
.site-menu-btn .dot-br{left:calc(50% + 4px);top:calc(50% + 4px);}
.site-menu-btn .dot-mid{left:calc(50% - 2.5px);top:calc(50% - 2.5px);transform:scale(0);opacity:0;}
.site-menu-btn:hover .dot{background:var(--red);}
.site-menu-btn.active .dot-mid{transform:scale(1);opacity:1;}
.site-menu-btn.expanded{transform:rotate(45deg);}
@media(max-width:900px){
  .site-nav-inline{display:none;}
}
.site-nav-overlay{position:fixed;inset:0;background:var(--bg);z-index:150;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;opacity:0;pointer-events:none;transition:opacity .35s ease;}
.site-nav-overlay.open{opacity:1;pointer-events:auto;}
.site-nav-overlay a{font-family:'Montserrat Alternates',sans-serif;font-weight:700;font-size:clamp(20px,4.5vw,26px);letter-spacing:2.4px;text-transform:uppercase;color:#333333;text-decoration:none;transition:color .2s;}
.site-nav-overlay a:hover,.site-nav-overlay a.current{color:var(--red);}
@media(min-width:901px){.site-nav-overlay{display:none;}}
.site-nav-close{display:none;}
.site-nav-close .dot{position:absolute;width:5px;height:5px;background:var(--ink);transition:background .2s ease;}
.site-nav-close .dot-tl{left:calc(50% - 9px);top:calc(50% - 9px);}
.site-nav-close .dot-tr{left:calc(50% + 4px);top:calc(50% - 9px);}
.site-nav-close .dot-bl{left:calc(50% - 9px);top:calc(50% + 4px);}
.site-nav-close .dot-br{left:calc(50% + 4px);top:calc(50% + 4px);}
.site-nav-close .dot-mid{left:calc(50% - 2.5px);top:calc(50% - 2.5px);}
.site-nav-close:hover .dot{background:var(--red);}

/* ===== Page hero (big word title) ===== */
.page-hero{max-width:1440px;margin:0 auto;padding:64px 48px 40px;}
.page-hero-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.page-title{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(56px,11vw,118px);letter-spacing:-0.07em;line-height:0.95;color:var(--ink);}
.page-sub{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(20px,2.4vw,30px);letter-spacing:-0.03em;color:var(--ink);white-space:nowrap;}

/* ===== Work overview page rows ===== */
.work-list{max-width:1440px;margin:0 auto;padding:24px 48px 80px;}
.work-list .work-row{grid-template-columns:340px 1fr;}
.work-list .work-row-image img,.work-list .work-row-image .work-img-fallback{aspect-ratio:16/10;}

/* ===== About page ===== */
.about-page-hero{max-width:1440px;margin:0 auto;padding:64px 48px 0;}
.about-page-row{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:48px;}
.about-cv-btn{display:inline-flex;font-family:'Montserrat Alternates',sans-serif;font-weight:700;font-size:13px;letter-spacing:0.03em;color:var(--bg);background:var(--ink);padding:12px 22px;text-decoration:none;border:none;transition:background .2s;}
.about-cv-btn:hover{background:var(--red);}
.about-statement{font-family:'Outfit',sans-serif;font-weight:500;font-size:clamp(26px,3.6vw,42px);line-height:1.25;color:var(--ink);letter-spacing:-0.01em;max-width:880px;margin-bottom:64px;}
.about-photo-block{display:flex;gap:60px;align-items:center;margin-bottom:96px;flex-wrap:wrap;}
.about-photo-block .about-photo-frame{flex:1 1 600px;aspect-ratio:1201/701;border-radius:4px;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;}
.about-photo-block .about-photo-frame img{width:100%;height:100%;object-fit:cover;display:block;}
.about-photo-block .about-photo-fallback{font-family:'Cormorant Garamond',serif;font-size:32px;color:var(--muted);}
.about-side-text{flex:0 1 309px;font-family:'Outfit',sans-serif;font-weight:500;font-size:18px;line-height:1.5;color:var(--ink);}
.services-section{max-width:1440px;margin:0 auto;padding:0 48px 96px;}
.services-label{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(20px,2.4vw,30px);color:var(--red);margin-bottom:48px;}
.services-list{position:relative;display:flex;flex-direction:column;align-items:center;gap:0;margin-bottom:64px;}
.services-list span{position:relative;font-family:'Montserrat Alternates',sans-serif;font-weight:500;font-size:clamp(34px,6vw,58px);letter-spacing:-0.04em;color:var(--ink);line-height:1.25;cursor:default;transition:color .25s;}
.services-list span:hover{color:var(--red);}
.services-hover-img{
  position:absolute;top:0;left:0;z-index:60;
  width:220px;aspect-ratio:1/1;border-radius:6px;overflow:hidden;
  pointer-events:none;opacity:0;
  transform:translate(0,-50%) rotate(-4deg) scale(0.85);
  box-shadow:0 18px 40px rgba(0,0,0,0.25);
  transition:opacity .25s ease,transform .35s cubic-bezier(.25,.46,.45,.94);
}
.services-hover-img.is-visible{opacity:1;transform:translate(0,-50%) rotate(-4deg) scale(1);}
.services-hover-img img{width:100%;height:100%;object-fit:cover;display:block;}
.services-banner{width:100%;aspect-ratio:1659/1200;border-radius:4px;background:var(--bg);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.services-banner img{width:100%;height:100%;object-fit:contain;display:block;}
.services-banner span{font-family:'Cormorant Garamond',serif;font-size:28px;color:var(--muted);}

/* ===== Case study pages ===== */
.case-hero{max-width:1440px;margin:0 auto;padding:64px 48px 32px;}
.case-eyebrow{font-family:'Outfit',sans-serif;font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--red);margin-bottom:18px;}
.case-title{font-family:'Cormorant Garamond',serif;font-weight:600;font-size:clamp(40px,7vw,84px);letter-spacing:-0.02em;color:var(--ink);line-height:1.05;margin-bottom:24px;}
.case-meta-row{display:flex;gap:40px;flex-wrap:wrap;margin-bottom:40px;}
.case-meta-item{font-family:'Outfit',sans-serif;}
.case-meta-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;}
.case-meta-value{font-size:16px;color:var(--ink);}
.case-intro{font-family:'Outfit',sans-serif;font-weight:500;font-size:clamp(20px,2.6vw,28px);line-height:1.45;color:var(--muted);max-width:900px;}
.case-hero-image{max-width:1440px;margin:24px auto 0;padding:0 48px;}
.case-hero-image .frame{width:100%;aspect-ratio:16/9;border-radius:4px;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;}
.case-hero-image .frame img{width:100%;height:100%;object-fit:cover;display:block;}
.case-hero-image .frame span{font-family:'Cormorant Garamond',serif;font-size:32px;color:var(--muted);}
.case-section{max-width:1000px;margin:0 auto;padding:72px 48px;}
.case-section h2{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(26px,3vw,34px);color:var(--red);margin-bottom:24px;letter-spacing:-0.02em;}
.case-section p{font-family:'Outfit',sans-serif;font-size:17px;line-height:1.75;color:var(--ink);margin-bottom:18px;}
.case-gallery{max-width:1440px;margin:0 auto;padding:0 48px 72px;display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.case-gallery .frame{aspect-ratio:4/3;border-radius:4px;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;}
.case-gallery .frame img{width:100%;height:100%;object-fit:cover;display:block;}
.case-gallery .frame span{font-family:'Cormorant Garamond',serif;font-size:24px;color:var(--muted);}
.case-stats-row{max-width:1000px;margin:0 auto;padding:0 48px 96px;display:flex;gap:48px;flex-wrap:wrap;justify-content:space-between;}
.case-nav-footer{max-width:1000px;margin:0 auto;padding:0 48px 96px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:40px;}
.case-nav-footer a{font-family:'Cormorant Garamond',serif;font-size:22px;color:var(--ink);text-decoration:none;}
.case-nav-footer a:hover{color:var(--red);}

/* ===== Contact page ===== */
.contact-hero{max-width:1440px;margin:0 auto;padding:80px 48px 0;}
.contact-title-1{font-family:'Montserrat Alternates',sans-serif;font-weight:700;font-size:clamp(40px,6vw,64px);letter-spacing:-0.06em;color:var(--ink);line-height:1.05;}
.contact-title-2{font-family:'Water Brush',cursive;font-size:clamp(48px,8vw,90px);color:var(--red);line-height:1.1;}
.contact-body{max-width:1440px;margin:0 auto;padding:48px 48px 120px;display:flex;gap:60px;align-items:flex-start;flex-wrap:wrap;}
.contact-email{flex:0 1 280px;font-family:'Outfit',sans-serif;font-size:18px;color:var(--ink);text-decoration:none;}
.contact-form{flex:1 1 600px;display:flex;flex-direction:column;gap:18px;max-width:954px;}
.contact-form input,.contact-form textarea{width:100%;background:#F0F0F0;border:none;border-radius:2px;padding:24px;font-family:'Outfit',sans-serif;font-size:16px;color:var(--ink);}
.contact-form textarea{min-height:150px;resize:vertical;font-family:'Outfit',sans-serif;}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:#b3b3b3;}
.contact-form input:focus,.contact-form textarea:focus{outline:1.5px solid var(--red);}
.contact-submit{
  align-self:flex-start;display:inline-flex;align-items:center;gap:10px;
  background:var(--ink);color:var(--bg);border:none;
  padding:18px 32px;
  font-family:'Montserrat Alternates',sans-serif;
  font-weight:700;
  font-size:16px;letter-spacing:0.04em;
  cursor:pointer;white-space:nowrap;
  transition:background .25s,transform .2s;
  position:relative;overflow:hidden;
}
.contact-submit::before{
  content:'';position:absolute;inset:0;
  background:var(--red);transform:translateX(-100%);
  transition:transform .35s cubic-bezier(.25,.46,.45,.94);
}
.contact-submit:hover::before{transform:translateX(0);}
.contact-submit span{position:relative;z-index:1;}
.contact-submit:hover .btn-arrow{transform:translateX(4px);}
.contact-note{font-family:'Outfit',sans-serif;font-size:13px;color:var(--muted);margin-top:-6px;}

@media(max-width:900px){
  .page-hero-row{flex-direction:column;align-items:flex-start;gap:12px;}
  .work-list .work-row,.work-row{grid-template-columns:1fr!important;}
  /* flex-direction:column turns the main axis vertical, so the base
     .about-photo-frame{flex:1 1 600px} (a WIDTH basis on the desktop row
     layout) becomes a 600px HEIGHT basis instead — combined with its
     aspect-ratio:1201/701, that forces the frame to ~1028px wide,
     blowing out horizontal scroll on every page (not just About) since
     overflow-x:hidden on body just hides the scrollbar without stopping
     the layout overflow. flex-basis:auto + an explicit width:100% keeps
     the frame's size driven by the column's own width instead. */
  .about-photo-block{flex-direction:column;}
  .about-photo-block .about-photo-frame{flex:1 1 auto;width:100%;}
  .case-gallery{grid-template-columns:1fr;}
  .case-meta-row{gap:24px;}
  /* Same flex-basis-becomes-height trap as .about-photo-frame above:
     .contact-email{flex:0 1 280px} is a WIDTH basis for the desktop row
     layout. Once contact-body switches to flex-direction:column here,
     that 280px basis applies to the vertical main axis instead, leaving
     a tall empty 280px-high block under the one-line email link before
     the form starts. flex-basis:auto lets it size to its actual content
     height instead. */
  .contact-body{flex-direction:column;}
  .contact-email{flex:0 1 auto;}
  /* Lanyard badge (Three.js canvas + its CSS fallback) is hidden on
     tablet and mobile per request — it was tuned for desktop and isn't
     worth the layout complexity below 900px. */
  .lanyard-section{display:none;}
}
/* Sub-page header/list containers (.page-hero, .work-list, .about-page-hero,
   .services-section, .case-hero*, .case-gallery, .case-stats-row,
   .case-nav-footer, .contact-hero, .contact-body, footer#contact) all carry
   a flat 48px side gutter at every width — fine on desktop/tablet, but on
   phones it leaves huge empty margins around the content (e.g. the work-row
   case card) instead of matching the 16px gutter already used for
   #hero/section/footer. Placed after their base rules (~line 714-783) so it
   actually wins the cascade — same reasoning as the .work-row padding fix
   above. */
@media(max-width:600px){
  .page-hero{padding:64px 16px 40px;}
  .work-list{padding:24px 16px 80px;}
  .about-page-hero{padding:64px 16px 0;}
  .services-section{padding:0 16px 96px;}
  .case-hero{padding:64px 16px 32px;}
  .case-hero-image{padding:0 16px;}
  .case-gallery{padding:0 16px 72px;}
  .case-stats-row{padding:0 16px 96px;}
  .case-nav-footer{padding:0 16px 96px;}
  .contact-hero{padding:80px 16px 0;}
  .contact-body{padding:48px 16px 120px;}
  footer#contact{padding:64px 16px;}
  /* .about-photo-block{margin-bottom:96px} is a flat desktop value; on
     mobile the photo+text already stack taller (flex-direction:column),
     so the fixed 96px gap before "services." reads as an oversized empty
     space. Tighten it down for phones. */
  .about-photo-block{margin-bottom:48px;}
  .work-product,.work-platform,.work-desc{margin-bottom:6px;}
}

/* ===== Case study pages (BeeCalm / ScriptBuddy / PromptSmart) ===== */
.cs-hero{max-width:1600px;margin:0 auto;padding:0 80px 40px;display:flex;flex-direction:column;align-items:center;gap:32px;}
.cs-hero-image{
  align-self:flex-start;
  width:100vw;margin-left:calc(50% - 50vw);
  border-radius:0;overflow:hidden;
  background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  opacity:0;transform:scale(0.97);
  transition:opacity 1.4s cubic-bezier(.16,1,.3,1),transform 1.6s cubic-bezier(.16,1,.3,1);
  will-change:transform,opacity;
}
.cs-hero.visible .cs-hero-image{opacity:1;transform:scale(1);}
.cs-hero-image img{width:100%;height:auto;display:block;}
.cs-hero-image span{font-family:'Cormorant Garamond',serif;font-size:32px;color:var(--muted);}
.cs-hero-title{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(32px,5vw,48px);letter-spacing:-0.05em;color:var(--ink);text-align:center;}
.cs-meta-row{display:flex;justify-content:flex-end;width:100%;}
.cs-meta{flex:0 1 640px;display:flex;flex-direction:column;gap:8px;}
.cs-meta-line{display:flex;gap:10px;font-family:'Outfit',sans-serif;font-size:16px;}
.cs-meta-line .k{color:#b3b3b3;min-width:90px;}
.cs-meta-line .v{color:var(--ink);}
.cs-divider{max-width:1600px;margin:0 auto;height:1px;background:var(--line);}
.cs-section{max-width:1600px;margin:0 auto;padding:60px 80px;}
.cs-section-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:16px;}
.cs-label{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(26px,3vw,32px);color:var(--red);letter-spacing:-0.02em;}
.cs-live-link{display:inline-flex;align-items:center;font-family:'Montserrat Alternates',sans-serif;font-weight:700;font-size:13px;letter-spacing:0.03em;color:var(--bg);background:var(--ink);padding:12px 22px;text-decoration:none;transition:background .2s;}
.cs-live-link:hover{background:var(--red);}
.cs-body{max-width:960px;margin-left:auto;font-family:'Outfit',sans-serif;font-size:20px;line-height:1.4;color:var(--ink);letter-spacing:-0.01em;}
.cs-body p{margin-bottom:20px;}
.cs-body strong{font-weight:700;}
.cs-gallery{display:flex;flex-direction:column;gap:24px;margin-top:48px;}
.cs-gallery-row{display:flex;gap:24px;}
.cs-gallery-tight{display:flex;flex-direction:column;gap:0;}
.cs-gallery .frame{position:relative;flex:1;border-radius:4px;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;min-height:280px;}
.cs-gallery .frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.cs-gallery .frame span{position:relative;font-family:'Cormorant Garamond',serif;font-size:22px;color:var(--muted);}
.cs-gallery .cs-gallery-row-fit{display:flex;gap:24px;align-items:stretch;justify-content:center;}
.cs-gallery .cs-gallery-row-fit .frame{flex:0 0 auto;width:auto;height:420px;min-height:0;}
.cs-gallery .cs-gallery-row-fit .frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.cs-nav-footer{max-width:1600px;margin:0 auto;padding:0 80px 80px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:40px;}
.cs-nav-link{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:15px;letter-spacing:-0.01em;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:10px;transition:color .25s;}
.cs-nav-link:hover{color:var(--red);}
.cs-nav-label{font-family:'Outfit',sans-serif;font-weight:400;font-size:12px;letter-spacing:0.16em;text-transform:uppercase;color:var(--muted);}
.cs-nav-arrow{font-family:'Water Brush',cursive;font-size:22px;color:var(--red);line-height:1;transition:transform .25s;}
.cs-nav-prev:hover .cs-nav-arrow{transform:translateX(-4px);}
.cs-nav-next:hover .cs-nav-arrow{transform:translateX(4px);}

@media(max-width:900px){
  .cs-hero,.cs-section,.cs-nav-footer{padding-left:24px;padding-right:24px;}
  .cs-meta-row{justify-content:flex-start;}
  .cs-body{margin-left:0;}
  .cs-gallery-row{flex-direction:column;}
  .cs-gallery .cs-gallery-row-fit{flex-direction:column;}
  .cs-gallery .cs-gallery-row-fit .frame{width:100%;height:auto;}
  /* .cs-gallery .frame has a flat min-height:280px (line ~908) meant to keep
     short two-up rows from collapsing on desktop. On mobile the frame width
     shrinks to ~342px, so for any wide/landscape image the aspect-ratio-implied
     height drops well below 280px — min-height then clamps it back up,
     distorting the box away from the image's real ratio, and object-fit:cover
     crops the left/right edges to fill it. Letting aspect-ratio fully govern
     height on mobile removes the forced crop. */
  .cs-gallery .frame{min-height:0;}
  /* .keep-row-mobile opts a specific .cs-gallery-row out of the generic
     mobile column-stack above — used for pairs of roughly square images
     (e.g. BeeCalm's bee-icon + hexagon-grid shots) that read better sitting
     side by side even on narrow screens than stacked full-width. */
  .cs-gallery-row.keep-row-mobile{flex-direction:row;gap:10px;}
}
.cll{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--hr);}
.fb2{border-top:1px solid var(--bd);padding-top:20px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;}

/* ===== Case study testimonial / impact block ===== */
.cs-testimonial{max-width:1600px;margin:0 auto;padding:60px 80px 100px;display:flex;flex-direction:column;align-items:center;gap:40px;text-align:center;}
.cs-testimonial-mark{font-family:'Cormorant Garamond',serif;font-size:54px;color:var(--red);line-height:1;}
.cs-testimonial-quote{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:clamp(22px,3vw,28px);letter-spacing:-0.02em;color:var(--ink);max-width:1100px;line-height:1.3;}
.cs-testimonial-author{display:flex;align-items:center;gap:18px;}
.cs-testimonial-avatar{width:64px;height:64px;border-radius:50%;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.cs-testimonial-avatar img{width:100%;height:100%;object-fit:cover;display:block;}
.cs-testimonial-avatar span{font-family:'Cormorant Garamond',serif;font-size:14px;color:var(--muted);}
.cs-testimonial-info{text-align:left;}
.cs-testimonial-name{font-family:'Montserrat Alternates',sans-serif;font-weight:600;font-size:20px;color:var(--ink);}
.cs-testimonial-role{font-family:'Outfit',sans-serif;font-size:14px;color:#b3b3b3;}
.cs-testimonial .cs-label{align-self:flex-start;text-align:left;}

@media(max-width:900px){
  .cs-testimonial{padding-left:24px;padding-right:24px;}
}

/* ===== Toast notification (unpublished work rows) ===== */
.toast-wrap{position:fixed;left:50%;bottom:36px;transform:translateX(-50%) translateY(20px);z-index:300;display:flex;align-items:center;gap:14px;background:rgba(250,250,250,0.7);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--ink);font-family:'Outfit',sans-serif;font-size:14px;letter-spacing:0.01em;padding:14px 24px 14px 16px;border-radius:8px;border:1px solid rgba(255,255,255,0.6);box-shadow:0 18px 44px rgba(23,11,0,0.22),0 2px 10px rgba(23,11,0,0.10);opacity:0;pointer-events:none;transition:opacity .35s cubic-bezier(.16,1,.3,1),transform .35s cubic-bezier(.16,1,.3,1);}
.toast-wrap.show{opacity:1;transform:translateX(-50%) translateY(0);}
.toast-sun{position:relative;width:22px;height:22px;flex-shrink:0;}
.toast-sun::before{content:'';position:absolute;inset:4px;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--red) 0%,var(--red2) 75%);box-shadow:0 0 0 1px rgba(23,11,0,0.06);}
.toast-sun::after{content:'';position:absolute;inset:0;border-radius:50%;border:1px solid var(--red2);opacity:.3;}
.toast-wrap span:last-child{line-height:1.4;}
@media(max-width:680px){
  .toast-wrap{left:24px;right:24px;bottom:24px;transform:translateY(20px);width:auto;}
  .toast-wrap.show{transform:translateY(0);}
}

/* Manual <br class="br-desktop"> tags break long headlines at specific
   words to control the line shape on wide desktop layouts (e.g. the
   "about." headline on portfolio.html). Those break points were chosen
   for desktop line widths and read as awkward mid-sentence breaks once
   the text reflows onto a much narrower mobile column ("...that grow /
   businesses..." splitting a single clause across lines) — hiding them
   below 680px lets the browser wrap the paragraph naturally instead. */
@media(max-width:680px){
  .br-desktop{display:none;}
}

/* The services list (.services-list) is centered by design on desktop,
   sitting under the left-aligned "services." label — on a narrow mobile
   column the centered list reads as misaligned against that label, so
   left-align it below 680px to match. Footer socials are also
   right-aligned (flex-end) by design for the wide desktop footer layout;
   on mobile that leaves a large empty gap on the left, so left-align
   them instead to balance the narrow column. */
@media(max-width:680px){
  .services-list{align-items:flex-start;}
  .footer-social{justify-content:flex-start;}
}

/* ===== Edge-gutter cap, kept in sync with nav (placed last so it wins
   the cascade over the base max-width:1440px;margin:0 auto rules above):
   flat 48px gutter up to 1440px viewport width, flat 60px beyond it,
   never growing further on wide screens. ===== */
@media(min-width:1441px){
  .container,
  .page-hero,
  .about-hero-stack,
  .work-list,
  .about-page-hero,
  .services-section,
  .case-hero,
  .case-hero-image,
  .case-gallery,
  .contact-hero,
  .contact-body{
    max-width:none;
  }
  section,
  footer#contact,
  .page-hero,
  .about-page-hero,
  .work-list,
  .services-section,
  .case-hero,
  .case-hero-image,
  .case-gallery,
  .contact-hero,
  .contact-body{
    padding-left:60px;
    padding-right:60px;
  }
}
