/* Alessandro Basiaco — interaction styles (replace Framer's runtime animations).
   Springs: Framer's {type: spring, duration: 0.4, bounce: 0.2}, reproduced as a CSS linear() curve. */
:root {
  --ab-spring: linear(0.0000 0.00%, 0.0159 1.73%, 0.0524 3.46%, 0.1034 5.19%, 0.1644 6.93%, 0.2314 8.66%, 0.3013 10.39%, 0.3717 12.12%, 0.4408 13.85%, 0.5071 15.58%, 0.5698 17.32%, 0.6280 19.05%, 0.6815 20.78%, 0.7300 22.51%, 0.7736 24.24%, 0.8123 25.97%, 0.8464 27.71%, 0.8762 29.44%, 0.9018 31.17%, 0.9238 32.90%, 0.9423 34.63%, 0.9579 36.36%, 0.9707 38.10%, 0.9813 39.83%, 0.9897 41.56%, 0.9964 43.29%, 1.0016 45.02%, 1.0055 46.75%, 1.0083 48.48%, 1.0102 50.22%, 1.0115 51.95%, 1.0121 53.68%, 1.0123 55.41%, 1.0122 57.14%, 1.0117 58.87%, 1.0111 60.61%, 1.0104 62.34%, 1.0096 64.07%, 1.0087 65.80%, 1.0079 67.53%, 1.0070 69.26%, 1.0062 71.00%, 1.0054 72.73%, 1.0047 74.46%, 1.0040 76.19%, 1.0034 77.92%, 1.0029 79.65%, 1.0024 81.39%, 1.0019 83.12%, 1.0016 84.85%, 1.0013 86.58%, 1.0010 88.31%, 1.0007 90.04%, 1.0005 91.77%, 1.0004 93.51%, 1.0002 95.24%, 1.0001 96.97%, 1.0001 98.70%, 1.0000 100.00%);
  --ab-spring-ms: 385ms;
}

/* image zoom on tiles, chevron zoom */
.ab-zoom { scale: 1; transition: scale var(--ab-spring-ms) var(--ab-spring); }
.ab-zoom.is-hover { scale: 1.2; }

/* back to home arrow: points down, turns left on hover */
.ab-arrow { rotate: 270deg; transition: rotate var(--ab-spring-ms) var(--ab-spring); }
.ab-arrow.is-hover { rotate: 0deg; }

/* black pill button -> outlined on hover */
.ab-pill { transition: background-color var(--ab-spring-ms) var(--ab-spring); }
.ab-pill::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  box-shadow: inset 0 0 0 0 rgb(34, 34, 34);
  transition: box-shadow var(--ab-spring-ms) var(--ab-spring);
}
.ab-pill p { transition: color var(--ab-spring-ms) var(--ab-spring); }
.ab-pill.is-hover { background-color: rgba(0, 0, 0, 0) !important; }
.ab-pill.is-hover::before { box-shadow: inset 0 0 0 2px rgb(34, 34, 34); }
.ab-pill.is-hover p { --framer-text-color: rgb(0, 0, 0) !important; color: rgb(0, 0, 0) !important; }

@media (prefers-reduced-motion: reduce) {
  .ab-zoom, .ab-arrow, .ab-pill, .ab-pill::before, .ab-pill p { transition: none; }
}

/* keyboard focus (Framer had none; kept subtle) */
a:focus-visible { outline: 2px solid rgb(0, 0, 0); outline-offset: 3px; }

/* ---- phone fixes: a few blocks of the original design were wider than the screen ---- */
@media (max-width: 809.98px) {
  /* tone of black: centred captions */
  .framer-12n5e3y, .framer-yo8jku { width: 100% !important; }
  /* select: "A system that reads itself" */
  .framer-64mnd8, .framer-1pr2r5g, .framer-1c2m55c { width: 100% !important; }
  /* phi: "A family of three" */
  .framer-3hcpl6, .framer-4cdvv0, .framer-1jcv2u3 { width: 100% !important; }
  /* about: experience / education rows */
  .framer-w71lln, .framer-6wkb7d, .framer-2am1ee, .framer-1q8ldaa, .framer-5yxfx, .framer-1v98hau,
  .framer-e8yth8, .framer-17kpqke, .framer-1fmqifm, .framer-6qba6m, .framer-ee0l5t { width: 100% !important; max-width: 100% !important; }
  .framer-1hpiyy, .framer-1yjluv3, .framer-k8yx6a, .framer-1h6beak, .framer-165w7co, .framer-1h404nw,
  .framer-12eg4em, .framer-1c5jrow, .framer-1d74om4 { flex: 1 1 0px !important; min-width: 0 !important; width: auto !important; }
  .framer-1bgi6kb, .framer-19zleg, .framer-ni71z4, .framer-1t3yja, .framer-55lun7, .framer-17jh617 { flex: 0 0 auto !important; width: auto !important; }
}

/* ---- component variants (from Framer component definitions) ---- */
.framer-uxE7j.framer-v-z1hu8y.framer-ix35ty { cursor: pointer; }
.framer-4nDsc.framer-v-vpyuf8.framer-cymx8f, .framer-4nDsc.framer-v-ne9zgt.framer-cymx8f, .framer-4nDsc.framer-v-sw83k2.framer-cymx8f, .framer-4nDsc.framer-v-1z005os.framer-cymx8f, .framer-4nDsc.framer-v-1mzw7ju.framer-cymx8f, .framer-4nDsc.framer-v-m74db6.framer-cymx8f, .framer-4nDsc.framer-v-l78fff.framer-cymx8f, .framer-4nDsc.framer-v-1ntdm4x.framer-cymx8f { cursor: unset; }
.framer-TpAhU.framer-v-mubwet .framer-1384n3x, .framer-TpAhU.framer-v-1fk5c2q .framer-1384n3x { height: auto; }
.framer-JVvGJ.framer-v-of5d4w.framer-xzqlim, .framer-JVvGJ.framer-v-1svf81f.framer-xzqlim, .framer-JVvGJ.framer-v-1a2jaeu.framer-xzqlim, .framer-JVvGJ.framer-v-23gbfd.framer-xzqlim, .framer-JVvGJ.framer-v-19hiare.framer-xzqlim { width: min-content; }
.framer-PiEno.framer-v-ecpt3p .framer-vf6qum { height: auto; }
.framer-PiEno.framer-v-5kdl7o.framer-hte0hw, .framer-PiEno.framer-v-1cpruos.framer-hte0hw, .framer-PiEno.framer-v-1c4x74.framer-hte0hw, .framer-PiEno.framer-v-z0m4ln.framer-hte0hw, .framer-PiEno.framer-v-4hj05g.framer-hte0hw { cursor: unset; }
.framer-vfLEc.framer-v-299yvk .framer-1jm1785 { flex: none; width: auto; }
.framer-vfLEc.framer-v-11ybboa.framer-1uxw1o6, .framer-vfLEc.framer-v-gdbxos.framer-1uxw1o6, .framer-vfLEc.framer-v-11ll5xn.framer-1uxw1o6, .framer-vfLEc.framer-v-1ql7f2t.framer-1uxw1o6, .framer-vfLEc.framer-v-1fkfi7m.framer-1uxw1o6, .framer-vfLEc.framer-v-i1kqiz.framer-1uxw1o6, .framer-vfLEc.framer-v-h6vbsh.framer-1uxw1o6 { cursor: unset; }
.framer-ATIpm.framer-v-uc655l .framer-x5xgxv, .framer-ATIpm.framer-v-umvaun .framer-x5xgxv, .framer-ATIpm.framer-v-1ytvbox .framer-x5xgxv { height: auto; }
.framer-ATIpm.framer-v-umvaun.framer-1c5o13d, .framer-ATIpm.framer-v-7k20ak.framer-1c5o13d, .framer-ATIpm.framer-v-epuyje.framer-1c5o13d, .framer-ATIpm.framer-v-1f6vgcs.framer-1c5o13d, .framer-ATIpm.framer-v-15rtsm3.framer-1c5o13d, .framer-ATIpm.framer-v-1uzeexq.framer-1c5o13d, .framer-ATIpm.framer-v-1ytvbox.framer-1c5o13d { cursor: unset; }
.framer-Z0cyq.framer-v-17p3lql .framer-1xb0hxp { cursor: pointer; }
.framer-aQgzM.framer-v-o30vhg.framer-5wchli { cursor: unset; }
.framer-7w5KP.framer-v-1kj5bpn .framer-lb51xm { height: 730px; }
.framer-oknh5.framer-v-1ozhhtm .framer-dmonv8, .framer-oknh5.framer-v-kb86l8 .framer-dmonv8, .framer-oknh5.framer-v-oczao6 .framer-dmonv8 { flex: none; height: 100%; width: auto; }
.framer-43Hus.framer-v-svtkpx.framer-o7vhwj { height: 530px; width: 770px; }
.framer-S7MV9.framer-v-4v7f7g.framer-huhl83 { cursor: pointer; }
.framer-pQVEl.framer-v-1dbedom.framer-102rcft { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 480px; justify-content: center; padding: 0px; }