:root{--bg:#121417;--bg-band:#0e1013;--surface:#1a1d21;--surface-2:#22262b;--line:#2d3238;--line-strong:#3b4148;--text:#eceef0;--muted:#9aa2ab;--accent:#f0b429;--accent-ink:#15171a;--good:#6fd3a0;--bad:#ff7a6b;--display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--body:"Schibsted Grotesk", "Segoe UI", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--step--1:.875rem;--step-0:1.0625rem;--step-1:1.3rem;--step-2:1.65rem;--step-3:clamp(1.9rem, 1.4rem + 2vw, 2.6rem);--step-4:clamp(2.3rem, 1.5rem + 3.4vw, 3.9rem);--gutter:clamp(16px, 4vw, 48px);--max:1240px;--radius-s:6px;--radius-l:18px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{background:var(--bg);color:var(--text);font:400 var(--step-0)/1.6 var(--body);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3{font-family:var(--display);letter-spacing:-.02em;margin:0;line-height:1.08}h2{font-size:var(--step-3);font-weight:700}h3{font-size:var(--step-1);font-weight:650}p{margin:0}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}.muted{color:var(--muted)}code{font-family:var(--mono)}img{max-width:100%;height:auto;display:block}.skip{position:absolute;left:-9999px}.skip:focus{left:var(--gutter);z-index:10;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-s);padding:8px 14px;top:12px}.button{border:1.5px solid var(--line-strong);min-height:46px;color:var(--text);font:600 var(--step-0)/1 var(--body);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:0 20px;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.button:hover{border-color:var(--text);color:var(--text)}.button--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.button--primary:hover{background:var(--text);border-color:var(--text);color:var(--accent-ink)}.button:disabled{opacity:.6;cursor:progress}.link-button{color:var(--accent);font:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.site-header{z-index:5;padding:14px var(--gutter);background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;display:flex;position:sticky;top:0}.brand{font:700 1.2rem var(--display);letter-spacing:-.02em;align-items:center;gap:10px;text-decoration:none;display:flex}.brand img{box-shadow:0 0 0 1px var(--line-strong);border-radius:7px}.site-header nav{color:var(--muted);align-items:center;gap:clamp(12px,2.5vw,28px);font-weight:500;display:flex}.site-header nav a{text-decoration:none}.site-header nav a:hover{color:var(--text)}.nav-cta{color:var(--text);border-bottom:2px solid var(--accent)}@media (width<=760px){.site-header nav a:not(.nav-cta){display:none}}.hero{max-width:var(--max);padding:clamp(36px, 6vw, 80px) var(--gutter) clamp(56px, 8vw, 104px);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:clamp(32px,5vw,64px);margin:0 auto;display:grid}.hero__intro{gap:28px;display:grid}.hero__text{gap:18px;display:grid}.hello{color:var(--muted);font-weight:500}.hero h1{font-size:var(--step-4);font-variation-settings:"opsz" 96;letter-spacing:-.035em;max-width:14ch;font-weight:760}.lede{font-size:var(--step-1);color:#cdd2d7;max-width:36ch;line-height:1.5}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:4px;display:flex}.location{font-size:var(--step--1)}@media (width<=980px){.hero{grid-template-columns:1fr}}.portrait{--size:clamp(150px, 16vw, 210px);--colour:0;--progress:0;width:var(--size);justify-items:start;gap:12px;margin:0;display:grid;position:relative}.portrait picture{width:var(--size);aspect-ratio:1;z-index:1;border-radius:50%;position:relative;overflow:hidden}.portrait img{object-fit:cover;object-position:50% 20%;width:100%;height:100%;filter:grayscale(calc(1 - var(--colour))) contrast(1.06) brightness(.96);transition:filter .8s;transform:scale(1.12)}.portrait__ring{z-index:0;width:calc(var(--size) + 14px);aspect-ratio:1;background:conic-gradient(var(--accent) calc(var(--progress) * 360deg), var(--line) 0);border-radius:50%;transition:background .5s;position:absolute;top:-7px;left:-7px;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 3px))}.portrait figcaption{font-size:var(--step--1);color:var(--muted)}.portrait[data-perfect=true] .portrait__ring{animation:1.6s ease-out glow}@keyframes glow{0%{box-shadow:0 0 #f0b42999}to{box-shadow:0 0 0 28px #f0b42900}}@media (width<=980px){.hero__intro{grid-template-columns:auto 1fr;align-items:start;gap:24px}.hero__intro .hero__text{grid-column:1/-1}}.game{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);gap:18px;padding:clamp(20px,3vw,30px);display:grid;box-shadow:0 40px 80px -40px #000000b3}.game__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.game__head h2{font-size:var(--step-2)}.game__status{color:var(--muted);font-size:var(--step--1);font-variant-numeric:tabular-nums;gap:14px;display:flex}.game__score{color:var(--accent);font-weight:650}.game__intro{justify-items:start;gap:14px;display:grid}.game__intro p:first-child{font-size:var(--step-1);max-width:36ch;line-height:1.45}.game__best{color:var(--muted)}.game__best strong{color:var(--text)}.game__hint{font-size:var(--step--1)}.game__round{gap:14px;display:grid}.game__goal{flex-wrap:wrap;align-items:center;gap:10px;font-weight:600;display:flex}.lang{font-size:var(--step--1);border-radius:var(--radius-s);background:var(--surface-2);color:var(--muted);border:1px solid var(--line);padding:2px 9px;font-weight:600}.timer{background:var(--surface-2);border-radius:4px;height:4px;overflow:hidden}.timer__bar{background:var(--accent);transform-origin:0;height:100%;transition:transform .1s linear}.timer__bar[data-low=true]{background:var(--bad)}.code{border:1px solid var(--line);background:#0f1114;border-radius:12px;margin:0;padding:8px 0;list-style:none;overflow-x:auto}.code__line{color:#d7dce1;text-align:left;cursor:pointer;width:100%;min-height:34px;font:400 .92rem/1.5 var(--mono);background:0 0;border:0;border-left:3px solid #0000;align-items:baseline;gap:14px;padding:5px 16px 5px 0;display:flex}.code__line code{white-space:pre}.code__num{text-align:right;color:#5d656e;-webkit-user-select:none;user-select:none;flex:none;width:2.6em}.code__line:not(:disabled):hover{background:var(--surface-2);border-left-color:var(--line-strong)}.code__line:disabled{cursor:default}.code__line:focus-visible{background:var(--surface-2);border-left-color:var(--accent);outline:none}.code__line[data-state=picked]{background:var(--surface-2);border-left-color:var(--accent)}.code__line[data-state=bug]{border-left-color:var(--good);color:#fff;background:#6fd3a01f}.code__line[data-state=bug] .code__num{color:var(--good)}.code__line[data-state=wrong]{border-left-color:var(--bad);background:#ff7a6b1a}.verdict{background:var(--surface-2);border-left:3px solid var(--bad);border-radius:12px;justify-items:start;gap:10px;padding:16px 18px;display:grid}.verdict[data-correct=true]{border-left-color:var(--good)}.verdict__title{font:700 var(--step-1) var(--display)}.verdict[data-correct=true] .verdict__title{color:var(--good)}.verdict[data-correct=false] .verdict__title{color:var(--bad)}.verdict p:not(.verdict__title){color:#cdd2d7;max-width:60ch}.game__done{justify-items:start;gap:16px;display:grid}.final{color:var(--muted)}.final__score{font:800 clamp(3rem, 2rem + 4vw, 4.5rem)/1 var(--display);color:var(--text);letter-spacing:-.04em;animation:.5s ease-out rise;display:block}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.save-score{gap:8px;width:100%;display:grid}.save-score label{font-weight:600}.save-score div{flex-wrap:wrap;gap:8px;display:flex}.save-score input{flex:160px;min-height:46px}.leaders{font-variant-numeric:tabular-nums;width:100%;margin:0;padding:0;list-style:none;display:grid}.leaders li{border-bottom:1px solid var(--line);font-size:var(--step--1);justify-content:space-between;padding:7px 0;display:flex}.leaders li:first-child{color:var(--accent);font-weight:650}.game__actions{flex-wrap:wrap;gap:10px;display:flex}input:not([type]),input[type=text],input[type=email],textarea{font:inherit;color:var(--text);border:1.5px solid var(--line-strong);background:#0f1114;border-radius:10px;width:100%;padding:12px 14px}input::placeholder,textarea::placeholder{color:#6b737c}input:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #f0b42938}[aria-invalid=true]{border-color:var(--bad)!important}.field__error,.error{color:var(--bad);font-size:var(--step--1);font-weight:500}.section{max-width:var(--max);padding:clamp(56px, 8vw, 104px) var(--gutter);margin:0 auto}.section>h2{max-width:20ch;margin-bottom:clamp(28px,4vw,48px)}.section__head{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:20px;margin-bottom:clamp(28px,4vw,48px);display:flex}.filters{flex-wrap:wrap;gap:6px;display:flex}.filters button{font:500 var(--step--1) var(--body);cursor:pointer;border:1.5px solid var(--line-strong);color:var(--text);background:0 0;border-radius:999px;padding:7px 14px}.filters button[aria-pressed=true]{background:var(--text);color:var(--bg);border-color:var(--text)}.work-list{border-top:1.5px solid var(--line-strong);margin:0;padding:0;list-style:none}.work{border-bottom:1px solid var(--line);grid-template-columns:180px minmax(0,1fr) minmax(0,1.25fr);grid-template-areas:"meta title story""meta tags story";gap:12px clamp(20px,3vw,40px);padding:clamp(24px,3vw,36px) 0;display:grid}.work__meta{font-size:var(--step--1);grid-area:meta;align-content:start;gap:4px;display:grid}.work__year{font:700 var(--step-1) var(--display)}.work__title{font-size:var(--step-2);grid-area:title}.work__story{grid-area:story;gap:14px;margin:0;display:grid}.work__story dt{font-weight:650;font-size:var(--step--1);color:var(--muted)}.work__story dd{color:#d3d8dc;max-width:60ch;margin:2px 0 0}.work .tags{grid-area:tags;align-self:end}@media (width<=900px){.work{grid-template-columns:1fr;grid-template-areas:"meta""title""story""tags"}.work__meta{grid-template-columns:auto 1fr;align-items:baseline;gap:12px}}.tags{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tags li{font-size:var(--step--1);border-radius:var(--radius-s);background:var(--surface);border:1px solid var(--line);color:#cdd2d7;padding:3px 10px}.tags--large li{font-size:var(--step-0);padding:6px 14px}.section--ink{background:var(--bg-band);border-top:1px solid var(--line);border-bottom:1px solid var(--line);max-width:none;padding-left:max(var(--gutter), calc((100vw - var(--max)) / 2 + var(--gutter)));padding-right:max(var(--gutter), calc((100vw - var(--max)) / 2 + var(--gutter)))}.services{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(24px,5vw,72px);margin:0;padding:0;list-style:none;display:grid}.service{border-top:1px solid var(--line);align-content:start;gap:10px;padding:28px 0;display:grid}.service h3{font-size:var(--step-2)}.service p{color:#cdd2d7;max-width:44ch}.includes{font-size:var(--step--1);color:var(--muted);gap:4px;margin:6px 0 0;padding:0;list-style:none;display:grid}.includes li:before{content:"";background:var(--accent);vertical-align:1px;border-radius:2px;width:7px;height:7px;margin-right:10px;display:inline-block}@media (width<=720px){.services{grid-template-columns:1fr}}.estimate{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;gap:clamp(28px,5vw,72px);display:grid}.estimate__intro{gap:16px;display:grid;position:sticky;top:100px}.estimate__intro p{color:var(--muted);max-width:38ch}@media (width<=900px){.estimate{grid-template-columns:1fr}.estimate__intro{position:static}}.estimator{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);gap:22px;padding:clamp(20px,3vw,32px);display:grid}.estimator fieldset{border:0;margin:0;padding:0}.estimator legend,.estimator .field__label{justify-content:space-between;width:100%;margin-bottom:10px;font-weight:600;display:flex}.kinds{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.kinds legend{grid-column:1/-1}.kind{border:1.5px solid var(--line-strong);cursor:pointer;border-radius:12px;gap:2px;padding:12px 14px;transition:border-color .15s,background-color .15s;display:grid;position:relative}.kind input{opacity:0;cursor:pointer;position:absolute;inset:0}.kind:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}.kind[data-active=true]{border-color:var(--accent);background:#f0b42912}.kind__title{font-weight:650}.kind__hint{font-size:var(--step--1);color:var(--muted);line-height:1.35}.estimator output{font:700 var(--step-1) var(--display);color:var(--accent)}input[type=range]{width:100%;accent-color:var(--accent);height:28px}.features{flex-wrap:wrap;gap:8px;display:flex}.chip{cursor:pointer;border:1.5px solid var(--line-strong);font-size:var(--step--1);border-radius:999px;padding:8px 14px;font-weight:500;transition:border-color .15s,background-color .15s,color .15s;position:relative}.chip input{opacity:0;cursor:pointer;position:absolute;inset:0}.chip:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}.chip[data-active=true]{background:var(--text);color:var(--bg);border-color:var(--text)}.switch{cursor:pointer;align-items:center;gap:12px;font-weight:500;display:flex}.switch input{opacity:0;position:absolute}.switch__track{background:var(--line-strong);border-radius:999px;flex:none;width:42px;height:24px;transition:background .15s;position:relative}.switch__track:after{content:"";background:var(--text);border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch input:checked+.switch__track{background:var(--accent)}.switch input:checked+.switch__track:after{background:var(--accent-ink);transform:translate(18px)}.switch input:focus-visible+.switch__track{outline:3px solid var(--accent);outline-offset:2px}.quote{border-top:1px solid var(--line);justify-items:start;gap:10px;min-height:190px;padding-top:22px;display:grid}.quote__range{font:750 clamp(2rem, 1.4rem + 2.6vw, 3rem)/1 var(--display);letter-spacing:-.03em;font-variant-numeric:tabular-nums;animation:.35s ease-out rise}.quote__to{font:500 var(--step-0) var(--body);color:var(--muted);letter-spacing:0;vertical-align:middle;margin:0 .5em}.quote__time{color:#cdd2d7}.quote__note{font-size:var(--step--1);color:var(--muted);margin-bottom:6px}.breakdown{width:100%;font-size:var(--step--1);gap:4px;margin:0;display:grid}.breakdown div{border-bottom:1px dashed var(--line);justify-content:space-between;gap:12px;padding:4px 0;display:flex}.breakdown dd{font-variant-numeric:tabular-nums;margin:0}.process{counter-reset:step;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,3vw,36px);margin:0;padding:0;list-style:none;display:grid}.process li{counter-increment:step;border-top:2px solid var(--line-strong);align-content:start;gap:8px;padding-top:18px;display:grid}.process li:before{content:counter(step);font:700 var(--step-3)/1 var(--display);color:var(--accent)}.process p{color:var(--muted)}@media (width<=900px){.process{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.process{grid-template-columns:1fr}}.stack{gap:14px;margin-top:clamp(48px,6vw,72px);display:grid}.contact{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(28px,5vw,72px);padding-top:clamp(32px,5vw,64px);display:grid}.contact__intro{align-content:start;gap:16px;display:grid}.contact__intro p{max-width:38ch;color:var(--muted)}@media (width<=900px){.contact{grid-template-columns:1fr}}.contact-form{gap:18px;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:18px;display:grid}@media (width<=560px){.form-row{grid-template-columns:1fr}}.field{gap:6px;display:grid}.field__label{font-weight:600}.contact-form textarea{resize:vertical}.form-actions{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.hp{width:1px;height:1px;position:absolute;left:-9999px}.attached{background:var(--surface);border-left:3px solid var(--accent);border-radius:12px;justify-content:space-between;align-items:start;gap:16px;padding:14px 16px;display:flex}.attached__title{font-weight:650}.attached pre{font:inherit;font-size:var(--step--1);white-space:pre-wrap;color:var(--muted);margin:4px 0 0}.sent{border-radius:var(--radius-l);background:var(--surface);border-left:3px solid var(--good);gap:8px;padding:28px;display:grid}.site-footer{border-top:1px solid var(--line);padding:24px var(--gutter);font-size:var(--step--1);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.site-footer ul{gap:18px;margin:0;padding:0;list-style:none;display:flex}.fallback{max-width:60ch;padding:0 var(--gutter);gap:16px;margin:15vh auto;display:grid}.fallback code{background:var(--surface);border-radius:4px;padding:.1em .35em}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media (width<=980px){.hero{gap:28px}.hero__intro,.hero__text{display:contents}.portrait{--size:96px;order:1;grid-template-columns:auto}.hello{order:2;align-self:center}.game{order:3}.hero h1{order:4}.lede{order:5}.hero__actions{order:6}.location{order:7}.hero{grid-template-columns:auto 1fr}.game,.hero h1,.lede,.hero__actions,.location{grid-column:1/-1}.hero h1,.lede{margin-top:-8px}}@media (width<=600px){.code__line{gap:10px;font-size:.8rem}.code__line code{white-space:pre-wrap;word-break:break-word}.code__num{width:2em}}@media (pointer:coarse){.game__hint{display:none}}.hero__side{align-content:start;gap:20px;display:grid}.board{border:1px solid var(--line);border-radius:var(--radius-l);gap:14px;padding:clamp(18px,2.4vw,26px);display:grid}.board__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.board__head h2{font-size:var(--step-1)}.board__head .link-button{font-size:var(--step--1)}.board__empty{color:var(--muted)}.board__list{font-variant-numeric:tabular-nums;margin:0;padding:0;list-style:none;display:grid}.board__list li{border-top:1px solid var(--line);grid-template-columns:2ch minmax(0,1fr) auto 5ch;align-items:baseline;gap:14px;padding:10px 4px;display:grid}.board__list li:first-child{border-top:0}.board__rank{color:var(--muted);text-align:right}.board__name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.board__found{color:var(--muted);font-size:var(--step--1)}.board__score{text-align:right;font-weight:650}.board__list li[data-first] .board__rank,.board__list li[data-first] .board__score{color:var(--accent)}.board__list li[data-mine]{background:#f0b42914;border-radius:8px;animation:.4s ease-out rise}.board__you{color:var(--accent);font-weight:500}@media (width>=981px){.game__leaders{display:none}}@media (width<=980px){.hero__side{display:contents}.board{order:8;grid-column:1/-1}}
