/* E-Smartmobility · Laad-E */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:800;font-display:swap;src:url(fonts/plus-jakarta-sans-latin-800-normal.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/jetbrains-mono-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/jetbrains-mono-latin-500-normal.woff2) format('woff2')}
html{-webkit-text-size-adjust:100%}body{margin:0;background:#FFFFFF;color:#0B1F0E;font-family:'Plus Jakarta Sans','Helvetica Neue',Arial,sans-serif}
*,*::before,*::after{box-sizing:border-box}img{max-width:100%}button{font-family:inherit}[hidden]{display:none!important}
.esm-root a{text-decoration:none}.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
.skip-link:focus{position:fixed;left:12px;top:12px;z-index:1000;background:#DEFDA2;color:#0B1F0E;padding:10px 14px;border-radius:8px;clip:auto;width:auto;height:auto}
.esm-page{max-width:880px;margin:0 auto;padding:72px clamp(20px,4vw,64px) 96px;font-size:17px;line-height:1.65;color:#3D4E3A}.esm-page h1{color:#0B1F0E;font-size:clamp(36px,4.6vw,60px);line-height:1.05;letter-spacing:-.04em;margin:0 0 24px}
.esm-page a{color:#00450F;text-decoration:underline}
.intro{pointer-events:none}
.esm-wait,.esm-wait *{animation-play-state:paused!important}
.esm-root p{line-height:1.65}
@media (prefers-reduced-motion: reduce){.intro{display:none!important}.esm-wait,.esm-wait *{animation-play-state:running!important}}
a{color:#0B1F0E}
a:hover{color:#2F9E3A}
*{box-sizing:border-box}
@keyframes charge{0%{stroke-dashoffset:100}100%{stroke-dashoffset:0}}
.charge{stroke-dasharray:100;animation:charge 1.6s cubic-bezier(.55,0,.25,1) .3s both}
button .charge{animation-iteration-count:infinite}
@keyframes fi{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes dr{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.fadein{animation:fi .45s cubic-bezier(.2,.7,.2,1) both}
.drop{animation:dr .25s ease-out both}
.row{transition:background-color .2s}
.row:hover{background-color:#F6FAF2}
.tile{transition:box-shadow .25s, transform .25s}
.tile:hover{box-shadow:0 20px 40px -26px rgba(0,40,10,0.4)}
.tile .arr{transition:transform .25s}
.tile:hover .arr{transform:translateX(6px)}
@keyframes tabcharge{from{width:0}to{width:100%}}
.tabcharge{animation:tabcharge 7s linear both}
@keyframes glint{0%{transform:translateX(-120%)}55%,100%{transform:translateX(560%)}}
.glint{position:absolute;top:-1px;left:0;height:2px;width:18%;background:linear-gradient(90deg,rgba(222,253,162,0),#DEFDA2,rgba(222,253,162,0));animation:glint 6s cubic-bezier(.6,0,.4,1) infinite;pointer-events:none}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.fillv,.fillonce{transform-origin:left center;animation:grow 1.2s cubic-bezier(.2,.7,.2,1) .2s both}
@supports (animation-timeline: view()){.fillv{animation-timeline:view();animation-range:entry 10% cover 35%;animation-delay:0s}}
.cta{position:relative;overflow:hidden;isolation:isolate}
.cta::before{content:'';position:absolute;top:0;bottom:0;left:-100%;width:100%;background:linear-gradient(90deg,rgba(222,253,162,0.04) 0%,rgba(222,253,162,0.24) calc(100% - 3px),#DEFDA2 calc(100% - 3px));transform:translateX(0);transition:transform .9s cubic-bezier(.45,0,.2,1);z-index:-1;pointer-events:none}
.cta-dark::before{background:linear-gradient(90deg,rgba(0,69,15,0.03) 0%,rgba(0,69,15,0.14) calc(100% - 3px),#00450F calc(100% - 3px))}
.cta:hover::before,.cta:focus-visible::before{transform:translateX(100%)}
@keyframes btnfill{from{transform:translateX(0)}to{transform:translateX(100%)}}
.charging::before{animation:btnfill 1.7s cubic-bezier(.4,0,.6,1) forwards}
@keyframes introout{0%{transform:translateY(0)}100%{transform:translateY(-100%);visibility:hidden}}
.intro{animation:introout .8s cubic-bezier(.7,0,.2,1) 2.4s forwards}
@keyframes introcharge{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
.introcharge{stroke-dasharray:100;animation:introcharge 1.8s cubic-bezier(.5,0,.3,1) .25s both}
@keyframes introbar{from{width:0}to{width:100%}}
.introbar{animation:introbar 1.8s cubic-bezier(.5,0,.3,1) .25s both}
@property --p{syntax:'<integer>';inherits:false;initial-value:0}
@keyframes introcnt{from{--p:0}to{--p:100}}
.introcnt{counter-reset:p var(--p);animation:introcnt 1.8s cubic-bezier(.5,0,.3,1) .25s both}
.introcnt::after{content:counter(p) '%'}
@keyframes iw{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.intro-word{animation:iw .6s ease-out .5s both}
@keyframes si{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
#offerte .fadein{animation-name:si}
#offerte input:focus,#offerte textarea:focus{outline:none;border-color:#2F9E3A !important;box-shadow:0 0 0 3px rgba(47,158,58,0.2)}
@keyframes flow{0%{stroke-dashoffset:100;opacity:0}10%{opacity:1}80%{opacity:1}100%{stroke-dashoffset:0;opacity:0}}
.flow{stroke-dasharray:8 92;animation:flow 3.6s cubic-bezier(.4,0,.6,1) infinite both}
@keyframes hub{0%{transform:scale(.7);opacity:.9}100%{transform:scale(2.2);opacity:0}}
.hubpulse{transform-box:fill-box;transform-origin:center;animation:hub 2.4s ease-out infinite}
@media (prefers-reduced-motion: reduce){.intro{display:none}.flow,.hubpulse{animation:none}.flow{display:none}.charging::before{animation:none;transform:translateX(100%)}.charge,.fadein,.drop,.tabcharge,.glint,.fillv,.fillonce{animation:none}.tabcharge{width:100%}.glint{display:none}}
.fillv{transform-origin:left center;animation:grow 1.2s cubic-bezier(.2,.7,.2,1) .2s both}
.tile{transition:box-shadow .25s}
@media (prefers-reduced-motion: reduce){.charge,.fadein,.fillv{animation:none}}
.mover{offset-path:path('M80 500 V400 H300 V265 H600 V200 H720 V300');offset-rotate:auto;animation:ride 16s cubic-bezier(.45,0,.55,1) infinite alternate}
@keyframes ride{from{offset-distance:0%}to{offset-distance:100%}}
@supports not (offset-path: path('M0 0 H1')){.mover{display:none}}
@media (prefers-reduced-motion: reduce){.mover{animation:none;offset-distance:40%}}
.cta.charging::before{transform:translateX(100%);transition-duration:1.7s}
.seg{transition:height .55s cubic-bezier(.2,.7,.2,1)}
input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #2F9E3A;outline-offset:2px}
@media (prefers-reduced-motion: reduce){.charge,.fadein{animation:none}.seg,.cta::before{transition:none}}
.cell{transition:background-color .3s,color .3s}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #2F9E3A;outline-offset:2px}
@media (prefers-reduced-motion: reduce){.charge,.fadein{animation:none}.cell,.cta::before{transition:none}}