.elementor-kit-5{--e-global-color-primary:#6EC1E4;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;}.elementor-kit-5 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}:root { --Black_1:#141414; --Primary_font:Geist; --White:#ffffff; --black-text:#0A0A0A; --e-gv-d36ef17:Geist; --border:#C9C9C9; --ik-ink:#1A1A1A; --ik-paper:#FAFAF9; --ik-muted:#5C5C59; --ik-line:#E2E2E0; --ik-surface:#FFFFFF; --ik-night:#111111; --ik-night-muted:#A3A3A0; --ik-live:#22C55E; --ik-body-font:Atkinson Hyperlegible; }
/* Start custom CSS */@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{background-color:#FAFAF9;color:#1A1A1A;font-family:"Atkinson Hyperlegible Next",ui-sans-serif,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
::selection{background:#1A1A1A;color:#FAFAF9}
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid #1A1A1A;outline-offset:3px;box-shadow:0 0 0 5px #FAFAF9;border-radius:4px}
img{height:auto}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
body.home .ik-switch-work,body.page-id-540 .ik-switch-about{background-color:#2A2A2A;color:#FAFAF9}
.ik-switch{bottom:calc(20px + env(safe-area-inset-bottom))}
.ik-switch a:focus-visible{outline:2px solid #FAFAF9;outline-offset:2px;box-shadow:none}
.ik-footer-word::before{content:"Ibukunoluwa" / "";display:block;position:static;inset:auto;width:auto;height:auto;opacity:1;background:none;border:0;font:800 clamp(4.5rem,17.2vw,15.75rem)/0.82 "Geist",sans-serif;letter-spacing:-0.065em;color:#1D1D1D;white-space:nowrap;margin:40px -0.04em -0.17em;user-select:none;pointer-events:none}
@media (max-width:767px){.ik-footer-word::before{content:"Ibukun" / "";font-size:clamp(5rem,30vw,8rem)}}

@keyframes ik-rise{from{transform:translateY(42%);opacity:0}to{transform:none;opacity:1}}
footer .ik-btn-light:focus-visible,footer .ik-btn-ghost-dark:focus-visible,footer a:focus-visible{outline:2px solid #FAFAF9;outline-offset:3px;box-shadow:none}
.ik-live-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:#22C55E;pointer-events:none;opacity:0}
/* Pulses twice (4s) once the footer is in view, then stays still: WCAG 2.2.2 allows motion that stops within 5s */
.ik-live-dot.ik-pulse-on::after{animation:ik-pulse 2s cubic-bezier(0.23,1,0.32,1) 2}
@keyframes ik-pulse{0%{transform:scale(1);opacity:.7}100%{transform:scale(3);opacity:0}}
@media (prefers-reduced-motion:reduce){.ik-live-dot::after{animation:none;opacity:0}}
footer .ik-legal-links a{color:inherit}
.elementor .e-paragraph-link-base:focus-visible,.elementor .e-heading-link-base:focus-visible,.elementor .e-image-link-base:focus-visible{outline:2px solid currentColor!important;outline-offset:3px!important;border-radius:4px}
/* ---- motion: links ---- */
.elementor a.ik-hlink{text-decoration:none!important;background:linear-gradient(currentColor,currentColor) 0 calc(100% - 9px)/0 1.5px no-repeat;transition:background-size .25s cubic-bezier(0.23,1,0.32,1)}
@media (hover:hover) and (pointer:fine){.elementor a.ik-hlink:hover{background-size:calc(100% - 1.25rem) 1.5px}}
.elementor a.ik-hlink:focus-visible{background-size:calc(100% - 1.25rem) 1.5px}
.ik-hlink .ik-icon,.ik-btn-ghost-dark .ik-icon{transition:transform .2s cubic-bezier(0.23,1,0.32,1)}
@media (hover:hover) and (pointer:fine){.ik-hlink:hover .ik-icon,.ik-btn-ghost-dark:hover .ik-icon{transform:translate(2px,-2px)}}
header a .e-image-base{transition:transform .35s cubic-bezier(0.23,1,0.32,1)}
/* ---- motion: switch slides between pages (cross-document view transitions) ---- */
@view-transition{navigation:auto}
.ik-switch{view-transition-name:ik-switch}
body.home .ik-switch-work,body.page-id-540 .ik-switch-about{view-transition-name:ik-active}
::view-transition-group(ik-active){animation-duration:.4s;animation-timing-function:cubic-bezier(0.77,0,0.175,1)}
::view-transition-old(ik-active),::view-transition-new(ik-active){animation:none;mix-blend-mode:normal}
::view-transition-old(root),::view-transition-new(root){animation-duration:.18s}
::view-transition-group(ik-switch){animation:none}
/* ---- motion: footer sign-off sequence ---- */
/* ---- sticky footer reveal: the page slides up off a pinned footer ---- */
@media (min-height:740px){
#content{position:relative;z-index:1;background-color:#FAFAF9;box-shadow:0 32px 64px -32px rgba(17,17,17,.45)}
header.elementor-location-header{position:relative;z-index:2;background-color:#FAFAF9}
footer.elementor-location-footer{position:sticky;bottom:0;z-index:0}}
/* footer sign-off is timed to the page sliding away, not to the footer entering */
@supports (animation-timeline:--a) and (timeline-scope:--a){@media (prefers-reduced-motion:no-preference){
body{timeline-scope:--ik-end}
#content{view-timeline-name:--ik-end}
.ik-reveal-1,.ik-reveal-2,.ik-reveal-3{animation:ik-up linear both}
.ik-footer-word{animation:ik-rise linear both}
/* pinned footer: time each part to the moment the page uncovers it (bottom up) */
@media (min-height:740px){
.ik-reveal-1,.ik-reveal-2,.ik-reveal-3,.ik-footer-word{animation-timeline:--ik-end}
.ik-footer-word{animation-range:exit 0px exit 220px}
.ik-reveal-3{animation-range:exit 300px exit 440px}
.ik-reveal-2{animation-range:exit 340px exit 480px}
.ik-reveal-1{animation-range:exit 400px exit 580px}}
@media (min-height:740px) and (min-width:768px) and (max-width:1024px){
.ik-reveal-3{animation-range:exit 340px exit 470px}
.ik-reveal-2{animation-range:exit 430px exit 570px}
.ik-reveal-1{animation-range:exit 530px exit 700px}}
@media (min-height:740px) and (max-width:767px){
.ik-footer-word{animation-range:exit 0px exit 200px}
.ik-reveal-3{animation-range:exit 320px exit 440px}
.ik-reveal-2{animation-range:exit 420px exit 540px}
.ik-reveal-1{animation-range:exit 500px exit 660px}}
/* short screens: footer scrolls normally, so each part animates as it enters view */
@media (max-height:739px){
.ik-reveal-1,.ik-reveal-2,.ik-reveal-3,.ik-footer-word{animation-timeline:view()}
.ik-reveal-1{animation-range:entry 0% entry 70%}
.ik-reveal-2{animation-range:entry 10% entry 80%}
.ik-reveal-3{animation-range:entry 10% entry 80%}
.ik-footer-word{animation-range:entry 0% entry 90%}}}}
@keyframes ik-up{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
.ik-hero-h1 span{color:#74746F}
/* ---- Spotify now playing ---- */
.elementor .ik-spotify:not(.is-ready){display:none!important}
body.ik-sp-on .elementor .ik-spotify{display:block!important;min-height:56px}
.ik-spotify.is-ready{animation:ik-fade .4s cubic-bezier(0.23,1,0.32,1) both}
@keyframes ik-fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.ik-sp{display:flex;align-items:center;gap:12px;padding:8px 16px 8px 8px;margin:-8px;border-radius:12px;color:#1A1A1A;text-decoration:none;transition:background-color .2s,transform .16s cubic-bezier(0.23,1,0.32,1)}
@media (hover:hover) and (pointer:fine){.ik-sp:hover{background-color:#EAEAE7}}
.ik-sp:active{transform:scale(.98)}
.ik-sp:focus-visible{outline:2px solid #1A1A1A;outline-offset:2px}
.ik-sp img{display:block;width:56px;height:56px;border-radius:6px;object-fit:cover;flex-shrink:0}
.ik-sp-text{display:grid;gap:2px;min-width:0;max-width:240px}
.ik-sp-label{display:flex;align-items:center;gap:6px;font-size:14px;line-height:1.3;color:#5C5C59}
.ik-sp-title{font:500 15px/1.3 "Geist",sans-serif;color:#1A1A1A;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ik-sp-artist{font-size:14px;line-height:1.3;color:#5C5C59;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ik-sp-eq{display:inline-flex;align-items:flex-end;gap:2px;height:11px}
.ik-sp-eq i{display:block;width:2px;height:100%;border-radius:1px;background:#22C55E;transform-origin:bottom;animation:ik-eq 1.1s ease-in-out 4 forwards}
.ik-sp-eq i:nth-child(2){animation-delay:-.45s}.ik-sp-eq i:nth-child(3){animation-delay:-.8s}
@keyframes ik-eq{0%,100%{transform:scaleY(.3)}50%{transform:scaleY(1)}}
@media (prefers-reduced-motion:reduce){.ik-sp-eq i{animation:none;transform:scaleY(.6)}.ik-spotify.is-ready{animation:none}}
/* ---- Selected Work index with preview ---- */
.ik-index-img{display:block;width:3.5rem;height:3.5rem;object-fit:cover;border-radius:6px;flex-shrink:0}
@media (min-width:1024px) and (hover:hover) and (pointer:fine){
 .elementor .ik-index{position:relative;padding-right:calc(40% + 2.5rem)!important;min-height:calc((min(100vw, 80rem) - 3rem) * .4 + 2rem)}
 .elementor .ik-index-row{position:static!important}
 .ik-index-row .ik-index-img{position:absolute;top:1.5rem;right:0;width:40%;height:auto;aspect-ratio:1/1;border-radius:8px;opacity:0;pointer-events:none;transition:opacity .2s ease}
 .ik-index-row:hover .ik-index-img,.ik-index-row:focus-within .ik-index-img{opacity:1}
 .ik-index:not(:hover):not(:focus-within) .ik-index-row:first-child .ik-index-img{opacity:1}
 .elementor .ik-index-row:hover,.elementor .ik-index-row:focus-within{background-color:#EBEBE8}}
.ik-services b{font-weight:400;color:#1A1A1A}
/* links inside running text: ink, underlined (the theme default is pink) */
#content p a:not([class]),#content li a:not([class]){color:#1A1A1A;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;transition:text-decoration-thickness .15s ease}
@media (hover:hover) and (pointer:fine){#content p a:not([class]):hover,#content li a:not([class]):hover{text-decoration-thickness:2px}}
/* 404: centred link list without bullets */
body.error404 #content ul{list-style:none;margin:0;padding:0;text-align:center;font-size:1.0625rem;line-height:2;color:#1A1A1A}
body.error404 #content li>a:first-child{display:inline-block;padding-block:2px;line-height:1.25}
@media (max-width:767px){body.error404 #content ul{font-size:1rem}}
/* ---- Off the clock clips (About): wrapper and play/pause button added by snippet 10 ---- */
.ik-clip-wrap{position:relative;min-width:0;aspect-ratio:1/1;border-radius:8px;overflow:hidden;background:#1A1A1A}
.ik-clip-wrap.ik-clip-wide{grid-column:span 2;aspect-ratio:auto;align-self:stretch}
@media (max-width:767px){.ik-otc-grid:not(.ik-tabbed) .ik-clip-wrap.ik-clip-wide{aspect-ratio:auto;height:calc((100vw - 3rem) / 2)}}
.ik-clip-wrap video{position:absolute;inset:0;display:block;width:100%!important;height:100%!important;aspect-ratio:auto!important;object-fit:cover;border-radius:0!important}
.ik-clip-btn{position:absolute;left:10px;bottom:10px;width:40px;height:40px;padding:0;border:0;border-radius:999px;background:rgba(26,26,26,.72);color:#FAFAF9;display:grid;place-items:center;cursor:pointer}
.ik-clip-btn svg{width:16px;height:16px}
.ik-clip-btn:focus-visible{outline:2px solid #FAFAF9;outline-offset:2px;box-shadow:0 0 0 4px #1A1A1A}
@media (prefers-reduced-motion:no-preference){.ik-clip-btn{transition:transform .16s cubic-bezier(0.23,1,0.32,1),background-color .2s ease}.ik-clip-btn:active{transform:scale(.94)}}
@media (hover:hover) and (pointer:fine){.ik-clip-btn:hover{background:rgba(26,26,26,.9)}}
/* ---- Off the clock tabs (About): built by snippet 10. Each tab is a horizontal scroller. ---- */
.ik-tabs-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-top:2.25rem;border-bottom:1px solid #E2E2E0}
.ik-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;min-width:0}
.ik-tabs::-webkit-scrollbar{display:none}
.ik-tab{appearance:none;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;font:500 15px/1 "Geist",ui-sans-serif,system-ui,sans-serif;color:#5C5C59;cursor:pointer;white-space:nowrap;border-radius:0}
.ik-tab svg{width:16px;height:16px;flex-shrink:0}
.ik-tab[aria-selected="true"]{color:#1A1A1A;border-bottom-color:#1A1A1A}
.ik-tab:focus-visible{outline:2px solid #1A1A1A;outline-offset:-4px;box-shadow:none;border-radius:6px}
.ik-scroll-nav{display:flex;gap:8px;padding-bottom:8px}
.ik-scroll-btn{appearance:none;width:36px;height:36px;padding:0;border:1px solid #E2E2E0;border-radius:999px;background:#FFFFFF;color:#1A1A1A;display:grid;place-items:center;cursor:pointer}
.ik-scroll-btn svg{width:16px;height:16px}
.ik-scroll-btn:disabled{opacity:.35;cursor:default}
@media (hover:hover) and (pointer:fine){.ik-tab:hover{color:#1A1A1A}.ik-scroll-btn:not(:disabled):hover{border-color:#1A1A1A}}
@media (prefers-reduced-motion:no-preference){.ik-tab{transition:color .2s ease,border-color .2s ease}.ik-scroll-btn{transition:border-color .2s ease,transform .16s cubic-bezier(0.23,1,0.32,1)}.ik-scroll-btn:not(:disabled):active{transform:scale(.94)}}
.ik-tab-desc{margin:1rem 0 0;font-size:1rem;line-height:1.6;color:#5C5C59}
.elementor .ik-otc-grid.ik-tabbed{--ik-h:clamp(240px,24vw,320px);display:flex!important;gap:12px!important;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;margin-top:1.25rem!important;padding-bottom:10px!important;scrollbar-width:thin}
.elementor .ik-otc-grid.ik-tabbed{overflow-y:hidden}
.ik-otc-grid.ik-tabbed .ik-otc-img:hover{transform:none!important}
.ik-otc-grid.ik-tabbed:focus-visible{outline:2px solid #1A1A1A;outline-offset:4px;border-radius:8px}
.ik-otc-grid.ik-tabbed>*{flex:0 0 auto!important;width:var(--ik-h)!important;height:var(--ik-h)!important;aspect-ratio:auto!important;grid-column:auto!important;scroll-snap-align:start}
.ik-otc-grid.ik-tabbed>.ik-clip-wide{width:calc(var(--ik-h) * 2)!important}
.ik-otc-grid.ik-tabbed>.ik-cat-photography{width:calc(var(--ik-h) * 0.8)!important;height:var(--ik-h)!important}
.ik-otc-grid>[hidden]{display:none!important}
@media (max-width:767px){
 .elementor .ik-otc-grid.ik-tabbed{--ik-h:min(72vw,280px);gap:8px!important}
 .ik-scroll-nav{display:none}
 .ik-tabs-head{display:block}
 .ik-tabs{gap:0}
 .ik-tab{flex:0 0 auto;flex-direction:column;justify-content:center;gap:4px;min-height:56px;padding:6px 12px;font-size:14px}
 .ik-tab svg{width:18px;height:18px}}
/* theme reset paints every button pink with a border on hover/focus; keep our own looks */
.elementor button.ik-tab,.elementor button.ik-tab:hover,.elementor button.ik-tab:focus{background:none!important;border:0!important;border-bottom:2px solid transparent!important;color:#5C5C59!important;box-shadow:none!important}
.elementor button.ik-tab[aria-selected="true"],.elementor button.ik-tab[aria-selected="true"]:hover,.elementor button.ik-tab[aria-selected="true"]:focus{color:#1A1A1A!important;border-bottom-color:#1A1A1A!important}
@media (hover:hover) and (pointer:fine){.elementor button.ik-tab:hover{color:#1A1A1A!important}}
.elementor button.ik-tab:focus-visible{outline:2px solid #1A1A1A!important;outline-offset:-4px!important;border-radius:6px}
.elementor button.ik-scroll-btn,.elementor button.ik-scroll-btn:hover,.elementor button.ik-scroll-btn:focus{background:#FFFFFF!important;color:#1A1A1A!important;border:1px solid #E2E2E0!important;border-radius:999px!important}
@media (hover:hover) and (pointer:fine){.elementor button.ik-scroll-btn:not(:disabled):hover{border-color:#1A1A1A!important}}
.elementor button.ik-clip-btn,.elementor button.ik-clip-btn:hover,.elementor button.ik-clip-btn:focus{background:rgba(26,26,26,.72)!important;color:#FAFAF9!important;border:0!important;border-radius:999px!important}
@media (hover:hover) and (pointer:fine){.elementor button.ik-clip-btn:hover{background:rgba(26,26,26,.9)!important}}
/* ---- motion: page-wide (2026-10-17, reviewed against Emil Kowalski's rules). Movement sits behind prefers-reduced-motion. ---- */
/* tokens: strong ease-out for UI, gentle spring only for one-off delight; hover/press under 300ms */
:root{--ik-ease:cubic-bezier(0.23,1,0.32,1);--ik-spring:cubic-bezier(0.34,1.45,0.64,1)}
.ik-stat-num{font-variant-numeric:tabular-nums}
/* consistency (shadcn-style scale: 6px small, 8px default, 12px floating surfaces; 24px minimum targets) */
footer a[href="#top"],footer a[href$="/accessibility-statement/"]{display:inline-flex!important;align-items:center!important;min-height:24px!important}
/* photos turn black and white on hover (colour only, so it stays on with reduced motion) */
.ik-portrait,.ik-otc-img,.ik-about-photo{transition:filter .3s ease}
@media (hover:hover) and (pointer:fine){.ik-portrait:hover,.ik-otc-img:hover,.ik-about-photo:hover{filter:grayscale(1)}}
@keyframes ik-load{from{opacity:0;translate:0 12px;filter:blur(4px)}to{opacity:1;translate:none;filter:none}}
@keyframes ik-pop{from{opacity:0;scale:.94}to{opacity:1;scale:none}}
@keyframes ik-wiggle{0%,100%{rotate:none}20%{rotate:-12deg}40%{rotate:9deg}60%{rotate:-5deg}80%{rotate:2deg}}
@media (prefers-reduced-motion:no-preference){
/* first view: page intro arrives once, staggered (rare, so it may take 700ms) */
#content .ik-wrap:has(h1)>*{animation:ik-load .7s var(--ik-ease) backwards}
#content .ik-wrap:has(h1)>:nth-child(2){animation-delay:.08s}
#content .ik-wrap:has(h1)>:nth-child(3){animation-delay:.16s}
#content .ik-wrap:has(h1)>:nth-child(n+4){animation-delay:.24s}
.ik-portrait{animation:ik-pop .6s var(--ik-spring) .05s backwards;transition:transform .25s var(--ik-ease),filter .3s ease}
/* scroll entrances, once each (snippet 7 adds .ik-rv, then .ik-in); only opacity and translate */
.ik-rv{opacity:0;translate:0 12px;transition:opacity .5s var(--ik-ease) var(--ik-d,0s),translate .5s var(--ik-ease) var(--ik-d,0s)}
.ik-rv.ik-in{opacity:1;translate:none}
.ik-index-row.ik-rv{translate:none}
.ik-principle.ik-rv{border-top-color:transparent!important;background:linear-gradient(#1A1A1A,#1A1A1A) top left/0% 1px no-repeat;transition:opacity .5s var(--ik-ease) var(--ik-d,0s),translate .5s var(--ik-ease) var(--ik-d,0s),background-size .8s var(--ik-ease) calc(var(--ik-d,0s) + .15s)}
.ik-principle.ik-rv.ik-in{background-size:100% 1px}
/* press feedback on every button */
.ik-btn-dark,.ik-btn-light,.ik-btn-ghost-dark{transition-property:background-color,box-shadow,transform;transition-duration:.2s,.2s,.16s;transition-timing-function:ease,ease,var(--ik-ease)}
.ik-btn-dark:active,.ik-btn-light:active,.ik-btn-ghost-dark:active,.ik-switch-link:active{transform:scale(.97)}
/* hover micro-interactions: short, ease-out, interruptible transitions */
.ik-otc-img{transition:transform .25s var(--ik-ease),filter .3s ease,opacity .5s var(--ik-ease) var(--ik-d,0s),translate .5s var(--ik-ease) var(--ik-d,0s)}
.ik-tool-tag .ik-icon{transition:transform .25s var(--ik-ease)}
.ik-lock-card>:first-child{transition:border-color .2s ease}
.ik-lock-badge{transition:transform .2s var(--ik-ease)}
@media (hover:hover) and (pointer:fine){
 .ik-portrait:hover{transform:rotate(-2deg) scale(1.04)}
 .ik-otc-img:hover{transform:translateY(-4px)}
 .ik-tool-tag:hover .ik-icon{transform:rotate(-10deg) scale(1.12)}
 .ik-lock-card:hover>:first-child{border-color:#B9B9B4!important}
 .ik-lock-card:hover .ik-lock-badge{transform:scale(1.06);animation:ik-wiggle .45s ease-in-out}}
@media (min-width:1024px) and (hover:hover) and (pointer:fine){
 .ik-index-row .ik-index-img{transform:scale(.98) translateY(4px);transition:opacity .2s ease,transform .25s var(--ik-ease)}
 .ik-index-row:hover .ik-index-img,.ik-index-row:focus-within .ik-index-img,.ik-index:not(:hover):not(:focus-within) .ik-index-row:first-child .ik-index-img{transform:none}}}
/* ---- locked personal projects: blurred teaser art behind the padlock ---- */
.elementor .ik-teaser{position:absolute!important;inset:-12%;width:auto!important;height:auto!important;filter:blur(10px);pointer-events:none;transition:filter .3s ease}
@media (hover:hover) and (pointer:fine){.ik-lock-card:hover .ik-teaser{filter:blur(7px)}}
.elementor .ik-teaser-1{background:
 linear-gradient(#2E2E38,#2E2E38) 12% 14%/76% 7% no-repeat,
 linear-gradient(160deg,#E8553D,#7A1F3D) 14% 52%/22% 44% no-repeat,
 linear-gradient(160deg,#F2B33D,#C2541B) 50% 52%/22% 44% no-repeat,
 linear-gradient(160deg,#3D7BE8,#1B2C6B) 86% 52%/22% 44% no-repeat,
 linear-gradient(#3A3A44,#3A3A44) 14% 88%/46% 5% no-repeat,
 #121217}
.elementor .ik-teaser-2{background:
 linear-gradient(#E4E4E0,#E4E4E0) 0 0/24% 100% no-repeat,
 linear-gradient(#1A1A1A,#1A1A1A) 40% 16%/34% 7% no-repeat,
 radial-gradient(circle,#4F7CFF 0 48%,transparent 50%) 38% 70%/28% 46% no-repeat,
 linear-gradient(#22C55E,#22C55E) 70% 84%/7% 34% no-repeat,
 linear-gradient(#22C55E,#22C55E) 80% 84%/7% 50% no-repeat,
 linear-gradient(#22C55E,#22C55E) 90% 84%/7% 24% no-repeat,
 #FFFFFF}
.elementor .ik-teaser-3{background:
 radial-gradient(circle at 25% 30%,#FF7AB6 0 22%,transparent 46%),
 radial-gradient(circle at 75% 35%,#8B5CF6 0 20%,transparent 44%),
 radial-gradient(circle at 55% 80%,#14B8A6 0 22%,transparent 48%),
 #FDF4EC}

/* Home Off the clock photos: swipeable row on phones */
@media (max-width:767px){.ik-home-strip{display:flex!important;gap:8px!important;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding-bottom:10px!important;scrollbar-width:thin}.ik-home-strip>*{flex:0 0 auto!important;width:min(72vw,280px)!important;scroll-snap-align:start}}
.ik-home-strip:focus-visible{outline:2px solid #1A1A1A;outline-offset:4px;border-radius:8px}

/* Hover underline sits on the link's text, not the link box, so it never runs across a stretched row */
.elementor a.ik-hlink,.elementor a.ik-hlink:hover,.elementor a.ik-hlink:focus-visible{background:none!important}
.elementor a.ik-hlink>:first-child{background:linear-gradient(currentColor,currentColor) 0 calc(100% - 1px)/0 1.5px no-repeat;transition:background-size .25s cubic-bezier(0.23,1,0.32,1)}
@media (hover:hover) and (pointer:fine){.elementor a.ik-hlink:hover>:first-child{background-size:100% 1.5px}}
.elementor a.ik-hlink:focus-visible>:first-child{background-size:100% 1.5px}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Geist';
	font-display: auto;
	src: url('https://ibukunkuti.com/wp-content/uploads/2026/07/Geist-VariableFont_wght.ttf') format('truetype');
}
/* End Custom Fonts CSS */