.brand-mark{flex:none;--mark-orbit:#247b93;--mark-node:#d17257}.mark-orbit{stroke:var(--mark-orbit,#91ead9)}.mark-node{fill:var(--mark-node,#ffad8f)}.scroll-progress{position:fixed;inset:0 0 auto;height:2px;z-index:5;pointer-events:none}.scroll-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--peach));transform:scaleX(var(--page-progress,0));transform-origin:left}.preview-orbit{position:absolute;z-index:-1;inset:-11% -6% 0;width:112%;height:112%;overflow:visible;pointer-events:none}.preview-orbit path{fill:none;stroke:#7caeba;stroke-width:1.2px;stroke-opacity:.55;vector-effect:non-scaling-stroke}.preview-orbit circle{fill:#3e8ca1}.preview-orbit+.preview-caption{padding-right:25px}.preview-avatar svg{margin:0}.preview-spark{width:47px;height:47px;color:#632b1d;--mark-orbit:#884d3a;--mark-node:#fff2e9}.preview-spark svg{width:73%;height:auto}.contact-mark{--mark-orbit:#884d3a;--mark-node:#fff2e9}.project-image{position:relative;display:block;border-radius:10px;overflow:hidden}.project-featured .project-image{box-shadow:0 8px 25px #173d5129}.expand-preview{position:absolute;bottom:8px;right:8px;display:grid;place-items:center;width:33px;height:33px;border-radius:7px;background:#163747ee;color:white}.preview-dialog{width:min(1050px,calc(100% - 28px));max-width:none;max-height:92dvh;padding:0;border:1px solid #99c0cd;border-radius:15px;background:var(--wash);color:var(--ink)}.preview-dialog::backdrop{background:#103442c2}html:has(.preview-dialog[open]){overflow:hidden}.dialog-content{padding:13px}.dialog-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:1px 2px 12px}.dialog-title strong{font-size:1.16rem}.dialog-title p{color:var(--muted);font-size:.76rem}.dialog-title button{display:grid;place-items:center;flex:none;width:42px;height:42px;color:var(--accent);border:1px solid #b4d4de;border-radius:8px}.dialog-title button:hover{background:#d8ebf0}.preview-dialog .dialog-content>img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain}.contact-whatsapp{padding:clamp(18px,4vw,36px);border:1px solid #c1dce4;border-radius:13px;background:#f4fafc}.contact-channel{display:inline-flex;gap:7px;align-items:center;color:var(--accent);font-size:.73rem;font-weight:750;letter-spacing:.05em;text-transform:uppercase}.contact-whatsapp h3{margin-top:9px;font-size:clamp(1.28rem,2.9vw,1.85rem)}.contact-whatsapp p{margin-top:9px;color:var(--muted)}.contact-whatsapp .button{margin-top:17px}.floating-contact{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:4;display:grid;place-items:center;width:46px;height:46px;border:1px solid #125f51;border-radius:50%;background:#1a765f;color:#fff;box-shadow:0 5px 16px #124c4359;visibility:hidden;opacity:0}.floating-contact svg{width:25px;height:25px}.floating-contact[data-visible]{visibility:visible;opacity:1}.floating-contact:hover{background:#115946}@media (max-width:600px){.preview-spark{width:33px;height:33px;right:-6px}.header-inner>.button{font-size:.77rem;padding-inline:9px;gap:6px}.header-inner>.button svg{width:15px}.floating-contact{right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom))}.site-footer{padding-bottom:45px}}@media (prefers-reduced-motion:reduce){.scroll-progress{display:none}}@media (prefers-reduced-motion:no-preference){.hero-copy>*{animation:horizonte-rise .6s var(--motion-ease) backwards}.hero h1{animation-delay:.07s}.hero-description{animation-delay:.14s}.hero-actions,.hero-tags{animation-delay:.21s}.interface-preview{animation:horizonte-rise .85s .22s var(--motion-ease) backwards}.preview-orbit{transform:translate(calc(var(--pointer-x, 0px) * .6),calc(var(--pointer-y, 0px) * .6 + var(--orbit-scroll, 0) * 12px));transition:transform .24s var(--motion-ease)}.chart-trace,.preview-orbit path,.preview-spark :is(.mark-letter,.mark-orbit){stroke-dasharray:1;animation:horizonte-trace 1.2s var(--motion-ease) backwards}.preview-orbit path{animation-delay:.35s}.preview-spark .mark-orbit{animation-delay:.55s}.preview-spark .mark-letter{animation-delay:.71s}.preview-orbit circle,.preview-spark .mark-node{animation:horizonte-fade .45s ease-out 1.25s backwards}.chart-trace{animation-delay:.58s}.chart-fill{animation:horizonte-chart-fill 1.2s .58s var(--motion-ease) backwards}.motion-visible{animation:horizonte-reveal .62s var(--motion-delay,0s) var(--motion-ease) backwards}.project:nth-child(3),.service-list article:nth-child(2),.steps li:nth-child(2){--motion-delay:.07s}.steps li:nth-child(3){--motion-delay:.14s}.steps li:nth-child(4){--motion-delay:.21s}.steps li:after{background:linear-gradient(90deg,#237c94 0 var(--step-fill,0),#c8dde4 var(--step-fill,0))}.step-number{transition:box-shadow .28s,background .28s,border-color .28s}.steps li[data-reached] .step-number{box-shadow:0 0 0 4px #408ba32a}.expand-preview,.project-image img{transition:transform .38s var(--motion-ease)}.project-image:is(:hover,:focus-visible) img{transform:scale(1.035)}.project-image:is(:hover,:focus-visible) .expand-preview{transform:translate(-3px,-3px)}.preview-dialog[open]{animation:horizonte-rise .34s var(--motion-ease) both}.preview-dialog[open]::backdrop{animation:horizonte-fade .22s ease-out both}.button svg,.faq-list summary svg,.text-link svg{transition:transform .2s ease}.button-primary:is(:hover,:focus-visible) svg:last-child,.text-link:is(:hover,:focus-visible) svg:last-child{transform:translate(2px,-2px)}.button-outline:is(:hover,:focus-visible) svg{transform:translateY(3px)}.faq-list details[open]>p,.simulator-total output>span{display:inline-block;animation:horizonte-rise .28s ease-out both}.floating-contact{transition:opacity .24s ease,transform .24s ease,visibility .24s}.floating-contact:not([data-visible]){transform:translateY(7px)}}:root{--motion-ease:cubic-bezier(.22,1,.36,1)}@keyframes horizonte-rise{0%{opacity:.64;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes horizonte-reveal{0%{opacity:.46;transform:translateY(19px)}to{opacity:1;transform:none}}@keyframes horizonte-trace{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes horizonte-fade{0%{opacity:0}to{opacity:1}}@keyframes horizonte-chart-fill{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}