@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2042050246a708c9-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/0fdd058fab82a774-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/33553e7595b74ccf-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bricolage Grotesque Fallback;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_a8939b{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.__variable_a8939b{--font:"Bricolage Grotesque","Bricolage Grotesque Fallback"}:root{--paper:#F2F3F0;--ink:#17262B;--ink-2:#53646A;--ochre:#B8801F;--ochre-ink:#8A5E14;--line:#D3D8D5;--w:64rem;--gutter:clamp(1.25rem,4vw,3rem);--ease:cubic-bezier(.2,.7,.2,1)}*{box-sizing:border-box}html{color-scheme:light;scroll-behavior:smooth}body{margin:0;background:var(--paper);font-family:var(--font),"Helvetica Neue",Arial,sans-serif;font-size:1.0625rem;line-height:1.6;font-variation-settings:"opsz" 14;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a,body{color:var(--ink)}a{text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:.22em;text-decoration-thickness:1px;transition:-webkit-text-decoration-color .15s ease;transition:text-decoration-color .15s ease;transition:text-decoration-color .15s ease,-webkit-text-decoration-color .15s ease}a:hover{-webkit-text-decoration-color:var(--ochre);text-decoration-color:var(--ochre)}a:focus-visible,button:focus-visible{outline:2px solid var(--ochre-ink);outline-offset:3px;border-radius:2px}::selection{background:var(--ochre);color:var(--ink)}img{display:block;max-width:100%}.wrap{max-width:var(--w);margin:0 auto;padding-inline:var(--gutter)}p{margin:0 0 1em;max-width:36.8em;text-wrap:pretty}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}h1,h2,h3{font-weight:500;line-height:1.1;margin:0;text-wrap:balance}h2{font-size:clamp(1.55rem,2.5vw,2.05rem);letter-spacing:-.012em;font-variation-settings:"opsz" 72}h3{font-size:1.4rem;letter-spacing:-.01em;font-variation-settings:"opsz" 40}.bar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid transparent}.top{justify-content:space-between;gap:1rem;padding-block:1rem}.top,.topr{display:flex;align-items:center}.topr{gap:1.1rem}.btn.btn-s{min-height:2.2rem;padding:0 .9rem;font-size:.9rem}@supports (animation-timeline:scroll()){.bar{animation:bar linear both;animation-timeline:scroll();animation-range:0 4rem}}@keyframes bar{to{border-bottom-color:var(--line)}}.top .name{font-weight:600;text-decoration:none;font-size:1.05rem;letter-spacing:-.005em;font-variation-settings:"opsz" 30}.langs{display:flex;gap:.25rem}.langs a{text-decoration:none;color:var(--ink-2);font-size:.82rem;font-weight:500;letter-spacing:.03em;padding:.35rem .4rem;border-bottom:1.5px solid transparent}.langs a:hover{color:var(--ink)}.langs a[aria-current=page]{color:var(--ink);border-bottom-color:var(--ochre)}.hero{padding-block:clamp(1.75rem,4.5vw,3.25rem) clamp(3.25rem,7vw,5.5rem)}.id{display:flex;align-items:center;gap:1rem;margin-bottom:clamp(2rem,4.5vw,3rem)}.face{width:3.75rem;height:3.75rem;border-radius:50%;object-fit:cover;flex:none;background:var(--line)}.id p{margin:0;max-width:none}.role{font-size:1.05rem;line-height:1.35}.role b{font-weight:600}.role span,.status{color:var(--ink-2)}.status{margin-top:.2rem!important;font-size:.97rem;line-height:1.45}.status b{font-weight:600;color:var(--ochre-ink);white-space:nowrap}.status b:before{content:"";display:inline-block;width:.42rem;height:.42rem;margin:0 .55rem .12rem .12rem;background:var(--ochre);transform:rotate(45deg)}.hero h1{font-size:clamp(2.75rem,7vw,5.6rem);font-weight:300;letter-spacing:-.032em;line-height:.96;max-width:8em;font-variation-settings:"opsz" 96}.saas{margin:clamp(2rem,4vw,2.75rem) 0 .85rem;color:var(--ink-2);font-size:clamp(1rem,1.25vw,1.1rem)}.saas a{color:var(--ink);font-weight:500;-webkit-text-decoration-color:var(--ochre);text-decoration-color:var(--ochre);text-underline-offset:.18em}.crafts{list-style:none;margin:0;padding:0;max-width:60rem;display:grid;grid-template-columns:max-content 3rem minmax(0,1fr);grid-column-gap:1.1rem;column-gap:1.1rem}.crafts li{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:baseline;padding-block:.72rem;border-top:1px solid var(--line);font-size:clamp(1.08rem,1.55vw,1.3rem);line-height:1.35;font-variation-settings:"opsz" 36}.crafts li:last-child{border-bottom:1px solid var(--line)}.crafts .craft{font-weight:500}.wire{position:relative;display:block;height:.8rem;background:linear-gradient(var(--ochre),var(--ochre)) 0/calc(100% - .45rem) 1px no-repeat}.wire:after{content:"";position:absolute;right:.1rem;top:50%;width:.44rem;height:.44rem;margin-top:-.22rem;background:var(--ochre);transform:rotate(45deg)}@media (prefers-reduced-motion:no-preference){.crafts .wire{animation:wire .6s var(--ease) calc(.4s + var(--i) * .14s) both}.crafts .did{animation:land .5s var(--ease) calc(.75s + var(--i) * .14s) both}}@keyframes wire{0%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}@keyframes land{0%{opacity:0;transform:translateX(-.4rem)}to{opacity:1;transform:none}}.cta{display:flex;flex-wrap:wrap;gap:1rem 1.75rem;margin-top:1.9rem}.btn,.cta{align-items:center}.btn{display:inline-flex;min-height:2.9rem;padding:0 1.35rem;border-radius:2px;background:var(--ochre);color:var(--ink);font-weight:600;text-decoration:none;font-variation-settings:"opsz" 20;transition:background-color .15s ease,color .15s ease}.btn:hover{background:var(--ink);color:var(--paper)}.totest{font-weight:500;-webkit-text-decoration-color:var(--ochre);text-decoration-color:var(--ochre)}.totest:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}section{padding-block:clamp(3.25rem,7vw,5.75rem);border-top:1px solid var(--line)}.grid{display:grid;grid-template-columns:minmax(0,14rem) minmax(0,1fr);grid-gap:clamp(1.5rem,5vw,4.5rem);gap:clamp(1.5rem,5vw,4.5rem)}.grid>h2{position:-webkit-sticky;position:sticky;top:6rem;align-self:start}section{scroll-margin-top:4.5rem}.work{margin:0;padding:0;list-style:none}.work>li{display:grid;grid-template-columns:6.5rem minmax(0,1fr);grid-gap:1.5rem;gap:1.5rem;padding-block:2rem;border-top:1px solid var(--line)}.work>li:first-child{border-top:0;padding-top:.15rem}.work .when{color:var(--ink-2);font-size:.95rem;padding-top:.35rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.work h3 a{text-decoration:none;border-bottom:1.5px solid var(--ochre);transition:border-color .15s ease}.work h3 a:hover{border-bottom-color:var(--ink)}.what{display:flex;flex-wrap:wrap;gap:.1rem 1.1rem;margin:.45rem 0 .85rem!important;color:var(--ink-2);font-size:.97rem}.work .d{margin:0;max-width:32.1em}.work .main .d{font-size:1.14rem;line-height:1.5}.tech{color:var(--ink-2);font-size:.95rem;margin:.6rem 0 0}.four{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:2.25rem 3rem;gap:2.25rem 3rem;margin:0;padding:0;list-style:none}.four li{border-top:2px solid var(--ink);padding-top:.9rem}.four b{display:block;font-weight:600;font-size:1.14rem;line-height:1.3;margin-bottom:.4rem;font-variation-settings:"opsz" 30}.four p{margin:0;color:var(--ink-2)}.path{margin:0;padding:0;list-style:none}.path li{display:grid;grid-template-columns:6.5rem minmax(0,1fr);grid-gap:1.5rem;gap:1.5rem;padding-block:.75rem;border-top:1px solid var(--line)}.path li:last-child{border-bottom:1px solid var(--line)}.path .when{color:var(--ink-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.worknote{margin:1.75rem 0 0;padding-left:1rem;border-left:2px solid var(--ochre);max-width:34.5em}.langline{margin:1rem 0 0;color:var(--ink-2)}.end{padding-block:clamp(4rem,9vw,7rem)}.end h2{font-size:clamp(2.3rem,5.4vw,4.2rem);font-weight:300;letter-spacing:-.03em;line-height:1;margin-bottom:1.25rem;font-variation-settings:"opsz" 96}.end>p{font-size:clamp(1.05rem,1.4vw,1.2rem);max-width:30.9em}.end .cta a:not(.btn){font-weight:500}.links{display:flex;flex-wrap:wrap;gap:.6rem 1.75rem;margin:2.5rem 0 0;max-width:none}.links a{color:var(--ink-2)}.links a:hover{color:var(--ink)}footer{padding-block:1.5rem 2.75rem;color:var(--ink-2);font-size:.88rem;border-top:1px solid var(--line)}@media (max-width:64rem){.grid{grid-template-columns:minmax(0,11rem) minmax(0,1fr)}}@media (max-width:48rem){.grid{grid-template-columns:1fr}.grid>h2{position:static}.path li,.work>li{gap:.3rem}.four,.path li,.work>li{grid-template-columns:1fr}.four{gap:1.75rem}}@media (max-width:40rem){.crafts{display:block}.crafts li{grid-template-columns:2.25rem minmax(0,1fr);column-gap:1.1rem;grid-template-areas:"craft craft" "wire did";row-gap:.15rem;padding-block:.75rem}.crafts .craft{grid-area:craft}.crafts .wire{grid-area:wire}.crafts .did{grid-area:did}.id{align-items:flex-start}.face{width:3.25rem;height:3.25rem;margin-top:.2rem}.bar .btn-s{display:none}}.run{display:grid;grid-gap:1.1rem;gap:1.1rem;max-width:40rem}.field{position:relative}.ask textarea{display:block;font:inherit;font-size:1.15rem;line-height:1.5;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--ink-2);padding:.3rem 0 .7rem;width:100%;resize:none;border-radius:0}.ask textarea:focus{outline:none;border-bottom-color:var(--ochre);box-shadow:0 1px 0 0 var(--ochre)}.hint{position:absolute;inset:.3rem 0 auto 0;pointer-events:none;font-size:1.15rem;line-height:1.5;color:#8A979B;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}@media (prefers-reduced-motion:no-preference){.hint{animation:hint .5s var(--ease) both}}@keyframes hint{0%{opacity:0;transform:translateX(1.25rem)}to{opacity:1;transform:none}}.ask-foot{display:flex;align-items:center;gap:.75rem 1.5rem;flex-wrap:wrap}.ask-foot small{color:var(--ink-2);font-size:.82rem;flex:1 1 14rem}.ask-foot button{font:inherit;font-weight:600;font-variation-settings:"opsz" 20;min-height:2.9rem;border-radius:2px;background:var(--ochre);color:var(--ink);border:0;padding:0 1.35rem;cursor:pointer;transition:background-color .15s ease,color .15s ease}.ask-foot button:hover:not(:disabled){background:var(--ink);color:var(--paper)}.ask-foot button:disabled{opacity:.5;cursor:not-allowed}.run-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.run-error{color:var(--ochre-ink);margin:0}.verdict{padding-top:.2rem}.verdict-t{font-variation-settings:"opsz" 60;font-weight:500;font-size:clamp(1.4rem,2.4vw,1.8rem);line-height:1.25;margin:0;max-width:17.8em}.meet{display:block;overflow:visible;margin:0 0 .8rem}.meet path{stroke:var(--ochre);stroke-width:1.5;fill:none;stroke-linejoin:round}.meet .meet-void{stroke-dasharray:3 3;stroke:var(--ink-2)}.meet .meet-both,.meet .meet-one{fill:var(--ochre)}.meet .meet-a,.meet .meet-b{animation:meet .7s cubic-bezier(.2,.7,.2,1) both}.meet .meet-both{animation:appear .3s ease .6s both}.meet .meet-one{animation:appear .4s ease both}@keyframes meet{0%{transform:translateX(var(--dx))}to{transform:none}}@keyframes appear{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.meet path{animation:none!important}}.verdict-a{display:flex;gap:1.5rem;align-items:center;flex-wrap:wrap;margin:1rem 0 0}.verdict-a a{font-weight:600}.verdict-a button{font:inherit;background:none;border:0;padding:0;color:var(--ink-2);cursor:pointer;border-bottom:1px solid var(--line)}.verdict-a button:hover{color:var(--ink)}.lost{min-height:62vh;padding-block:clamp(4rem,12vw,9rem) clamp(4rem,10vw,7rem)}.lost h1{font-size:clamp(2.5rem,6vw,4.8rem);font-weight:300;letter-spacing:-.03em;line-height:1;max-width:8.3em;margin-bottom:1.25rem;font-variation-settings:"opsz" 96}.lost>p{font-size:clamp(1.05rem,1.4vw,1.18rem);color:var(--ink-2);max-width:28.5em}@media print{:root{--paper:#fff}body{font-size:10.5pt;line-height:1.45;color:#000}#run,.bar,.cta,.langs,.links,.totest{display:none!important}.crafts .did,.crafts .wire{animation:none!important;-webkit-clip-path:none!important;clip-path:none!important;opacity:1!important;transform:none!important}.grid>h2{position:static}section{padding-block:1.4rem;page-break-inside:avoid;break-inside:avoid-page}.four li,.path li,.work>li{page-break-inside:avoid;break-inside:avoid}.hero{padding-block:0 1.5rem}.hero:before{content:"Karim Benhammou";display:block;font-weight:600;font-size:18pt;letter-spacing:-.01em;margin-bottom:.9rem}.hero h1{font-size:34pt}a{text-decoration:none}.saas a:after,.work h3 a:after{content:" (" attr(href) ")";font-size:.8em;color:#555}.end{padding-block:1rem}.end:after{content:"karim@benhammou.me · karim.benhammou.me";display:block;margin-top:.5rem;font-weight:500}}.hero h1.said{max-width:none;font-size:clamp(2.1rem,6vw,5rem)}.said .slot{display:block;white-space:nowrap;color:var(--ochre-ink)}@media (prefers-reduced-motion:no-preference){.said .slot{animation:roll .5s var(--ease) both}}@keyframes roll{0%{opacity:0;transform:translateY(.18em);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}