/* La police (/font) : la grille de la charte (brand.css), et la police pour seule image. Classes en ft- : brand.css et
   base.css sont chargés sur la même page. */
.ft-hero{min-height:420px}
.ft-aa{font-size:clamp(150px,19vw,260px);line-height:.86;letter-spacing:-.05em;font-weight:700}
.ft-facts{display:flex;flex-wrap:wrap;gap:8px 32px;margin-top:22px}
.ft-facts dt{font-size:22px;line-height:1.1;font-weight:600;letter-spacing:-.02em}
.ft-facts dd{font-size:12.5px;color:var(--mute)}

/* Le mot passe du Light au Black, et revient. Seule la graisse bouge. */
.ft-breathe{flex:1;display:grid;place-items:center;min-height:150px;font-size:clamp(44px,5vw,66px);line-height:1;letter-spacing:-.03em;white-space:nowrap;animation:ft-breathe 5.2s var(--ease) infinite alternate both}
.ft-breathe.off{animation-play-state:paused}
@keyframes ft-breathe{from{font-weight:300}to{font-weight:900}}

/* L'essayeur */
.ft-try{grid-column:1/-1;gap:20px;--w:600;--i:0deg;--z:72px;--t:-.04em}
.ft-input{min-height:1.2em;padding:6px 2px 10px;outline:none;font-size:var(--z);font-weight:var(--w);font-style:oblique var(--i);letter-spacing:var(--t);line-height:1.08;overflow-wrap:anywhere;caret-color:var(--accent)}
.ft-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px 28px}
.ft-controls label{display:grid;grid-template-columns:1fr auto;gap:6px 8px;align-items:baseline;font-size:12.5px;color:var(--mute)}
.ft-controls output{color:var(--ink);font-variant-numeric:tabular-nums}
.ft-controls input{grid-column:1/-1;width:100%;height:20px;margin:0;appearance:none;-webkit-appearance:none;background:none;cursor:pointer}
.ft-controls input::-webkit-slider-runnable-track{height:2px;border-radius:2px;background:var(--line)}
.ft-controls input::-moz-range-track{height:2px;border-radius:2px;background:var(--line)}
.ft-controls input::-webkit-slider-thumb{width:16px;height:16px;margin-top:-7px;border:0;border-radius:50%;background:var(--ink);-webkit-appearance:none;transition:transform .2s var(--ease)}
.ft-controls input::-moz-range-thumb{width:16px;height:16px;border:0;border-radius:50%;background:var(--ink)}
.ft-controls input:hover::-webkit-slider-thumb{transform:scale(1.15)}
.ft-controls input:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:6px}
.ft-presets{display:flex;flex-wrap:wrap;gap:6px;padding-top:16px;border-top:1px solid #f0ede7}
.ft-presets button{all:unset;box-sizing:border-box;height:32px;padding:0 13px;border-radius:999px;font-size:13.5px;line-height:32px;cursor:pointer;transition:background .2s}
.ft-presets button:hover{background:var(--soft)}
.ft-presets button.on{background:var(--ink);color:#fff}
.ft-presets button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* Les graisses */
.ft-weights,.ft-glyphs{grid-column:1/-1;gap:18px}
.ft-weights .head,.ft-glyphs .head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px 24px;flex-wrap:wrap}
.ft-weights .head p,.ft-glyphs .head p{margin-top:12px}
.ft-rows{display:grid;list-style:none}
.ft-rows li{display:grid;grid-template-columns:140px minmax(0,1fr) auto;align-items:baseline;gap:6px 18px;padding:11px 0;border-top:1px solid #f0ede7}
.ft-rows li:first-child{border-top:0}
.ft-rows li>span:first-child{font-size:13px;color:var(--mute)}
.ft-rows b{font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
.ft-line{font-size:clamp(25px,3.7vw,44px);line-height:1.12;letter-spacing:-.025em;white-space:nowrap;overflow:hidden;text-overflow:clip}
.ft-rows small{font-size:12.5px;color:var(--mute);font-variant-numeric:tabular-nums;white-space:nowrap}
.ft-weights:has([value=italic]:checked) .ft-line{font-style:oblique 10deg}

/* Les lignes d'un corps : leurs hauteurs viennent de la police (ascendante 0,964 ; descendante 0,256 ; capitale 0,708 ;
   x 0,511 ; descendantes 0,22). Avec line-height:1, la ligne de base tombe à 0,854 du haut du bloc. */
.ft-rule{position:absolute;left:0;right:0;height:1px;background:rgba(176,98,58,.32)}
.ft-rule.cap{top:calc(var(--s)*.146 + var(--y,0px))}
.ft-rule.x{top:calc(var(--s)*.343 + var(--y,0px))}
.ft-rule.base{top:calc(var(--s)*.854 + var(--y,0px))}
.ft-rule.desc{top:calc(var(--s)*1.074 + var(--y,0px))}

/* Le répertoire */
.ft-switches{display:flex;flex-wrap:wrap;gap:8px}
.ft-inspect{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:24px;align-items:start;--gw:400;--gs:normal}
.ft-glyphs:has([value="300"]:checked) .ft-inspect{--gw:300}
.ft-glyphs:has([value="700"]:checked) .ft-inspect{--gw:700}
.ft-glyphs:has([value="900"]:checked) .ft-inspect{--gw:900}
.ft-glyphs:has([name=glyph-style][value=italic]:checked) .ft-inspect{--gs:oblique 10deg}
.ft-view{--s:230px;--y:34px;position:sticky;top:16px;height:370px;overflow:hidden;border-radius:16px;background:var(--bg);box-shadow:inset 0 0 0 1px #ece9e2}
.ft-big{position:absolute;inset:var(--y) 0 auto;font-size:var(--s);line-height:1;text-align:center;font-weight:var(--gw);font-style:var(--gs)}
.ft-view figcaption{position:absolute;inset:auto 14px 12px;display:flex;justify-content:space-between;font-size:12.5px;color:var(--mute)}
.ft-view code{font:inherit;font-variant-numeric:tabular-nums}
.ft-grid{display:grid;gap:14px;min-width:0}
.ft-grid h3{margin-bottom:6px;font-size:12.5px;font-weight:400;color:var(--mute)}
.tile .ft-grid p{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:2px;max-width:none;color:var(--ink);font-size:21px;line-height:1;font-weight:var(--gw);font-style:var(--gs)}
.ft-grid button{all:unset;box-sizing:border-box;height:40px;border-radius:9px;text-align:center;line-height:40px;cursor:pointer;transition:background .15s}
.ft-grid button:hover,.ft-grid button.on{background:var(--soft)}
.ft-grid button:focus-visible{outline:2px solid var(--ink);outline-offset:1px}

/* Les proportions */
.ft-metrics{grid-column:span 3}
/* Hxgp occupe 2,42 cadratins : sur un téléphone, la taille suit la largeur de la carte (écran moins 88 px de marges). */
.ft-gauge{--s:min(clamp(130px,16vw,190px),calc((100vw - 88px) / 2.45));--y:6px;position:relative;height:calc(var(--s)*1.2);overflow:hidden}
.ft-gauge span{position:absolute;inset:var(--y) 0 auto;font-size:var(--s);line-height:1;font-weight:600;white-space:nowrap}
.ft-legend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.ft-legend dt{font-size:12.5px;color:var(--mute)}
.ft-legend dd{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
.ft-metrics>p{margin-top:auto;font-size:13px}

/* Les fonctions */
.ft-features{grid-column:span 3}
.ft-features table{width:100%;border-collapse:collapse}
.ft-features th,.ft-features td{padding:10px 8px 10px 0;border-top:1px solid #f0ede7;text-align:left;vertical-align:baseline;white-space:pre-line}
.ft-features thead th,.ft-features thead td{padding-top:0;border-top:0;font-size:12.5px;font-weight:400;color:var(--mute)}
.ft-features tbody th{font-size:12.5px;font-weight:400;color:var(--mute)}
.ft-features tbody td{font-size:17px;line-height:1.3}
.ft-features>p{margin-top:auto;font-size:13px}

.ft-word>div{margin:auto 0;font-size:clamp(44px,5.2vw,64px);line-height:1;font-weight:700;letter-spacing:0}

/* Les langues */
.ft-languages{grid-column:span 3}
.ft-languages dl{display:grid;gap:7px}
.ft-languages dl div{display:grid;grid-template-columns:110px 1fr;align-items:baseline;gap:12px}
.ft-languages dt{font-size:12.5px;color:var(--mute)}
.ft-languages dd{font-size:18px;line-height:1.25}
.ft-languages>p{margin-top:auto;font-size:13px}

/* Le code */
.ft-code{grid-column:span 3}
.ft-code pre{overflow:auto;padding:16px 18px;border-radius:16px;background:var(--ink);color:#e7e5df;font:12.5px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}
.ft-copy{all:unset;position:absolute;top:20px;right:24px;box-sizing:border-box;height:30px;padding:0 13px;border-radius:999px;background:var(--soft);font-size:12.5px;line-height:30px;cursor:pointer;transition:background .2s}
.ft-copy:hover{background:var(--line)}
.ft-copy:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* Les fichiers */
.ft-files{grid-column:1/-1;gap:10px}
.ft-files ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:6px;list-style:none}
.ft-files a{position:relative;display:grid;grid-template-columns:1fr auto;gap:0 8px;padding-bottom:2px}
.ft-file{grid-column:1/-1;display:grid;place-items:center;height:150px;margin-bottom:10px;border-radius:16px;background:var(--bg);box-shadow:inset 0 0 0 1px #ece9e2;font-size:76px;letter-spacing:-.04em;transition:transform .45s var(--ease)}
.ft-files li:nth-child(2) .ft-file{background:var(--ink);box-shadow:none;color:#fff}
.ft-files li:nth-child(3) .ft-file{background:var(--soft);box-shadow:none}
.ft-files a:hover .ft-file{transform:translateY(-3px)}
.ft-files a:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:16px}
.ft-files b{font-size:14px;font-weight:600}
.ft-files small{grid-column:1/-1;font-size:12.5px;color:var(--mute)}
.ft-files svg{grid-row:2;grid-column:2;width:15px;height:15px;fill:none;stroke:var(--mute);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--ease),stroke .2s}
.ft-files a:hover svg{stroke:var(--ink);transform:translateY(2px)}

@media (max-width:980px){
  .ft-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ft-inspect{grid-template-columns:minmax(0,1fr)}
  .ft-view{position:relative;top:0;--s:190px;height:310px}
  .ft-metrics,.ft-features,.ft-languages,.ft-code{grid-column:span 2}
}
/* L'échantillon passe sous son libellé, à une taille où le Black le plus long (13,4 cadratins) tient dans la carte. */
@media (max-width:680px){
  .ft-rows li{grid-template-columns:1fr auto}
  .ft-rows li>.ft-line{grid-column:1/-1;grid-row:2;font-size:min(25px,calc((100vw - 88px) / 13.6))}
}
@media (max-width:560px){
  .ft-files ul{grid-template-columns:minmax(0,1fr)}
  .ft-file{height:120px}
  .ft-legend{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ft-copy{right:20px}
}
@media (prefers-reduced-motion:reduce){.ft-breathe{animation:none;font-weight:700}}
