/* AB-MEDIA · feuille de style générée par _build/build.py */
/* Polices hébergées sur le site (SIL Open Font License) */
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Familjen Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/assets/fonts/familjen-grotesk-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/hanken-grotesk-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/hanken-grotesk-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/hanken-grotesk-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/hanken-grotesk-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/hanken-grotesk-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/hanken-grotesk-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/ibm-plex-mono-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{
  --paper:#FFFFFF;
  --paper-2:#EDEFF3;
  --ink:#0D1233;
  --ink-2:#4A5070;
  --line:#D9DDE5;
  --blue:#2433E0;
  --azure:#3D7BFF;
  --teal:#0FA89A;
  --mint:#7FDCC2;
  --violet:#6E4CF2;
  --lilac:#C3B4FF;
  --accent:var(--blue);
  --on-accent:#FFFFFF;
  --display:"Familjen Grotesk","Helvetica Neue",Arial,sans-serif;
  --body:"Hanken Grotesk","Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --wrap:1240px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){color-scheme:dark;--paper:#0B0F24;--paper-2:#141A36;--ink:#EEF2F0;--ink-2:#A3AAC4;--line:#2A3152;--accent:#6F8BFF;--on-accent:#0B0F24}
}
:root[data-theme="dark"]{color-scheme:dark;--paper:#0B0F24;--paper-2:#141A36;--ink:#EEF2F0;--ink-2:#A3AAC4;--line:#2A3152;--accent:#6F8BFF;--on-accent:#0B0F24}
*{box-sizing:border-box}
body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.55;margin:0;-webkit-font-smoothing:antialiased}
a{color:inherit}
p{text-wrap:pretty}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(16px,4vw,40px)}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);display:flex;align-items:center;gap:10px;margin:0 0 18px}
.eyebrow::before{content:"";width:9px;height:9px;background:var(--teal);flex:none}
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.025em;text-wrap:balance;margin:0}
h2{font-size:clamp(34px,5vw,60px);line-height:1.02}
.proto{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:var(--ink);color:var(--paper);text-align:center;padding:6px 16px}
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--accent);color:var(--on-accent);text-decoration:none;font-weight:600;font-size:15px;padding:11px 18px;border:0;cursor:pointer;font-family:var(--body)}
.btn:hover{filter:brightness(1.1)}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--ink)}

/* Header */
header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;height:64px}
.logo{font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:.04em;text-decoration:none;display:flex;align-items:center;gap:10px}
.logo i{display:grid;grid-template-columns:repeat(2,8px);gap:2px}
.logo i b{width:8px;height:8px;display:block}
.logo i b:nth-child(1){background:var(--blue)}.logo i b:nth-child(2){background:var(--teal)}
.logo i b:nth-child(3){background:var(--violet)}.logo i b:nth-child(4){background:var(--mint)}
.logo span{color:var(--teal)}
nav.main{display:flex;gap:28px;font-size:15px}
nav.main a{text-decoration:none;color:var(--ink-2)}
nav.main a:hover,nav.main a[aria-current="page"]{color:var(--ink)}
nav.main a[aria-current="page"]{box-shadow:inset 0 -2px 0 var(--accent)}
@media (max-width:760px){nav.main{display:none}}

/* Hero */
.hero{padding-block:clamp(48px,8vw,96px) clamp(32px,5vw,56px)}
.crumbs{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0 0 28px}
.crumbs a{text-decoration:none}
.crumbs a:hover{color:var(--ink)}
.hero h1{font-size:clamp(44px,8vw,108px);line-height:.95}
.hero h1 em{display:block;font-style:normal;color:var(--accent)}
.hero .lede{margin:32px 0 0;font-size:clamp(19px,2vw,23px);line-height:1.4;max-width:34ch}

/* Sommaire en tuiles (mosaïque) */
.tiles{display:grid;grid-template-columns:repeat(5,1fr)}
.tile{color:#fff;text-decoration:none;padding:20px 18px;min-height:clamp(140px,16vw,200px);display:flex;flex-direction:column;justify-content:space-between;gap:16px;position:relative}
.tile.dark{color:#0D1233}
.tile .t{font-family:var(--display);font-weight:600;font-size:clamp(18px,1.8vw,24px);line-height:1.08;letter-spacing:-.02em}
.tile ul{list-style:none;margin:0;padding:0;display:grid;align-content:start;gap:5px;font-size:14px;line-height:1.3;flex:1}
.tile li{opacity:.92}
.tile .go{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.tile::after{content:"";position:absolute;inset:0;background:rgba(13,18,51,.16);opacity:0;transition:opacity .25s}
.tile:hover::after{opacity:1}
@media (max-width:900px){.tiles{grid-template-columns:repeat(2,1fr)}.tile:last-child{grid-column:1/-1}}
@media (max-width:460px){.tiles{grid-template-columns:1fr}}

/* Métier */
.metier{padding-block:clamp(64px,9vw,112px);border-top:1px solid var(--line);scroll-margin-top:64px}
.metier:first-of-type{border-top:0}
.m-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,5vw,72px)}
.m-side{position:sticky;top:96px;align-self:start;display:flex;flex-direction:column;gap:24px}
.m-side h2{font-size:clamp(32px,4vw,52px);line-height:1.02}
.m-side .tag{font-family:var(--display);font-size:clamp(20px,2vw,26px);line-height:1.25;color:var(--accent);margin:0}
.m-swatch{display:grid;grid-template-columns:repeat(6,1fr);aspect-ratio:3/1;max-width:100%}
.m-swatch b{display:block}
.m-main{display:flex;flex-direction:column;gap:36px}
.m-main .intro{margin:0;font-size:clamp(18px,1.7vw,20px);line-height:1.55}
.kw{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
.kw li{font-family:var(--mono);font-size:12px;letter-spacing:.07em;text-transform:uppercase;padding:13px 12px 13px 0;border-bottom:1px solid var(--line)}
.kw li:nth-child(odd){padding-right:16px}
.refs h3{font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-bottom:10px}
.refs ul{list-style:none;margin:0;padding:0}
.refs li{display:grid;grid-template-columns:14px 1fr;gap:14px;padding-block:14px;border-top:1px solid var(--line)}
.refs li b{width:12px;height:12px;margin-top:7px;display:block}
.refs strong{font-weight:600}
.refs span{color:var(--ink-2)}
@media (max-width:860px){.m-grid{grid-template-columns:1fr}.m-side{position:static}.kw{grid-template-columns:1fr}}

/* Méthode */
.method{background:var(--ink);color:var(--paper);padding-block:clamp(64px,9vw,112px)}
.method .eyebrow{color:var(--mint)}
.method h2{max-width:20ch}
.steps{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0;counter-reset:s}
.steps li{padding:24px 24px 8px 0;border-top:2px solid color-mix(in srgb,var(--paper) 25%,transparent);counter-increment:s;display:flex;flex-direction:column;gap:10px}
.steps li + li{padding-left:24px}
.steps li::before{content:counter(s,decimal-leading-zero);font-family:var(--mono);font-size:13px;color:var(--mint)}
.steps h3{font-size:26px}
.steps p{margin:0;opacity:.8}
@media (max-width:860px){.steps{grid-template-columns:1fr 1fr}.steps li:nth-child(3){padding-left:0}}
@media (max-width:520px){.steps{grid-template-columns:1fr}.steps li,.steps li + li{padding-left:0}}

/* Contact */
.contact{background:var(--blue);color:#fff}
.contact .wrap{padding-block:clamp(64px,9vw,110px);display:grid;grid-template-columns:1.3fr 1fr;gap:40px}
.contact h2{font-size:clamp(40px,6vw,80px);line-height:.98}
.contact .sub{margin:20px 0 0;font-size:19px;max-width:36ch;opacity:.9}
.contact dl{margin:0;display:grid;gap:22px;align-content:end}
.contact dt{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;opacity:.75}
.contact dd{margin:4px 0 0;font-family:var(--display);font-size:clamp(24px,2.8vw,34px);font-weight:600;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.copy{all:unset;cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;border:1px solid rgba(255,255,255,.6);padding:5px 9px}
.copy:hover{background:#fff;color:var(--blue)}
.copy:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media (max-width:820px){.contact .wrap{grid-template-columns:1fr}}

footer{padding-block:40px;font-size:14px;color:var(--ink-2)}
footer .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
footer nav{display:flex;gap:20px;flex-wrap:wrap}
footer a{text-decoration:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}


/* Filtres et grilles (repris de l'accueil) */
.filters{display:flex;gap:6px 22px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:32px}
.filter{all:unset;cursor:pointer;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;padding:12px 0;color:var(--ink-2);border-bottom:3px solid transparent;margin-bottom:-1px}
.filter[aria-pressed="true"]{color:var(--ink);border-color:var(--accent)}
.filter:focus-visible{outline:2px solid var(--accent)}
.filter sup{font-size:10px;margin-left:3px}
.flabel{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin:0 0 4px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:32px 24px}
.card{text-decoration:none;display:flex;flex-direction:column;gap:12px}
.card .viz{aspect-ratio:4/3;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(4,1fr);overflow:hidden;max-width:100%}
.card .viz b{display:block;transition:transform .4s}
.card:hover .viz b:nth-child(3n){transform:scale(.001)}
.card h3{font-size:21px;line-height:1.15}
.card:hover h3{color:var(--accent)}
.card .tags{font-family:var(--mono);font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2)}
.empty{color:var(--ink-2);font-style:italic}
.more{margin-top:40px;display:flex;justify-content:center}
.section{padding-block:clamp(64px,9vw,112px)}
.section.tight{padding-top:0}
.section.flush{padding-bottom:0}.section.flush .head{margin-bottom:0}
.head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:40px}
.head .intro{margin:18px 0 0;max-width:56ch;color:var(--ink-2);font-size:18px}

/* Études de cas */
.cases{border-top:1px solid var(--line)}
.case{display:flex;align-items:baseline;gap:.35em;flex-wrap:wrap;padding-block:18px;border-bottom:1px solid var(--line);font-family:var(--display);font-size:clamp(28px,5vw,64px);font-weight:600;letter-spacing:-.03em;line-height:1.05;text-decoration:none}
.case span{color:var(--ink-2);font-weight:400}
.case:hover strong{color:var(--accent)}

/* Clients en grille */
.clients{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.clients div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:96px;display:grid;place-items:center;padding:16px;text-align:center;font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:.02em;color:var(--ink-2)}

/* Chiffres */
.figures{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid var(--line)}
.fig{padding:28px 20px 28px 0;display:flex;flex-direction:column;gap:6px}
.fig + .fig{padding-left:24px;border-left:1px solid var(--line)}
.fig strong{font-family:var(--display);font-size:clamp(44px,5.6vw,76px);font-weight:600;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.fig span{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
@media (max-width:760px){.figures{grid-template-columns:1fr 1fr}.fig:nth-child(3){padding-left:0;border-left:0}.fig:nth-child(n+3){border-top:1px solid var(--line)}}

/* Bloc sombre */
.dark-band{background:var(--ink);color:var(--paper);padding-block:clamp(64px,9vw,112px)}
.dark-band .eyebrow{color:var(--mint)}
.dark-band h2{max-width:18ch}
.dark-band p.big{margin:24px 0 0;max-width:60ch;font-size:clamp(18px,1.8vw,21px);opacity:.85}

/* Valeurs */
.values .row{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:center;padding-block:28px;border-top:1px solid var(--line)}
.values .row:last-child{border-bottom:1px solid var(--line)}
.values h3{font-size:clamp(24px,3vw,36px);line-height:1.05;text-transform:uppercase}
.values p{margin:0;font-family:var(--mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
@media (max-width:640px){.values .row{grid-template-columns:1fr}}

/* Agences et horloges */
.agences{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.agence{padding:clamp(24px,3vw,36px);display:flex;flex-direction:column;gap:18px;background:var(--paper);min-width:0}
.agence h3{font-size:clamp(26px,2.6vw,36px);line-height:1}
.clock{font-family:var(--mono);font-size:clamp(38px,4.4vw,58px);letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}
.agence .meta{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0}
.agence .bar{height:10px;display:grid;grid-template-columns:repeat(24,1fr);gap:2px}
.agence .bar b{background:var(--paper-2)}
.agence .bar b.on{background:var(--teal)}
.agence .bar b.now{background:var(--accent)}
@media (max-width:900px){.agences{grid-template-columns:1fr}}

/* Sommaire latéral (secteurs) */
.toc{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px}
.toc a{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;padding:9px 13px;border:1px solid var(--line);color:var(--ink-2)}
.toc a:hover{border-color:var(--ink);color:var(--ink)}
.quote{font-family:var(--display);font-size:clamp(24px,3vw,36px);line-height:1.2;max-width:30ch;margin:32px 0 0;color:var(--ink-2)}
.quote cite{display:block;margin-top:10px;font-family:var(--mono);font-size:12px;font-style:normal;letter-spacing:.1em;text-transform:uppercase}

/* Page projet */
.facts{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid var(--line);margin-top:40px}
.facts div{padding:18px 20px 18px 0;display:flex;flex-direction:column;gap:6px}
.facts div + div{padding-left:20px;border-left:1px solid var(--line)}
.facts dt{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.facts dd{margin:0;font-weight:600}
@media (max-width:760px){.facts{grid-template-columns:1fr 1fr}.facts div:nth-child(3){padding-left:0;border-left:0}.facts div:nth-child(n+3){border-top:1px solid var(--line)}}
.showcase{background:var(--ink);padding-block:clamp(40px,6vw,80px)}
.showcase .cap{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mint);margin:16px 0 0}
.app{background:#fff;color:#0D1233;display:grid;grid-template-columns:200px 1fr 300px;min-height:420px;font-size:14px;box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden}
.app .side{background:#0D1233;color:#fff;padding:20px;display:flex;flex-direction:column;gap:10px}
.app .side strong{font-family:var(--display);font-size:22px;letter-spacing:-.02em}
.app .side span{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.7;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.15)}
.app .side span.on{opacity:1;color:#7FDCC2}
.app .lib{padding:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-content:start}
.app .lib .v{display:flex;flex-direction:column;gap:6px}
.app .lib .th{aspect-ratio:16/9;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr);position:relative}
.app .lib .th b{display:block}
.app .lib .th::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-40%,-50%);border-left:12px solid #fff;border-block:8px solid transparent}
.app .lib .v.sel .th{outline:3px solid #2433E0;outline-offset:2px}
.app .lib small{font-family:var(--mono);font-size:10px;color:#4A5070}
.app .mail{border-left:1px solid #D9DDE5;padding:20px;display:flex;flex-direction:column;gap:12px;background:#F5F6F9}
.app .mail .k{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#4A5070}
.app .mail .line{height:8px;background:#D9DDE5}
.app .mail .line.s{width:60%}
.app .mail .thumbs{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.app .mail .thumbs div{aspect-ratio:16/9;display:grid;grid-template-columns:repeat(3,1fr)}
.app .mail .thumbs b{display:block}
.app .stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:auto}
.app .stats div{background:#fff;padding:10px;border:1px solid #D9DDE5}
.app .stats strong{display:block;font-family:var(--display);font-size:22px}
.app .send{background:#2433E0;color:#fff;text-align:center;padding:10px;font-weight:600}
@media (max-width:980px){.app{grid-template-columns:1fr}.app .side{flex-direction:row;flex-wrap:wrap;align-items:center}.app .mail{border-left:0;border-top:1px solid #D9DDE5}}
@media (max-width:520px){.app .lib{grid-template-columns:1fr 1fr}}
.story{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(24px,5vw,72px);padding-block:clamp(48px,7vw,88px);border-top:1px solid var(--line)}
.story:first-child{border-top:0}
.story h2{font-size:clamp(30px,3.6vw,46px)}
.story p{margin:0 0 16px;font-size:clamp(18px,1.7vw,20px)}
.story p:last-child{margin-bottom:0}
@media (max-width:820px){.story{grid-template-columns:1fr}}
.features{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 32px}
.features li{display:grid;grid-template-columns:14px 1fr;gap:14px;padding-block:16px;border-top:1px solid var(--line)}
.features li b{width:12px;height:12px;margin-top:7px;display:block;background:var(--teal)}
.features li:nth-child(2n) b{background:var(--blue)}
@media (max-width:640px){.features{grid-template-columns:1fr}}
.todo{border:1px dashed var(--ink-2);padding:24px;color:var(--ink-2);font-style:italic}
.nextprev{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
.nextprev a{padding:32px 0;text-decoration:none;display:flex;flex-direction:column;gap:8px}
.nextprev a + a{text-align:right;border-left:1px solid var(--line);padding-left:24px}
.nextprev span{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.nextprev strong{font-family:var(--display);font-size:clamp(22px,3vw,36px);font-weight:600;letter-spacing:-.02em}
.nextprev a:hover strong{color:var(--accent)}

/* Captures d'écran dans un cadre de navigateur */
.frame{background:#1A1F3D;padding:28px 0 0;position:relative;box-shadow:0 30px 80px rgba(0,0,0,.35);max-width:100%}
.frame::before{content:"";position:absolute;top:10px;left:14px;width:8px;height:8px;border-radius:50%;background:#6E4CF2;box-shadow:14px 0 0 #0FA89A,28px 0 0 #7FDCC2}
.frame img{display:block;width:100%;height:auto}
.phone{background:#1A1F3D;padding:10px;border-radius:26px;max-width:260px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.phone img{display:block;width:100%;height:auto;border-radius:18px}
.gallery{display:grid;grid-template-columns:1.6fr 1fr;gap:clamp(20px,3vw,40px);align-items:start}
.gallery figure{margin:0;display:flex;flex-direction:column;gap:12px}
.gallery figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.gallery .col{display:flex;flex-direction:column;gap:clamp(20px,3vw,40px)}
@media (max-width:820px){.gallery{grid-template-columns:1fr}}
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line)}
.pillars div{padding:24px 24px 8px 0;display:flex;flex-direction:column;gap:10px}
.pillars div + div{padding-left:24px;border-left:1px solid var(--line)}
.pillars h3{font-size:24px}
.pillars p{margin:0;color:var(--ink-2)}
.pillars .n{font-family:var(--mono);font-size:12px;color:var(--teal)}
@media (max-width:760px){.pillars{grid-template-columns:1fr}.pillars div + div{padding-left:0;border-left:0;border-top:1px solid var(--line)}}

/* Maquettes d'appareils */
.laptop{max-width:1040px;margin-inline:auto}
.laptop .screen{background:#0B0D1C;border:2px solid #3A4066;border-radius:18px 18px 0 0;padding:clamp(10px,1.6vw,20px) clamp(10px,1.6vw,20px) clamp(14px,2vw,24px);position:relative}
.laptop .screen::before{content:"";position:absolute;top:clamp(4px,.6vw,8px);left:50%;width:6px;height:6px;border-radius:50%;background:#3A4066;transform:translateX(-50%)}
.laptop .screen img{display:block;width:100%;height:auto;border-radius:2px}
.laptop .base{height:clamp(12px,1.6vw,20px);background:linear-gradient(#C9CDDA,#8D93AB);border-radius:0 0 14px 14px;margin-inline:-6%;position:relative;box-shadow:0 24px 60px rgba(0,0,0,.45)}
.laptop .base::before{content:"";position:absolute;top:0;left:50%;width:16%;height:40%;background:#7C8299;border-radius:0 0 8px 8px;transform:translateX(-50%)}
@media (max-width:600px){.laptop .base{margin-inline:-3%}}
.frame{padding-top:34px}
.frame::after{content:attr(data-url);position:absolute;top:8px;left:64px;right:14px;height:18px;background:#2A3058;border-radius:9px;color:#A3AAC4;font-family:var(--mono);font-size:10px;line-height:18px;padding-left:12px;overflow:hidden;white-space:nowrap}
.frame::before{top:13px}
.phone{position:relative;border-radius:36px;padding:12px;background:#0B0D1C;border:2px solid #3A4066}
.phone::before{content:"";position:absolute;top:20px;left:50%;width:34%;height:16px;background:#0B0D1C;border-radius:10px;transform:translateX(-50%);z-index:1}
.phone img{border-radius:26px}


/* ===== Compléments pour le site ===== */
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--paper);padding:10px 16px;z-index:50}
.skip:focus{left:16px;top:8px}
.logo{color:inherit}
.btn.small{padding:9px 14px;font-size:14px}

/* Menu mobile */
.burger{all:unset;cursor:pointer;display:none;width:44px;height:44px;place-content:center;gap:5px}
.burger b{display:block;width:22px;height:2px;background:var(--ink);transition:transform .25s,opacity .25s}
.burger:focus-visible{outline:2px solid var(--accent)}
.burger[aria-expanded="true"] b:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] b:nth-child(2){opacity:0}
.burger[aria-expanded="true"] b:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.top-actions{display:flex;align-items:center;gap:8px}
@media (max-width:760px){
  .burger{display:grid}
  nav.main{position:fixed;left:0;right:0;top:calc(64px + env(safe-area-inset-top,0px));bottom:auto;height:calc(100vh - 64px - env(safe-area-inset-top,0px));height:calc(100dvh - 64px - env(safe-area-inset-top,0px));overflow-y:auto;background:var(--paper);flex-direction:column;gap:0;padding:16px clamp(16px,4vw,40px);font-size:30px;font-family:var(--display);font-weight:600}
  nav.main.open{display:flex}
  /* le flou de l'en-tête ferait du header le repère du menu fixe (menu réduit à 32 px) : on le coupe menu ouvert */
  header.top:has(nav.main.open){backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--paper)}
  nav.main a{color:var(--ink);padding-block:14px;border-bottom:1px solid var(--line)}
  nav.main a[aria-current="page"]{box-shadow:none;color:var(--accent)}
}
@media (max-width:420px){.top .btn{display:none}}

/* Accueil : héros */
.hero h1 span{display:block}
.hero-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;margin-top:40px;align-items:end}
.hero-grid .lede{margin:0;max-width:30ch}
.rotor{font-family:var(--display);font-size:clamp(20px,2.2vw,26px);line-height:1.3;border-left:3px solid var(--teal);padding-left:18px;margin:0}
.rotor .muted{color:var(--ink-2)}
.rotor .word{color:var(--teal);font-weight:600;display:inline-block;min-height:1.3em}
.rotor .word.swap{animation:rise .5s ease}
@keyframes rise{from{transform:translateY(40%);opacity:.2}to{transform:none;opacity:1}}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
@media (max-width:820px){.hero-grid{grid-template-columns:1fr}}
.mosaic{display:block;width:100%;height:clamp(200px,28vw,340px);background:var(--blue)}

/* Accès rapides */
.quick .row{display:grid;grid-template-columns:220px 1fr 40px;gap:24px;align-items:center;padding-block:26px;border-top:1px solid var(--line);text-decoration:none}
.quick .row:first-child{border-top:0}
.quick .row:last-child{border-bottom:1px solid var(--line)}
.quick .row h2{font-size:26px;text-transform:uppercase;letter-spacing:.01em;line-height:1.1}
.quick .row p{margin:0;font-family:var(--mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.plus{width:36px;height:36px;position:relative;justify-self:end;transition:transform .3s}
.plus::before,.plus::after{content:"";position:absolute;background:var(--accent);left:50%;top:50%;transform:translate(-50%,-50%)}
.plus::before{width:24px;height:2px}.plus::after{width:2px;height:24px}
.quick .row:hover .plus{transform:rotate(90deg)}
.quick .row:hover h2{color:var(--accent)}
@media (max-width:640px){.quick .row{grid-template-columns:1fr 36px}.quick .row p{grid-column:1}.quick .row .plus{grid-row:1/3;grid-column:2}}

/* Clients */
.clients div span{display:block}
.clients small{display:block;margin-top:6px;font-family:var(--mono);font-size:10px;font-weight:400;letter-spacing:.08em;text-transform:uppercase}
.proofs{list-style:none;margin:40px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:0 40px}
.proofs li{display:grid;grid-template-columns:14px 1fr;gap:16px;align-items:start;padding-block:18px;border-top:1px solid var(--line)}
.proofs li b{width:14px;height:14px;margin-top:6px;background:var(--teal)}
.proofs li:nth-child(3n+2) b{background:var(--blue)}.proofs li:nth-child(3n) b{background:var(--violet)}
.proofs p{margin:0;color:var(--ink-2)}
.proofs strong{color:var(--ink);font-weight:600}
@media (max-width:420px){.proofs{grid-template-columns:1fr}}
[hidden]{display:none!important}

/* Métiers en onglets (accueil) */
.metiers{display:grid;grid-template-columns:320px 1fr;border:1px solid var(--line)}
.tabs{display:flex;flex-direction:column;border-right:1px solid var(--line)}
.tab{all:unset;cursor:pointer;padding:20px 24px;border-bottom:1px solid var(--line);font-family:var(--display);font-size:20px;font-weight:500;display:flex;justify-content:space-between;align-items:center;gap:12px}
.tab:last-child{border-bottom:0}
.tab small{font-family:var(--mono);font-size:11px;color:var(--ink-2);letter-spacing:.08em}
.tab[aria-selected="true"]{background:var(--ink);color:var(--paper)}
.tab[aria-selected="true"] small{color:var(--mint)}
.tab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.panel{padding:clamp(24px,4vw,48px);display:grid;grid-template-columns:1fr 200px;gap:32px}
.panel h3{font-size:clamp(28px,3.4vw,42px);line-height:1.05;margin:14px 0 16px}
.panel p{margin:0 0 22px;max-width:52ch;color:var(--ink-2)}
.chips{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column}
.chips li{font-family:var(--mono);font-size:12px;letter-spacing:.07em;text-transform:uppercase;padding:11px 0;border-top:1px solid var(--line)}
.swatch{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;aspect-ratio:1;max-width:100%}
.swatch b{display:block}
@media (max-width:900px){.metiers{grid-template-columns:1fr}.tabs{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;overflow-x:auto}.tab{border-bottom:0;border-right:1px solid var(--line);white-space:nowrap;padding:16px 18px;font-size:17px}.tab small{display:none}.panel{grid-template-columns:1fr}.swatch{max-width:180px}}

/* Cartes projet avec photo */
.card .viz.photo{display:block;background:var(--paper-2)}
.card .viz.photo img{display:block;width:100%;height:100%;object-fit:cover}
div.card{cursor:default}
div.card:hover h3{color:inherit}

/* Contact */
.contact .quote{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;opacity:.75;margin-top:18px;color:inherit;max-width:none}
.contact dd a{color:inherit;text-decoration:none}
.contact dd a:hover{text-decoration:underline}

/* Pages de texte */
.prose{max-width:70ch;padding-bottom:clamp(64px,9vw,112px)}
.prose h2{font-size:clamp(24px,2.6vw,32px);margin:40px 0 12px}
.prose p,.prose li{color:var(--ink-2)}
.prose a{color:var(--accent)}
.seo-line{font-size:13px;color:var(--ink-2);max-width:none;margin:0 0 8px}

/* Visuels générés pour les projets sans image */
.viz.gen{display:block;position:relative;overflow:hidden;color:#fff}
.gv-tag{position:absolute;left:14px;top:14px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;background:rgba(13,18,51,.55);padding:5px 8px}
.gen-video{background:radial-gradient(circle at 70% 30%,#3D7BFF 0,transparent 55%),linear-gradient(135deg,#1A2399,#0FA89A)}
.gv-play{position:absolute;left:50%;top:48%;width:64px;height:64px;border-radius:50%;background:rgba(255,255,255,.95);transform:translate(-50%,-50%)}
.gv-play::after{content:"";position:absolute;left:26px;top:20px;border-left:18px solid #2433E0;border-block:12px solid transparent}
.gv-bar{position:absolute;left:14px;right:64px;bottom:18px;height:4px;background:rgba(255,255,255,.3)}
.gv-bar i{display:block;width:38%;height:100%;background:#7FDCC2}
.gv-time{position:absolute;right:14px;bottom:12px;font-family:var(--mono);font-size:11px}
.gen-imey{background:#0D1233;display:grid!important;grid-template-columns:22% 1fr}
.viz-imey{position:relative}
.gi-label{position:absolute;left:0;top:0;width:calc(100% / 3);height:25%;display:flex;align-items:center;justify-content:center;background:#2433E0;color:#fff;font-family:var(--display);font-weight:600;font-size:clamp(18px,2vw,24px);box-shadow:4px 4px 0 #0D1233}
.gi-side{background:#2433E0;font-family:var(--display);font-weight:600;font-size:18px;padding:14px 10px}
.gi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:14px;align-content:center}
.gi-grid i{display:grid;grid-template-columns:1fr 1fr;aspect-ratio:16/9}
.gi-grid i:nth-child(2),.gi-grid i:nth-child(4){outline:2px solid #7FDCC2;outline-offset:2px}
.gi-grid b{display:block}
.gen-omni{background:linear-gradient(135deg,#6E4CF2,#2433E0)}
.go-store{position:absolute;left:16%;bottom:22%;width:30%;height:42%;background:#fff}
.go-store::before{content:"";position:absolute;left:-6%;right:-6%;top:-18%;height:22%;background:repeating-linear-gradient(90deg,#7FDCC2 0 16%,#fff 16% 32%)}
.go-store i{position:absolute;left:35%;bottom:0;width:30%;height:45%;background:#0D1233}
.go-phone{position:absolute;right:16%;bottom:18%;width:18%;height:56%;border:3px solid #fff;border-radius:10px;display:flex;flex-direction:column;gap:6%;padding:10% 12%}
.go-phone i{display:block;height:14%;background:rgba(255,255,255,.8)}
.go-link{position:absolute;left:48%;right:36%;top:55%;border-top:3px dotted #7FDCC2}
/* Fiches projet génériques */
.showcase img.cover{display:block;width:100%;max-height:78vh;object-fit:cover;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.pgallery{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.pgallery figure{margin:0}
.pgallery img{display:block;width:100%;height:auto}
.pgallery figure:first-child:nth-last-child(odd){grid-column:1/-1}
@media (max-width:640px){.pgallery{grid-template-columns:1fr}}

/* Logo sur photo (L'Europe à Mayotte) */
.gen-logo{display:grid!important;place-items:center}
.gen-logo .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gen-logo .plate{position:relative;background:#fff;width:68%;padding:6% 7%;box-shadow:0 12px 30px rgba(13,18,51,.25)}
.gen-logo .crop{position:relative;display:block;width:100%;aspect-ratio:225/188;overflow:hidden}
.gen-logo .crop img{position:absolute;right:0;top:0;height:100%;width:auto;max-width:none}
.sitelink{margin:18px 0 0;font-family:var(--mono);font-size:13px;letter-spacing:.06em}
.sitelink a{color:var(--accent);text-decoration:none}
.sitelink a:hover{text-decoration:underline}
.pgallery figure:only-child{grid-column:1/-1;display:flex;justify-content:center}
.pgallery figure:only-child img{max-width:340px;box-shadow:0 20px 50px rgba(13,18,51,.2)}
/* Publications et vidéos de campagne */
.posts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.posts figure{margin:0}
.posts img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover}
.videos{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;align-items:start}
.videos figure{margin:0;display:flex;flex-direction:column;gap:8px}
.videos figure.carre{grid-column:span 2}
.videos figure.large{grid-column:span 3}
.scene .feature{max-width:1080px;margin-inline:auto;border-radius:14px;overflow:hidden;box-shadow:0 30px 60px -20px rgba(13,18,51,.55)}
.scene .feature video{display:block;width:100%;height:auto;background:#0D1233}
.videos figure.vertical{grid-column:span 3;max-width:320px}
.videos video{display:block;width:100%;height:auto;background:#0D1233}
.videos figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
@media (max-width:760px){.posts{grid-template-columns:repeat(2,1fr)}.videos{grid-template-columns:1fr 1fr}.videos figure.carre,.videos figure.vertical{grid-column:span 1;max-width:none}.videos figure.large{grid-column:span 2}}
.logo .word{white-space:nowrap;color:var(--ink)}
.logo .word span{color:var(--teal)}
.hero .eyebrow + h1{margin-top:4px}

/* Compositions de visuels (fiches projet) */
.scene{background:linear-gradient(135deg,#1A2399 0%,#2433E0 55%,#0FA89A 100%);padding-block:clamp(48px,7vw,100px);overflow:hidden}
.scene.dark{background:radial-gradient(circle at 70% 20%,#2433E0 0,transparent 55%),#0D1233}
.devices{position:relative;max-width:1080px;margin-inline:auto;padding-right:clamp(40px,8vw,120px)}
.devices .laptop{max-width:none;margin:0}
.devices .phone{position:absolute;right:0;bottom:-6%;width:clamp(110px,20%,230px);max-width:none;box-shadow:0 30px 60px rgba(0,0,0,.45)}
.fan{display:flex;justify-content:center;align-items:center;padding-block:clamp(10px,3vw,40px)}
.fan img{width:44%;max-width:560px;height:auto;display:block;border-radius:4px;box-shadow:0 30px 70px rgba(0,0,0,.5);background:#fff}
.fan img:nth-child(1){transform:rotate(-6deg) translate(24%,4%)}
.fan img:nth-child(2){transform:scale(1.06);position:relative;z-index:2}
.fan img:nth-child(3){transform:rotate(6deg) translate(-24%,4%)}
.screens{display:grid;grid-template-columns:1fr 1fr;gap:28px 24px}
.screens figure{margin:0;display:flex;flex-direction:column;gap:10px}
.screens figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
@media (max-width:760px){.screens{grid-template-columns:1fr}.fan img{width:48%}}

/* Page 404 */
.e404{min-height:calc(100vh - 260px)}
.e404-hero{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(32px,6vw,80px);align-items:center}
.px404{display:grid;grid-template-columns:repeat(11,1fr);gap:clamp(4px,.6vw,8px);max-width:520px;width:100%;justify-self:end}
.px404 i,.px404 b{aspect-ratio:1;display:block}
.px404 i{animation:px-in .5s cubic-bezier(.2,.8,.2,1.2) both;animation-delay:var(--d)}
.px404 i.fall{animation:px-in .5s both var(--d),px-fall 1.1s cubic-bezier(.5,0,.8,.4) 1.6s forwards}
.e404 .quick{margin-bottom:clamp(48px,8vw,96px)}
@keyframes px-in{from{transform:scale(0);opacity:0}to{transform:none;opacity:1}}
@keyframes px-fall{0%{transform:none}20%{transform:rotate(-12deg)}100%{transform:translate(18px,160px) rotate(38deg);opacity:0}}
@media (prefers-reduced-motion:reduce){.px404 i,.px404 i.fall{animation:none}}
@media (max-width:760px){.e404{min-height:0}.e404-hero{grid-template-columns:1fr}.px404{justify-self:start;max-width:340px;order:-1}}

/* Fiche projet : page d'accueil en entier (ordinateur / mobile) */
.fullpage{padding-block:clamp(48px,7vw,88px);border-top:1px solid var(--line)}
.fp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:clamp(28px,4vw,48px)}
.fp-head h2{font-size:clamp(30px,3.6vw,46px)}
.fp-toggle{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--ink);border-radius:999px}
.fp-toggle button{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;background:none;border:0;color:var(--ink);padding:9px 18px;border-radius:999px;cursor:pointer}
.fp-toggle button[aria-selected="true"]{background:#2433E0;color:#fff}
.fp-view .frame{max-width:1100px;margin:0 auto}
.fp-scroll{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.fp-scroll img{display:block;width:100%;height:auto}
.fp-view .frame .fp-scroll{max-height:2400px}
.fp-phone{width:min(360px,100%);margin:0 auto;background:#0D1233;border-radius:44px;padding:14px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.fp-phone .fp-scroll{height:min(720px,78vh);border-radius:30px;background:#fff}
