/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-01.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-02.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-03.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-01.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-02.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-03.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-01.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-02.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-03.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-01.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-02.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url("images/font-03.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("images/font-04.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("images/font-05.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("images/font-06.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("images/font-07.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("images/font-08.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("images/font-09.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("images/font-04.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("images/font-05.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("images/font-06.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("images/font-07.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("images/font-08.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("images/font-09.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 200 400;
  font-display: swap;
  src: url("images/font-10.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 200 400;
  font-display: swap;
  src: url("images/font-11.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 200 400;
  font-display: swap;
  src: url("images/font-12.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 200 500;
  font-display: swap;
  src: url("images/font-13.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 200 500;
  font-display: swap;
  src: url("images/font-14.woff2") format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 200 500;
  font-display: swap;
  src: url("images/font-15.woff2") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}



html{scroll-behavior:smooth;overflow-x:hidden}
:root{--bg:#0c0c0d;--bg0:#0a0a0b;--bg2:#111112;--bg-rgb:12,12,13;--fg:#eceae6;--fg-rgb:236,234,230;--accent:oklch(0.55 0.21 25);--accent-t:oklch(0.68 0.2 25);--accent-soft:oklch(0.55 0.21 25 / 0.45)}
:root[data-theme="light"]{--bg:#f5f3ef;--bg0:#efece6;--bg2:#eae7e0;--bg-rgb:245,243,239;--fg:#171619;--fg-rgb:23,22,25;--accent:oklch(0.52 0.2 25);--accent-t:oklch(0.48 0.19 25);--accent-soft:oklch(0.52 0.2 25 / 0.4)}
html,body{background:var(--bg);transition:background-color .7s cubic-bezier(.4,0,.2,1),color .7s cubic-bezier(.4,0,.2,1)}
body{margin:0;color:var(--fg);font-family:Archivo,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}
*,*::before,*::after{box-sizing:border-box}
body{overflow-x:hidden}
img,svg{max-width:100%}
.cf-mobile-menu{display:none}
section,header,footer,figure,.cf-card,.cf-svc{transition:background-color .7s cubic-bezier(.4,0,.2,1),border-color .7s cubic-bezier(.4,0,.2,1),color .7s cubic-bezier(.4,0,.2,1)}
section[id]{scroll-margin-top:76px}
#cf-cord{opacity:0;animation:cfCordIn .9s cubic-bezier(.16,1,.3,1) 3.05s both;position:absolute;top:56px;right:62px;z-index:130;width:90px;display:flex;flex-direction:column;align-items:center;cursor:grab;touch-action:none;user-select:none}
#cf-cord:active{cursor:grabbing}
#cf-cord .hint{margin-top:-32px;font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:0.16em;text-transform:uppercase;color:rgba(var(--fg-rgb),0.4);white-space:nowrap;opacity:0;transition:opacity .4s ease}
#cf-cord:hover .hint{opacity:1}
#cf-cord .grip{transition:transform .55s cubic-bezier(.34,1.4,.5,1)}
::selection{background:var(--accent);color:#fff}
a{color:var(--fg);text-decoration:none}
a:hover{color:var(--accent-t)}
.cf-btn-nav,.cf-btn-primary,.cf-btn-outline,.cf-contact-links a{transition:background-color .3s ease,color .3s ease,border-color .3s ease,transform .3s ease}
.cf-btn-nav:hover,.cf-btn-primary:hover{background:var(--fg)!important;color:var(--bg)!important}
.cf-btn-outline:hover{border-color:var(--fg)!important;color:var(--fg)!important}
.cf-all-projects:hover{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
@keyframes cfMask{from{clip-path:inset(0 0 105% 0);transform:translateY(0.16em)}to{clip-path:inset(0 0 -20% 0);transform:none}}
@keyframes cfFade{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes cfCordIn{from{opacity:0;transform:translateY(-26px)}to{opacity:1;transform:none}}
@keyframes cfWipe{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0 0 0 0)}}
[data-reveal].cf-pre{opacity:0;transform:translateY(26px)}
[data-reveal].cf-pre.cf-in{opacity:1;transform:none;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}
.cf-shot{transition:transform 1.1s cubic-bezier(.16,1,.3,1)}
.cf-card:hover .cf-shot{transform:scale(1.04)}
.cf-card{transition:background .45s ease,border-color .45s ease,transform .55s cubic-bezier(.16,1,.3,1)}
.cf-card:hover{transform:translateY(-6px)}
.cf-arrow{display:inline-block;transition:transform .45s cubic-bezier(.16,1,.3,1)}
.cf-card:hover .cf-arrow{transform:translateX(8px)}
.cf-svc{position:relative;overflow:hidden}
.cf-svc-num{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid rgba(var(--fg-rgb),0.22);font-family:'JetBrains Mono',monospace;font-size:13px}
.cf-svc h3{margin:6px 0 0;font-family:Newsreader,serif;font-weight:400;font-size:29px;letter-spacing:-0.01em}
.cf-svc p{margin:0;font-size:14.5px;line-height:1.6;color:rgba(var(--fg-rgb),0.6)}
.cf-svc ul{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;font-size:13.5px;color:rgba(var(--fg-rgb),0.55)}
.cf-svc li{display:flex;gap:10px;color:inherit}
.cf-svc-accent{display:inline-flex;align-items:center;gap:9px;margin-top:auto;padding-top:26px;font-size:11.5px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--accent-t)}
.cf-svc::before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;background:var(--accent);transform:scaleY(0);transform-origin:bottom;transition:transform .6s cubic-bezier(.16,1,.3,1)}
.cf-svc:hover::before{transform:scaleY(1)}
.cf-svc > *{position:relative;z-index:1}
.cf-svc:hover{border-color:var(--accent);color:#fff}
.cf-svc:hover .cf-svc-muted{color:rgba(255,255,255,0.88)}
.cf-svc:hover .cf-svc-accent{color:#fff}
.cf-svc:hover .cf-svc-num{border-color:rgba(255,255,255,0.55);color:#fff}
.cf-svc h3,.cf-svc .cf-svc-num,.cf-svc .cf-svc-muted,.cf-svc .cf-svc-accent{transition:color .45s ease,border-color .45s ease,transform .5s cubic-bezier(.16,1,.3,1)}
.cf-svc:hover h3{transform:translateX(6px)}
.cf-svc li{transition:transform .5s cubic-bezier(.16,1,.3,1),color .45s ease}
.cf-svc:hover li{transform:translateX(7px)}
.cf-svc:hover li:nth-child(2){transition-delay:.06s}
.cf-svc:hover li:nth-child(3){transition-delay:.12s}
.cf-svc .cf-svc-accent{align-items:center}
.cf-svc .cf-svc-accent::after{content:"";position:absolute;left:0;bottom:22px;height:1px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.16,1,.3,1) .1s}
.cf-svc:hover .cf-svc-accent::after{transform:scaleX(1)}
.cf-svc-hi{color:#fff}
.cf-svc-hi .cf-svc-muted{color:rgba(255,255,255,0.85)!important}
.cf-svc-hi .cf-svc-accent{color:#fff!important}
.cf-svc-hi .cf-svc-num{border-color:rgba(255,255,255,0.5)!important;color:#fff}
@keyframes cfDraw{0%{stroke-dashoffset:var(--dash);opacity:1}34%{stroke-dashoffset:0;opacity:1}88%{stroke-dashoffset:0;opacity:1}96%{stroke-dashoffset:0;opacity:0}100%{stroke-dashoffset:var(--dash);opacity:0}}
@keyframes cfGuide{0%{stroke-dashoffset:var(--dash);opacity:.25}22%{stroke-dashoffset:0;opacity:.9}62%{stroke-dashoffset:0;opacity:.9}80%,100%{stroke-dashoffset:0;opacity:.18}}
@keyframes cfSquare{0%{transform:translate(-46px,58px) rotate(-14deg);opacity:0}10%{opacity:.75}46%{transform:translate(34px,-14px) rotate(-14deg);opacity:.75}62%{opacity:0}100%{transform:translate(-46px,58px) rotate(-14deg);opacity:0}}
@keyframes cfDot{0%,18%{opacity:0}26%{opacity:1}70%{opacity:1}84%{opacity:0}100%{opacity:0}}
.cf-logo .cf-guide,.cf-logo .cf-draw{stroke-dasharray:var(--dash);stroke-dashoffset:var(--dash);will-change:stroke-dashoffset,opacity}
.cf-logo .cf-guide-1{--dash:688}
.cf-logo .cf-guide-2,.cf-logo .cf-guide-3{--dash:204}
.cf-logo .cf-guide-4{--dash:390}
.cf-logo .cf-draw-1{--dash:215}
.cf-logo .cf-draw-2{--dash:106}
.cf-logo .cf-draw-3{--dash:59}
.cf-logo .cf-draw-4{--dash:47}
.cf-logo .cf-square,.cf-logo .cf-dot{opacity:0}
.cf-logo .cf-guide-1{animation:cfGuide 8s linear .1s infinite}
.cf-logo .cf-guide-2{animation:cfGuide 8s linear .3s infinite}
.cf-logo .cf-guide-3{animation:cfGuide 8s linear .45s infinite}
.cf-logo .cf-guide-4{animation:cfGuide 8s linear .6s infinite}
.cf-logo .cf-square{animation:cfSquare 8s cubic-bezier(.4,0,.5,1) .2s infinite;transform-origin:0 0;transform-box:fill-box}
.cf-logo .cf-draw-1{animation:cfDraw 8s cubic-bezier(.5,0,.4,1) .85s infinite}
.cf-logo .cf-draw-2{animation:cfDraw 8s cubic-bezier(.5,0,.4,1) 1.2s infinite}
.cf-logo .cf-draw-3{animation:cfDraw 8s cubic-bezier(.5,0,.4,1) 1.48s infinite}
.cf-logo .cf-draw-4{animation:cfDraw 8s cubic-bezier(.5,0,.4,1) 1.76s infinite}
.cf-logo .cf-dot-1{animation:cfDot 8s linear .7s infinite}
.cf-logo .cf-dot-2{animation:cfDot 8s linear .85s infinite}
.cf-logo .cf-dot-3{animation:cfDot 8s linear 1s infinite}
.cf-stats>div{background:var(--bg2);padding:34px 30px}
.cf-stats strong{display:block;font-family:Newsreader,serif;font-weight:300;font-size:46px;line-height:1;letter-spacing:-0.02em;color:var(--fg)}
.cf-stats span{display:block;margin-top:12px;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:rgba(var(--fg-rgb),0.5)}
.cf-card-image{position:relative;aspect-ratio:16/10;overflow:hidden;background:repeating-linear-gradient(135deg,rgba(var(--fg-rgb),0.07) 0 10px,rgba(var(--fg-rgb),0.02) 10px 20px)}
.cf-shot{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.cf-card-meta{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-top:24px}
.cf-card-meta h3{margin:0;font-family:Newsreader,serif;font-weight:400;font-size:26px;letter-spacing:-0.01em}
.cf-card-meta div>span{display:block;margin-top:8px;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:rgba(var(--fg-rgb),0.45)}
.cf-card-meta>span{display:inline-flex;align-items:center;gap:9px;font-size:11.5px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--accent-t);white-space:nowrap}
.cf-card-meta b{font-weight:400}
.cf-testimonials figure{margin:0;padding:36px 38px;background:var(--bg2);border:1px solid rgba(var(--fg-rgb),0.09)}
.cf-testimonials figure>div{font-family:Newsreader,serif;font-size:40px;line-height:.6;color:var(--accent)}
.cf-testimonials blockquote{margin:18px 0 0;font-family:Newsreader,serif;font-weight:300;font-size:clamp(20px,1.9vw,27px);line-height:1.4;letter-spacing:-.01em}
.cf-testimonials figcaption{margin-top:26px;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:rgba(var(--fg-rgb),.45)}
.cf-contact-links a{display:flex;align-items:center;justify-content:space-between;padding:20px 26px;color:#fff;font-size:14.5px}
.cf-contact-solid{background:#111013}
.cf-contact-outline{border:1px solid rgba(255,255,255,.5)}
.cf-contact-solid:hover{background:#fff;color:#111013}
.cf-contact-outline:hover{background:#fff;border-color:#fff;color:var(--accent)}
.cf-fab{position:fixed;right:26px;bottom:26px;z-index:80;display:flex;align-items:center;gap:11px;padding:16px 24px;background:var(--accent);color:#fff;font-family:Archivo,sans-serif;font-size:11.5px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;box-shadow:0 14px 40px rgba(0,0,0,.45);transition:transform .4s cubic-bezier(.16,1,.3,1),background .3s ease}
.cf-fab:hover{transform:translateY(-4px);background:var(--fg);color:var(--bg)}
.cf-fab span.d{width:7px;height:7px;border-radius:50%;background:#fff;animation:cfPulse 2.4s ease-in-out infinite}
.cf-fab:hover span.d{background:var(--accent)}
@keyframes cfPulse{0%,100%{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}
@keyframes cfFill{0%{clip-path:inset(100% 0 0 0)}100%{clip-path:inset(0 0 0 0)}}
@keyframes cfBar{0%{transform:scaleX(0)}100%{transform:scaleX(1)}}
@keyframes cfLoaderOut{0%,74%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
@keyframes cfLoaderLift{0%,74%{transform:none}100%{transform:translateY(-16px)}}

@media (max-width:900px){
  .cf-header{padding:13px 20px!important;gap:14px!important}
  .cf-desktop-nav{display:none!important}
  .cf-mobile-menu{display:block;position:relative;margin-left:auto}
  .cf-mobile-menu summary{display:flex;align-items:center;gap:8px;min-height:42px;padding:10px 12px;list-style:none;cursor:pointer;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg);border:1px solid rgba(var(--fg-rgb),.2)}
  .cf-mobile-menu summary::-webkit-details-marker{display:none}
  .cf-mobile-menu[open] summary span{transform:rotate(45deg)}
  .cf-mobile-menu summary span{display:inline-block;transition:transform .25s ease}
  .cf-mobile-menu nav{position:absolute;top:calc(100% + 14px);right:0;width:min(260px,calc(100vw - 32px));display:flex;flex-direction:column;padding:10px;background:var(--bg2);border:1px solid rgba(var(--fg-rgb),.14);box-shadow:0 18px 44px rgba(0,0,0,.35)}
  .cf-mobile-menu nav a{padding:13px 12px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid rgba(var(--fg-rgb),.08)}
  .cf-mobile-menu nav a:last-child{color:#fff;background:var(--accent);border:0;margin-top:6px}
  .cf-hero{grid-template-columns:1fr!important;gap:0!important;padding:0!important}
  .cf-hero>*{min-width:0}
  .cf-hero-visual{width:100%!important;min-width:0!important;aspect-ratio:16/10!important;border-right:0!important;border-bottom:1px solid rgba(var(--fg-rgb),.08);gap:16px!important}
  .cf-hero-visual .cf-logo{width:min(42%,190px)!important}
  .cf-hero-copy{padding:64px 28px 72px!important}
  #servicios,#proyectos{padding:72px 28px!important}
  .cf-section-head{align-items:flex-start!important;flex-direction:column!important;gap:18px!important;margin-bottom:36px!important}
  .cf-services-grid{grid-template-columns:1fr!important}
  .cf-about{grid-template-columns:1fr!important;gap:42px!important;padding:72px 28px!important}
  .cf-projects-grid,.cf-testimonials-grid{grid-template-columns:1fr!important}
  .cf-testimonials{padding:72px 28px!important}
  .cf-contact{padding:28px!important}
  .cf-contact-inner{grid-template-columns:1fr!important;gap:40px!important;padding:60px 38px!important}
  .cf-footer{padding:30px 28px!important}
  #cf-cord{display:none!important}
}

@media (max-width:600px){
  .cf-header{padding:11px 16px!important}
  .cf-header>a>span:last-child{display:none!important}
  .cf-hero-visual{aspect-ratio:4/3!important;min-height:280px}
  .cf-hero-copy{padding:52px 20px 60px!important}
  .cf-hero-copy h1{font-size:clamp(43px,14vw,62px)!important;line-height:.98!important}
  .cf-hero-copy p{font-size:15.5px!important;margin-top:24px!important}
  .cf-actions{flex-direction:column!important;margin-top:32px!important}
  .cf-actions a{width:100%;justify-content:center;padding:17px 20px!important}
  #servicios,#proyectos{padding:60px 20px!important}
  .cf-svc{padding:30px 24px 26px!important}
  .cf-about{padding:60px 20px!important}
  .cf-stats>div{padding:26px 18px!important}
  .cf-projects-grid{gap:20px!important}
  .cf-card{padding:14px!important}
  .cf-card-meta{align-items:flex-start!important;flex-direction:column!important;gap:16px!important;margin-top:20px!important}
  .cf-testimonials{padding:60px 20px!important}
  .cf-testimonials figure{padding:30px 24px!important}
  .cf-contact{padding:20px!important}
  .cf-contact-inner{padding:48px 22px!important;gap:34px!important}
  .cf-contact-links a{padding:18px!important;gap:14px;font-size:13.5px!important;overflow-wrap:anywhere}
  .cf-footer{align-items:flex-start!important;flex-direction:column!important;padding:28px 20px 92px!important;line-height:1.55}
  .cf-footer>div{flex-wrap:wrap;gap:16px!important}
  .cf-fab{display:none!important}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  [data-reveal],.cf-card,.cf-shot,.cf-arrow,.cf-svc,.cf-svc *{transition-duration:.01ms!important}
}
