.elementor-kit-54{--e-global-color-primary:#E8DED6;--e-global-color-secondary:#9C9189;--e-global-color-text:#E8DED6;--e-global-color-accent:#E8DED6;--e-global-color-kmbg:#050505;--e-global-color-kmbgalt:#0A0A0A;--e-global-color-kmtext:#E8DED6;--e-global-color-kmdim:#9C9189;--e-global-color-kmborder:rgba(232,222,214,0.18);--e-global-color-kmbordersoft:rgba(232,222,214,0.07);--e-global-typography-primary-font-family:"Roboto Mono";--e-global-typography-primary-font-size:48px;--e-global-typography-primary-font-weight:500;--e-global-typography-primary-text-transform:uppercase;--e-global-typography-primary-line-height:1.02em;--e-global-typography-primary-letter-spacing:-0.03em;--e-global-typography-secondary-font-family:"Roboto Mono";--e-global-typography-secondary-font-size:11px;--e-global-typography-secondary-font-weight:500;--e-global-typography-secondary-text-transform:uppercase;--e-global-typography-secondary-line-height:1.4em;--e-global-typography-secondary-letter-spacing:0.18em;--e-global-typography-text-font-family:"Inter";--e-global-typography-text-font-size:17px;--e-global-typography-text-font-weight:300;--e-global-typography-text-text-transform:none;--e-global-typography-text-line-height:1.65em;--e-global-typography-text-letter-spacing:0em;--e-global-typography-accent-font-family:"Roboto Mono";--e-global-typography-accent-font-size:11px;--e-global-typography-accent-font-weight:500;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-line-height:1.4em;--e-global-typography-accent-letter-spacing:0.18em;--e-global-typography-kmdisplay-font-family:"Roboto Mono";--e-global-typography-kmdisplay-font-size:120px;--e-global-typography-kmdisplay-font-weight:500;--e-global-typography-kmdisplay-text-transform:uppercase;--e-global-typography-kmdisplay-line-height:0.96em;--e-global-typography-kmdisplay-letter-spacing:-0.045em;--e-global-typography-kmh1-font-family:"Roboto Mono";--e-global-typography-kmh1-font-size:76px;--e-global-typography-kmh1-font-weight:500;--e-global-typography-kmh1-text-transform:uppercase;--e-global-typography-kmh1-line-height:0.98em;--e-global-typography-kmh1-letter-spacing:-0.045em;--e-global-typography-kmh2-font-family:"Roboto Mono";--e-global-typography-kmh2-font-size:48px;--e-global-typography-kmh2-font-weight:500;--e-global-typography-kmh2-text-transform:uppercase;--e-global-typography-kmh2-line-height:1.02em;--e-global-typography-kmh2-letter-spacing:-0.04em;--e-global-typography-kmh3-font-family:"Roboto Mono";--e-global-typography-kmh3-font-size:24px;--e-global-typography-kmh3-font-weight:500;--e-global-typography-kmh3-text-transform:uppercase;--e-global-typography-kmh3-line-height:1.15em;--e-global-typography-kmh3-letter-spacing:-0.01em;--e-global-typography-kmlabel-font-family:"Roboto Mono";--e-global-typography-kmlabel-font-size:11px;--e-global-typography-kmlabel-font-weight:500;--e-global-typography-kmlabel-text-transform:uppercase;--e-global-typography-kmlabel-line-height:1.4em;--e-global-typography-kmlabel-letter-spacing:0.18em;--e-global-typography-kmmicro-font-family:"Roboto Mono";--e-global-typography-kmmicro-font-size:10px;--e-global-typography-kmmicro-font-weight:400;--e-global-typography-kmmicro-text-transform:uppercase;--e-global-typography-kmmicro-line-height:1.7em;--e-global-typography-kmmicro-letter-spacing:0.22em;--e-global-typography-kmlead-font-family:"Inter";--e-global-typography-kmlead-font-size:20px;--e-global-typography-kmlead-font-weight:300;--e-global-typography-kmlead-text-transform:none;--e-global-typography-kmlead-line-height:1.55em;--e-global-typography-kmlead-letter-spacing:0em;--e-global-typography-kmbody-font-family:"Inter";--e-global-typography-kmbody-font-size:17px;--e-global-typography-kmbody-font-weight:300;--e-global-typography-kmbody-text-transform:none;--e-global-typography-kmbody-line-height:1.65em;--e-global-typography-kmbody-letter-spacing:0em;background-color:#050505;}.elementor-kit-54 e-page-transition{background-color:#FFBC7D;}.elementor-kit-54 a{color:#E8DED6;}.elementor-kit-54 a:hover{color:#9C9189;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1680px;}.e-con{--container-max-width:1680px;}.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-kit-54{--e-global-typography-primary-font-size:36px;--e-global-typography-secondary-font-size:11px;--e-global-typography-text-font-size:16px;--e-global-typography-accent-font-size:11px;--e-global-typography-kmdisplay-font-size:72px;--e-global-typography-kmh1-font-size:48px;--e-global-typography-kmh2-font-size:36px;--e-global-typography-kmh3-font-size:21px;--e-global-typography-kmlabel-font-size:11px;--e-global-typography-kmmicro-font-size:10px;--e-global-typography-kmlead-font-size:18px;--e-global-typography-kmbody-font-size:16px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-54{--e-global-typography-primary-font-size:28px;--e-global-typography-secondary-font-size:11px;--e-global-typography-text-font-size:15px;--e-global-typography-accent-font-size:11px;--e-global-typography-kmdisplay-font-size:36px;--e-global-typography-kmh1-font-size:34px;--e-global-typography-kmh2-font-size:26px;--e-global-typography-kmh3-font-size:18px;--e-global-typography-kmlabel-font-size:11px;--e-global-typography-kmmicro-font-size:10px;--e-global-typography-kmlead-font-size:17px;--e-global-typography-kmbody-font-size:15px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* ==========================================================================
   KRYPTOMEDIA / presentation layer
   Structure and content live in Elementor. This stylesheet only covers what
   Elementor cannot express on its own: film grain, structural hairlines,
   scroll reveals, the custom cursor, the discipline marquee, and the
   alternating rhythm of the portfolio loop.
   Edit in: Elementor > Site Settings > Custom CSS
   ========================================================================== */

:root{
  --km-bg:#050505;
  --km-bg-alt:#0A0A0A;
  --km-text:#E8DED6;
  --km-dim:#9C9189;
  --km-border:rgba(232,222,214,.18);
  --km-border-soft:rgba(232,222,214,.07);
  --km-gutter:clamp(1.25rem,4vw,4.5rem);
  --km-e:cubic-bezier(.16,1,.30,1);
}

body{background:var(--km-bg);overflow-x:hidden;}
::selection{background:var(--km-text);color:var(--km-bg);}

/* focus is never removed / it is restyled to suit the dark ground */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,.elementor-button:focus-visible{
  outline:1px solid var(--km-text);outline-offset:4px;
}

/* --- 01 / film grain ---------------------------------------------------- */
.km-grain{
  position:fixed;inset:-50%;z-index:9000;pointer-events:none;opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)'/%3E%3C/svg%3E");
  will-change:transform;animation:km-grain .7s steps(1) infinite;
}
@keyframes km-grain{
  0%{transform:translate3d(0,0,0)}20%{transform:translate3d(-3%,2%,0)}
  40%{transform:translate3d(2%,-3%,0)}60%{transform:translate3d(-2%,-2%,0)}
  80%{transform:translate3d(3%,1%,0)}100%{transform:translate3d(0,0,0)}
}

/* --- 02 / structural hairlines + rails ---------------------------------- */
.km-rules{
  position:fixed;inset:0;z-index:0;pointer-events:none;
  max-width:1680px;margin-inline:auto;padding-inline:var(--km-gutter);
  display:grid;grid-template-columns:repeat(4,1fr);
}
.km-rules span{border-left:1px solid var(--km-border-soft);}
.km-rules span:last-child{border-right:1px solid var(--km-border-soft);}

.km-rail{
  position:fixed;top:0;bottom:0;width:var(--km-gutter);z-index:60;
  display:flex;align-items:center;justify-content:center;pointer-events:none;
}
.km-rail--l{left:0}.km-rail--r{right:0}
.km-rail span{
  writing-mode:vertical-rl;font-family:'Roboto Mono',monospace;font-size:10px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--km-dim);opacity:.55;
}
.km-rail--l span{transform:rotate(180deg)}

.km-progress{
  position:fixed;top:0;left:0;height:1px;width:100%;transform:scaleX(0);
  transform-origin:0 50%;background:var(--km-text);z-index:200;opacity:.5;
}

/* --- 03 / scroll reveal -------------------------------------------------- */
.km-reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--km-e),transform .9s var(--km-e);}
.km-reveal.is-in{opacity:1;transform:none;}
.km-reveal-1{transition-delay:.08s}.km-reveal-2{transition-delay:.16s}
.km-reveal-3{transition-delay:.24s}.km-reveal-4{transition-delay:.32s}

/* masked image reveal */
.km-mask img,.km-mask .elementor-widget-image{clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--km-e);}
.km-mask.is-in img,.km-mask.is-in .elementor-widget-image{clip-path:inset(0 0 0 0);}

/* --- 04 / hero ---------------------------------------------------------- */
.km-hero{position:relative;overflow:hidden;}
.km-hero-symbol{
  position:absolute!important;right:-7vw;top:44%;translate:0 -50%;
  height:min(72vh,660px);width:auto;opacity:.036;pointer-events:none;z-index:0;
}
.km-hero-symbol img{height:100%;width:auto;object-fit:contain;}
.km-scroll-line{
  display:inline-block;width:1px;height:34px;
  background:linear-gradient(var(--km-text),transparent);
  transform-origin:0 0;animation:km-pulse 2.4s cubic-bezier(.65,0,.35,1) infinite;
}
@keyframes km-pulse{0%,100%{transform:scaleY(.35);opacity:.4}50%{transform:scaleY(1);opacity:1}}

/* --- 05 / discipline marquee -------------------------------------------- */
.km-marquee{overflow:hidden;}
.km-marquee p{white-space:nowrap;margin:0;}
@keyframes km-scroll{to{transform:translateX(-50%)}}

/* --- 06 / portfolio loop: the alternating editorial rhythm ---------------
   One Loop Item template drives every card. These rules vary the composition
   by position, so the rhythm survives adding or removing projects.          */
.km-project{position:relative;}
.km-project .km-media{position:relative;overflow:hidden;background:var(--km-bg-alt);border:1px solid var(--km-border-soft);}
.km-project .km-media img{width:100%;height:100%;object-fit:cover;transform:scale(1.02);
  transition:transform 1.1s var(--km-e),filter .9s var(--km-e);}
.km-project:hover .km-media img{transform:scale(1.055);filter:brightness(1.12);}
.km-project .km-ptitle{display:inline-block;transition:transform .5s var(--km-e);}
.km-project:hover .km-ptitle{transform:translateX(10px);}

/* the rule above the metadata draws across on hover */
.km-project .km-pmeta{position:relative;border-top:1px solid var(--km-border-soft);}
.km-project .km-pmeta::before{
  content:"";position:absolute;top:-1px;left:0;width:100%;height:1px;background:var(--km-text);
  transform:scaleX(0);transform-origin:0 50%;transition:transform .85s var(--km-e);
}
.km-project:hover .km-pmeta::before{transform:scaleX(1);}

/* aspect rhythm / cycles every three cards */
.elementor-grid > div:nth-of-type(3n+1) .km-media{aspect-ratio:21/9;}
.elementor-grid > div:nth-of-type(3n+2) .km-media{aspect-ratio:4/5;}
.elementor-grid > div:nth-of-type(3n+3) .km-media{aspect-ratio:3/2;}

/* composition rhythm / full bleed, then offset right, then offset left */
@media(min-width:1025px){
  .elementor-grid > div:nth-of-type(3n+2) .km-project,
  .elementor-grid > div:nth-of-type(3n+3) .km-project{
    display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:2rem;align-items:end;
  }
  .elementor-grid > div:nth-of-type(3n+2) .km-project > .km-figure{grid-column:7/13;grid-row:1;}
  .elementor-grid > div:nth-of-type(3n+2) .km-project > .km-pmeta{grid-column:1/6;grid-row:1;border-top:0;}
  .elementor-grid > div:nth-of-type(3n+2) .km-project > .km-pmeta::before{display:none;}
  .elementor-grid > div:nth-of-type(3n+3) .km-project > .km-figure{grid-column:1/9;grid-row:1;}
  .elementor-grid > div:nth-of-type(3n+3) .km-project > .km-pmeta{grid-column:8/13;grid-row:1;z-index:2;
    background:var(--km-bg);border:1px solid var(--km-border-soft);padding:2rem;margin-bottom:-3rem;}
  .elementor-grid > div:nth-of-type(3n+3) .km-project > .km-pmeta::before{display:none;}
}

/* corner crosshairs on media */
.km-media::before,.km-media::after{content:"";position:absolute;width:9px;height:9px;opacity:.5;pointer-events:none;z-index:2;
  background:linear-gradient(var(--km-text),var(--km-text)) center/1px 9px no-repeat,
             linear-gradient(var(--km-text),var(--km-text)) center/9px 1px no-repeat;}
.km-media::before{top:10px;left:10px}
.km-media::after{bottom:10px;right:10px}

/* --- 07 / service rows --------------------------------------------------- */
.km-service{position:relative;transition:background .5s var(--km-e);}
.km-service::before{content:"";position:absolute;left:calc(var(--km-gutter)*-1);right:calc(var(--km-gutter)*-1);
  top:0;bottom:0;background:var(--km-bg-alt);opacity:0;transition:opacity .5s var(--km-e);z-index:-1;}
.km-service:hover::before{opacity:1;}
.km-service .km-stitle{transition:transform .5s var(--km-e);}
.km-service:hover .km-stitle{transform:translateX(12px);}
.km-service .km-stags{opacity:0;transform:translateY(6px);transition:opacity .5s var(--km-e),transform .5s var(--km-e);}
.km-service:hover .km-stags{opacity:1;transform:none;}

/* --- 08 / outlined numerals + technical marks ---------------------------- */
.km-outline{color:transparent!important;-webkit-text-stroke:1px rgba(232,222,214,.38);}
.km-cross{display:inline-flex;align-items:center;gap:8px;}
.km-cross::before{content:"";width:11px;height:11px;flex:none;opacity:.7;
  background:linear-gradient(var(--km-text),var(--km-text)) center/1px 11px no-repeat,
             linear-gradient(var(--km-text),var(--km-text)) center/11px 1px no-repeat;}

/* --- 09 / custom cursor -------------------------------------------------- */
.km-cursor{position:fixed;top:0;left:0;width:10px;height:10px;border:1px solid var(--km-text);
  border-radius:50%;pointer-events:none;z-index:8000;translate:-50% -50%;display:grid;place-items:center;
  mix-blend-mode:difference;opacity:0;
  transition:width .35s var(--km-e),height .35s var(--km-e),background .35s var(--km-e);}
.km-cursor.is-on{opacity:1}
.km-cursor b{font-family:'Roboto Mono',monospace;font-size:9px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--km-bg);opacity:0;transition:opacity .25s var(--km-e);font-weight:400;}
.km-cursor.is-view{width:82px;height:82px;background:var(--km-text);}
.km-cursor.is-view b{opacity:1}

/* --- 10 / forms ---------------------------------------------------------- */
.km-form .elementor-field-group{margin-bottom:2rem;}
.km-form .elementor-field-label{
  font-family:'Roboto Mono',monospace!important;font-size:10px!important;letter-spacing:.22em!important;
  text-transform:uppercase!important;color:var(--km-dim)!important;margin-bottom:.5rem!important;
}
.km-form input[type=text],.km-form input[type=email],.km-form input[type=tel],
.km-form select,.km-form textarea{
  background:transparent!important;border:0!important;border-bottom:1px solid var(--km-border)!important;
  border-radius:0!important;color:var(--km-text)!important;font-family:'Roboto Mono',monospace!important;
  font-size:1rem!important;padding:1rem 0!important;min-height:52px!important;
  transition:border-color .24s var(--km-e);box-shadow:none!important;
}
.km-form textarea{min-height:132px!important;line-height:1.6!important;}
.km-form input:focus,.km-form select:focus,.km-form textarea:focus{border-bottom-color:var(--km-text)!important;outline:none;}
.km-form select option{background:var(--km-bg-alt);color:var(--km-text);}
.km-form .elementor-button{border-radius:0!important;}

/* --- 11 / footer wordmark ------------------------------------------------ */
.km-wordmark{color:transparent!important;-webkit-text-stroke:1px var(--km-border);
  line-height:.78!important;white-space:nowrap;user-select:none;}

/* --- 12 / off-canvas full-screen menu ------------------------------------ */
.km-menu .e-off-canvas__main{background:var(--km-bg)!important;}
.km-menu .elementor-nav-menu--dropdown a,
.km-menu .elementor-nav-menu a{
  font-family:'Roboto Mono',monospace!important;text-transform:uppercase;
  letter-spacing:-.03em;line-height:1;
}

/* --- 13 / responsive ----------------------------------------------------- */
@media(max-width:1024px){
  .km-rail{display:none}
  .km-rules{grid-template-columns:repeat(2,1fr)}
  .km-hero-symbol{height:46vh;right:-14vw}
}
@media(max-width:768px){
  .km-rules{display:none}
  .km-service .km-stags{opacity:1;transform:none}
  .km-service:hover .km-stitle{transform:none}
  .elementor-grid > div .km-media{aspect-ratio:16/9!important;}
  .elementor-grid > div:nth-of-type(3n+2) .km-media{aspect-ratio:4/5!important;}
}

/* --- 14 / reduced motion -------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;}
  .km-reveal{opacity:1;transform:none}
  .km-mask img,.km-mask .elementor-widget-image{clip-path:none}
  .km-grain{animation:none}
  .km-cursor{display:none}
}
@media(hover:none){.km-cursor{display:none}}
/* --- 15 / header --------------------------------------------------------- */
.km-header{
  position:fixed!important;top:0;left:0;right:0;z-index:100;
  border-bottom:1px solid transparent;
  transition:background .5s var(--km-e),border-color .5s var(--km-e);
}
.km-header.is-stuck{
  background:rgba(5,5,5,.72);
  -webkit-backdrop-filter:blur(14px) saturate(120%);
  backdrop-filter:blur(14px) saturate(120%);
  border-bottom-color:var(--km-border-soft);
}
body{padding-top:0;}

/* desktop nav: thin, wide-tracked, quiet until hovered */
.km-nav .elementor-nav-menu--main .elementor-item{
  font-weight:400;padding:6px 0!important;
}

/* --- 16 / full-screen mobile menu ---------------------------------------- */
@media(max-width:1024px){
  .km-nav .elementor-menu-toggle{
    background:transparent!important;position:relative;z-index:120;
  }
  .km-nav .elementor-nav-menu--dropdown{
    position:fixed!important;
    top:0!important;left:0!important;right:0!important;
    width:100vw!important;
    height:100svh!important;
    max-height:100svh!important;
    background:var(--km-bg)!important;
    z-index:110;
    padding:calc(68px + 2rem) var(--km-gutter) 2rem!important;
    overflow-y:auto!important;
      border:0!important;box-shadow:none!important;
  }
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu{width:100%;counter-reset:kmnav;}
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu > li{
    counter-increment:kmnav;position:relative;
    border-top:1px solid var(--km-border-soft);
  }
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu > li:last-child{
    border-bottom:1px solid var(--km-border-soft);
  }
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu > li::before{
    content:"0" counter(kmnav);
    position:absolute;left:0;top:50%;translate:0 -50%;
    font-family:'Roboto Mono',monospace;font-size:10px;letter-spacing:.22em;
    color:var(--km-dim);
  }
  .km-nav .elementor-nav-menu--dropdown .elementor-item{
    padding:clamp(.75rem,2.6vh,1.25rem) 0 clamp(.75rem,2.6vh,1.25rem) 3rem!important;
    font-size:clamp(2rem,10vw,3.25rem)!important;
    letter-spacing:-.03em!important;line-height:1!important;
    background:transparent!important;
  }
  /* coordinates pinned to the base of the overlay */
  .km-nav .elementor-nav-menu--dropdown::after{
    content:"SÃO MIGUEL / AÇORES / 37.7412° N / 25.6756° W";
    position:absolute;left:var(--km-gutter);bottom:2rem;
    font-family:'Roboto Mono',monospace;font-size:10px;letter-spacing:.22em;
    color:var(--km-dim);
  }
}

/* --- 17 / footer --------------------------------------------------------- */
.km-footer{overflow:hidden;}
.km-footer .km-wordmark .elementor-heading-title{
  color:transparent!important;-webkit-text-stroke:1px var(--km-border);
  line-height:.78!important;white-space:nowrap;
}
/* --- 18 / fixes: media fill, marquee, loop rhythm ------------------------ */

/* featured image must fill its ratio box */
.km-media .elementor-widget,
.km-media .elementor-widget-container,
.km-media figure,
.km-media a,
.km-media .elementor-widget-theme-post-featured-image,
.km-media .elementor-widget-image{height:100%;width:100%;display:block;margin:0;}
.km-media img{width:100%;height:100%;object-fit:cover;display:block;}

/* marquee must be one unbroken line */
.km-marquee{width:100%;}
.km-marquee > .e-con-inner{display:flex;flex-wrap:nowrap;width:max-content;animation:km-scroll 60s linear infinite;gap:0;}
.km-marquee .elementor-widget{width:auto!important;flex:0 0 auto;}
.km-marquee p{white-space:nowrap;margin:0;}

/* generous rhythm between portfolio entries */
.km-work-loop .elementor-grid{gap:clamp(4rem,11vw,11rem)!important;}
.km-work-loop .elementor-grid > div{width:100%;}

/* project card link should not inherit underline styling */
.km-project{text-decoration:none;}
.km-pcta{display:inline-block;}

/* hero title sits tight to the grid */
.km-hero-title .elementor-heading-title{max-width:20ch;}

/* about section stacking */
.km-about{position:relative;}
.km-about-bg{position:absolute!important;inset:0;z-index:0;}
.km-about-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,var(--km-bg) 1%,rgba(5,5,5,.22) 44%,rgba(5,5,5,.55) 100%),
             linear-gradient(to right,rgba(5,5,5,.72) 0%,rgba(5,5,5,.28) 50%,rgba(5,5,5,0) 74%);}
.km-about-inner{position:relative;z-index:2;}
@media(max-width:768px){
  .km-about-bg::after{background:linear-gradient(to top,var(--km-bg) 1%,rgba(5,5,5,.30) 46%,rgba(5,5,5,.6) 100%);}
}

/* case-study hero */
.km-case-hero{position:relative;}
.km-hero-bg{position:absolute!important;inset:0;z-index:0;}
.km-hero-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,var(--km-bg) 1%,rgba(5,5,5,.28) 55%,rgba(5,5,5,.6) 100%);}
.km-case-hero__inner{position:relative;z-index:2;}

/* contact detail rows */
.km-detail{padding-block:18px;border-bottom:1px solid var(--km-border-soft);}
.km-detail strong{display:block;font-size:10px;letter-spacing:.22em;color:var(--km-dim);
  font-weight:400;margin-bottom:6px;}

/* deliverables in two columns */
.km-dlist .elementor-widget-container{columns:2;column-gap:40px;}
@media(max-width:768px){.km-dlist .elementor-widget-container{columns:1;}}

/* next project block */
.km-next{position:relative;display:block;overflow:hidden;padding:clamp(4rem,12vw,11rem) var(--km-gutter);
  border-top:1px solid var(--km-border-soft);text-decoration:none;}
.km-next__bg{position:absolute;inset:0;z-index:0;opacity:0;transition:opacity .8s var(--km-e);}
.km-next__bg img{width:100%;height:100%;object-fit:cover;filter:brightness(.4);transform:scale(1.05);
  transition:transform 1.4s var(--km-e);}
.km-next:hover .km-next__bg{opacity:1;}
.km-next:hover .km-next__bg img{transform:scale(1);}
.km-next__inner{position:relative;z-index:2;display:flex;flex-direction:column;gap:14px;
  max-width:1680px;margin-inline:auto;}
.km-next__label,.km-next__cats,.km-next__cta{font-family:'Roboto Mono',monospace;font-size:10px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--km-dim);}
.km-next__cta{color:var(--km-text);}
.km-next__title{font-family:'Roboto Mono',monospace;font-weight:500;text-transform:uppercase;
  font-size:clamp(2.25rem,8.6vw,7.5rem);line-height:.98;letter-spacing:-.045em;color:var(--km-text);
  display:inline-block;transition:transform .9s var(--km-e);}
.km-next:hover .km-next__title{transform:translateX(16px);}

/* TranslatePress switcher should not fight the design */


/* --- 19 / whole card is a link ------------------------------------------- */
/* The project title is the card's single anchor; this overlay extends its
   hit area across the entire card without nesting links. */
.km-project{position:relative;}
.km-project .km-ptitle a{position:static;display:inline-block;}
.km-project .km-ptitle a::after{content:"";position:absolute;inset:0;z-index:5;}
.km-project .km-ptitle a:hover{color:inherit;}
.km-project a{text-decoration:none;}
/* ===== 20 / PROTOTYPE PARITY (1: layout + header) ===== */
.km-header,.km-hero-inner,.km-marquee{padding-inline:var(--km-gutter)!important;max-width:1680px;margin-inline:auto;width:100%;}
.km-work-section>.e-con-inner,.km-services-section>.e-con-inner,.km-process-section>.e-con-inner,.km-cta>.e-con-inner,.km-contact>.e-con-inner{padding-inline:var(--km-gutter)!important;}
.km-work-section,.km-services-section,.km-process-section,.km-cta,.km-contact{padding-inline:0!important;}
.km-about-inner{padding-inline:var(--km-gutter)!important;}
.km-header>.e-con-inner{max-width:1680px;margin-inline:auto;width:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:center;}
.km-brand{cursor:pointer;}
.km-brand-symbol img{width:17px;height:auto;display:block;opacity:.95;}
.km-brand-word .elementor-heading-title{line-height:1;}
.km-nav .elementor-nav-menu--main .elementor-item{font-weight:400;}
/* hero shell */
.km-hero{position:relative;overflow:hidden;min-height:100svh;}
.km-hero-inner{flex:1;display:flex;flex-direction:column;justify-content:space-between;padding-top:calc(68px + 3rem);padding-bottom:3rem;gap:4rem;}
@media(max-width:1024px){.km-hero-inner{padding-top:calc(62px + 2.5rem);}}
.km-hero-block{gap:0!important;}
.km-hero-title{margin-bottom:2rem;}
.km-hero-title .elementor-heading-title{line-height:.96;}

/* ===== 20 / PROTOTYPE PARITY (2: headline, intro, scroll, marquee) ===== */
/* line-masked headline reveal */
.km-hero-title .km-line{display:block;overflow:hidden;padding-inline:.08em;margin-inline:-.08em;}
.km-hero-title .km-line>span{display:block;transform:translateY(102%);transition:transform 1.05s var(--km-e);}
.km-hero-title.is-in .km-line>span{transform:none;}
.km-hero-title .km-line-2>span{transition-delay:.10s;}
.km-hero-title .km-line-2{padding-left:clamp(1.5rem,9vw,11rem);}
@media(max-width:768px){.km-hero-title .km-line-2{padding-left:0;}}
/* intro column */
.km-hero-lead .elementor-widget-container{max-width:46ch;}
.km-hero-intro .elementor-widget-divider{width:64px;}
.km-hero-actions{width:auto;}
/* scroll indicator with its pulsing rule */
.km-scroll{align-items:center;}
.km-scroll::before{content:"";display:block;width:1px;height:34px;flex:none;background:linear-gradient(var(--km-text),transparent);transform-origin:0 0;animation:km-pulse 2.4s cubic-bezier(.65,0,.35,1) infinite;}
@media(max-width:768px){.km-scroll{justify-content:flex-start;}}
/* marquee: one unbroken line */
.km-marquee{overflow:hidden;padding-inline:0!important;max-width:none;}
.km-marquee .elementor-widget{width:auto!important;max-width:none!important;flex:0 0 auto!important;}
.km-marquee .elementor-widget-container,.km-marquee p{white-space:nowrap!important;margin:0;}

/* ===== 20 / PROTOTYPE PARITY (3: buttons, symbol, rails, misc) ===== */
/* buttons: label left, arrow right, fill sweeps up on hover */
.km-hero-actions .elementor-button,.km-cta .elementor-button,.km-work-section .elementor-button{min-width:210px;display:inline-flex;align-items:center;justify-content:space-between;gap:2rem;min-height:52px;position:relative;overflow:hidden;isolation:isolate;border-radius:0!important;}
.elementor-button .elementor-button-content-wrapper{width:100%;display:flex;align-items:center;justify-content:space-between;gap:2rem;}
.elementor-button .elementor-button-text::after{content:"→";margin-left:2rem;display:inline-block;transition:transform .5s var(--km-e);}
.elementor-button:hover .elementor-button-text::after{transform:translateX(5px);}
/* hero watermark */
.km-hero-symbol{position:absolute!important;right:-7vw;top:44%;translate:0 -50%;height:min(72vh,660px);width:auto;opacity:.036;pointer-events:none;z-index:0;}
.km-hero-symbol .elementor-widget-container,.km-hero-symbol img{height:100%;width:auto;object-fit:contain;}
@media(max-width:1024px){.km-hero-symbol{height:46vh;right:-14vw;}}
/* section labels get the prototype's leading rule */
.km-label .elementor-heading-title{display:inline-flex;align-items:center;gap:1rem;}
.km-label .elementor-heading-title::before{content:"";width:28px;height:1px;background:rgba(232,222,214,.38);flex:none;}
/* process: connecting rule + nodes */
.km-process{position:relative;}
.km-step{position:relative;}
.km-step::before{content:"";position:absolute;top:-3px;left:-3px;width:5px;height:5px;background:var(--km-text);}
.km-step:first-child::before{left:0;}
@media(max-width:768px){.km-step::before{left:-3px;}}
/* CTA poster corner annotations */
.km-cta{position:relative;}
.km-cta::before,.km-cta::after{position:absolute;font-family:'Roboto Mono',monospace;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--km-dim);}
.km-cta::before{content:"KM / 006";top:2rem;left:var(--km-gutter);}
.km-cta::after{content:"Atlântico / 2026";top:2rem;right:var(--km-gutter);}
/* about: vertical rail + veil */
.km-about-inner{position:relative;}
.km-about-veil{position:absolute;inset:0;z-index:1;pointer-events:none;background-image:repeating-linear-gradient(90deg,rgba(232,222,214,.05) 0px,rgba(232,222,214,.05) 1px,transparent 1px,transparent 8.33%);opacity:.32;}
/* hide the language badge from the composition */



/* ===== 20 / PROTOTYPE PARITY (4: hero column widths) ===== */
/* Elementor's optimized markup drops .elementor-widget-container, so widths
   are pinned on the widget/container elements themselves. */
.km-hero-lead{max-width:46ch;}
.km-hero-bottom{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:28px 40px;}
.km-hero-intro{width:52%;max-width:52%;flex:0 1 auto;}
.km-scroll{width:auto;max-width:none;flex:0 0 auto;margin-left:auto;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:12px;}
.km-hero-top{width:100%;}
@media(max-width:1024px){.km-hero-intro{width:100%;max-width:100%;}}
@media(max-width:768px){
  .km-hero-lead{max-width:none;}
  .km-scroll{margin-left:0;justify-content:flex-start;width:100%;}
  .km-hero-coords{text-align:left!important;}
  .km-hero-actions{width:100%;}
  .km-hero-actions .elementor-widget-button{flex:1 1 100%;}
  .km-hero-actions .elementor-button{width:100%;}
}

/* ===== 20 / PROTOTYPE PARITY (5: final offsets) ===== */
.km-hero-inner{flex:1 1 0!important;}
.km-hero-lead{max-width:none;}
.km-hero-lead p{max-width:46ch;margin:0;}
.km-marquee{padding-block:16px!important;}
.elementor-button .elementor-button-text::after{content:"→";}
@media(max-width:768px){.km-hero-lead p{max-width:none;}}

/* ===== 20 / PROTOTYPE PARITY (6: hero rhythm) ===== */
/* top padding belongs to the hero, matching the prototype's box model */
.km-hero{padding-top:calc(68px + 3rem)!important;}
.km-hero-inner{padding-top:0!important;padding-bottom:3rem!important;gap:4rem;}
@media(max-width:1024px){.km-hero{padding-top:calc(62px + 2.5rem)!important;}}
/* the intro column is measured in characters, not percent */
.km-hero-intro{width:auto!important;max-width:52ch!important;flex:0 1 auto;}
.km-hero-lead{max-width:100%;}
@media(max-width:1024px){.km-hero-intro{max-width:100%!important;width:100%!important;}}

/* ===== 20 / PROTOTYPE PARITY (7) ===== */
/* ch resolves differently here, so the intro column is pinned in px to
   match the approved composition exactly */
.km-hero-intro{max-width:482px!important;}
@media(max-width:1024px){.km-hero-intro{max-width:100%!important;}}
.km-hero-actions .elementor-button{min-width:200px;}
.km-hero-actions{flex-wrap:nowrap;}
@media(max-width:768px){.km-hero-actions{flex-wrap:wrap;}}
/* scroll rule sits left of the label */
.km-scroll .elementor-widget:first-child::before{content:"";display:inline-block;vertical-align:middle;width:1px;height:34px;margin-right:12px;background:linear-gradient(var(--km-text),transparent);transform-origin:0 0;animation:km-pulse 2.4s cubic-bezier(.65,0,.35,1) infinite;}
.km-scroll::before{content:none!important;}
.km-marquee p{line-height:20px;}

/* ===== 20 / PROTOTYPE PARITY (8: clipping) ===== */
.km-hero{overflow:hidden!important;}
.km-marquee{overflow:hidden!important;max-width:100%!important;}
body{overflow-x:hidden;}

/* ===== 20 / PROTOTYPE PARITY (9: no horizontal scroll) ===== */
html{overflow-x:hidden;max-width:100%;}
body{overflow-x:hidden;max-width:100%;position:relative;}

/* ===== 20 / PROTOTYPE PARITY (10: services + about) ===== */
/* service rows: number | title | description, as designed */
.km-service{display:grid!important;grid-template-columns:1.5fr 5fr 6fr!important;gap:32px!important;align-items:start!important;padding-block:40px!important;}
.km-service > .e-con{width:auto!important;max-width:none!important;}
.km-stags{opacity:0;transition:opacity .5s var(--km-e),transform .5s var(--km-e);transform:translateY(6px);}
.km-service:hover .km-stags{opacity:1;transform:none;}
@media(max-width:1024px){.km-service{grid-template-columns:1fr 4fr 6fr!important;}}
@media(max-width:768px){.km-service{grid-template-columns:1fr!important;gap:12px!important;padding-block:28px!important;}.km-stags{opacity:1;transform:none;}}
/* about: atmosphere, bottom-anchored copy, rail + crosshairs */
.km-about{position:relative;display:flex;flex-direction:column;justify-content:flex-end!important;overflow:hidden;}
.km-about-bg{position:absolute!important;inset:0!important;z-index:0;background-size:cover!important;background-position:center center!important;}
.km-about-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--km-bg) 1%,rgba(5,5,5,.20) 44%,rgba(5,5,5,.52) 100%),linear-gradient(to right,rgba(5,5,5,.70) 0%,rgba(5,5,5,.26) 50%,rgba(5,5,5,0) 74%);}
.km-about-inner{position:relative;z-index:2;}
.km-about-copy,.km-about-inner .elementor-widget-text-editor{max-width:62ch;}
/* vertical rail down the left margin */
.km-about::before{content:"SÃO MIGUEL / AÇORES / OCEANO ATLÂNTICO";position:absolute;left:calc(var(--km-gutter)/2 - 6px);top:50%;translate:0 -50%;writing-mode:vertical-rl;transform:rotate(180deg);font-family:'Roboto Mono',monospace;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--km-dim);z-index:2;}
@media(max-width:1024px){.km-about::before{display:none;}}

/* ===== 20 / PROTOTYPE PARITY (11: about crosshairs) ===== */
.km-about-marks{position:absolute!important;inset:0;z-index:2;pointer-events:none;}
.km-about-marks .km-cross{position:absolute;display:inline-flex;align-items:center;gap:8px;}
.km-about-marks .km-cross::before{content:"";width:11px;height:11px;flex:none;opacity:.7;background:linear-gradient(var(--km-text),var(--km-text)) center/1px 11px no-repeat,linear-gradient(var(--km-text),var(--km-text)) center/11px 1px no-repeat;}
.km-mark-1{top:22%;right:14%;}
.km-mark-2{top:41%;right:26%;}
.km-mark-3{top:63%;right:9%;}
@media(max-width:768px){.km-about-marks{display:none;}}

/* ===== 20 / PROTOTYPE PARITY (12: about image + copy width) ===== */
.km-about-bg{overflow:hidden;}
.km-about-img,.km-about-img img{width:100%!important;height:100%!important;display:block;}
.km-about-img img{object-fit:cover;filter:brightness(.74) contrast(1.06) saturate(.6);}
.km-about-inner .elementor-widget-text-editor{max-width:600px;}
.km-about-inner .elementor-widget-heading{max-width:none;}
@media(max-width:768px){.km-about-inner .elementor-widget-text-editor{max-width:none;}}

/* ===== 20 / PROTOTYPE PARITY (13: final details) ===== */
/* outlined process numerals */
.km-outline .elementor-heading-title{color:transparent!important;-webkit-text-stroke:1px rgba(232,222,214,.38);}
/* about copy column */
.km-about-inner .elementor-widget-text-editor{max-width:600px!important;}
.km-about-inner .elementor-widget-text-editor:last-of-type{max-width:none!important;}
@media(max-width:768px){.km-about-inner .elementor-widget-text-editor{max-width:100%!important;}}
/* CTA headline holds two lines, as designed */
.km-cta .elementor-widget-heading .elementor-heading-title{max-width:none;}

/* ===== 21 / MOBILE MENU (toggle-controlled full-screen overlay) ===== */
@media(max-width:1024px){
  .km-nav .elementor-menu-toggle{background:transparent!important;position:relative;z-index:130;padding:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;}
  /* no display property here / Elementor toggles it inline */
  .km-nav .elementor-nav-menu--dropdown{
    position:fixed!important;top:0!important;left:0!important;right:0!important;
    width:100vw!important;height:100svh!important;max-height:100svh!important;
    background:var(--km-bg)!important;z-index:120!important;
    padding:calc(68px + 2rem) var(--km-gutter) 2rem!important;
    overflow-y:auto!important;border:0!important;box-shadow:none!important;margin:0!important;
  }
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu{
    display:flex;flex-direction:column;justify-content:center;
    min-height:calc(100svh - 68px - 6rem);counter-reset:kmnav;width:100%;
  }
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu>li{counter-increment:kmnav;position:relative;border-top:1px solid var(--km-border-soft);}
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu>li:last-child{border-bottom:1px solid var(--km-border-soft);}
  .km-nav .elementor-nav-menu--dropdown .elementor-nav-menu>li::before{content:"0" counter(kmnav);position:absolute;left:0;top:50%;translate:0 -50%;font-family:'Roboto Mono',monospace;font-size:10px;letter-spacing:.22em;color:var(--km-dim);}
  .km-nav .elementor-nav-menu--dropdown .elementor-item{padding:clamp(.75rem,2.6vh,1.25rem) 0 clamp(.75rem,2.6vh,1.25rem) 3rem!important;font-size:clamp(2rem,10vw,3.25rem)!important;letter-spacing:-.03em!important;line-height:1!important;background:transparent!important;}
  .km-nav .elementor-nav-menu--dropdown::after{content:"SÃO MIGUEL / AÇORES / 37.7412° N / 25.6756° W";position:absolute;left:var(--km-gutter);bottom:2rem;font-family:'Roboto Mono',monospace;font-size:10px;letter-spacing:.22em;color:var(--km-dim);}
}

/* ===== 21b / header stays one row at every width ===== */
.km-header>.e-con-inner{flex-wrap:nowrap!important;}
.km-header .km-brand{flex:0 0 auto;width:auto!important;}
.km-header .km-nav{flex:0 0 auto;width:auto!important;margin-left:auto;}
@media(max-width:1024px){
  .km-header .km-nav{justify-content:flex-end;}
  .km-nav .elementor-menu-toggle{margin-left:auto;}
  /* close button aligns with the header, top-right */
  .km-nav .elementor-menu-toggle.elementor-active{position:fixed;top:12px;right:var(--km-gutter);z-index:140;}
}

/* ===== 22 / MARQUEE (continuous left scroll) =====
   Elementor renders full-width containers without .e-con-inner, so the
   animation lives on a real track element holding the two duplicate copies.
   Translating the track by exactly -50% swaps copy 1 for copy 2, so the
   loop is seamless. */
.km-marquee{overflow:hidden!important;display:flex!important;width:100%;max-width:100%!important;}
.km-marquee-track{
  display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;
  width:max-content!important;max-width:none!important;flex:0 0 auto!important;
  gap:0!important;padding:0!important;
  will-change:transform;
  animation:km-marquee-scroll 60s linear infinite;
}
.km-marquee-track > .elementor-widget{width:auto!important;max-width:none!important;flex:0 0 auto!important;}
.km-marquee-track p,.km-marquee-track .elementor-widget-container{white-space:nowrap!important;margin:0;}
@keyframes km-marquee-scroll{from{transform:translate3d(0,0,0);}to{transform:translate3d(-50%,0,0);}}
/* pausing on hover keeps the labels readable */
.km-marquee:hover .km-marquee-track{animation-play-state:paused;}
@media(prefers-reduced-motion:reduce){.km-marquee-track{animation:none!important;}}

/* ===== 23 / LONG PROJECT NAMES =====
   In the offset card variants the metadata column is ~40% wide. Keeping its
   internal 3-column split squeezed the title to ~260px, so long client names
   were broken mid-word. There the metadata stacks instead, giving the title
   the full column, and the type scales down so any name fits. */
/* a client name is never split across lines mid-word */
.km-ptitle,.km-ptitle .elementor-heading-title,
.km-next__title,.km-case-hero .elementor-widget-heading .elementor-heading-title{
  word-break:normal!important;overflow-wrap:break-word;hyphens:none;
}
@media(min-width:1025px){
  .elementor-grid > div:nth-of-type(3n+2) .km-pmeta,
  .elementor-grid > div:nth-of-type(3n+3) .km-pmeta{
    flex-direction:column!important;flex-wrap:nowrap!important;gap:14px!important;
  }
  .elementor-grid > div:nth-of-type(3n+2) .km-pmeta > *,
  .elementor-grid > div:nth-of-type(3n+3) .km-pmeta > *{
    width:100%!important;max-width:100%!important;flex:0 0 auto!important;
  }
  .elementor-grid > div:nth-of-type(3n+2) .km-ptitle .elementor-heading-title,
  .elementor-grid > div:nth-of-type(3n+3) .km-ptitle .elementor-heading-title{
    font-size:clamp(2rem,3.4vw,3.5rem)!important;line-height:1!important;
  }
}

/* ===== 24 / LANGUAGE SWITCHER ===== */
.km-nav{gap:0;}
.km-lang-widget{order:2;margin-left:28px;flex:0 0 auto;}
.km-lang{display:inline-flex;align-items:center;gap:7px;font-family:'Roboto Mono',monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;line-height:1;}
.km-lang__opt{color:var(--km-dim);text-decoration:none;transition:color .24s var(--km-e);padding-block:6px;}
.km-lang__opt:hover,.km-lang__opt:focus-visible{color:var(--km-text);}
.km-lang__opt.is-active{color:var(--km-text);}
.km-lang__sep{color:var(--km-border);}
@media(max-width:1024px){
  .km-lang-widget{order:1;margin-left:0;margin-right:18px;}
  .km-nav .elementor-menu-toggle{order:2;}
}
/* the plugin's floating badge is replaced by the header switcher */
.trp-floating-switcher{display:none!important;}

/* ===== 24b / switcher stays reachable with the mobile menu open ===== */
@media(max-width:1024px){
  .km-nav:has(.elementor-menu-toggle.elementor-active) .km-lang-widget{
    position:fixed;top:22px;left:var(--km-gutter);z-index:130;margin:0;
  }
}

/* ===== 25 / WHOLE CARD CLICKABLE =====
   The project title is the card's single anchor. Its ::after overlay must
   resolve against .km-project, so no inner wrapper may be positioned.
   The hover rule above the metadata is drawn with a background gradient
   instead of an absolutely positioned pseudo-element. */
.km-project{position:relative;cursor:pointer;}
.km-project .km-figure{position:static!important;}
.km-project .km-pmeta{position:static!important;}
.km-project .km-pmeta::before{content:none!important;}
.km-project .km-pmeta{
  background-image:linear-gradient(var(--km-text),var(--km-text));
  background-repeat:no-repeat;background-position:0 0;background-size:0% 1px;
  transition:background-size .85s var(--km-e);
}
.km-project:hover .km-pmeta{background-size:100% 1px;}
/* the overlay covers the entire card, image included */
.km-project .km-ptitle a{position:static;display:inline-block;}
.km-project .km-ptitle a::after{content:"";position:absolute;inset:0;z-index:6;}
/* offset variants: the panel must not trap the overlay either */
@media(min-width:1025px){
  .elementor-grid > div:nth-of-type(3n+3) .km-project > .km-pmeta{position:static!important;}
}

/* ===== 26 / CASE STUDY SYSTEM ===== */
/* --- hero --- */
.km-cs-hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;padding-top:calc(68px + 3rem);}
.km-cs-hero__media{position:absolute!important;inset:0;z-index:0;overflow:hidden;}
.km-cs-hero__media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--km-bg) 1%,rgba(5,5,5,.25) 52%,rgba(5,5,5,.6) 100%);z-index:1;}
.km-cs-hero__img,.km-cs-hero__img img,.km-cs-hero__video,.km-cs-hero__video .elementor-wrapper,.km-cs-hero__video video{width:100%!important;height:100%!important;display:block;}
.km-cs-hero__img img,.km-cs-hero__video video{object-fit:cover;}
.km-cs-hero__video .elementor-video-container,.km-cs-hero__video .elementor-wrapper{position:absolute;inset:0;padding:0!important;}
.km-cs-hero__inner{position:relative;z-index:2;padding-inline:var(--km-gutter)!important;}
.km-cs-lead{max-width:56ch;}
.km-cs-cats{opacity:.85;}
/* --- section rhythm --- */
.km-cs-block{padding-block:clamp(5rem,11vw,11rem);padding-inline:var(--km-gutter)!important;}
.km-cs-block + .km-cs-block{padding-top:0;}
/* --- ficha (sticky project card) --- */
.km-ficha__inner{position:sticky;top:calc(68px + 2rem);}
@media(max-width:1024px){.km-ficha__inner{position:static;}}
.km-meta-row{padding-block:14px;border-top:1px solid var(--km-border-soft);}
.km-meta-row:last-child{border-bottom:1px solid var(--km-border-soft);}
.km-linelist{list-style:none;margin:0;padding:0;}
.km-linelist li{font-family:'Roboto Mono',monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--km-text);padding-block:5px;}
/* --- narrative beats --- */
.km-beat__h .elementor-heading-title{max-width:none;white-space:pre-line;}
.km-beat__t{max-width:640px;}
.km-cs-intro .km-beat__h .elementor-heading-title{max-width:none;}
/* --- the Elementor-built visual story --- */
.km-cs-story{width:100%;}
.km-cs-story > .elementor{width:100%;}
/* --- statement --- */
.km-cs-statement{padding-block:clamp(5rem,13vw,12rem);padding-inline:var(--km-gutter)!important;border-top:1px solid var(--km-border-soft);border-bottom:1px solid var(--km-border-soft);}
.km-cs-statement .elementor-heading-title{max-width:none;white-space:pre-line;}
/* --- pairs (results + credits) --- */
.km-pairs{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem 2rem;}
.km-pair{border-top:1px solid var(--km-border-soft);padding-top:1.25rem;display:flex;flex-direction:column;gap:.5rem;}
.km-pair__a{font-family:'Roboto Mono',monospace;font-weight:500;font-size:clamp(2rem,4.4vw,3.5rem);line-height:1;letter-spacing:-.04em;color:var(--km-text);}
.km-pair__b{font-family:'Roboto Mono',monospace;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--km-dim);}
.km-pairs--credits{grid-template-columns:repeat(4,1fr);gap:1.5rem;}
.km-pairs--credits .km-pair__a{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--km-dim);font-weight:400;}
.km-pairs--credits .km-pair__b{font-size:11px;letter-spacing:.06em;text-transform:none;color:var(--km-text);}
@media(max-width:1024px){.km-pairs{grid-template-columns:repeat(2,1fr);}.km-pairs--credits{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.km-pairs,.km-pairs--credits{grid-template-columns:1fr;}}

.km-cs-intro .km-beat__t{max-width:640px;}
.km-cs-lead{max-width:640px;}

/* ===== 27 / CASE STUDY SECTION LIBRARY ===== */
.km-cs-story .km-s-block,.km-cs-story .km-s-band{padding-block:clamp(5rem,11vw,10rem);padding-inline:var(--km-gutter)!important;}
.km-cs-story .km-s-band{border-top:1px solid var(--km-border-soft);border-bottom:1px solid var(--km-border-soft);}
.km-s-band__h .elementor-heading-title{white-space:pre-line;line-height:.92;}
.km-s-band__sub{max-width:34ch;}
.km-s-h .elementor-heading-title{white-space:pre-line;line-height:.98;}
.km-s-lead{max-width:600px;}
/* media frames / tolerant of any aspect ratio */
.km-m img{width:100%;height:auto;display:block;border:1px solid var(--km-border-soft);}
.km-m--wide img{width:100%;}
.km-s-full{padding-inline:0!important;}
.km-s-full .km-m img{border-left:0;border-right:0;}
/* offset duo for editorial rhythm */
@media(min-width:1025px){.km-s-duo--offset > *:last-child{margin-top:6rem;}}
/* vertical reel sits at a native 9:16 on every screen */
.km-s-reel{max-width:420px;}
.km-s-reel .elementor-wrapper{aspect-ratio:9/16;}
.km-s-reel video,.km-s-reel .elementor-video{width:100%;height:100%;object-fit:cover;display:block;}
.km-s-reel .elementor-custom-embed-image-overlay{aspect-ratio:9/16;background-size:cover;background-position:center;}
@media(max-width:768px){.km-s-reel{max-width:100%;}}
/* asymmetric grid */
.km-s-grid{align-items:flex-start;}
@media(min-width:1025px){.km-s-grid > *:nth-child(2){margin-top:4rem;}}/* End custom CSS */