/* ============================================================
   IPHIOS LOGISTICS CORP. — 02 / components
   Everything that repeats or floats above the page: the film
   grain, the measurement rail, navigation, buttons, the
   preloader, the cursor, the port-code marquee, form controls.
   ============================================================ */

/* ---------- film grain ---------- */
.grain{
  position:fixed;inset:0;z-index:90;pointer-events:none;
  opacity:.5;mix-blend-mode:multiply;
  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='.82' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");
}

/* ---------- left measurement rail ---------- */
.rail{
  position:fixed;left:0;top:0;bottom:0;width:var(--rail);z-index:60;
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;
  padding:96px 0 28px;pointer-events:none;
  border-right:1px solid var(--line-soft);
  mix-blend-mode:multiply;
}
.rail__co{
  writing-mode:vertical-rl;transform:rotate(180deg);
  font-family:var(--f-mono);font-size:9.5px;letter-spacing:.24em;
  color:var(--ash-2);text-transform:uppercase;
}
.rail__bar{position:relative;flex:1;width:1px;background:var(--line);margin:20px 0}
.rail__fill{position:absolute;left:-1px;top:0;width:3px;height:0;background:var(--amber);transform-origin:top}
.rail__pct{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.14em;color:var(--ash-2)}

/* ---------- navigation ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:70;
  padding:22px var(--gut) 22px calc(var(--gut) + var(--rail));
  border-bottom:1px solid transparent;
  transition:background .5s var(--ease),border-color .5s var(--ease),padding .5s var(--ease);
}
.nav__in{
  max-width:1560px;margin:0 auto;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
}
.nav.is-stuck{
  background:rgba(251,249,245,.86);
  backdrop-filter:blur(14px) saturate(1.1);
  border-bottom-color:var(--line-soft);
  padding-top:14px;padding-bottom:14px;
}
.nav__brand{display:flex;align-items:center;gap:14px}
.nav__type{display:flex;align-items:baseline;gap:12px}

/* the mark. GSAP owns the wrapper's transform for the entrance;
   CSS owns the inner <img>, so hover and the two never collide. */
.nav__logo{display:block;flex:none;line-height:0}
.nav__logo img{
  display:block;height:30px;width:auto;
  filter:var(--logo-grade);
  transition:height .5s var(--ease),transform .6s var(--ease),filter .6s var(--ease);
}
/* the mark already draws speed lines — hovering just lets it run */
.nav__brand:hover .nav__logo img{transform:translateX(5px);filter:saturate(1.06) contrast(1.04)}
.nav.is-stuck .nav__logo img{height:24px}

.nav__mark{font-family:"Montserrat",sans-serif;font-size:21px;font-weight:800;letter-spacing:0.01em;line-height:1}
.nav__sub{font-family:var(--f-mono);font-size:9px;letter-spacing:.22em;color:var(--ash);text-transform:uppercase}
.nav__links{display:flex;align-items:center;gap:34px}
.nav__link{
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink);position:relative;padding:6px 0;
}
.nav__link::after{
  content:"";position:absolute;left:0;bottom:2px;height:1px;width:100%;
  background:currentColor;transform:scaleX(0);transform-origin:right;
  transition:transform .5s var(--ease);
}
.nav__link:hover::after{transform:scaleX(1);transform-origin:left}
.nav__burger{display:none}

/* ---------- buttons ---------- */
.pill{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  padding:11px 20px;border:1px solid var(--ink);border-radius:100px;
  position:relative;overflow:hidden;isolation:isolate;color:var(--ink);
}
.pill span{position:relative;z-index:2;transition:color .45s var(--ease)}
.pill::before{
  content:"";position:absolute;inset:0;z-index:1;background:var(--ink);
  transform:translateY(101%);transition:transform .55s var(--ease);
}
.pill:hover::before{transform:translateY(0)}
.pill:hover span{color:var(--paper)}

.pill--solid{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.pill--solid::before{background:var(--amber);transform:translateY(101%)}
.pill--solid:hover span{color:var(--ink)}

/* ---------- preloader ---------- */
.pre{position:fixed;inset:0;z-index:100;background:var(--paper);display:flex;align-items:center;justify-content:center}
.pre__slats{position:absolute;inset:0;display:flex}
.pre__slat{flex:1;background:var(--paper);border-right:1px solid rgba(20,18,15,.035)}
.pre__inner{position:relative;z-index:2;text-align:center}
.pre__logo{display:block;margin:0 auto 26px;line-height:0}
.pre__logo img{
  display:block;height:clamp(46px,7vw,74px);width:auto;margin:0 auto;
  filter:var(--logo-grade);
}
.pre__mark{
  font-family:var(--f-display);font-size:clamp(30px,5vw,54px);
  letter-spacing:.34em;font-weight:400;text-indent:.34em;
}
.pre__meta{margin-top:18px;display:flex;justify-content:center;gap:26px}
.pre__count{
  position:fixed;right:var(--gut);bottom:34px;z-index:102;
  font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;color:var(--ash);
}

/* ---------- cursor ---------- */
.cursor,.cursor-dot{position:fixed;top:0;left:0;z-index:95;pointer-events:none;border-radius:50%;mix-blend-mode:multiply}
.cursor{
  width:32px;height:32px;border:1px solid rgba(20,18,15,.45);margin:-16px 0 0 -16px;
  transition:width .35s var(--ease),height .35s var(--ease),margin .35s var(--ease),
             background .35s var(--ease),border-color .35s;
}
.cursor.is-big{width:74px;height:74px;margin:-37px 0 0 -37px;background:rgba(239,162,17,.16);border-color:transparent}
.cursor-dot{width:5px;height:5px;background:var(--ink);margin:-2.5px 0 0 -2.5px}

/* ---------- port-code marquee ---------- */
.marq{overflow:hidden;padding:20px 0;border-bottom:1px solid var(--line);background:var(--paper)}
.marq__track{display:flex;width:max-content;animation:marq-slide 46s linear infinite}
.marq span{
  font-family:var(--f-mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--ash-2);padding:0 22px;white-space:nowrap;
}
.marq span b{color:var(--amber-deep);font-weight:400}
@keyframes marq-slide{to{transform:translateX(-50%)}}

/* ---------- form controls ---------- */
.form{
  background:rgba(255,253,248,.62);
  backdrop-filter:blur(6px);
  border:1px solid rgba(20,18,15,.11);
  padding:clamp(22px,2.6vw,40px);
}
.form__seg{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 26px}
.seg{
  font-family:var(--f-mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;
  padding:9px 15px;border:1px solid rgba(20,18,15,.2);border-radius:100px;
  transition:.4s var(--ease);
}
.seg.is-on{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.field{position:relative;margin-bottom:22px}
.field label{display:block;margin-bottom:8px}
.field input,.field textarea{
  width:100%;background:transparent;border:0;border-bottom:1px solid rgba(20,18,15,.24);
  padding:9px 0;font-family:var(--f-body);font-size:16px;font-weight:300;color:var(--ink);
  transition:border-color .4s var(--ease);
}
.field input::placeholder,.field textarea::placeholder{color:rgba(20,18,15,.26)}
.field input:focus,.field textarea:focus{outline:0;border-bottom-color:var(--amber-deep)}
.field textarea{resize:vertical;min-height:70px;line-height:1.5}
.two{display:grid;grid-template-columns:1fr 1fr;gap:22px}

.form__foot{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:30px;flex-wrap:wrap}
.sent{
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--amber-deep);opacity:0;transition:opacity .5s var(--ease);
}
.sent.is-on{opacity:1}

/* ---------- responsive ---------- */
@media(max-width:760px){
  .nav__logo img{height:26px}
  .nav.is-stuck .nav__logo img{height:22px}
  .nav__sub{display:none}
  .rail{display:none}
  .nav__links{display:none}
  .nav__burger{display:inline-flex}
  .cursor,.cursor-dot{display:none}
  .two{grid-template-columns:1fr}
}





