/* ===== Ingryd Sampaio — motion & polish layer ===== */
::selection{background:#EF4434;color:#F1E5D4}
html{scroll-behavior:smooth}

/* Page fade */
body{opacity:0;transition:opacity .6s ease}
body.loaded{opacity:1}
body.leaving{opacity:0;transition:opacity .35s ease}

/* Scroll progress */
.progress{position:fixed;top:0;left:0;height:2px;width:100%;background:#EF4434;transform-origin:0 50%;transform:scaleX(0);z-index:100;pointer-events:none}

/* Header compacts on scroll */
header{transition:box-shadow .3s ease,background .3s ease}
header.scrolled{box-shadow:0 1px 0 rgba(99,23,42,.08),0 10px 30px -18px rgba(99,23,42,.35)}

/* Reveal on scroll */
.rv{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}

/* Headline word mask */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.w>span{display:inline-block;transform:translateY(105%);transition:transform 1.1s cubic-bezier(.2,.75,.15,1)}
.split.in .w>span{transform:none}

/* Image wipe */
.wipe{clip-path:inset(0 0 100% 0);transition:clip-path 1.3s cubic-bezier(.7,0,.2,1)}
.wipe.in{clip-path:inset(0 0 0 0)}

/* Links: animated underline */
p a,.u{background-image:linear-gradient(currentColor,currentColor);background-size:0% 1px;background-repeat:no-repeat;background-position:0 100%;transition:background-size .35s ease}
p a:hover,.u:hover{background-size:100% 1px}

/* Work card cursor badge */
.cursor{position:fixed;left:0;top:0;width:96px;height:96px;margin:-48px 0 0 -48px;border-radius:50%;background:#63172A;color:#F1E5D4;display:flex;align-items:center;justify-content:center;font:500 13px/1 'Hanken Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;pointer-events:none;z-index:90;transform:scale(0);transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.cursor.on{transform:scale(1)}

/* Back to top */
.totop{position:fixed;right:20px;bottom:20px;width:48px;height:48px;border-radius:50%;border:1px solid #63172A;background:#F1E5D4;color:#63172A;font-size:18px;cursor:pointer;z-index:80;opacity:0;transform:translateY(12px);transition:opacity .3s,transform .3s,background .25s,color .25s}
.totop.show{opacity:1;transform:none}
.totop:hover{background:#63172A;color:#F1E5D4}

/* Mobile menu */
.menu-btn{display:none;min-width:44px;min-height:44px;border:1px solid currentColor;background:transparent;color:inherit;font:500 13px 'Hanken Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;padding:0 14px;cursor:pointer}
@media (max-width:860px){
  .menu-btn{display:inline-flex;align-items:center}
  header .btn{display:none !important}
  html.menu-open{overflow:hidden}
  html.menu-open .nav{display:flex !important;position:absolute;top:100%;left:0;right:0;height:calc(100vh - 72px);box-sizing:border-box;flex-direction:column;gap:8px !important;padding:32px 20px;background:#F1E5D4;z-index:50}
  html.menu-open .nav a{font-family:'Instrument Serif',serif;font-size:44px !important;letter-spacing:-.01em !important;text-transform:none !important;color:#63172A !important;padding:6px 0;border-bottom:1px solid #D9C3AE}
  .cursor{display:none}
}

@media (prefers-reduced-motion: reduce){
  body,.rv,.w>span,.wipe{opacity:1 !important;transform:none !important;clip-path:none !important;transition:none !important}
  .progress,.cursor{display:none}
}
