/* ===================== Premium mouse cursor ===================== */
body.cursor-active, body.cursor-active a, body.cursor-active button,
body.cursor-active input, body.cursor-active textarea, body.cursor-active select{cursor:none;}
.cursor-dot{
  position:fixed;top:0;left:0;width:7px;height:7px;background:var(--gold);border-radius:50%;
  pointer-events:none;z-index:99998;transform:translate(-50%,-50%);will-change:transform;
}
.cursor-ring{
  position:fixed;top:0;left:0;width:36px;height:36px;border:1.5px solid var(--gold);border-radius:50%;
  pointer-events:none;z-index:99998;transform:translate(-50%,-50%);will-change:left,top,width,height;
  transition:width .3s cubic-bezier(.22,1,.36,1),height .3s cubic-bezier(.22,1,.36,1),
             background .3s,border-color .3s,opacity .3s;
}
.cursor-ring.hover{width:60px;height:60px;background:rgba(201,154,46,.12);}
.cursor-ring.hidden,.cursor-dot.hidden{opacity:0;}

/* ===================== Page transition overlay ===================== */
.page-transition{
  position:fixed;inset:0;background:var(--charcoal,#161310);z-index:999999;
  display:flex;align-items:center;justify-content:center;
  opacity:1;visibility:visible;transition:opacity .45s cubic-bezier(.22,1,.36,1),visibility .45s;
}
.page-transition.hide{opacity:0;visibility:hidden;pointer-events:none;}
.pt-mark{width:46px;height:46px;border:2px solid rgba(201,154,46,.25);border-top-color:var(--gold);
  border-radius:50%;animation:ptspin .85s linear infinite;}
@keyframes ptspin{to{transform:rotate(360deg);}}

/* ===================== Split-word text reveal ===================== */
.split-mask{display:inline-block;overflow:hidden;vertical-align:top;}
.split-word{display:inline-block;opacity:0;transform:translateY(110%);
  transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1),color .3s ease;}
.split-word.in{opacity:1;transform:translateY(0);}
.split-text:hover .split-word{color:var(--gold-deep);}

/* ===================== Scroll-in + hover for body text ===================== */
.text-fade{opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1);}
.text-fade.in{opacity:1;transform:translateY(0);}
.text-fade, .hover-text{transition:color .3s ease, opacity .7s cubic-bezier(.22,1,.36,1), transform .7s cubic-bezier(.22,1,.36,1);}
.text-fade:hover, .hover-text:hover{color:var(--gold-deep);}

@media(hover:none),(pointer:coarse){
  .cursor-dot,.cursor-ring{display:none;}
}

/* Keep the gold emphasis on the last 3 words of the hero headline */
.hero h1.split-text .split-mask:nth-last-child(-n+3) .split-word{
  color:var(--gold-deep);font-style:italic;
}
/* ===== Project slider ===== */
.ps-slider{--card-w:min(273px,78vw);--gap:22px}

  .ps-slider { max-width:1200px; margin:0 auto; padding:0 24px; position:relative; }

  /* Track: native horizontal scroll + snap, so swipe works on phones for free */
  .ps-track {
    display:flex; gap:var(--gap);
    overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
    scrollbar-width:none; padding:4px 2px 12px; cursor:grab;
  }
  .ps-track::-webkit-scrollbar { display:none; }
  .ps-track.ps-dragging { cursor:grabbing; scroll-snap-type:none; scroll-behavior:auto; }

  .ps-card {
    position:relative; flex:0 0 var(--card-w); height:365px;
    border-radius:18px; overflow:hidden; scroll-snap-align:start;
    background:linear-gradient(180deg,#2a2218,#050403); color:#fff;
  }
  /* Image sits at the bottom of the stack; overlay above it never blocks clicks */
  .ps-card img {
    position:absolute; inset:0; width:100%; height:100%;
    object-fit:cover; z-index:0; user-select:none; -webkit-user-drag:none;
  }
  .ps-card::after {
    content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
    background:linear-gradient(180deg,rgba(0,0,0,0) 35%,rgba(0,0,0,.85) 100%);
  }
  .ps-badge {
    position:absolute; top:16px; left:16px; z-index:2;
    background:#f1ece4; color:#8a6410; font-weight:700; font-size:12px;
    letter-spacing:.06em; padding:8px 14px; border-radius:999px;
  }
  .ps-info { position:absolute; left:22px; right:22px; bottom:22px; z-index:2; }
  .ps-info h3 { margin:0 0 6px; font:600 22px/1.2 Georgia, serif; }
  .ps-info p  { margin:0 0 14px; font-size:14px; opacity:.85; }
  .ps-info a  { color:var(--gold); font-weight:600; font-size:14px; text-decoration:none; }

  /* Controls */
  .ps-bar { display:flex; align-items:center; gap:18px; margin-top:20px; }
  .ps-progress { flex:1; height:3px; background:#e8e2d8; border-radius:3px; overflow:hidden; }
  .ps-progress span { display:block; height:100%; width:0; background:var(--gold); transition:width .25s; }
  .ps-btn {
    width:44px; height:44px; border-radius:50%; border:1.5px solid var(--gold);
    background:transparent; color:var(--gold); font-size:18px; cursor:pointer;
    transition:background .2s,color .2s;
  }
  .ps-btn:hover:not(:disabled) { background:var(--gold); color:#fff; }
  .ps-btn:disabled { opacity:.35; cursor:default; }
  .ps-btn:focus-visible, .ps-info a:focus-visible { outline:2px solid var(--gold); outline-offset:3px; }

  @media (prefers-reduced-motion: reduce) { .ps-track { scroll-behavior:auto; } }