/* ============================================================
   YSF Motion — base layer
   ============================================================ */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

body{
  margin:0;
  background:var(--ysf-paper);
  color:var(--ysf-ink);
  font-family:var(--ysf-font);
  font-size:var(--ysf-step-0);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
  transition:background .5s var(--ysf-ease),color .5s var(--ysf-ease);
}
body.ysf-locked{overflow:hidden}

::selection{background:var(--ysf-accent);color:#fff}

img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}
input,button,textarea,select{font:inherit;color:inherit}
p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}

h1,h2,h3,h4,h5,h6{
  font-family:var(--ysf-font-display);
  line-height:1.1;
  letter-spacing:-.02em;
  margin:0 0 .5em;
  font-weight:600;
}
h1{font-size:var(--ysf-step-5)}
h2{font-size:var(--ysf-step-4)}
h3{font-size:var(--ysf-step-3)}
h4{font-size:var(--ysf-step-2)}
h5{font-size:var(--ysf-step-1)}
h6{font-size:var(--ysf-step-0)}
p{margin:0 0 1.1em;max-width:var(--ysf-max-text)}

a{color:var(--ysf-accent);text-decoration-thickness:1px;text-underline-offset:.18em;
  transition:color var(--ysf-fast) var(--ysf-ease)}
a:hover{color:var(--ysf-accent-deep)}

:focus-visible{outline:2px solid var(--ysf-accent);outline-offset:3px;border-radius:4px}

.ysf-wrap{max-width:var(--ysf-max);margin-inline:auto;padding:var(--ysf-section) var(--ysf-pad)}
.ysf-grid{display:grid;gap:var(--ysf-gap);
  grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr))}

/* ---------- header ---------- */
.ysf-header{
  position:fixed;inset-inline:0;top:0;z-index:var(--ysf-z-header);
  height:var(--ysf-hdr-h);
  display:flex;align-items:center;
  background:transparent;
  border-bottom:1px solid transparent;
  transition:height var(--ysf-base) var(--ysf-ease),
             background var(--ysf-base) var(--ysf-ease),
             border-color var(--ysf-base) var(--ysf-ease),
             transform var(--ysf-base) var(--ysf-ease),
             backdrop-filter var(--ysf-base) var(--ysf-ease);
}
.ysf-header__inner{
  width:100%;max-width:var(--ysf-max);margin-inline:auto;
  padding-inline:var(--ysf-pad);
  display:flex;align-items:center;justify-content:space-between;gap:var(--ysf-gap);
}

/* Transparent state.
   Default keeps normal ink colour so the header stays legible over a
   light hero. Enable "Light text over hero" in the Customizer only when
   the hero behind it is actually dark — otherwise you get white on white. */
.ysf-hdr-transparent .ysf-header:not(.is-scrolled){
  color:var(--ysf-ink);
}
.ysf-hdr-light .ysf-header:not(.is-scrolled){
  color:var(--ysf-hdr-fg-transparent);
}
.ysf-hdr-light .ysf-header:not(.is-scrolled) a,
.ysf-hdr-light .ysf-header:not(.is-scrolled) .ysf-theme-toggle,
.ysf-hdr-light .ysf-header:not(.is-scrolled) .ysf-burger span{
  color:var(--ysf-hdr-fg-transparent);
  border-color:rgba(255,255,255,.35);
}
.ysf-hdr-light .ysf-header:not(.is-scrolled) .ysf-burger span{
  background:var(--ysf-hdr-fg-transparent);
}
.ysf-hdr-light .ysf-header:not(.is-scrolled) .custom-logo{
  filter:brightness(0) invert(1);
}

/* scrolled state — solid, blurred, condensed */
.ysf-header.is-scrolled{
  background:color-mix(in srgb, var(--ysf-hdr-bg) 82%, transparent);
  -webkit-backdrop-filter:blur(var(--ysf-hdr-blur)) saturate(1.5);
  backdrop-filter:blur(var(--ysf-hdr-blur)) saturate(1.5);
  border-bottom-color:var(--ysf-line);
  color:var(--ysf-ink);
}
.ysf-header.is-shrunk{height:var(--ysf-hdr-h-sm)}
.ysf-header.is-hidden{transform:translateY(-102%)}

/* solid-from-top pages */
body:not(.ysf-hdr-transparent) .ysf-header{
  background:color-mix(in srgb, var(--ysf-hdr-bg) 82%, transparent);
  -webkit-backdrop-filter:blur(var(--ysf-hdr-blur));
  backdrop-filter:blur(var(--ysf-hdr-blur));
  border-bottom-color:var(--ysf-line);
}
/* transparent pages pull content under the header */
.ysf-hdr-transparent .ysf-main{margin-top:calc(var(--ysf-hdr-h) * -1)}

.ysf-header__title{font-family:var(--ysf-font-display);font-weight:600;
  font-size:var(--ysf-step-1);text-decoration:none;color:inherit}
.custom-logo{max-height:calc(var(--ysf-hdr-h-sm) - 24px);width:auto;
  transition:filter var(--ysf-base) var(--ysf-ease)}

/* ---------- nav ---------- */
.ysf-nav__list{list-style:none;display:flex;gap:clamp(1rem,2vw,2rem);margin:0;padding:0}
.ysf-nav__list a{position:relative;text-decoration:none;color:inherit;
  font-size:var(--ysf-step--1);letter-spacing:.01em;padding-block:.4em}
.ysf-nav__list a::after{content:"";position:absolute;left:0;bottom:.1em;
  width:100%;height:1px;background:currentColor;
  transform:scaleX(0);transform-origin:right;
  transition:transform var(--ysf-base) var(--ysf-ease)}
.ysf-nav__list a:hover::after,
.ysf-nav__list .current-menu-item > a::after{transform:scaleX(1);transform-origin:left}
.ysf-nav__list .sub-menu{display:none}

.ysf-header__tools{display:flex;align-items:center;gap:.75rem}
.ysf-theme-toggle{
  width:36px;height:36px;border-radius:50%;flex:none;cursor:pointer;
  display:grid;place-items:center;background:transparent;
  border:1px solid var(--ysf-line);color:var(--ysf-muted);
  transition:transform var(--ysf-base) var(--ysf-ease),
             border-color var(--ysf-fast),color var(--ysf-fast);
}
.ysf-theme-toggle:hover{transform:rotate(50deg);border-color:var(--ysf-accent);color:var(--ysf-accent)}
.ysf-theme-toggle svg{width:15px;height:15px}
.ysf-theme-toggle .ysf-moon{display:none}
[data-theme="dark"] .ysf-theme-toggle .ysf-sun{display:none}
[data-theme="dark"] .ysf-theme-toggle .ysf-moon{display:block}

.ysf-burger{display:none;width:36px;height:36px;background:none;border:0;cursor:pointer;
  flex-direction:column;justify-content:center;gap:5px;padding:0}
.ysf-burger span{display:block;width:20px;height:1.5px;background:currentColor;margin-inline:auto;
  transition:transform var(--ysf-base) var(--ysf-ease),opacity var(--ysf-fast)}
.ysf-burger[aria-expanded="true"] span:first-child{transform:translateY(3.25px) rotate(45deg)}
.ysf-burger[aria-expanded="true"] span:last-child{transform:translateY(-3.25px) rotate(-45deg)}

@media (max-width:860px){
  .ysf-burger{display:flex}
  .ysf-nav{
    position:fixed;inset:0;background:var(--ysf-paper);
    display:flex;align-items:center;justify-content:center;
    clip-path:circle(0% at calc(100% - 44px) 38px);
    transition:clip-path .7s var(--ysf-ease-out);
    pointer-events:none;
  }
  .ysf-nav.is-open{clip-path:circle(150% at calc(100% - 44px) 38px);pointer-events:auto}
  .ysf-nav__list{flex-direction:column;gap:1.2rem;text-align:center}
  .ysf-nav__list a{font-size:var(--ysf-step-2);color:var(--ysf-ink)}
  .ysf-header__tools{z-index:2}
}

/* ---------- footer ---------- */
.ysf-footer{border-top:1px solid var(--ysf-line);margin-top:var(--ysf-section)}
.ysf-footer__inner{max-width:var(--ysf-max);margin-inline:auto;padding:var(--ysf-pad)}
.ysf-footer__widgets{display:grid;gap:var(--ysf-gap);
  grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));margin-bottom:2rem}
.ysf-footer__bar{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;
  align-items:center;padding-top:1.4rem;border-top:1px solid var(--ysf-line-soft);
  font-size:var(--ysf-step--1);color:var(--ysf-muted)}
.ysf-footer__menu{list-style:none;display:flex;gap:1.2rem;margin:0;padding:0}
.ysf-footer__menu a{color:inherit;text-decoration:none}
.ysf-footer__menu a:hover{color:var(--ysf-accent)}

/* ---------- buttons / cards ---------- */
.ysf-btn{display:inline-flex;align-items:center;gap:.6em;padding:.85em 1.6em;
  border-radius:100px;background:var(--ysf-ink);color:var(--ysf-paper);
  text-decoration:none;font-size:var(--ysf-step--1);font-weight:500;
  transition:transform var(--ysf-base) var(--ysf-ease),background var(--ysf-fast)}
.ysf-btn:hover{transform:translateY(-2px);background:var(--ysf-accent);color:#fff}

.ysf-card{background:var(--ysf-surface);border:1px solid var(--ysf-line);
  border-radius:var(--ysf-radius);overflow:hidden;
  transition:transform var(--ysf-base) var(--ysf-ease),
             box-shadow var(--ysf-base) var(--ysf-ease),border-color var(--ysf-fast)}
.ysf-card:hover{transform:translateY(-5px);box-shadow:var(--ysf-shadow);border-color:var(--ysf-accent)}
.ysf-card__link{display:block;color:inherit;text-decoration:none}
.ysf-card__media{margin:0;overflow:hidden;aspect-ratio:3/4}
.ysf-card__media img{width:100%;height:100%;object-fit:cover;
  transition:transform .9s var(--ysf-ease)}
.ysf-card:hover .ysf-card__media img{transform:scale(1.05)}
.ysf-card__title{font-size:var(--ysf-step-1);margin:1rem 1.2rem .3rem}
.ysf-card__excerpt{font-size:var(--ysf-step--1);color:var(--ysf-muted);margin:0 1.2rem 1.2rem}

.ysf-single__head{max-width:var(--ysf-max-text)}
.ysf-single__meta{font-family:var(--ysf-font-mono);font-size:var(--ysf-step--1);
  color:var(--ysf-faint);letter-spacing:.06em;text-transform:uppercase}
.ysf-single__hero{margin:2.5rem 0}
.ysf-single__hero img{width:100%;border-radius:var(--ysf-radius);object-fit:cover}
.ysf-single__body{max-width:var(--ysf-max-text)}
.ysf-404{text-align:center;min-height:60vh;display:grid;place-content:center;gap:1rem}
.ysf-404 h1{font-size:clamp(5rem,22vw,14rem);line-height:.85;margin:0}

.ysf-progress{position:fixed;top:0;left:0;height:2px;width:0;
  background:var(--ysf-accent);z-index:calc(var(--ysf-z-header) + 5)}
