:root{--line-light:color-mix(in srgb, var(--muste) 14%, transparent);--line-sumu:color-mix(in srgb, var(--sumu) 18%, transparent);--cell-bg:color-mix(in srgb, var(--pohja) 86%, transparent);--f-sans:var(--f-mona-sans);--f-brand:var(--f-aldrich);--w-display:125%;--w-sub:110%;--t-h1:clamp(2.75rem, 1.5rem + 3.9vw, 4.5rem);--t-h2:clamp(2rem, 1.45rem + 1.9vw, 3rem);--t-h3:clamp(1.25rem, 1.15rem + .35vw, 1.4375rem);--t-lede:clamp(1.125rem, 1.05rem + .25vw, 1.25rem);--t-small:.875rem;--measure:38rem;--container:1240px;--gutter:clamp(1.25rem, .6rem + 2.6vw, 3rem);--section-y:clamp(4rem, 2.8rem + 5vw, 8rem);--radius:2px;--ease-out:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth;text-size-adjust:100%;scroll-padding-top:5rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--pohja);color:var(--teksti);font-family:var(--f-sans);font-variant-ligatures:no-common-ligatures;-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.6;overflow-x:clip}h1,h2,h3,h4{text-wrap:balance;margin:0;font-weight:600}h1,h2{font-stretch:var(--w-display);font-weight:700}h3,h4{font-stretch:var(--w-sub)}h1{font-size:var(--t-h1);letter-spacing:-.02em;line-height:1.02}h2{font-size:var(--t-h2);letter-spacing:-.016em;line-height:1.08}h3{font-size:var(--t-h3);letter-spacing:-.004em;line-height:1.25}p{text-wrap:pretty;margin:0}a{color:inherit}ul,ol{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--signaali);outline-offset:3px}:is(.concept-bar,.services,.projects,.refs) :focus-visible{outline-color:var(--kupari)}.contact :focus-visible{outline-color:var(--signaali-teksti)}:is(.hero,.svc-hero) :is(.btn,.text-link,a:not([class])):focus-visible{box-shadow:0 0 0 7px var(--pohja)}main:focus{outline:none}::selection{background:var(--signaali);color:var(--signaali-teksti)}.contact ::selection{background:var(--signaali-teksti);color:var(--signaali)}.nowrap{white-space:nowrap}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.container{width:min(100% - 2 * var(--gutter), var(--container));margin-inline:auto}.skip-link{z-index:100;background:var(--signaali);color:var(--signaali-teksti);padding:.6rem 1rem;font-weight:600;position:absolute;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip-link:focus{transform:none}.btn{border-radius:var(--radius);min-height:3rem;font-family:var(--f-sans);transition:background-color .15s ease, border-color .15s ease, color .15s ease, transform .15s var(--ease-out);border:1px solid #0000;justify-content:center;align-items:center;gap:.4em;padding:.7rem 1.25rem;font-size:1rem;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.96)}.btn-small{min-height:2.5rem;padding:.5rem 1rem;font-size:.9375rem}.btn-signal{background:var(--signaali);color:var(--signaali-teksti)}.btn-signal:hover{background:var(--signaali-hover)}.btn-ghost{border-color:color-mix(in srgb, var(--teksti) 35%, transparent);color:var(--teksti)}.btn-ghost:hover{border-color:var(--teksti)}.btn-ink{background:var(--muste);color:var(--paperi)}.btn-ink:hover{background:var(--muste-hover)}.text-link{text-underline-offset:.25em;font-weight:600;text-decoration-thickness:1px}.text-link:hover{text-decoration-thickness:2px}.concept-bar{padding:.45rem var(--gutter);background:var(--paperi);color:var(--muste);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem 1.25rem;font-size:.875rem;display:flex}.concept-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;display:flex}@media (width<=480px){.concept-controls{column-gap:.5rem}}.concept-bar a{color:var(--kupari);white-space:nowrap;font-weight:600;position:relative}.concept-bar a:after{content:"";position:absolute;inset:-.75rem -.25rem}.field-toggle,.controls-toggle,.tuner summary{border:1px solid color-mix(in srgb, var(--muste) 35%, transparent);border-radius:var(--radius);min-height:2rem;color:var(--muste);font:inherit;cursor:pointer;background:0 0;align-items:center;padding:.25rem .625rem;font-size:.8125rem;font-weight:500;list-style:none;display:inline-flex;position:relative}.field-toggle:before,.controls-toggle:before,.tuner summary:before{content:"";position:absolute;inset:-.375rem 0}.field-toggle:hover,.controls-toggle:hover,.tuner summary:hover{border-color:var(--muste)}.tuner summary::-webkit-details-marker{display:none}.controls-toggle[aria-expanded=true],.tuner[open] summary{background:var(--muste);color:var(--paperi)}.concept-short,.controls-toggle,.tuner-label-narrow{display:none}@media (width<=599px){.concept-bar{text-align:left;flex-wrap:wrap;justify-content:space-between;gap:0 .75rem;padding-block:0;font-size:.8125rem}.concept-note{flex-wrap:wrap;flex:1 1 0;align-items:center;column-gap:.5rem;min-width:0;min-height:2.75rem;display:flex}.concept-long{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.concept-short,.tuner-label-narrow{display:inline}.tuner-label{display:none}html[data-theme] .controls-toggle{display:inline-flex}.concept-controls{flex-basis:100%;justify-content:flex-start;gap:.75rem 1rem;padding-block:.375rem .75rem}html[data-theme] .controls-toggle[aria-expanded=false]+.concept-controls{display:none}}.tuner-panel{z-index:30;border:1px solid color-mix(in srgb, var(--muste) 16%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--paperi) 92%, transparent);width:min(18rem,100vw - 1.5rem);box-shadow:0 8px 24px color-mix(in srgb, var(--muste) 22%, transparent);backdrop-filter:blur(14px)saturate(1.2);color:var(--muste);text-align:left;gap:.7rem;padding:1rem;display:grid;position:fixed;bottom:.75rem;right:.75rem}@media (width>=700px){.tuner-panel{top:3rem;bottom:auto}}.tuner-title{color:color-mix(in srgb, var(--muste) 70%, transparent);font-size:.8125rem;font-weight:600}.tuner-row{grid-template-columns:1fr auto;gap:.15rem .5rem;font-size:.8125rem;display:grid}.tuner-row output{color:color-mix(in srgb, var(--muste) 70%, transparent);font-variant-numeric:tabular-nums;font-size:.8125rem}.tuner-row input{width:100%;accent-color:var(--muste);grid-column:1/-1;margin:0}.tuner-actions{justify-content:flex-end;gap:.5rem;display:flex}.tuner-actions button{border:1px solid color-mix(in srgb, var(--muste) 35%, transparent);border-radius:var(--radius);min-height:2rem;color:var(--muste);font:inherit;cursor:pointer;background:0 0;padding:.3rem .6rem;font-size:.8125rem}.tuner-actions .tuner-close{background:var(--muste);color:var(--paperi)}.site-header{z-index:20;border-bottom:1px solid var(--line-sumu);background:color-mix(in srgb, var(--pohja) 96%, transparent);backdrop-filter:blur(10px);position:sticky;top:0}.header-inner{align-items:center;gap:2rem;min-height:4rem;display:flex}.logo{flex-shrink:0;align-items:baseline;gap:.5rem;margin-right:auto;text-decoration:none;display:flex}.logo-mark{display:block}.logo-mark svg{width:auto;height:1rem;display:block}.logo-sub{color:var(--sumu);font-size:.8125rem}.nav-list{gap:1.75rem;display:flex}.nav-list a{color:var(--teksti-2);font-size:.9375rem;font-weight:500;text-decoration:none}.nav-list a:hover{color:var(--teksti)}.header-cta{flex-shrink:0;min-height:2.75rem}.site-header .menu-toggle{cursor:pointer;background:0 0;display:none}.menu-icon{fill:none;stroke:currentColor;stroke-linecap:square;stroke-width:1.5px;display:none}@media (width<=1060px){.header-inner{gap:1rem}.site-header .menu-toggle{flex-shrink:0;min-width:2.75rem;min-height:2.75rem;display:inline-flex}.menu-toggle[aria-expanded=true]{border-color:var(--teksti)}.site-nav{border-bottom:1px solid var(--line-sumu);background:var(--pohja);display:none;position:absolute;top:100%;left:0;right:0}.site-header[data-menu-open] .site-nav{display:block}.site-nav .nav-list{width:min(100% - 2 * var(--gutter), var(--container));flex-direction:column;gap:0;margin-inline:auto;padding-block:.5rem 1rem}.site-nav .nav-list a{min-height:2.75rem;color:var(--teksti);align-items:center;font-size:1.0625rem;display:flex}}@media (width<=640px){.logo-sub{display:none}}@media (width<=480px){.header-inner{gap:.5rem}.header-cta{padding-inline:.75rem;font-size:.875rem}.cta-label{text-transform:capitalize}.cta-verb{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (width<=400px){.site-header .logo-mark svg{height:.875rem}.header-cta{padding-inline:.625rem}.site-header .menu-toggle{padding:0}.menu-icon{display:block}.menu-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.field{z-index:-1;width:100%;height:100%;position:absolute;inset:0}@media (width<=699px){[data-field]>.field{--field-fade:max(0px, var(--field-pad,3rem) - .875rem);mask-image:linear-gradient(transparent, #000 var(--field-fade), #000 calc(100% - var(--field-fade)), transparent)}}.section-lede{max-width:var(--measure);font-size:var(--t-lede);margin-top:1.25rem;line-height:1.5}.contact{--field-pad:var(--section-y);isolation:isolate;padding-block:var(--section-y);background:var(--signaali);color:var(--signaali-teksti);position:relative;overflow:hidden}@media (width>=700px){.contact{flex-direction:column;justify-content:center;min-height:calc(100svh - 4rem - 1px);scroll-margin-top:calc(1px - 1rem);display:flex}}.contact-inner{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;gap:3rem;display:grid}.contact h2{letter-spacing:-.02em;hyphens:auto;overflow-wrap:anywhere;font-size:clamp(2.125rem,1.25rem + 3.9vw,4.5rem);line-height:1.02}.contact .section-lede{max-width:32rem;margin-bottom:2rem}.contact-list{gap:1.5rem;margin:0;display:grid}.contact-list dt{font-size:var(--t-small);margin-bottom:.25rem;font-weight:600}.contact-list dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.25rem;font-weight:600}.contact-list a{text-decoration:none}.contact-list a:hover{text-underline-offset:.2em;text-decoration:underline}@media (width<=820px){.contact-inner{grid-template-columns:minmax(0,1fr)}}.site-footer{background:var(--pohja);color:var(--sumu);font-size:var(--t-small);padding-block:3rem}.footer-inner{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;display:grid}.site-footer .logo-mark{color:var(--teksti);margin-bottom:.625rem}.site-footer .logo-mark svg{height:.875rem}.footer-credit a{color:var(--teksti)}@media (width<=820px){.footer-inner{grid-template-columns:minmax(0,1fr)}}
