/* ═══════════════════════════════════════════════════════════════════
   GEORGE GALLO — FIELD
   One living point-cloud behind everything. Type stays out of its way.
   ═══════════════════════════════════════════════════════════════════ */

:root{
  --ink:      #05070A;
  --ink-2:    #080B10;
  --white:    #EEF3F1;
  --dim:      #7E8A92;
  --dimmer:   #545E66;

  --green:    #3FE08C;
  --cyan:     #35D3D6;
  --blue:     #3D5BFF;
  --violet:   #6B3CFF;

  --line:     rgba(255,255,255,.09);
  --line-2:   rgba(255,255,255,.05);
  --glass:    rgba(10,13,18,.55);

  --display:  "Outfit", "Poppins", "Helvetica Neue", Arial, sans-serif;
  --sans:     "Inter", "Helvetica Neue", Arial, sans-serif;

  --pad:      clamp(20px, 4.4vw, 76px);
  --ease:     cubic-bezier(.16,1,.3,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--ink); color:var(--white);
  font-family:var(--sans); font-size:15px; line-height:1.6;
  overflow-x:hidden; -webkit-font-smoothing:antialiased;
}
body.lock{ overflow:hidden; }
h1,h2,h3{ margin:0; font-weight:400; }
p{ margin:0; }
ul,ol{ margin:0; padding:0; list-style:none; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; }
canvas,svg{ display:block; }
::selection{ background:var(--green); color:var(--ink); }
:focus-visible{ outline:1.5px solid var(--green); outline-offset:4px; border-radius:3px; }

.skip{ position:fixed; top:-80px; left:16px; z-index:999; background:var(--green); color:var(--ink); padding:9px 14px; font-size:12px; }
.skip:focus{ top:14px; }

/* ── FIELD ───────────────────────────────────────────────────────── */
.field{ position:fixed; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.field canvas{ position:absolute; inset:0; width:100%; height:100%; }
.field__aura{ position:absolute; border-radius:50%; filter:blur(90px); opacity:.5; }
.field__aura--a{ width:60vw; height:60vw; left:-22vw; top:-18vw; background:radial-gradient(circle,rgba(53,211,214,.30),transparent 66%); }
.field__aura--b{ width:56vw; height:56vw; left:-16vw; bottom:-22vw; background:radial-gradient(circle,rgba(61,91,255,.26),transparent 66%); }
.field__aura--c{ width:48vw; height:48vw; right:-16vw; top:24vh; background:radial-gradient(circle,rgba(107,60,255,.18),transparent 66%); }
.field__scan{
  position:absolute; inset:0; opacity:.35;
  background:repeating-linear-gradient(180deg,rgba(255,255,255,.026) 0 1px,transparent 1px 3px);
}

/* ── BOOT ────────────────────────────────────────────────────────── */
.boot{
  position:fixed; inset:0; z-index:990; background:var(--ink);
  display:grid; place-content:center; gap:16px; justify-items:center;
  transition:opacity .9s var(--ease), visibility .9s;
}
.boot.done{ opacity:0; visibility:hidden; }
.boot__row{ display:flex; align-items:baseline; gap:10px; font-family:var(--display); font-weight:200; }
.boot__row span{ font-size:clamp(38px,7vw,72px); letter-spacing:-.02em; }
.boot__row em{ font-style:normal; font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--dimmer); font-family:var(--sans); font-weight:600; }
.boot__bar{ width:min(46vw,260px); height:1px; background:var(--line); overflow:hidden; }
.boot__bar i{ display:block; height:100%; width:0%; background:linear-gradient(90deg,var(--green),var(--blue)); }

/* ── CURSOR ──────────────────────────────────────────────────────── */
.cursor{ position:fixed; top:0; left:0; z-index:960; pointer-events:none; width:26px; height:26px; margin:-13px 0 0 -13px; }
.cursor span{
  position:absolute; inset:0; border:1px solid rgba(238,243,241,.5); border-radius:50%;
  transition:transform .35s var(--ease), border-color .35s, background .35s;
}
.cursor.hot span{ transform:scale(1.9); border-color:var(--green); background:rgba(63,224,140,.12); }
@media (hover:none),(pointer:coarse){ .cursor{ display:none; } }

/* ── TYPE ────────────────────────────────────────────────────────── */
.display{
  font-family:var(--display); font-weight:200;
  letter-spacing:-.028em; line-height:1.02;
  text-shadow:0 0 42px rgba(120,190,255,.18);
}
.display--xl{ font-size:clamp(46px,8.2vw,124px); line-height:1.06; }
.display--lg{ font-size:clamp(34px,5.4vw,80px); line-height:1.08; }
.display--md{ font-size:clamp(30px,4.2vw,62px); line-height:1.08; }
.display.center{ text-align:center; }

.display .w{
  display:inline-block; overflow:hidden; vertical-align:top;
  padding:.06em .04em .20em; margin:-.06em -.04em -.20em;   /* room for descenders */
}
.display .w i{ display:inline-block; font-style:normal; transform:translateY(115%); opacity:0; }
.display.in .w i{ transform:none; opacity:1; transition:transform 1s var(--ease), opacity .7s ease; }

.micro{
  font-size:10.5px; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  line-height:1.6; color:var(--dim);
}
.micro--lead{ color:var(--white); font-size:11.5px; letter-spacing:.1em; }
.micro--center{ text-align:center; color:var(--dimmer); }
.note{ color:var(--dim); font-size:14px; max-width:46ch; line-height:1.7; }
.note--center{ margin:22px auto 0; text-align:center; }
.note--sub{ margin-top:16px; max-width:56ch; color:var(--dimmer); font-size:13px; }

/* ── PILLS ───────────────────────────────────────────────────────── */
.pill{
  display:inline-flex; align-items:center; gap:9px;
  padding:10px 18px; border-radius:999px;
  border:1px solid var(--line); background:var(--glass);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  font-size:12.5px; letter-spacing:.01em; white-space:nowrap;
  transition:border-color .4s var(--ease), background .4s var(--ease), color .4s;
}
.pill i{ width:5px; height:5px; border-radius:50%; background:var(--green); box-shadow:0 0 10px var(--green); }
.pill:hover{ border-color:rgba(63,224,140,.55); background:rgba(63,224,140,.09); }
.pill--solid{ background:var(--white); color:var(--ink); border-color:transparent; justify-content:center; padding:14px 22px; }
.pill--solid i{ background:var(--ink); box-shadow:none; }
.pill--solid:hover{ background:var(--green); color:var(--ink); }

/* ── NAV ─────────────────────────────────────────────────────────── */
.nav{
  position:fixed; top:14px; left:50%; transform:translateX(-50%);
  z-index:900; width:min(1180px, calc(100% - 28px));
  display:flex; align-items:center; gap:clamp(14px,2.4vw,40px);
  padding:9px 9px 9px 18px; border-radius:999px;
  border:1px solid var(--line-2); background:rgba(6,9,13,.5);
  backdrop-filter:blur(16px) saturate(1.2); -webkit-backdrop-filter:blur(16px) saturate(1.2);
  transition:transform .6s var(--ease), background .5s, border-color .5s;
}
.nav.hide{ transform:translateX(-50%) translateY(-150%); }
.nav.solid{ background:rgba(6,9,13,.78); border-color:var(--line); }
.nav__brand{ display:flex; align-items:center; }
.wordmark{
  font-size:12.5px; font-weight:500; text-transform:uppercase;
  letter-spacing:.34em; white-space:nowrap; padding-right:.34em;
  transition:color .4s var(--ease);
}
.nav__brand:hover .wordmark,.foot__l:hover .wordmark{ color:var(--green); }
.nav__links{ display:flex; gap:clamp(12px,1.8vw,28px); margin-left:auto; }
.nav__links a{ font-size:13px; color:var(--dim); position:relative; padding:4px 2px; transition:color .3s; }
.nav__links a::after{
  content:""; position:absolute; left:50%; bottom:0; width:0; height:1px;
  background:var(--green); transform:translateX(-50%); transition:width .4s var(--ease);
}
.nav__links a:hover,.nav__links a.on{ color:var(--white); }
.nav__links a:hover::after,.nav__links a.on::after{ width:100%; }
.pill--edge{ padding:9px 15px; font-size:12.5px; }
.nav__burger{ display:none; width:36px; height:36px; position:relative; margin-left:auto; }
.nav__burger span{ position:absolute; left:9px; right:9px; height:1px; background:var(--white); transition:transform .4s var(--ease); }
.nav__burger span:first-child{ top:16px; } .nav__burger span:last-child{ top:21px; }
.nav__burger[aria-expanded="true"] span:first-child{ transform:translateY(2.5px) rotate(45deg); }
.nav__burger[aria-expanded="true"] span:last-child{ transform:translateY(-2.5px) rotate(-45deg); }

.sheet{
  position:fixed; inset:0; z-index:895; background:rgba(5,7,10,.94);
  backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  display:flex; flex-direction:column; justify-content:center; gap:2px; padding:0 var(--pad);
}
.sheet[hidden]{ display:none; }
.sheet a{
  font-family:var(--display); font-weight:200; font-size:clamp(30px,8vw,52px);
  padding:12px 0; border-bottom:1px solid var(--line-2);
}

/* ── PANELS ──────────────────────────────────────────────────────── */
main{ position:relative; z-index:2; }
.panel{
  position:relative; min-height:100svh;
  padding:clamp(110px,15vh,180px) var(--pad) clamp(60px,9vh,110px);
  display:flex; flex-direction:column;
}
[data-fade]{ opacity:0; transform:translateY(18px); }
[data-fade].in{ opacity:1; transform:none; transition:opacity .9s var(--ease), transform 1s var(--ease); }

/* ── 01 HERO ─────────────────────────────────────────────────────── */
.hero{ justify-content:center; }
.hero .display{ max-width:12ch; }
.hero__type{ margin-bottom:auto; }
.hero__base{
  margin-top:auto; padding-top:clamp(28px,5vh,56px);
  border-top:1px solid var(--line-2);
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,auto);
  gap:clamp(24px,6vw,90px); align-items:end;
}
.hero__base-r{ display:grid; gap:20px; justify-items:end; }
.hero__base .note{ max-width:36ch; font-size:12.5px; text-align:right; }
.scrollcue{
  position:absolute; left:var(--pad); bottom:24px;
  display:flex; align-items:center; gap:10px;
  font-size:10px; font-weight:600; letter-spacing:.24em; text-transform:uppercase; color:var(--dimmer);
}
.scrollcue em{ font-style:normal; }
.scrollcue span{ width:48px; height:1px; background:var(--line); position:relative; overflow:hidden; }
.scrollcue span::after{
  content:""; position:absolute; inset:0; background:var(--green);
  transform:translateX(-100%); animation:cue 2.4s var(--ease) infinite;
}
@keyframes cue{ 0%{transform:translateX(-100%)} 55%{transform:translateX(0)} 100%{transform:translateX(100%)} }

/* ── 02 POSITION ─────────────────────────────────────────────────── */
.position{ justify-content:center; align-items:center; text-align:center; }
.stats{
  margin-top:auto; padding-top:clamp(34px,7vh,72px);
  width:100%; display:grid; grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--line-2);
}
.stats > div{ padding:0 clamp(10px,2vw,26px); border-left:1px solid var(--line-2); text-align:left; }
.stats > div:first-child{ border-left:0; padding-left:0; }
.stat{ display:block; font-family:var(--display); font-weight:200; font-size:clamp(30px,4.4vw,60px); line-height:1; letter-spacing:-.02em; }
.stats em{ display:block; margin-top:8px; font-style:normal; font-size:10.5px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--dimmer); }

/* ── 03 CAPABILITIES ─────────────────────────────────────────────── */
.caps__head{ max-width:640px; }
.caps__head .micro{ margin-bottom:16px; }
.list{ margin-top:clamp(34px,6vh,68px); max-width:760px; }
.row{
  display:grid; grid-template-columns:46px 1fr; gap:0 20px; align-items:baseline;
  padding:20px 14px 20px 0; border-top:1px solid var(--line-2);
  position:relative; cursor:default;
  transition:background .5s var(--ease), padding-left .5s var(--ease);
}
.row::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px;
  background:linear-gradient(90deg,var(--green),var(--blue)); transform:scaleX(0);
  transform-origin:left; transition:transform .7s var(--ease);
}
.row:hover{ background:rgba(255,255,255,.022); padding-left:14px; }
.row:hover::after{ transform:scaleX(1); }
.row__i{ font-size:11px; font-weight:600; letter-spacing:.1em; color:var(--dimmer); transition:color .4s; }
.row:hover .row__i{ color:var(--green); }
.row h3{ font-family:var(--display); font-weight:300; font-size:clamp(19px,2.1vw,28px); letter-spacing:-.015em; }
.row p{ grid-column:2; margin-top:6px; color:var(--dim); font-size:13.5px; max-width:52ch; }

/* ── 04 WORK ─────────────────────────────────────────────────────── */
.work__head{ width:100%; max-width:560px; margin-left:auto; text-align:right; }
.work__head .micro{ margin-bottom:14px; }
.cards{
  margin-top:clamp(30px,5vh,58px); width:100%; max-width:min(1000px,72vw); margin-left:auto;
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1px; background:var(--line-2); border:1px solid var(--line-2);
}
.card{
  background:rgba(8,11,16,.58); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  padding:20px 22px; position:relative; overflow:hidden;
  transition:background .5s var(--ease);
}
.card::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:2px;
  background:linear-gradient(180deg,var(--green),var(--blue));
  transform:scaleY(0); transform-origin:top; transition:transform .6s var(--ease);
}
.card:hover{ background:rgba(14,19,26,.8); }
.card:hover::before{ transform:scaleY(1); }
.card__tag{ font-size:10px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--dimmer); }
.card h3{ font-family:var(--display); font-weight:300; font-size:clamp(20px,2.3vw,30px); margin:7px 0 7px; letter-spacing:-.015em; }
.card p{ color:var(--dim); font-size:13px; max-width:48ch; }
.card{ display:flex; flex-direction:column; }
.card__go{
  margin-top:14px; font-size:11px; letter-spacing:.05em; color:var(--dimmer);
  display:inline-flex; align-items:center; gap:7px; transition:color .4s;
}
.card__go::after{ content:"↗"; font-size:12px; transition:transform .4s var(--ease); }
.card:hover .card__go{ color:var(--green); }
.card:hover .card__go::after{ transform:translate(2px,-2px); }

/* ── 05 METHOD ───────────────────────────────────────────────────── */
.method__head{ max-width:620px; }
.method__head .micro{ margin-bottom:14px; }
.method__head .note{ margin-top:18px; }
.moves{
  margin-top:clamp(34px,6vh,70px);
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line-2);
  border-top:1px solid var(--line-2); border-bottom:1px solid var(--line-2);
}
.moves li{
  background:rgba(5,7,10,.5); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  padding:26px 22px 34px; position:relative;
  transition:background .5s var(--ease);
}
.moves li:hover{ background:rgba(12,17,24,.78); }
.moves span{ font-size:11px; font-weight:600; letter-spacing:.12em; color:var(--green); }
.moves h3{ font-family:var(--display); font-weight:300; font-size:clamp(22px,2.6vw,34px); margin:14px 0 10px; letter-spacing:-.02em; }
.moves p{ color:var(--dim); font-size:13px; }

/* ── 06 CLIENTS ──────────────────────────────────────────────────── */
.clients{ justify-content:center; align-items:center; }
.clients__head{ width:100%; }
.clients__head{ text-align:center; }
.clients__head .micro{ margin-bottom:14px; }
.marquee{
  align-self:stretch; width:auto;
  margin:clamp(30px,5vh,56px) calc(var(--pad) * -1) 0;
  border-top:1px solid var(--line-2); border-bottom:1px solid var(--line-2);
  overflow:hidden; padding:18px 0;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.marquee__row{ display:flex; align-items:center; gap:26px; width:max-content; animation:slide 60s linear infinite; }
.marquee__row span{
  font-family:var(--display); font-weight:200; font-size:clamp(20px,2.4vw,34px);
  white-space:nowrap; color:rgba(238,243,241,.42); transition:color .4s;
}
.marquee__row span:hover{ color:var(--white); }
.marquee__row i{ font-style:normal; color:var(--green); font-size:12px; opacity:.6; }
@keyframes slide{ from{transform:translateX(0)} to{transform:translateX(-50%)} }
.marquee:hover .marquee__row{ animation-play-state:paused; }

.index{ width:100%; max-width:1160px; margin:clamp(30px,5vh,56px) auto 0; }
.index__filters{ display:flex; flex-wrap:wrap; justify-content:center; gap:7px; }
.tagf{
  padding:7px 14px; border-radius:999px; border:1px solid var(--line-2); color:var(--dimmer);
  font-size:11px; font-weight:600; letter-spacing:.06em;
  transition:border-color .3s, color .3s, background .3s;
}
.tagf:hover{ color:var(--white); border-color:rgba(255,255,255,.25); }
.tagf.on{ background:var(--green); border-color:var(--green); color:var(--ink); }
.index__search{ display:block; margin:18px auto 0; max-width:340px; }
.index__search input{
  width:100%; background:transparent; border:0; border-bottom:1px solid var(--line);
  padding:11px 4px; color:var(--white); font-family:var(--sans); font-size:14px; text-align:center;
  transition:border-color .4s;
}
.index__search input:focus{ outline:none; border-bottom-color:var(--green); }
.index__list{
  margin-top:clamp(24px,4vh,44px);
  columns:6 150px; column-gap:clamp(14px,2vw,32px);
}
.index__list li{
  break-inside:avoid; padding:5px 0;
  font-size:12.5px; color:var(--dim); cursor:default;
  transition:color .3s, transform .35s var(--ease);
}
.index__list li[data-featured]{ color:rgba(238,243,241,.86); }
.index__list li:hover{ color:var(--green); transform:translateX(3px); }
.index__list li.out{ display:none; }
.index__count{ margin-top:26px; }

/* ── 07 CONTACT ──────────────────────────────────────────────────── */
.contact{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,460px);
  gap:clamp(34px,6vw,90px); align-content:center;
}
.contact__left .micro{ margin-bottom:16px; }
.contact__left .note{ margin-top:22px; }
.contact__direct{ margin-top:34px; display:grid; gap:8px; justify-items:start; }
.contact__direct a{
  font-family:var(--display); font-weight:300; font-size:clamp(18px,2vw,26px);
  border-bottom:1px solid var(--line); padding-bottom:3px; transition:color .3s, border-color .3s;
}
.contact__direct a:hover{ color:var(--green); border-color:var(--green); }

.form{
  display:grid; gap:18px; align-self:center;
  padding:clamp(22px,3vw,34px); border:1px solid var(--line-2); border-radius:18px;
  background:rgba(8,11,16,.55); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
}
.f{ position:relative; }
.f input,.f textarea{
  width:100%; background:transparent; border:0; border-bottom:1px solid var(--line);
  padding:15px 0 9px; color:var(--white); font-family:var(--sans); font-size:15px; resize:vertical;
  transition:border-color .4s var(--ease);
}
.f label{
  position:absolute; left:0; top:15px; color:var(--dimmer);
  font-size:11px; font-weight:600; letter-spacing:.12em; text-transform:uppercase;
  pointer-events:none; transform-origin:left top;
  transition:transform .4s var(--ease), color .4s;
}
.f input:focus,.f textarea:focus{ outline:none; border-bottom-color:var(--green); }
.f input:focus + label,.f textarea:focus + label,
.f input:not(:placeholder-shown) + label,.f textarea:not(:placeholder-shown) + label{
  transform:translateY(-16px) scale(.86); color:var(--green);
}
.f.bad input,.f.bad textarea{ border-bottom-color:#FF5A47; }
.f--tags .micro{ margin-bottom:12px; }
.tags{ display:flex; flex-wrap:wrap; gap:7px; }
.tag{
  padding:7px 13px; border-radius:999px; border:1px solid var(--line); color:var(--dim);
  font-size:11.5px; transition:border-color .3s, color .3s, background .3s;
}
.tag:hover{ color:var(--white); border-color:rgba(255,255,255,.28); }
.tag.on{ background:var(--green); border-color:var(--green); color:var(--ink); }
.status{ font-size:12px; color:var(--green); min-height:18px; }
.status.bad{ color:#FF5A47; }

/* ── FOOTER ──────────────────────────────────────────────────────── */
.foot{
  position:relative; z-index:2;
  border-top:1px solid var(--line-2);
  padding:26px var(--pad);
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  background:rgba(5,7,10,.7); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  font-size:11.5px; color:var(--dimmer);
}
.foot__l{ display:flex; align-items:center; color:var(--white); }
.foot__c{ display:flex; gap:18px; }
.foot__c a{ transition:color .3s; }
.foot__c a:hover{ color:var(--green); }

/* ── RESPONSIVE ──────────────────────────────────────────────────── */
@media (max-width:1080px){
  .nav__links{ display:none; }
  .pill--edge{ display:none; }
  .nav__burger{ display:block; }
  .contact{ grid-template-columns:1fr; }
  .moves{ grid-template-columns:repeat(2,1fr); }
  .work{ align-items:stretch; }
  .work__head{ text-align:left; margin-left:0; }
  .cards{ margin-left:0; max-width:none; grid-template-columns:1fr; }
}
@media (max-width:720px){
  .hero__base{ grid-template-columns:1fr; gap:22px; }
  .hero__base-r{ justify-items:start; }
  .hero__base .note{ text-align:left; max-width:none; }
  .wordmark{ letter-spacing:.22em; font-size:11.5px; }
  .index__list{ columns:2 120px; }
  .scrollcue{ display:none; }
  .stats{ grid-template-columns:repeat(2,1fr); gap:22px 0; }
  .stats > div:nth-child(3){ border-left:0; padding-left:0; }
  .moves{ grid-template-columns:1fr; }
  .row{ grid-template-columns:34px 1fr; }
  .field__scan{ display:none; }
  .field__aura{ opacity:.3; filter:blur(70px); }
  /* a light veil so the type always wins on small screens */
  .field::after{
    content:""; position:absolute; inset:0; pointer-events:none;
    background:linear-gradient(180deg,rgba(5,7,10,.42),rgba(5,7,10,.30) 50%,rgba(5,7,10,.46));
  }
  .foot{ flex-direction:column; align-items:flex-start; }
}

/* ── REDUCED MOTION ──────────────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  [data-fade]{ opacity:1 !important; transform:none !important; }
  .display .w i{ transform:none !important; opacity:1 !important; }
}
