/* components.css — reusable UI shared across pages: nav, buttons, logo marquee, footer, contact modal/form */

/* ============================================================
   nav
   ============================================================ */
.nav{position:fixed;top:0;left:0;width:100%;z-index:8000;
  display:flex;align-items:center;justify-content:space-between;
  padding:clamp(1rem,2.4vh,1.6rem) var(--gutter);
  mix-blend-mode:difference;}
/* WordPress admin bar (logged-in only): keep the fixed nav — and its mobile burger — below the toolbar,
   which otherwise covers the top strip of the nav. Inert on the static prism site (no .admin-bar class). */
.admin-bar .nav{top:32px}
@media screen and (max-width:782px){.admin-bar .nav{top:46px}}
.brand{font-family:var(--font-display);font-weight:400;font-size:1.55rem;letter-spacing:-.02em;color:#fff;
  display:inline-flex;align-items:center;transition:opacity .5s var(--ease)}
.brand__logo{display:block;height:clamp(15px,1.7vw,21px);width:auto;color:#fff}
.brand.is-hidden{opacity:0;pointer-events:none}   /* hidden while the hero/intro logo is on screen */
/* eyebrow sits in the brand's spot; it crossfades with the logo on scroll (inverse of .brand) */
.nav__eyebrow{position:absolute;left:var(--gutter);top:50%;transform:translateY(-50%);margin:0;white-space:nowrap;
  font-family:var(--font-ui);font-size:clamp(.64rem,.82vw,.76rem);letter-spacing:.18em;text-transform:uppercase;color:#fff;
  opacity:0;pointer-events:none;transition:opacity .5s var(--ease)}
.brand.is-hidden ~ .nav__eyebrow{opacity:1}
@media (max-width:600px){.nav__eyebrow{display:none}}
.brand sup{font-family:var(--font-ui);font-weight:500;font-size:.5rem;letter-spacing:.1em;vertical-align:super;opacity:.7}
.nav__links{display:flex;gap:clamp(1.25rem,3vw,2.75rem);align-items:center}
.nav__links a{font-family:var(--font-ui);font-weight:500;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#fff;position:relative;padding-block:.3rem}
.nav__links a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:#fff;transform:scaleX(0);transform-origin:100% 50%;transition:transform .5s var(--ease-out)}
.nav__links a:hover::after{transform:scaleX(1);transform-origin:0 50%}

/* ---- mobile sandwich menu ---- */
.nav__burger{display:none;flex-direction:column;justify-content:center;gap:5px;width:34px;height:34px;
  background:none;border:0;cursor:pointer;padding:6px;z-index:9001}
.nav__burger span{display:block;width:100%;height:2px;background:#fff;border-radius:2px;
  transition:transform .35s var(--ease),opacity .25s var(--ease)}
@media (max-width:760px){
  .nav__burger{display:inline-flex}
  .nav.is-open{mix-blend-mode:normal}   /* overlay renders normally (escape the nav blend) */
  .nav.is-open .nav__burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav.is-open .nav__burger span:nth-child(2){opacity:0}
  .nav.is-open .nav__burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .nav__links{position:fixed;inset:0;flex-direction:column;align-items:center;justify-content:center;gap:1.6rem;
    background:rgba(15,11,5,.97);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    transform:translateY(-100%);opacity:0;visibility:hidden;transition:transform .45s var(--ease),opacity .4s var(--ease),visibility .45s;z-index:9000}
  .nav.is-open .nav__links{transform:none;opacity:1;visibility:visible}
  .nav__links a{font-size:1.15rem;letter-spacing:.16em}
  .nav__talk{background:none;padding:0}
}
/* let's talk → CTA, pinned to the right (bold accent) */
.nav__talk{display:inline-flex;align-items:center;gap:.35rem}
.nav__talk span{transition:transform .4s var(--ease-out)}
.nav__talk:hover span{transform:translateX(.25rem)}

/* ============================================================
   buttons
   ============================================================ */
.btn{display:inline-flex;align-items:center;gap:.7rem;font-family:var(--font-ui);font-weight:500;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  padding:1rem 1.6rem;border:1px solid var(--line);border-radius:100px;color:var(--fg);position:relative;overflow:hidden;
  background:transparent;transition:color .5s var(--ease),border-color .5s var(--ease);will-change:transform}
.btn span{position:relative;z-index:2;display:inline-flex;align-items:center;gap:.7rem}
.btn::before{content:"";position:absolute;inset:0;z-index:1;background:var(--sand);border-radius:100px;transform:translateY(101%);transition:transform .55s var(--ease-out)}
.btn:hover{color:var(--ink);border-color:var(--sand)}
.btn:hover::before{transform:translateY(0)}
.btn--solid{background:var(--sand);color:var(--ink);border-color:var(--sand)}
.btn--solid::before{background:var(--amber)}
.btn--solid:hover{color:var(--ink);border-color:var(--amber)}
.btn__dot{width:6px;height:6px;border-radius:50%;background:var(--amber);transition:background .5s var(--ease)}
.btn:hover .btn__dot{background:var(--ink)}

/* ============================================================
   LOGO MARQUEE
   ============================================================ */
.clients{background:linear-gradient(180deg,var(--ink-2),var(--ink));padding-block:clamp(3rem,7vh,5rem) clamp(1.5rem,3vh,2.5rem);overflow:hidden}
.clients__head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:clamp(2rem,5vh,3.5rem)}
.clients__head p{max-width:32ch;color:var(--muted);font-size:clamp(.95rem,1.1vw,1.05rem)}
.marquee{position:relative;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee + .marquee{margin-top:clamp(1rem,2.4vh,1.8rem)}
.marquee__inner{display:flex;flex:0 0 auto;will-change:transform}
.logo{flex:0 0 auto;display:flex;align-items:center;gap:.7rem;padding:0 clamp(1.5rem,3.5vw,3rem);
  font-family:var(--font-display);font-weight:400;font-size:clamp(1.5rem,3vw,2.4rem);letter-spacing:-.02em;color:var(--sand-dim);opacity:.6;
  transition:opacity .4s var(--ease),color .4s var(--ease);white-space:nowrap}
.logo::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--bronze);opacity:.7}
.logo--img::before{display:none}
.logo__img{height:clamp(18px,2.4vw,32px);width:auto;display:block;object-fit:contain}
.marquee:hover .logo{opacity:.3}
.logo:hover{opacity:1;color:var(--amber-soft)}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:var(--ink);position:relative;padding-top:clamp(1rem,2vh,2rem)}
.cta{display:flex;flex-direction:column;align-items:flex-start;gap:clamp(1.5rem,4vh,2.5rem);padding-bottom:clamp(4rem,9vh,7rem);border-bottom:1px solid var(--line)}
.cta h2{font-family:var(--font-display);font-weight:300;font-size:clamp(2.6rem,8.5vw,7.5rem);line-height:.95;letter-spacing:-.035em;max-width:16ch}
.cta h2 .italic{color:var(--amber-soft);font-weight:300}
.cta__row{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}
.cta__row .email{font-family:var(--font-ui);font-weight:500;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}

.foot-bottom{display:flex;flex-wrap:wrap;gap:2rem 3rem;justify-content:space-between;align-items:flex-start;
  padding-block:clamp(2.5rem,6vh,4rem);border-top:1px solid var(--line)}
.foot-col h4{font-family:var(--font-ui);font-weight:500;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:1.1rem}
.foot-col ul{list-style:none;display:flex;flex-direction:column;gap:.6rem}
.foot-col a{color:var(--sand-dim);font-size:1.05rem;position:relative;width:fit-content}
.foot-col a::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--amber-soft);transform:scaleX(0);transform-origin:0 50%;transition:transform .4s var(--ease-out)}
.foot-col a:hover{color:var(--sand)}
.foot-col a:hover::after{transform:scaleX(1)}
/* Connect: Instagram + LinkedIn as horizontal icons, email stays written */
.foot-social{display:flex;align-items:center;gap:1.1rem;margin-bottom:1rem}
.foot-social a{display:inline-flex;color:var(--sand-dim);width:auto}
.foot-social a svg{display:block;width:24px;height:24px}
.foot-social a::after{display:none}
.foot-social a:hover{color:var(--amber-soft);transform:translateY(-2px);transition:color .35s var(--ease),transform .35s var(--ease)}
.foot-email{font-size:1.05rem}
.foot-mark{display:block;padding-block:clamp(2rem,5vh,3.5rem) clamp(1rem,3vh,2rem)}
.foot-logo{display:block;width:min(86%,860px);height:auto;margin-inline:auto;color:#221a0f;
  transition:color .5s var(--ease),transform .6s var(--ease-out)}
.foot-mark:hover .foot-logo{color:#3a2e1b}
.foot-legal{display:flex;flex-wrap:wrap;gap:.5rem 2rem;justify-content:space-between;padding-bottom:2rem;
  font-family:var(--font-ui);font-weight:500;font-size:.64rem;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}

/* ============================================================
   CONTACT FORM modal
   ============================================================ */
.cform{position:fixed;inset:0;z-index:9700;display:flex;align-items:center;justify-content:center;padding:clamp(1rem,4vw,3rem);
  background:rgba(12,9,4,.9);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s}
.cform.is-open{opacity:1;visibility:visible}
.cform__panel{position:relative;width:min(1100px,100%);max-height:90vh;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);
  background:linear-gradient(160deg,var(--ink-2),var(--ink));border:1px solid var(--line);border-radius:12px;
  padding:clamp(2rem,5vw,4rem);transform:scale(.96) translateY(14px);transition:transform .55s var(--ease-out)}
.cform.is-open .cform__panel{transform:none}
.cform__close{position:absolute;top:clamp(1rem,2vw,1.6rem);right:clamp(1rem,2vw,1.6rem);z-index:3;width:44px;height:44px;border-radius:50%;
  border:1px solid var(--line);background:transparent;color:var(--sand);font-size:1rem;cursor:pointer;display:grid;place-items:center;
  transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease)}
.cform__close:hover{background:var(--amber);border-color:var(--amber);color:var(--ink)}
.cform__left{display:flex;flex-direction:column;justify-content:flex-start}
.cform__logo{display:block;width:clamp(108px,13vw,158px);height:auto;color:var(--sand-dim);margin-bottom:clamp(1rem,3vh,1.8rem)}
.cform__hello{margin-top:auto;font-family:var(--font-display);font-weight:700;font-size:clamp(3rem,7vw,6rem);line-height:.95;letter-spacing:-.03em;color:var(--sand);
  transition:opacity .5s var(--ease),filter .5s var(--ease),transform .6s var(--ease-out)}
.cform__hello.is-swap{opacity:0;filter:blur(16px);transform:scale(1.06)}
.cform__ears{margin-top:clamp(.8rem,2vh,1.4rem);font-family:var(--font-display);font-style:italic;font-weight:300;
  font-size:clamp(1.1rem,2vw,1.7rem);color:var(--amber-soft);transition:opacity .5s var(--ease),filter .5s var(--ease)}
.cform__ears.is-swap{opacity:0;filter:blur(10px)}
.cform__email{margin-top:auto;padding-top:clamp(1.6rem,4vh,2.6rem);font-family:var(--font-ui);font-size:.66rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.cform__email a{color:var(--sand-dim);border-bottom:1px solid var(--line)}
.cform__email a:hover{color:var(--amber-soft)}
.cform__form{display:flex;flex-direction:column;gap:clamp(1rem,2.4vh,1.5rem)}
.cform__field{display:flex;flex-direction:column;gap:.45rem}
.cform__field>span{font-family:var(--font-ui);font-weight:500;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.cform__field input,.cform__field select,.cform__field textarea{
  font-family:var(--font-body);font-size:1rem;color:var(--sand);background:transparent;border:0;border-bottom:1px solid var(--line);
  padding:.55rem 0;outline:none;transition:border-color .4s var(--ease)}
.cform__field textarea{resize:vertical;min-height:3.2em}
.cform__field select{cursor:pointer}
.cform__field select option{background:var(--ink-2);color:var(--sand)}
.cform__field input:focus,.cform__field select:focus,.cform__field textarea:focus{border-color:var(--amber-soft)}
.cform__field input::placeholder,.cform__field textarea::placeholder{color:var(--muted)}
.cform__submit{align-self:flex-start;margin-top:.4rem}
.cform__submit:disabled{opacity:.4;pointer-events:none}
.cform__submit.is-dim{opacity:.5}
.cform__field.invalid>span{color:var(--warn,#d9694a)}
.cform__field.invalid input,.cform__field.invalid select,.cform__field.invalid textarea{border-color:var(--warn,#d9694a)}
.cform__thanks{font-size:.9rem;color:var(--amber-soft)}
@media (max-width:760px){
  .cform__panel{grid-template-columns:1fr;gap:1.8rem}
  .cform__left{order:-1}
  .cform__email{margin-top:1rem}
}
@media (prefers-reduced-motion:reduce){
  .cform__hello,.cform__ears{transition:none}
  .cform__hello.is-swap,.cform__ears.is-swap{opacity:1;filter:none;transform:none}
}
/* the custom cursor sits below the modal — restore the native cursor inside it */
.using-cursor .cform, .using-cursor .cform *{cursor:auto !important}
.using-cursor .cform a, .using-cursor .cform button, .using-cursor .cform select, .using-cursor .cform__close{cursor:pointer !important}
.using-cursor .cform input, .using-cursor .cform textarea{cursor:text !important}
