@font-face{font-family:Libre Caslon Display;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/libre-caslon-display-latin-400-normal-n_DgBRfq.woff2)format("woff2"),url(/assets/libre-caslon-display-latin-400-normal-BbfEE5V2.woff)format("woff")}@font-face{font-family:Libre Caslon Text;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/libre-caslon-text-latin-400-normal-CfldDPV-.woff2)format("woff2"),url(/assets/libre-caslon-text-latin-400-normal-WtjoQ5sB.woff)format("woff")}@font-face{font-family:Libre Caslon Text;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/libre-caslon-text-latin-400-italic-snTzlHlN.woff2)format("woff2"),url(/assets/libre-caslon-text-latin-400-italic-C1OAqZ6C.woff)format("woff")}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/schibsted-grotesk-latin-ext-wght-normal-hsMS0n0O.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/schibsted-grotesk-latin-wght-normal-Bb8VGrTG.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink-0:oklch(15.5% .03 262);--night:oklch(13% .03 262);--line:oklch(72% .04 255/.2);--mist:oklch(76% .03 255);--text-soft:oklch(86% .02 255);--foam:oklch(95% .012 85);--lantern:oklch(83% .13 68);--font-display:"Libre Caslon Display", "Iowan Old Style", Palatino, Georgia, serif;--font-serif:"Libre Caslon Text", "Iowan Old Style", Palatino, Georgia, serif;--font-body:"Schibsted Grotesk Variable", "Avenir Next", "Segoe UI", system-ui, sans-serif;--text-small:.875rem;--text-body:1rem;--text-lede:clamp(1.125rem, 1.05rem + .3vw, 1.3125rem);--text-heading:clamp(1.625rem, 1.4rem + .9vw, 2.125rem);--text-title:clamp(2.5rem, 1.9rem + 2.6vw, 3.75rem);--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem;--measure:34rem;--gutter:clamp(1.25rem, .6rem + 4vw, 6rem);--section:clamp(6rem, 4rem + 8vw, 10rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;background:var(--ink-0)}body{min-height:100svh;color:var(--text-soft);font-family:var(--font-body);font-size:var(--text-body);font-kerning:normal;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-weight:380;line-height:1.7}h1,h2,h3,p,ol,blockquote{margin:0}p{text-wrap:pretty;-webkit-hyphens:auto;hyphens:auto}ol{padding:0;list-style:none}a{color:inherit}::selection{background:var(--lantern);color:var(--ink-0)}:focus-visible{outline:1px solid var(--lantern);outline-offset:4px;border-radius:2px}.skip{left:var(--gutter);z-index:20;padding:var(--space-xs) var(--space-md);background:var(--lantern);color:var(--ink-0);text-decoration:none;position:absolute;top:-100px}.skip:focus{top:var(--space-md)}.kicker{font-size:var(--text-small);letter-spacing:.14em;text-transform:uppercase;color:var(--mist);font-weight:500}.display{font-family:var(--font-display);font-weight:400;font-size:var(--text-heading);letter-spacing:.005em;color:var(--foam);text-wrap:balance;line-height:1.18}.harbor{z-index:-1;background:var(--ink-0);position:fixed;inset:0;overflow:hidden}.harbor__still,.harbor__canvas{width:100%;height:100%;position:absolute;inset:0}.harbor__still{object-fit:cover;object-position:52% 64%;filter:brightness(.42)saturate(.55)hue-rotate(-12deg)contrast(1.05);transition:filter 2.4s var(--ease-out);transform:scale(1.07)}.harbor[data-dawn] .harbor__still{filter:brightness(.72)saturate(.9)sepia(.12)}.harbor__canvas{opacity:0;transition:opacity .6s linear}.harbor__canvas[data-ready]{opacity:1}.harbor__shade,.harbor__shade:after{pointer-events:none;position:absolute;inset:0}.harbor__shade{background:linear-gradient(to right, color-mix(in oklch, var(--night) 55%, transparent), color-mix(in oklch, var(--night) 20%, transparent) 38%, transparent 62%)}.harbor__shade:after{content:"";background:linear-gradient(to top, color-mix(in oklch, var(--night) 70%, transparent), transparent 55%)}@supports (animation-timeline:scroll()){.harbor__shade:after{animation:linear both shade-away;animation-timeline:scroll(root);animation-range:0 120vh}@keyframes shade-away{to{opacity:.25}}}.site-header{z-index:10;padding:var(--space-md) var(--gutter);pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:fixed;inset:0 0 auto}.site-header:before{content:"";z-index:-1;background:linear-gradient(to bottom, color-mix(in oklch, var(--night) 92%, transparent) 35%, transparent);pointer-events:none;position:absolute;inset:0 0 -3rem}.site-header>*{pointer-events:auto}.site-header__mark{align-items:center;gap:var(--space-sm);min-height:2.75rem;font-family:var(--font-display);letter-spacing:.01em;color:var(--foam);font-size:1.0625rem;text-decoration:none;display:inline-flex}.site-header__mark img{object-fit:cover;width:1.75rem;height:1.75rem;box-shadow:0 0 0 1px var(--line);filter:saturate(.35)brightness(.8);transition:filter 1.2s var(--ease-out), box-shadow .6s var(--ease-out);border-radius:50%}.site-header__mark:hover img,.site-header__mark:focus-visible img{filter:none;box-shadow:0 0 0 1px var(--lantern), 0 0 14px color-mix(in oklch, var(--lantern) 40%, transparent)}@media (width<=520px){.site-header__name{display:none}}.langs{letter-spacing:.12em;font-size:.8125rem;display:flex}.langs__item{min-width:2.75rem;min-height:2.75rem;color:var(--mist);transition:color .3s var(--ease-out);place-items:center;text-decoration:none;display:grid;position:relative}.langs__item:hover,.langs__item[aria-current]{color:var(--foam)}.langs__item[aria-current]:after{content:"";background:var(--lantern);width:3px;height:3px;box-shadow:0 0 8px 1px color-mix(in oklch, var(--lantern) 60%, transparent);border-radius:50%;margin-left:-1.5px;position:absolute;bottom:.4rem;left:50%}.hero__inner{width:min(var(--measure), 100%)}.services,.contact{margin-left:var(--gutter);padding-top:var(--section);width:min(var(--measure), calc(100% - 2 * var(--gutter)));position:relative}.hero{min-height:100svh;padding:var(--space-4xl) var(--gutter) clamp(4rem, 2.5rem + 7vh, 7.5rem);isolation:isolate;align-items:end;display:grid;position:relative}.gulls{fill:none;width:100%;height:100%;stroke:var(--lantern);stroke-linecap:round;stroke-linejoin:round;pointer-events:none;position:absolute;inset:0;overflow:visible}.hero__inner{z-index:1;gap:var(--space-lg);display:grid;position:relative}.hero__entry{font-size:var(--text-small);color:var(--mist);-webkit-hyphens:manual;hyphens:manual}.hero__ipa{color:var(--text-soft);margin-right:.5em}.hero__title{gap:var(--space-md);font-weight:400;display:grid}.hero__word{font-family:var(--font-display);font-size:var(--text-title);letter-spacing:.01em;color:var(--foam);margin-bottom:.35em;line-height:1;display:block;position:relative}.hero__lede{max-width:26ch;font-family:var(--font-serif);font-style:italic;font-size:var(--text-lede);color:var(--foam);text-wrap:balance;line-height:1.45;display:block}.hero__body{max-width:40ch}.hero__actions{align-items:center;gap:var(--space-md) var(--space-xl);margin-top:var(--space-xs);flex-wrap:wrap;display:flex}.letters{clip-path:inset(-.4em -.2em 0);display:inline-flex}.letters__ch{white-space:pre;display:inline-block}.hero__word:after{content:"Heimathafen";transform-origin:top;color:var(--lantern);opacity:.12;filter:url(#ripple)blur(.4px);pointer-events:none;position:absolute;top:100%;left:0;transform:scaleY(-.6);-webkit-mask-image:linear-gradient(#000,#0000 70%);mask-image:linear-gradient(#000,#0000 70%)}.word{display:inline-block}.ink{fill:none;stroke:var(--lantern);stroke-linecap:round;stroke-linejoin:round;filter:url(#ink);pointer-events:none;overflow:visible}.ink-mark{white-space:nowrap;position:relative}.ink-mark .ink{position:absolute}.ink-mark--underline .ink{width:104%;height:.38em;bottom:-.32em;left:-2%;overflow:hidden}.ink-mark__water{transform-box:view-box}.ink-sail{pointer-events:none;height:.8em;position:absolute;bottom:-.2em;left:0;right:0;container-type:inline-size}.ink-sail .sketch{width:.8em;height:.8em;position:absolute;bottom:0;left:0}.ink-mark--circle .ink{opacity:.85;width:112%;height:calc(100% + .6em);top:-.3em;left:-5%}.service__sketch{width:2.25rem;height:2.25rem;margin-top:var(--space-xs);grid-area:2/1;margin-left:-.35rem}@media (width>=700px){.service{grid-template-columns:2rem minmax(0,1fr) 4.5rem}.service__sketch{opacity:.9;width:3.75rem;height:3.75rem;transition:transform .9s var(--ease-out);grid-area:1/3/span 2;align-self:center;margin:0}.service:hover .service__sketch{transform:perspective(500px)rotateY(-24deg)rotateX(8deg)scale(1.06)}}.sea-state{display:none}@media (width>=900px){.sea-state{right:var(--gutter);z-index:5;pointer-events:none;height:10rem;margin-top:-5rem;display:block;position:fixed;top:50%}}.sea-state__track{background:var(--line);width:1px;height:100%;display:block;position:relative}.sea-state__mark{right:-3px;top:calc(var(--sea-progress,0) * 100%);align-items:center;gap:var(--space-sm);white-space:nowrap;display:flex;position:absolute;transform:translateY(-50%)}.sea-state__art{width:3.4rem;height:3.4rem;position:relative}.sea-state__art .sketch{width:100%;height:100%;position:absolute;inset:0}.sea-state__leaving{opacity:0;transition:opacity .6s ease, transform .6s var(--ease-out);transform:scale(.85)}.sea-state__mark:after{content:"";background:var(--lantern);width:7px;height:7px;box-shadow:0 0 10px 2px color-mix(in oklch, var(--lantern) 50%, transparent);border-radius:50%}.button{align-items:center;gap:var(--space-xs);border:1px solid color-mix(in oklch, var(--lantern) 55%, transparent);min-height:2.75rem;color:var(--foam);isolation:isolate;transition:color .5s var(--ease-out), border-color .5s var(--ease-out), transform .4s var(--ease-out);border-radius:999px;padding:0 1.1rem 0 1.25rem;font-size:.9375rem;font-weight:450;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.button:before{content:"";z-index:-1;background:var(--lantern);transition:transform .6s var(--ease-out);position:absolute;inset:-2px;transform:translateY(105%)}.button:hover,.button:focus-visible{color:var(--ink-0);border-color:var(--lantern)}.button:hover:before,.button:focus-visible:before{transform:translateY(0)}.button:active{transition-duration:.1s;transform:scale(.97)}.button svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:1rem;height:1rem;transition:transform .6s var(--ease-out)}.button:hover svg{transform:translate(3px)}.textlink{--wave:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='5' viewBox='0 0 16 5'%3E%3Cpath d='M0 2.5c2 0 2-1.5 4-1.5s2 1.5 4 1.5 2-1.5 4-1.5 2 1.5 4 1.5' fill='none' stroke='%23ffb867' stroke-width='1'/%3E%3C/svg%3E");color:var(--foam);background:linear-gradient(var(--line), var(--line)) 0 100% / 100% 1px no-repeat;transition:color .4s var(--ease-out);padding-bottom:.3rem;font-size:.9375rem;font-weight:450;text-decoration:none;display:inline-block}.textlink:hover,.textlink:focus-visible{color:var(--lantern);background:var(--wave) 0 100% / 16px 5px repeat-x;animation:.9s linear infinite wave}@keyframes wave{to{background-position:16px 100%}}.section-head{gap:var(--space-md);display:grid}.services__list{margin-top:var(--space-2xl);border-top:1px solid var(--line);display:grid}.service{gap:var(--space-2xs) var(--space-md);padding:var(--space-xl) 0;border-bottom:1px solid var(--line);grid-template-columns:2rem minmax(0,1fr);display:grid;position:relative}.service__num{font-family:var(--font-serif);font-size:var(--text-small);letter-spacing:.06em;color:var(--lantern);grid-row:1;padding-top:.2em}.service__title,.service__body{grid-column:2}.service__title{font-family:var(--font-serif);font-weight:400;font-size:var(--text-lede);color:var(--foam);transition:transform .7s var(--ease-out);line-height:1.35}.service:hover .service__title{transform:translate(.25rem)}.service__horizon{background:linear-gradient(90deg, transparent, var(--lantern), transparent);opacity:0;width:30%;height:1px;position:absolute;bottom:-1px;left:0;transform:translate(-30%)}.service:hover .service__horizon{animation:glint 1.8s var(--ease-in-out) forwards}@keyframes glint{0%{opacity:0;transform:translate(-30%)}20%{opacity:1}to{opacity:0;transform:translate(340%)}}.coda{gap:var(--space-sm);margin-top:var(--space-md);justify-items:start;display:grid}.coda:before{content:"";width:2.5rem;height:1px;margin-bottom:var(--space-sm);background:var(--lantern)}.coda__line{font-family:var(--font-serif);color:var(--text-soft);font-style:italic}.coda__line .textlink{font-family:var(--font-body);margin-left:.25em;font-style:normal}.contact{align-content:center;gap:var(--space-2xl);min-height:calc(100svh - 7rem);padding-bottom:var(--space-3xl);display:grid}.contact>div:first-child{gap:var(--space-md);display:grid;position:relative}.contact__lighthouse{width:3.5rem;height:3.5rem;position:absolute;top:-1.4rem;right:0}@media (width>=900px){.contact__lighthouse{width:5rem;height:5rem;top:.5rem;right:-7rem}}.contact__mail{align-items:baseline;gap:var(--space-sm) var(--space-lg);flex-wrap:wrap;display:flex}.mail{font-family:var(--font-serif);font-size:var(--text-heading);color:var(--foam);overflow-wrap:anywhere;background:linear-gradient(var(--lantern), var(--lantern)) 0 100% / 0 1px no-repeat;transition:background-size .9s var(--ease-out), color .6s var(--ease-out);line-height:1.2;text-decoration:none}.mail:hover,.mail:focus-visible{color:var(--lantern);background-size:100% 1px}.copy{min-height:2.75rem;color:var(--mist);font:inherit;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:color .3s var(--ease-out);background:0 0;border:0;align-items:center;padding:0;font-size:.8125rem;display:inline-flex;position:relative}.copy:hover{color:var(--foam)}.copy[data-done] .copy__label{opacity:0}.copy__done{color:var(--lantern);position:absolute;left:0}.site-footer{gap:var(--space-2xs);padding:var(--space-lg) var(--gutter) calc(var(--space-lg) + env(safe-area-inset-bottom));font-size:var(--text-small);color:var(--mist);display:grid}.site-footer a{-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px}.site-footer a:hover{color:var(--lantern)}.poem{padding:calc(var(--space-4xl) + var(--space-xl)) var(--gutter) var(--section)}.poem__article{max-width:30rem;margin-inline:auto}.poem__head{gap:var(--space-sm);margin-bottom:clamp(3.5rem,2rem + 5vw,6rem);display:grid}.poem__title{font-family:var(--font-display);font-weight:400;font-size:var(--text-title);letter-spacing:.01em;color:var(--foam);line-height:1}.poem__byline{font-family:var(--font-serif);color:var(--text-soft);font-style:italic}.poem__note{font-size:var(--text-small);color:var(--mist)}.poem__note a{color:var(--foam);text-underline-offset:3px;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line)}.poem__note a:hover{color:var(--lantern)}.poem__body{gap:clamp(2rem,1.5rem + 2vw,3rem);display:grid}.verse-line{text-indent:-1.2em;padding-left:1.2em;display:block}.stanza{font-family:var(--font-serif);font-size:var(--text-lede);color:var(--foam);line-height:1.75}.poem__foot{justify-items:start;gap:var(--space-xl);margin-top:clamp(3.5rem,2rem + 5vw,6rem);display:grid}.poem__rule{background:var(--lantern);width:2.5rem;height:1px}.lost{align-content:center;justify-items:start;gap:var(--space-md);min-height:100svh;padding:var(--gutter);display:grid}@media (scripting:enabled) and (prefers-reduced-motion:no-preference){.letters__ch{animation:rise 1.4s var(--ease-out) var(--d) forwards;transform:translateY(105%)}@keyframes rise{0%{transform:translateY(2px)}to{transform:translateY(-1.5px)}}.hero__word:after{opacity:0;animation:2.4s ease-out 1s forwards surface}@keyframes surface{to{opacity:.12}}.word{clip-path:inset(-.2em -.1em 100%);animation:surface-word 1.1s var(--ease-out) var(--d) forwards;transform:translateY(.5em)}@keyframes surface-word{to{clip-path:inset(-.2em -.1em -.3em);transform:none}}.hero__entry,.hero__body,.hero__actions,.sea-state,.site-header,.poem__kicker,.poem__byline,.poem__note{opacity:0;animation:fade-up 1.4s var(--ease-out) forwards}.site-header{animation-delay:1.2s}.hero__entry{animation-delay:.1s}.hero__body{animation-delay:.95s}.hero__actions{animation-delay:1.1s}.sea-state{animation-delay:1.8s}.poem__kicker{animation-delay:.2s}.poem__byline{animation-delay:1.1s}.poem__note{animation-delay:1.3s}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}[data-reveal]{opacity:0;filter:blur(6px);transition:opacity 1.4s var(--ease-out) var(--reveal-delay,0s), transform 1.6s var(--ease-out) var(--reveal-delay,0s), filter 1.4s var(--ease-out) var(--reveal-delay,0s);transform:translateY(1.5rem)}[data-reveal][data-in]{opacity:1;filter:blur();transform:none}[data-reveal] .verse-line{clip-path:inset(-.3em 100% -.3em 0);opacity:.2;transition:clip-path 1.8s var(--ease-out) calc(var(--reveal-delay,0s) + .25s + var(--i) * .32s), opacity 1.8s var(--ease-out) calc(var(--reveal-delay,0s) + .25s + var(--i) * .32s)}[data-reveal][data-in] .verse-line{clip-path:inset(-.3em -.3em -.3em 0);opacity:1}.ink path{stroke-dasharray:1 1;stroke-dashoffset:1px;transition:stroke-dashoffset 1.1s cubic-bezier(.55, .1, .35, 1) calc(var(--reveal-delay,0s) + .5s + var(--k) * .28s)}[data-in] .ink path{stroke-dashoffset:0}[data-in] .sketch{filter:url(#ink-boil)}.sketch g{transform-box:view-box}[data-in] .sketch__boat{transform-origin:33px 50px;animation:3.4s ease-in-out 2.6s infinite rock}[data-in] .sketch__flag{transform-origin:33px 6px;animation:3.4s ease-in-out 2.6s infinite rock,.5s steps(2,end) 2.6s infinite alternate flutter}[data-in] .sketch__waves{animation:2.6s linear 2.6s infinite roll}[data-in] .sketch__typing{transform-origin:11px 33px;animation:3.8s steps(8,end) 2.6s infinite typing}[data-in] .sketch__phone{transform-origin:47px 58px;animation:4.2s ease-in-out 2.6s infinite nudge}[data-in] .sketch__star{transform-origin:32px 31px;animation:3.2s ease-in-out 2.6s infinite pulse}[data-in] .sketch__orbit{transform-origin:32px 32px;animation:16s linear 2.6s infinite orbit}[data-in] .sketch__spark{transform-origin:51px 12.5px;animation:1.6s steps(3,end) 2.6s infinite alternate twinkle}[data-in] .sketch__dust{animation:2.2s steps(2,end) 3s infinite alternate twinkle}[data-in] .ink-mark--underline .ink-mark__water{animation:2.8s linear 2.4s infinite roll-mark}[data-in] .ink-sail .sketch{opacity:0;animation:18s linear 2.6s infinite sail}@keyframes roll-mark{to{transform:translate(-30px)}}@keyframes sail{0%{opacity:0;translate:-.3em}6%,90%{opacity:1}to{opacity:0;translate:calc(100cqw - .5em)}}.sea-state__entering path{animation:1.2s cubic-bezier(.55,.1,.35,1) both draw}@keyframes draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.sketch__cloud{animation:3.2s ease-in-out infinite alternate drift}.sketch__bolt path{animation:2.6s step-end infinite bolt}.sketch__rain{animation:.45s linear infinite rain}.sea-state .sketch__wind path{stroke-dasharray:.42 .58;animation:1.4s linear infinite blow}.sea-state .sketch__wind:nth-of-type(2) path{animation-duration:1.1s}.sketch__pennant{transform-origin:16px 20px;animation:.6s ease-in-out infinite alternate snap}.sea-state .sketch__boat{transform-origin:32px 46px;animation:3.4s ease-in-out infinite rock}.sea-state .sketch__waves{animation:2.6s linear infinite roll}.sketch__sun{transform-origin:32px 42px;animation:4s ease-in-out infinite alternate rise}.sketch__rays{transform-origin:32px 42px;animation:3s ease-in-out infinite alternate rays}.sketch__glint{animation:1.8s steps(2,end) infinite alternate twinkle}@keyframes drift{to{transform:translate(2px)}}@keyframes bolt{0%,68%{opacity:0}70%{opacity:1}74%{opacity:.25}78%{opacity:1}84%,to{opacity:0}}@keyframes rain{0%{opacity:.4;transform:translate(1px,-4px)}to{opacity:1;transform:translate(-1px,4px)}}@keyframes blow{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes snap{to{transform:scaleX(.84)skewY(7deg)}}@keyframes rays{to{opacity:.55;transform:scale(1.14)}}[data-in] .sketch__beam{transform-origin:33px 21.5px;animation:4.5s ease-in-out 2.4s infinite alternate sweep}[data-in] .sketch__lamp{animation:1.1s steps(2,end) 2.4s infinite alternate twinkle}@keyframes sweep{0%{opacity:.35;transform:rotate(-30deg)}to{opacity:1;transform:rotate(16deg)}}@keyframes rock{0%,to{transform:translateY(0)rotate(-4deg)}50%{transform:translateY(-1.5px)rotate(4deg)}}@keyframes flutter{to{scale:.8 1.15}}@keyframes roll{to{transform:translate(-16px)}}@keyframes typing{0%{transform:scaleX(.06)}75%,to{transform:scaleX(1)}}@keyframes nudge{0%,to{transform:none}50%{transform:translateY(-1.6px)rotate(-3deg)}}@keyframes pulse{0%,to{transform:none}50%{transform:scale(.88)rotate(9deg)}}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes twinkle{to{opacity:.45;transform:scale(.55)}}@supports (animation-timeline:view()){.service__sketch{animation:linear both swing-in;animation-timeline:view();animation-range:entry 10% cover 45%}@keyframes swing-in{0%{transform:perspective(500px)rotateY(-55deg)rotateX(18deg)translateZ(-30px)}}}.service[data-reveal]:after{content:"";background:color-mix(in oklch, var(--lantern) 50%, transparent);transform-origin:0;width:100%;height:1px;transition:transform 2s var(--ease-out) calc(var(--reveal-delay,0s) + .3s), opacity 1.2s ease 2.4s;position:absolute;bottom:-1px;left:0;transform:scaleX(0)}.service[data-reveal][data-in]:after{opacity:0;transform:scaleX(1)}::view-transition-group(root){perspective:1600px}::view-transition-old(root){transform-origin:0;animation:vt-out .6s var(--ease-in-out) both}::view-transition-new(root){animation:vt-in .9s var(--ease-out) .15s both}@keyframes vt-out{to{opacity:0;filter:blur(6px);transform:perspective(1600px)rotateY(-18deg)translate(-2%)}}@keyframes vt-in{0%{opacity:0;filter:blur(6px);transform:perspective(1600px)rotateY(6deg)translate(1%)}}}@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){.hero__inner{animation:linear both hero-away;animation-timeline:scroll(root);animation-range:0 85vh}}@keyframes hero-away{to{opacity:0;filter:blur(5px);transform:translateY(-8vh)}}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.textlink:hover{animation:none}}
