/* =====================================================================
   Sai Dhyeya — UI/UX portfolio
   Static clone of the reference design. Desktop-first, 1440px baseline.
   ===================================================================== */

/* ---------- Design tokens ---------- */
:root{
  --bg:#020C24;
  --blue:#0A66C2;
  --blue-hover:#0B74DE;
  --white:#FFFFFF;

  --text-strong:#FFFFFF;          /* headings, titles, buttons      */
  --text-heading:#DEF0FF;         /* h1 / logo / section titles      */
  --text-body:#CBD0D6;            /* paragraphs, descriptions        */
  --text-nav:#D2D6DC;             /* nav + hero description          */
  --text-date:#A2A6AF;            /* italic timeline dates           */
  --text-meta:#ADC7DF;            /* timeline role / location        */
  --text-muted:#6F7684;           /* footer "Built by"               */
  --text-cardicon:#C7CDD6;

  --pill-border:#8A93A6;
  --pill-text:#DFE9F5;
  --divider:#7388A1;
  --icon-bg:#313D54;

  --container:1246px;
  --header-h:52px;

  --font-head:'Poppins',system-ui,sans-serif;
  --font-body:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--bg);
  color:var(--text-body);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.5;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;display:block}
h1,h2,h3,p,ul,ol,figure{margin:0}
ul,ol{padding:0;list-style:none}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--blue);color:#fff;padding:10px 16px;border-radius:0 0 8px 0;
}
.skip-link:focus{left:0}

:focus-visible{outline:2px solid #6FB3F2;outline-offset:3px;border-radius:4px}

/* ---------- Layout ---------- */
.container{
  width:min(100% - 64px, var(--container));
  margin-inline:auto;
}

/* ---------- Header ---------- */
.site-header{
  position:relative;
  z-index:20;
  height:var(--header-h);
  display:flex;
  align-items:center;
  padding-inline:43px;
}
.logo{
  font-family:var(--font-head);
  font-weight:500;
  font-size:23px;
  line-height:1;
  color:var(--text-heading);
  letter-spacing:.2px;
}
.site-nav{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
}
.site-nav__list{display:flex;align-items:center;gap:40px}
.site-nav__list a{
  font-family:var(--font-body);
  font-size:17px;
  font-weight:400;
  color:var(--text-nav);
  transition:color .2s ease;
}
.site-nav__list a:hover{color:var(--white)}

.nav-toggle{
  display:none;
  margin-left:auto;
  width:40px;height:40px;
  border:1px solid var(--pill-border);
  border-radius:8px;
  background:transparent;
  padding:0;
  cursor:pointer;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
}
.nav-toggle__bar{display:block;width:18px;height:2px;background:#fff;border-radius:2px}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-family:var(--font-head);
  font-weight:500;
  font-size:15px;
  line-height:1;
  border-radius:8px;
  transition:background-color .2s ease,border-color .2s ease,transform .15s ease;
}
.btn--ghost{
  color:var(--white);
  border:1px solid #AEB6C4;
  background:rgba(2,12,36,.35);
  padding:14px 38px;
}
.btn--ghost:hover{border-color:#fff;background:rgba(255,255,255,.06)}
.btn--primary{
  color:var(--white);
  background:var(--blue);
  padding:14px 38px;
  border:1px solid transparent;
}
.btn--primary:hover{background:var(--blue-hover)}
.btn--prototype{
  color:var(--white);
  /* Reference uses a "glass" fill: near-opaque #0A66C2 at both ends fading
     through a transparent centre that reveals the project glow behind it. */
  background:linear-gradient(90deg,
    rgba(10,102,194,1) 0%,
    rgba(10,102,194,.62) 14%,
    rgba(10,102,194,.22) 34%,
    rgba(10,102,194,.02) 50%,
    rgba(10,102,194,.26) 66%,
    rgba(16,116,201,.66) 85%,
    rgba(52,128,205,1) 100%);
  border-radius:8px;
  padding:15px 21px;
  font-size:15px;
}
.btn--prototype span{text-decoration:underline;text-underline-offset:3px}
.btn--prototype:hover{background:linear-gradient(90deg,
    rgba(11,116,222,1) 0%,
    rgba(11,116,222,.68) 14%,
    rgba(11,116,222,.28) 34%,
    rgba(11,116,222,.06) 50%,
    rgba(11,116,222,.32) 66%,
    rgba(18,128,222,.72) 85%,
    rgba(58,140,222,1) 100%)}

/* ---------- Pills ---------- */
.pill{
  display:flex;
  align-items:center;
  justify-content:center;
  width:max-content;
  min-width:139px;
  margin-inline:auto;
  border:1px solid var(--pill-border);
  color:var(--pill-text);
  font-family:var(--font-head);
  font-weight:500;
  font-size:16px;
  line-height:1;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:16px 24px;
}
.pill--lg{min-width:174px}

/* ---------- Glows ---------- */
.glow{position:absolute;pointer-events:none}

.glow--hero{
  inset:0;
  z-index:0;
  background:
    radial-gradient(52% 46% at 21% 10%, rgba(24,88,150,.62) 0%, rgba(24,88,150,0) 72%),
    radial-gradient(64% 54% at 4% 26%, rgba(19,66,116,.5) 0%, rgba(19,66,116,0) 72%),
    radial-gradient(45% 40% at 34% 6%, rgba(28,102,168,.32) 0%, rgba(28,102,168,0) 75%);
}

.glow--project{
  z-index:-1;
  top:-32px;right:-9px;bottom:-19px;left:-32px;
  box-shadow:0 0 130px 20px rgba(92,112,140,.10);
  background:radial-gradient(82% 96% at 55% 44%,
    rgba(120,144,172,.54) 0%,
    rgba(110,132,160,.41) 45%,
    rgba(96,116,142,.26) 74%,
    rgba(88,106,130,.16) 100%);
}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  overflow:hidden;
  padding-block:83px 90px;
}
.hero__grid{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:1.25fr 1fr;
  align-items:end;
  gap:40px;
}
.hero__title{
  font-family:var(--font-head);
  font-weight:500;
  font-size:73px;
  line-height:1.05;
  letter-spacing:-.5px;
  background:linear-gradient(100deg,#D2E8FF 0%,#FFFFFF 46%,#E9F4FF 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.hero__subtitle{
  margin-top:35px;
  font-family:var(--font-body);
  font-size:25px;
  font-weight:400;
  line-height:1.3;
  color:#F3F5F7;
}
.hero__desc{
  margin-top:20px;
  max-width:600px;
  font-size:16px;
  line-height:1.42;
  color:var(--text-nav);
}
.hero__actions{
  margin-top:36px;
  display:flex;
  align-items:center;
  gap:23px;
  flex-wrap:wrap;
}
.hero__media{display:flex;justify-content:center}
.hero__portrait{
  width:347px;
  height:347px;
  border-radius:50%;
  object-fit:cover;
  object-position:52% 22%;
  box-shadow:0 0 90px 10px rgba(60,130,200,.28);
}

/* ---------- Sections ---------- */
.section{position:relative;padding-bottom:0}
.about{padding-top:98px}
.tools{padding-top:145px}
.projects{padding-top:189px}
.education{padding-top:91px}
.contact{padding-top:138px}

.section__title{
  margin-top:55px;
  font-family:var(--font-head);
  font-weight:500;
  font-size:24px;
  line-height:1.3;
  color:var(--text-heading);
}

/* ---------- About ---------- */
.about__text{
  margin-top:27px;
  font-size:15px;
  line-height:1.51;
  color:#CCCED3;
}

/* ---------- Tools ---------- */
.tools__list{
  margin-top:53px;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:31px;
  flex-wrap:wrap;
}
.tool__circle{
  display:grid;
  place-items:center;
  width:68px;
  height:68px;
  border-radius:50%;
  background:var(--icon-bg);
}
.tool__figma{height:34px;width:auto}
.tool__badge{width:31px;height:31px}
.tool__openai{width:43px;height:43px;border-radius:50%;overflow:hidden}

/* ---------- Projects ---------- */
.project{
  display:grid;
  grid-template-columns:423px 1fr;
  align-items:center;
  gap:34px;
  padding-left:46px;
  margin-top:56px;
}
.project + .project{margin-top:64px}
.project--reverse{
  grid-template-columns:1fr 423px;
  padding-left:319px;
  padding-right:68px;
}
.project--reverse .project__media{order:2}
.project--reverse .project__body{order:1}

.project__media{display:flex;justify-content:center}
.project__phones{width:100%;max-width:411px;height:auto}

.project__body{position:relative;z-index:1;max-width:430px}
.project__title{
  font-family:var(--font-head);
  font-weight:600;
  font-size:18px;
  line-height:1.3;
  color:var(--text-strong);
}
.project__desc{
  margin-top:17px;
  font-size:13.5px;
  line-height:1.5;
  color:#C4CCD6;
  max-width:430px;
}
.project__body .btn--prototype{margin-top:24px}

.projects__more{
  margin-top:121px;
  display:flex;
  justify-content:center;
}
.projects__more .btn{padding:13px 35px}
/* "All projects" uses the same glass fill as the project buttons. */
.projects__more .btn--primary{
  background:linear-gradient(90deg,
    rgba(10,102,194,1) 0%,
    rgba(10,102,194,.58) 14%,
    rgba(10,102,194,.16) 36%,
    rgba(10,102,194,.01) 50%,
    rgba(10,102,194,.16) 64%,
    rgba(10,102,194,.58) 86%,
    rgba(10,102,194,1) 100%);
}
.projects__more .btn--primary:hover{
  background:linear-gradient(90deg,
    rgba(11,116,222,1) 0%,
    rgba(11,116,222,.64) 14%,
    rgba(11,116,222,.22) 36%,
    rgba(11,116,222,.05) 50%,
    rgba(11,116,222,.22) 64%,
    rgba(11,116,222,.64) 86%,
    rgba(11,116,222,1) 100%);
}

/* ---------- Laptop mockup ---------- */
.laptop{width:100%;max-width:423px}
.laptop__screen{
  background:#FAFBFC;
  border-radius:14px 14px 4px 4px;
  padding:26px 12px;
  box-shadow:0 34px 60px rgba(0,0,0,.5);
}
.laptop__screen img{
  width:100%;
  height:auto;
  border-radius:4px 4px 1px 1px;
  background:#0a1020;
}
.laptop__base{
  position:relative;
  height:9px;
  margin:0 -33px;
  background:linear-gradient(180deg,#F2F4F6 0%,#D3D9DF 34%,#A7AFB9 78%,#8D959F 100%);
  border-radius:2px 2px 9px 9px;
  box-shadow:0 12px 22px rgba(0,0,0,.45);
}
.laptop__notch{
  position:absolute;
  left:50%;
  top:0;
  transform:translateX(-50%);
  width:132px;
  height:7px;
  border-radius:0 0 8px 8px;
  background:linear-gradient(180deg,#B4BCC6 0%,#8E97A2 100%);
}

/* ---------- Education timeline ---------- */
.timeline{
  position:relative;
  margin-top:101px;
  max-width:707px;
  margin-inline:auto;
}
.timeline::before{
  content:"";
  position:absolute;
  left:9px;
  top:-58px;
  bottom:-52px;
  width:2px;
  background:rgba(255,255,255,.24);
}
.timeline__item{position:relative;padding-left:127px}
.timeline__item + .timeline__item{margin-top:45.5px}
.timeline__item::before{
  content:"";
  position:absolute;
  left:0;
  top:2px;
  width:18px;
  height:18px;
  border-radius:50%;
  background:var(--blue);
  box-shadow:0 0 0 5.5px rgba(10,102,194,.38);
}
.timeline__title{
  font-family:var(--font-head);
  font-weight:600;
  font-size:18px;
  line-height:1.3;
  color:var(--text-strong);
}
.timeline__date{
  font-family:var(--font-body);
  font-style:italic;
  font-weight:400;
  font-size:18px;
  color:var(--text-date);
}
.timeline__meta{
  margin-top:17px;
  font-size:16px;
  line-height:1.4;
  color:var(--text-meta);
}
.timeline__meta + .timeline__meta{margin-top:15px}

/* ---------- Contact ---------- */
.contact__cards{
  margin-top:53px;
  max-width:856px;
  margin-left:176px;
  margin-right:auto;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:52px;
}
.contact-card{
  display:flex;
  flex-direction:column;
  align-items:center;
  padding:32px 28px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:22px;
  background:rgba(255,255,255,.015);
  transition:border-color .2s ease,background-color .2s ease,transform .2s ease;
}
.contact-card:hover{border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.035);transform:translateY(-3px)}
.contact-card__icon{
  display:grid;
  place-items:center;
  width:47px;height:47px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.28);
  color:var(--text-cardicon);
}
.contact-card__icon svg{width:22px;height:22px}
.contact-card__divider{
  display:block;
  width:240px;
  max-width:100%;
  height:1px;
  margin:30px 0 39px;
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.39) 50%,rgba(255,255,255,0));
}
.contact-card__value{
  font-family:var(--font-head);
  font-weight:500;
  font-size:24px;
  line-height:1.2;
  color:#EBEDF0;
  text-align:center;
  word-break:break-word;
}

/* ---------- Footer ---------- */
.site-footer{padding-block:104px 50px}
.site-footer__divider{
  border:0;
  height:1px;
  margin:0 0 42px;
  background:linear-gradient(90deg,rgba(255,255,255,0) 22%,rgba(255,255,255,.19) 50%,rgba(255,255,255,0) 78%);
}
.site-footer__text{
  text-align:center;
  font-size:16px;
  color:var(--text-muted);
}
.site-footer__text span{color:#F3F5F7;font-weight:500}
.site-footer__lead{color:var(--text-muted);font-weight:400}

/* =====================================================================
   Page loader, scroll-reveal animations & contact form
   ===================================================================== */

/* ---------- Page loader ---------- */
body.is-loading{overflow:hidden}
.page-loader{
  position:fixed;
  inset:0;
  z-index:200;
  display:grid;
  place-items:center;
  background:var(--bg);
  transition:opacity .5s ease,visibility .5s ease;
  /* Failsafe: even if JavaScript never runs or errors out, the loader can
     never permanently cover the page. */
  animation:loaderFailsafe 0s linear 7s forwards;
}
@keyframes loaderFailsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
.page-loader.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.page-loader__inner{display:flex;flex-direction:column;align-items:center;gap:18px}
.page-loader__logo{
  font-family:var(--font-head);
  font-weight:500;
  font-size:21px;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--text-heading);
  animation:loaderFade .8s ease both;
}
.page-loader__track{
  display:block;
  width:180px;
  height:2px;
  border-radius:2px;
  background:rgba(255,255,255,.12);
  overflow:hidden;
}
.page-loader__fill{
  display:block;
  height:100%;
  width:40%;
  background:linear-gradient(90deg,rgba(10,102,194,0),var(--blue),rgba(10,102,194,0));
  animation:loaderSlide 1.15s ease-in-out infinite;
}
@keyframes loaderSlide{0%{transform:translateX(-120%)}100%{transform:translateX(320%)}}
@keyframes loaderFade{from{opacity:0;letter-spacing:.42em}to{opacity:1;letter-spacing:.22em}}

/* ---------- Scroll reveal ----------
   Content is visible by default; the animation is purely additive, so the
   page still renders correctly if JavaScript or IntersectionObserver is
   unavailable (and nothing can ever get stuck at opacity 0). */
html.js .reveal.is-revealed{
  animation:revealUp .7s cubic-bezier(.22,.61,.36,1) both;
}
html.js .reveal--1.is-revealed{animation-delay:.09s}
html.js .reveal--2.is-revealed{animation-delay:.18s}
html.js .reveal--3.is-revealed{animation-delay:.27s}
html.js .reveal--4.is-revealed{animation-delay:.36s}
@keyframes revealUp{
  from{opacity:0;transform:translateY(26px)}
  to{opacity:1;transform:none}
}

/* ---------- Contact form ---------- */
.contact-form{
  position:relative;
  max-width:856px;
  margin:64px auto 0 176px;
  padding:34px 34px 32px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:22px;
  background:rgba(255,255,255,.015);
}
.contact-form__title{
  font-family:var(--font-head);
  font-weight:600;
  font-size:19px;
  line-height:1.3;
  color:var(--text-strong);
}
.contact-form__subtitle{
  margin-top:9px;
  max-width:560px;
  font-size:14px;
  line-height:1.55;
  color:var(--text-body);
}
.contact-form__grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
  margin-top:24px;
}
.contact-form__field{display:flex;flex-direction:column;gap:8px}
.contact-form__field--wide{grid-column:1 / -1}
.contact-form__label{
  font-family:var(--font-head);
  font-weight:500;
  font-size:12.5px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:#98A2B3;
}
.contact-form__input{
  width:100%;
  padding:13px 15px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:10px;
  background:rgba(255,255,255,.035);
  color:#EBEDF0;
  font-family:var(--font-body);
  font-size:14.5px;
  line-height:1.5;
  transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease;
}
.contact-form__input::placeholder{color:#707A8C}
.contact-form__input:focus{
  outline:none;
  border-color:var(--blue);
  background:rgba(255,255,255,.05);
  box-shadow:0 0 0 3px rgba(10,102,194,.25);
}
.contact-form__input.is-invalid{border-color:#E4574C}
.contact-form__textarea{resize:vertical;min-height:132px}
.contact-form__hp{position:absolute;left:-9999px;top:0;width:1px;height:1px;overflow:hidden}
.contact-form__status{min-height:20px;margin-top:16px;font-size:14px;color:var(--text-body)}
.contact-form__status.is-ok{color:#5FD0A0}
.contact-form__status.is-error{color:#F0938B}
.contact-form__submit{margin-top:2px}

/* =====================================================================
   Responsive
   ===================================================================== */

/* --- Large tablet / small desktop --- */
@media (max-width:1199px){
  :root{--container:1100px}
  .site-header{padding-inline:32px}
  .hero__title{font-size:60px}
  .hero__subtitle{font-size:22px}
  .hero__portrait{width:300px;height:300px}
  .about{padding-top:84px}
  .tools{padding-top:120px}
  .projects{padding-top:150px}
  .project{padding-left:24px}
  .project--reverse{padding-left:200px;padding-right:40px}
}

/* --- Tablet --- */
@media (max-width:991px){
  .hero{padding-block:56px 72px}
  .hero__grid{grid-template-columns:1fr;gap:48px}
  .hero__media{order:-1;justify-content:flex-start}
  .hero__portrait{width:280px;height:280px}
  .hero__title{font-size:52px}
  .hero__subtitle{margin-top:28px}
  .hero__desc{max-width:620px}

  .about{padding-top:72px}
  .tools{padding-top:96px}
  .projects{padding-top:110px}
  .education{padding-top:88px}
  .contact{padding-top:96px}

  .project,
  .project--reverse{
    grid-template-columns:1fr;
    gap:28px;
    max-width:640px;
    margin-inline:auto;
    padding-left:0;
    padding-right:0;
  }
  .project--reverse .project__media{order:0}
  .project--reverse .project__body{order:0}
  .project + .project{margin-top:70px}
  .project__desc{max-width:none}
  .project__body{max-width:none}

  .timeline{max-width:640px;margin-inline:0}
  .timeline__item{padding-left:92px}

  .contact__cards{grid-template-columns:1fr;max-width:560px;margin-inline:auto}
  .contact-form{max-width:560px;margin:56px auto 0}
}

/* --- Mobile --- */
@media (max-width:767px){
  .container{width:calc(100% - 44px)}
  .site-header{padding-inline:22px}
  .logo{font-size:22px}

  .nav-toggle{display:flex}
  .site-nav{
    position:absolute;
    left:0;right:0;top:100%;
    transform:none;
    background:#020C24;
    border-bottom:1px solid rgba(255,255,255,.1);
    display:none;
  }
  .site-nav.is-open{display:block}
  .site-nav__list{
    flex-direction:column;
    align-items:flex-start;
    gap:0;
    padding:8px 22px 18px;
  }
  .site-nav__list li{width:100%}
  .site-nav__list a{display:block;padding:13px 0;font-size:17px;border-bottom:1px solid rgba(255,255,255,.06)}

  .hero{padding-block:40px 60px}
  .hero__portrait{width:230px;height:230px}
  .hero__title{font-size:40px;letter-spacing:-.2px}
  .hero__subtitle{font-size:19px;margin-top:22px}
  .hero__desc{font-size:15px}
  .hero__actions{margin-top:28px;gap:14px}
  .btn{font-size:15px;padding:14px 24px}
  .btn--prototype{font-size:15px;padding:14px 24px}

  .about{padding-top:56px}
  .tools{padding-top:72px}
  .projects{padding-top:84px}
  .education{padding-top:72px}
  .contact{padding-top:80px}

  .section__title{font-size:23px;margin-top:38px}
  .about__text{font-size:14.5px}
  .pill{font-size:13.5px;padding:13px 22px;min-width:0}

  .tools__list{gap:20px;margin-top:40px}
  .tool__circle{width:60px;height:60px}
  .tool__figma{height:30px}
  .tool__badge{width:27px;height:27px}
  .tool__openai{width:38px;height:38px}

  .project{margin-top:44px;padding-left:0}
  .project + .project{margin-top:54px}
  .laptop{max-width:100%}
  .laptop__screen{padding:16px 8px}
  .laptop__base{margin:0 -14px}
  .laptop__notch{width:90px;height:6px}
  .project__title{font-size:18px}
  .project__desc{font-size:13.5px}
  .projects__more{margin-top:36px}
  .projects__more .btn{padding:13px 28px}

  .timeline{margin-top:78px}
  .timeline__item{padding-left:66px}
  .timeline__item + .timeline__item{margin-top:52px}
  .timeline__item::before{width:16px;height:16px;left:1px;top:4px;box-shadow:0 0 0 4.5px rgba(10,102,194,.38)}
  .timeline::before{left:8px}
  .timeline__title{font-size:17px}
  .timeline__date{font-size:14px;display:block;margin-top:4px}
  .timeline__meta{font-size:15px;margin-top:9px}
  .timeline__meta + .timeline__meta{margin-top:9px}

  .contact__cards{gap:20px;margin-top:44px}
  .contact-form{margin-top:44px;padding:26px 20px;border-radius:18px}
  .contact-form__grid{grid-template-columns:1fr;gap:14px;margin-top:20px}
  .contact-card{padding:26px 22px;border-radius:18px}
  .contact-card__value{font-size:18px}

  .site-footer{padding-block:52px 40px}
  .site-footer__text{font-size:15px}
}

/* ---------- Entrance & micro-interactions ---------- */
html{scroll-behavior:smooth}
.btn{transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease,border-color .2s ease}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(10,102,194,.35)}
.btn:active{transform:translateY(0)}
.tool,.project,.contact-card{transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease,background-color .28s ease}
.tool:hover{transform:translateY(-6px)}
.tool:hover .tool__circle{transform:scale(1.08);transition:transform .28s ease}
.project:hover{transform:translateY(-8px);box-shadow:0 28px 70px rgba(0,0,0,.4)}
.project__media img{transition:transform .45s ease}
.project:hover .project__media img{transform:scale(1.03)}
.contact-card:hover{transform:translateY(-6px);box-shadow:0 18px 45px rgba(0,0,0,.35)}
.hero__media{animation:heroFloat 6s ease-in-out infinite}
@keyframes heroFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
.site-nav__list a{position:relative}
.site-nav__list a::after{
  content:'';position:absolute;left:0;bottom:-6px;width:100%;height:2px;
  background:var(--blue);transform:scaleX(0);transform-origin:left;
  transition:transform .25s ease;
}
.site-nav__list a:hover::after{transform:scaleX(1)}
.logo{transition:transform .2s ease,letter-spacing .2s ease}
.logo:hover{transform:scale(1.03);letter-spacing:.01em}

.lang-switch{
  margin-left:auto;margin-right:16px;
  padding:6px 12px;border:1px solid rgba(255,255,255,.25);border-radius:999px;
  color:#fff;font-family:var(--font-head);font-size:13px;font-weight:600;
  text-decoration:none;transition:background .2s ease,border-color .2s ease;
}
.lang-switch:hover{background:rgba(255,255,255,.08);border-color:#fff}
@media (max-width:767px){.lang-switch{margin-right:8px;padding:5px 10px;font-size:12px}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition-duration:.01ms !important;animation-duration:.01ms !important}
  html.js .reveal{opacity:1 !important;transform:none !important}
  .page-loader__fill,
  .page-loader__logo{animation:none}
}
