/* francandon.com · light ground, one ink colour (ultramarine #2338D6),
   Instrument Serif for display type, Archivo for text. */
body{margin:0;background:#F2F1EE}
a{color:#2338D6;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:0.2em}
a:hover{text-decoration-thickness:2px}
a:focus-visible,button:focus-visible{outline:2px solid #2338D6;outline-offset:3px}
.wrap{max-width:1360px;margin-left:auto;margin-right:auto;padding-left:clamp(20px,2.4vw,32px);padding-right:clamp(20px,2.4vw,32px);box-sizing:border-box}
.serif{font-family:'Instrument Serif',Georgia,'Times New Roman',serif;font-weight:400}
.label{font-size:12px;letter-spacing:0.05em;text-transform:uppercase}
.plain{text-decoration:none}
.plain:hover{text-decoration:underline}
.nav a{text-decoration:none;padding:8px 0}
.nav a:hover,.nav a[aria-current="page"]{text-decoration:underline}
.btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 20px;border:1px solid #2338D6;border-radius:999px;color:#2338D6;background:transparent;font:inherit;font-size:15px;text-decoration:none;cursor:pointer;box-sizing:border-box}
.btn:hover,.btn[aria-pressed="true"]{background:#2338D6;color:#FBFAF7}
.hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:clamp(20px,3vw,40px)}
.hero.three{grid-template-columns:minmax(0,1fr) minmax(0,0.5fr) minmax(0,1fr)}
.hero-title{grid-column:1/-1;grid-row:1;position:relative;z-index:0}
.hero-photo{grid-column:-2/-1;grid-row:1/span 2;position:relative;z-index:1}
.hero-text{grid-column:1;grid-row:2;align-self:start}
.hero-mid{grid-column:2;grid-row:2;align-self:start;justify-self:center}
@media (max-width:820px){.hero,.hero.three{grid-template-columns:minmax(0,1fr)}.hero-title,.hero-photo,.hero-text,.hero-mid{grid-column:1;grid-row:auto}.hero-photo{margin-top:24px !important}.hero-mid{justify-self:start}}
[hidden]{display:none !important}
.skip-link{position:absolute;left:12px;top:-60px;z-index:10;padding:10px 14px;background:#2338D6;color:#FBFAF7;border-radius:999px;font:15px Archivo,'Helvetica Neue',Arial,sans-serif;text-decoration:none}
.skip-link:focus{top:12px;color:#FBFAF7}
main:focus{outline:none}
img{max-width:100%}

/* Language switch (EN | ES): right of the navigation on wide screens,
   next to the name on narrow ones, with the navigation on its own row. */
header > .nav{margin-left:auto}
.lang{display:inline-flex;align-self:center;border:1px solid #2338D6;border-radius:999px;overflow:hidden;font-size:12px;letter-spacing:0.05em;line-height:1}
.lang > *{display:inline-flex;align-items:center;min-height:32px;padding:0 11px;box-sizing:border-box}
.lang a{text-decoration:none}
.lang a:hover{background:rgba(35,56,214,0.1);text-decoration:none}
@media (max-width:900px){header.wrap{column-gap:12px !important}header > .lang{order:2}header > .nav{order:3;flex-basis:100%;margin-left:0}.lang > *{padding:0 9px}}
/* Spanish home title is two letters longer than the English one */
html[lang="es"] #home-title{font-size:clamp(2.5rem,13vw,11.75rem) !important}
/* ...and its long second line needs the full width, so the portrait starts below it */
@media (min-width:821px){html[lang="es"] #home-title ~ .hero-photo{grid-row:2;margin-top:40px !important}}
.lang .on{background:#2338D6;color:#FBFAF7}

/* Motion: the hero rises in on load (pure CSS), and the rest of the page
   fades up gently as it scrolls into view (app.js adds .reveal / .is-in). */
html{scroll-behavior:smooth}
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
.js .hero > *{animation:rise 1s cubic-bezier(.16,.84,.3,1) both}
.js .hero > :nth-child(2){animation-delay:.12s}
.js .hero > :nth-child(3){animation-delay:.24s}
.js .hero > :nth-child(4){animation-delay:.36s}
.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .9s cubic-bezier(.16,.84,.3,1),transform .9s cubic-bezier(.16,.84,.3,1);transition-delay:var(--reveal-delay,0ms)}
.js .reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .hero > *{animation:none}
  .js .reveal{opacity:1;transform:none;transition:none}
}
