.hero{--field-pad:clamp(3rem, 2rem + 4vw, 6rem);isolation:isolate;background:var(--pohja);position:relative;overflow:hidden}.hero-inner{min-height:min(100svh - 6.5rem,820px);padding-block:var(--field-pad);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:clamp(2rem,1rem + 4vw,5rem);display:grid}.hero-copy{position:relative}.hero-copy:before{z-index:-1;background:color-mix(in srgb, var(--pohja) 50%, transparent);content:"";filter:blur(.75rem);pointer-events:none;position:absolute;inset:-.75rem}.lede{max-width:30rem;color:color-mix(in srgb, var(--teksti) 50%, var(--teksti-2));font-size:var(--t-lede);margin-top:1.5rem;line-height:1.5}.actions{flex-wrap:wrap;gap:.75rem;margin-top:2.25rem;display:flex}.map{grid-template-rows:auto repeat(3,minmax(4.75rem,auto));grid-template-columns:repeat(4,minmax(0,1fr));column-gap:.625rem;display:grid;position:relative}.map-wrap{--plate-bg:color-mix(in srgb, var(--pohja) 92%, transparent);position:relative}.intro-canvas{z-index:2;pointer-events:none;width:calc(100% + 6rem);height:calc(100% + 6rem);position:absolute;inset:-3rem}.cat,.cat ul{grid-template-rows:subgrid;display:grid}.cat-label{background:var(--plate-bg);width:fit-content;color:var(--sumu);transition:opacity .4s var(--ease-out);align-self:end;margin-bottom:.5rem;padding:.2rem .8rem;font-size:.8125rem;font-weight:600}.cell{border:1px solid var(--viiva);background:var(--cell-bg);margin-bottom:-1px;transition:border-color .5s,background-color .5s}.cell a{flex-direction:column;height:100%;padding:.75rem .8rem;text-decoration:none;display:flex;position:relative}html:is(:not([data-intro]),[data-intro=done]) .cell a:hover,.cell a:focus-visible{background:var(--pinta-2)}.cell a:focus-visible{outline-offset:-2px}.cell a>span{transition:opacity .45s var(--ease-out);transition-delay:calc(var(--i) * 60ms)}.cell-name{font-family:var(--f-brand);letter-spacing:.06em;text-transform:uppercase;overflow-wrap:anywhere;font-size:clamp(.875rem,.7rem + .45vw,1.0625rem);line-height:1.2}@media (width>=1025px) and (width<=1280px){.cell-name{letter-spacing:.02em;font-size:.8125rem}}.cell-short{color:var(--sumu);margin-top:.2rem;font-size:.8125rem;line-height:1.3}.cell-board{grid-area:4/3/auto/span 2}.cell-board .cell-name{font-size:clamp(.875rem,.75rem + .3vw,1rem)}.readout-slot{min-height:calc(3.2em + 1.2rem);margin-top:1.25rem;font-size:.9375rem}.readout{background:var(--plate-bg);color:var(--teksti-2);flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;padding:.6rem .8rem;font-size:.9375rem;display:flex}.readout-name{color:var(--signaali);font-weight:600}@media (width>=1025px){html:is([data-intro=pending],[data-intro=drift]) .map .cell{background-color:#0000;border-color:#0000}html:is([data-intro=pending],[data-intro=drift]) .map .cell a>span,html:is([data-intro=pending],[data-intro=drift]) .cat-label,html:is([data-intro=pending],[data-intro=drift]) .readout{opacity:.35}}.readout{transition:opacity .5s var(--ease-out) .3s}html[data-intro=pulse] .map .cell{animation:.9s ease-out both ping;animation-delay:calc(var(--i) * 90ms)}@keyframes ping{0%{background-color:var(--cell-bg)}30%{border-color:var(--signaali);background-color:color-mix(in srgb, var(--signaali) 22%, transparent)}to{background-color:var(--cell-bg)}}@media (width<=1024px){.hero-inner{grid-template-columns:minmax(0,1fr);min-height:0;position:relative}.hero-copy{max-width:40rem}.hero-copy:before{content:none}.hero-inner:before{z-index:-1;inset:calc(var(--field-pad) - .75rem) -.75rem;background:color-mix(in srgb, var(--pohja) 50%, transparent);content:"";filter:blur(.75rem);pointer-events:none;position:absolute}}@media (width<=700px){.map{grid-template-rows:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem .625rem}.cat,.cat ul{display:block;grid-row:auto!important}.cell{min-height:4.5rem}.cell-board{grid-area:auto/1/auto/-1}}.section-head{max-width:46rem;margin-bottom:clamp(2.5rem,2rem + 2vw,4rem)}.refs .section-head,.culture .section-head{margin-bottom:clamp(1.5rem,1rem + 1.5vw,2.5rem)}.optimi{padding-block:var(--section-y);background:var(--pohja)}.optimi .section-lede{color:var(--teksti-2)}.optimi-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,1rem + 4vw,5rem);display:grid}.loop-stage{align-self:start;position:sticky;top:6rem}.loop-figure{--vw:460;--vh:330;aspect-ratio:460/330;width:min(100%,30rem);position:relative}.loop{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.loop-ring{fill:none;stroke:var(--viiva);stroke-width:1.5px;vector-effect:non-scaling-stroke}.loop-arc{fill:none;stroke:var(--signaali);stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--p,1));stroke-linecap:round;stroke-width:3px}.loop-node circle{transform-box:fill-box;transform-origin:50%;fill:var(--pohja);stroke:var(--sumu);stroke-width:1.5px;vector-effect:non-scaling-stroke;transition:fill .25s,stroke .25s}.loop-label{top:calc(50% + 100% * var(--y) / var(--vh));left:calc(50% + 100% * var(--x) / var(--vw));color:var(--sumu);font-family:var(--f-sans);white-space:nowrap;font-size:1rem;font-weight:600;line-height:1.2;transition:color .25s;position:absolute}.loop-label[data-side=top]{transform:translate(-50%,calc(-100% - .75rem))}.loop-label[data-side=right]{transform:translate(1rem,-50%)}.loop-label[data-side=left]{transform:translate(calc(-100% - 1rem),-50%)}.optimi:not([data-linked]) .loop-node circle,.loop-node[data-passed] circle{fill:var(--signaali);stroke:var(--signaali)}.loop-label[data-active]{color:var(--teksti)}.loop-center{color:var(--teksti);font-family:var(--f-brand);letter-spacing:.08em;text-align:center;text-transform:uppercase;white-space:nowrap;font-size:1.0625rem;line-height:1.3;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.phases{display:grid}.phase{border-top:1px solid var(--line-sumu);flex-direction:column;justify-content:center;min-height:30vh;padding-block:2rem;transition:border-color .3s;display:flex}.phase :is(h3,p){transition:color .3s}.optimi[data-linked] .phase[data-active]{border-top-color:var(--signaali)}.optimi[data-linked] .phase:not([data-active]) :is(h3,p){color:var(--sumu)}.phase h3{font-size:var(--t-h2);font-stretch:var(--w-display);letter-spacing:-.016em;margin-bottom:.75rem;font-weight:700;line-height:1.08}.phase p:last-child,.board p{max-width:30rem;color:var(--teksti-2);font-size:1.125rem}.board{border-top:1px solid var(--signaali);padding-top:2rem}.board h3{margin-bottom:.75rem}@media (width<=820px){.optimi-body{grid-template-columns:minmax(0,1fr)}.loop-stage{z-index:1;background:var(--pohja);padding-block:1rem .5rem;top:4rem}.loop-stage:after{background:linear-gradient(var(--pohja), transparent);content:"";pointer-events:none;height:1.5rem;position:absolute;top:100%;left:0;right:0}.loop-figure{--vw:330;aspect-ratio:1;width:clamp(12.5rem,56vw,18rem);margin-inline:auto}.loop-arc{stroke-width:4px}.loop-node circle{transform:scale(1.3)}.loop-center{letter-spacing:.05em;font-size:clamp(.875rem,.7rem + .5vw,1rem)}}@media (width<=520px){.loop-figure{width:clamp(10rem,44vw,13rem)}.loop-center{font-size:.8125rem}}@media (width<=480px){.loop-stage{padding-block:.75rem .25rem}.loop-figure{width:10rem}.loop-label{font-size:.875rem}.loop-label[data-side=right]{transform:translate(.75rem,-50%)}.loop-label[data-side=left]{transform:translate(calc(-100% - .75rem),-50%)}}@media (height<=40rem){.loop-stage{position:static}.loop-stage:after{display:none}}.services,.refs{padding-block:var(--section-y);background:var(--paperi);color:var(--muste);color-scheme:light}.index{border-top:2px solid var(--muste);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.group{border-left:1px solid var(--line-light);padding:1.25rem 1.5rem 0}.group:first-child{border-left:0;padding-left:0}.group-intro{min-height:4.8em;color:var(--muste-2);margin-top:.5rem;font-size:.9375rem;line-height:1.55}.service-list{margin-top:1.5rem}.service{border-top:1px solid var(--line-light);padding-block:1rem 1.25rem;scroll-margin-top:6rem}.service:target{border-left:2px solid var(--kupari);margin-left:-.75rem;padding-left:.625rem}.service h4{font-family:var(--f-brand);letter-spacing:.05em;text-transform:uppercase;font-size:1.0625rem;font-weight:400;line-height:1.3}.service-link{text-decoration:none;display:inline-block}.service-link:hover h4{color:var(--kupari);text-underline-offset:.2em;text-decoration:underline}.service p{color:var(--muste-2);margin-top:.35rem;font-size:.9375rem;line-height:1.55}@media (width<=1024px){.index{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:2.5rem}.group:nth-child(odd){border-left:0;padding-left:0}.group-intro{min-height:0}}@media (width<=620px){.index{border-top:0;grid-template-columns:minmax(0,1fr)}.group,.group:nth-child(odd){border-top:2px solid var(--muste);border-left:0;padding:1.25rem 0 0}}.projects{padding-block:var(--section-y);background:var(--paperi-2);color:var(--muste);color-scheme:light}.capabilities{letter-spacing:-.012em;max-width:62rem;font-size:clamp(1.625rem,1.1rem + 1.8vw,2.75rem);font-weight:500;line-height:1.2}.capabilities li{display:inline}.capabilities li:not(:last-child):after{color:var(--muste-3);content:", "}.capabilities li:last-child:after{color:var(--muste-3);content:"."}.projects .text-link{color:var(--kupari);margin-top:2.5rem;display:inline-block}.ledger{border-top:2px solid var(--muste)}.ref{border-bottom:1px solid var(--line-light);grid-template-columns:minmax(0,3fr) minmax(0,6fr) minmax(0,2fr);align-items:baseline;gap:1rem clamp(1.5rem,1rem + 2vw,3rem);padding-block:1.75rem 2rem;display:grid}.ref-body>p{max-width:var(--measure);color:var(--muste-2)}.ref figure{max-width:var(--measure);margin:1rem 0 0}.ref blockquote{font-size:var(--t-lede);letter-spacing:-.004em;margin:0;font-weight:500;line-height:1.45}.ref figcaption{color:var(--muste-3);font-size:var(--t-small);margin-top:.5rem}.ref>a{color:var(--kupari);text-underline-offset:.2em;white-space:nowrap;justify-self:end;font-weight:600}@media (width<=820px){.ref{grid-template-columns:minmax(0,1fr)}.ref>a{justify-self:start}}.culture{padding-block:var(--section-y);background:var(--pinta)}.culture-prose{max-width:var(--measure);color:var(--teksti-2);gap:1rem;display:grid}.culture-prose .section-lede{color:var(--teksti);margin-top:0}.facts{border-top:1px solid var(--line-sumu);grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem clamp(1.5rem,1rem + 2vw,3rem);margin:clamp(2.5rem,2rem + 2vw,4rem) 0 2.5rem;padding-top:1.5rem;display:grid}.facts dt{color:var(--sumu);font-size:var(--t-small);font-weight:600}.facts dd{margin:.25rem 0 0;font-size:1.125rem;font-weight:500}@media (width<=820px){.facts{grid-template-columns:minmax(0,1fr)}}
