TP_JO2024/home/dist/component/footer/footer.main.css.map
2024-03-27 17:19:37 +01:00

1 line
No EOL
58 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["<no source>","%3Cinput%20css%20fvNbpm%3E","file:///Users/ket/Documents/work/dsfr/src/component/footer/main.scss","file:///Users/ket/Documents/work/dsfr/src/component/footer/style/module/_default.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/typography/tool/_list.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/spacing/tool/_size.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/spacing/tool/_space.scss","file:///Users/ket/Documents/work/dsfr/src/component/footer/style/module/_content.scss","file:///Users/ket/Documents/work/dsfr/src/component/footer/style/module/_top.scss","file:///Users/ket/Documents/work/dsfr/src/component/footer/style/module/_bottom.scss","file:///Users/ket/Documents/work/dsfr/src/component/footer/style/module/_partners.scss","file:///Users/ket/Documents/work/dsfr/module/color/mixin/_element.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/selector/tool/_block.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/display/tool/_display.scss","file:///Users/ket/Documents/work/dsfr/src/component/logo/style/_tool.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/selector/tool/_pseudo.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/action/tool/_link.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/typography/tool/_styles.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/selector/tool/_nest.scss","file:///Users/ket/Documents/work/dsfr/src/component/link/style/tool/_size.scss","file:///Users/ket/Documents/work/dsfr/src/component/link/style/tool/_icon.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/spacing/tool/_position.scss","file:///Users/ket/Documents/work/dsfr/src/core/style/typography/tool/_font-weight.scss","file:///Users/ket/Documents/work/dsfr/src/component/footer/style/_scheme.scss","file:///Users/ket/Documents/work/dsfr/module/color/variable/_static.scss","file:///Users/ket/Documents/work/dsfr/module/media-query/mixin/_respond-from.scss","file:///Users/ket/Documents/work/dsfr/module/shame/media-query/mixin/_order.scss"],"names":[],"mappings":"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,sDAAA;AV6VJ;;AS7WI;EJIE,kBAXA;ALuXN;;AS3WE;EO2EE,8BAAA;EA/EF,mBAAA;EAGE,mBAAA;EKVF,gBAAA;EZeE,gBAAA;EACA,kBAAA;ECMA,+BAAA;AVwWJ;;ASvWE;EMiCA,6BAAA;Af8UF;;ASxWE;EGtCE,aAAA;EAIA,sBAAA;EAYA,eAAA;EPMA,qBAfE;AL6YN;;AS5VE;EGxDE,aAAA;EAIA,mBAAA;EAQA,uBAAA;EPME,mBAXA;ALkaN;;ASlWE;EJrDI,qBAXA;;EI6FF;;GAAA;ATqVJ;;AS/WI;;EG1EA,aAAA;EAIA,sBAAA;EAIA,mBAAA;EAQA,eAAA;AZ+aJ;;ASjWQ;;EJ5EF,cAXA;ALmdN;;ASnXI;EJrFE,mBAXA;ALsdN;;AsB9aU;;;EAGE,gBCtDJ;AvB0hBR;AwBlhBI;ECRI,cAAA;EnBwCJ;IDlBE,oBAXA;ELyLJ;;ES7KA;IAQI,gBAAA;ET+WJ;;ESpWA;IGtCE,aAAA;IAIA,mBAAA;IAIA,uBAAA;IAIA,8BAAA;IPME,qBAXA;ELqZJ;;ESpWA;IJtCI,mBAXA;ELsaJ;;ESnWE;;IAKI,mBAAA;IACA,uBAAA;EToXN;;ES1WI;;IJpEF,yBAfE;EL0cJ;;ES1YA;IAsCI,QAAA;ETyXJ;AA3eF;AwBSI;ECRI,cAAA;EdKN;INiBI,qBAXA;EL0BJ;;EaRA;IA1BA,oBAAA;IRuBE,gBAfE;IAeF,gBAfE;ELwEJ;;Ec1EA;IV0CI,gBAAA;IAGA,eAAA;IChCA,8BAXA;IQHF,2DAAA;IACA,6CAAA;EbiFF;;Ea/EW;IACP,2DAAA;EbiFJ;;EcpFA;IDQE,qBAAA;IACA,oCAAA;IACA,8CAAA;IACA,4BAAA;Eb+EF;;Ea7EW;IACP,qCAAA;Eb+EJ;;EElEE;IGdE,iBAXA;EL6GJ;;EEvGA;IAyBI,gBAAA;IGpBA,kBAXA;ELmHJ;;EEjFI;IGnBF,2BAfE;IAeF,aAfE;IHqCE,sBAAA;EFmFN;;EMhIA;IDmBI,iBAXA;ELoJJ;;EM/HA;IDVI,kBAXA;EL+KJ;;EOvLA;IFuBE,wBAfE;ELiOJ;;EQtNA;IHIE,0BAfE;EL8SJ;;EchTA;ITaI,qBAXA;EL8TJ;;ES/RA;IJpBI,mBAXA;II0CA,iBAAA;ETiXJ;;ESrWE;IJ3CE,kBAXA;EL2aJ;;ESxWE;;IJxDE,cAXA;ELkcJ;;ESrXM;;IACE,yBAAA;ETuXR;;ESlXI;;IJpEF,qBAfE;EL+cJ;;ES/WE;IJrFE,qBAXA;EL0dJ;AAneF;AwBMI;ECRI,cAAA;EnBGN;IDmBI,aAXA;ICGA,eAAA;IFKA,mBAAA;EJmJJ;AAjKF;AwBGI;ECRI,cAAA;AzBQR","file":"footer.main.css","sourcesContent":[null,"@charset \"UTF-8\";\n/* ¯¯¯¯¯¯¯¯¯ *\\\n FOOTER\n\\* ˍˍˍˍˍˍˍˍˍ */\n@media (min-width: 36em) {\n /*! media sm */\n}\n@media (min-width: 48em) {\n /*! media md */\n}\n@media (min-width: 62em) {\n /*! media lg */\n}\n@media (min-width: 78em) {\n /*! media xl */\n}\n.fr-footer {\n --ul-type: none;\n --ol-type: none;\n --ul-start: 0;\n --ol-start: 0;\n --xl-block: 0;\n --li-bottom: 0;\n --ol-content: none;\n width: 100%;\n padding-top: 2rem;\n /**\n * Conteneur du bloc marque, avec le logo principal et éventuellement\n * un logo opérateur\n */\n /**\n * Hauteur auto pour le logo opérateur\n */\n}\n.fr-footer__body {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n margin-bottom: 1rem;\n}\n@media (min-width: 48em) {\n .fr-footer__body {\n margin-bottom: 1.5rem;\n }\n}\n.fr-footer__body + .fr-footer__bottom {\n margin-top: 1rem;\n}\n.fr-footer__brand {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-basis: 100%;\n /**\n * Si on ajoute un logo opérateur à côté du logo principal, on lui applique une marge à gauche\n * On prévoit que le logo soit encapsulé dans un <a>, ou bien directement en img ou en svg\n * (Eventuellement prévoir une classe pour pouvoir le mettre en background image)\n */\n}\n.fr-footer__brand .fr-logo {\n font-size: 1.05rem;\n padding: 1rem;\n margin: -1rem;\n}\n.fr-footer__brand .fr-logo::before {\n width: 2.75rem;\n height: 1rem;\n margin-bottom: 0.3333333333rem;\n background-size: 2.75rem 1.125rem, 2.75rem 1rem, 0;\n background-position: 0 -0.0625rem, 0 0, 0 0;\n}\n:root[data-fr-mourning] .fr-footer__brand .fr-logo::before {\n background-size: 2.75rem 1.125rem, 0, 2.75rem 1rem;\n}\n\n.fr-footer__brand .fr-logo::after {\n min-width: 2.625rem;\n background-size: 5.25rem 3.75rem;\n background-position: 0 calc(100% + 1.875rem);\n padding-top: 2.2083333333rem;\n}\n[data-fr-theme=dark] .fr-footer__brand .fr-logo::after {\n background-position: -2.625rem 100%;\n}\n\n@media (min-width: 48em) {\n .fr-footer__brand .fr-logo {\n font-size: 1.3125rem;\n padding: 1.25rem;\n }\n .fr-footer__brand .fr-logo::before {\n width: 3.4375rem;\n height: 1.25rem;\n margin-bottom: 0.4166666667rem;\n background-size: 3.4375rem 1.40625rem, 3.4375rem 1.25rem, 0;\n background-position: 0 -0.078125rem, 0 0, 0 0;\n }\n :root[data-fr-mourning] .fr-footer__brand .fr-logo::before {\n background-size: 3.4375rem 1.40625rem, 0, 3.4375rem 1.25rem;\n }\n .fr-footer__brand .fr-logo::after {\n min-width: 3.28125rem;\n background-size: 6.5625rem 4.6875rem;\n background-position: 0 calc(100% + 2.34375rem);\n padding-top: 2.7604166667rem;\n }\n [data-fr-theme=dark] .fr-footer__brand .fr-logo::after {\n background-position: -3.28125rem 100%;\n }\n}\n@media (min-width: 48em) {\n .fr-footer__brand .fr-logo {\n margin: -1.25rem;\n }\n}\n.fr-footer__brand-link {\n display: flex;\n flex-direction: row;\n --external-link-content: none;\n}\n.fr-footer__brand .fr-logo + .fr-footer__brand-link {\n margin-left: 1.5rem;\n}\n@media (min-width: 48em) {\n .fr-footer__brand .fr-logo + .fr-footer__brand-link {\n margin-left: 2rem;\n }\n}\n@media (min-width: 48em) {\n .fr-footer__brand {\n flex-basis: auto;\n margin-right: 1rem;\n }\n .fr-footer__brand.fr-enlarge-link {\n margin: -1rem 0 -1rem -1rem;\n padding: 1rem;\n align-self: flex-start;\n }\n}\n.fr-footer__logo {\n height: auto;\n max-height: 100%;\n}\n\n/**\n * La partie \"content\" représente les informations sous forme de texte rajoutées dans le footer\n * ainsi que les éventuels liens simples\n */\n.fr-footer {\n /**\n * Contenu texte simple\n */\n /**\n * Liste des liens situés en dessous de la partie texte\n */\n}\n.fr-footer__content {\n display: flex;\n flex-wrap: wrap;\n flex-basis: 100%;\n margin-top: 1.5rem;\n}\n@media (min-width: 48em) {\n .fr-footer__content {\n margin-left: auto;\n }\n}\n@media (min-width: 62em) {\n .fr-footer__content {\n margin-top: 0;\n flex-basis: 50%;\n max-width: 36.75rem;\n }\n}\n.fr-footer__content-desc {\n --underline-img: linear-gradient(0deg, currentColor, currentColor);\n --text-spacing: 0 0 0 0;\n width: 100%;\n font-size: 0.875rem;\n line-height: 1.5rem;\n}\n.fr-footer__content-list {\n display: flex;\n flex-direction: row;\n align-self: center;\n margin-bottom: -0.5rem;\n margin-top: 1rem;\n flex-wrap: wrap;\n}\n@media (min-width: 48em) {\n .fr-footer__content-list {\n margin-top: 0.5rem;\n }\n}\n.fr-footer__content-list > li {\n margin-right: 1.25rem;\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n@media (min-width: 36em) {\n .fr-footer__content-list > li {\n margin-right: 1.5rem;\n }\n}\n.fr-footer__content-list > li::before {\n content: none;\n}\n.fr-footer__content-list > li:last-child {\n margin-right: 0;\n}\n.fr-footer__content-link {\n font-weight: bold;\n font-size: 0.875rem;\n line-height: 1.5rem;\n}\n.fr-footer__content-link:not(:hover):not(:active) {\n --underline-idle-width: 0;\n}\n\n/**\n * La partie \"top\" du footer est constituée de colonnes basées sur le système de grille du Design System\n * Ces colonnes sont constituées dune catégorie (optionnel) et d'une liste verticale de liens\n */\n.fr-footer {\n /**\n * Catégorie (optionnel)\n */\n /**\n * Style de la liste\n */\n /**\n * Style du lien\n */\n}\n.fr-footer__top {\n display: flex;\n margin: -1.875rem 0 1.5rem;\n padding: 2rem 0 1.25rem;\n}\n@media (min-width: 48em) {\n .fr-footer__top {\n margin: -1.875rem 0 2rem;\n }\n}\n.fr-footer__top-cat {\n margin: 0 0 0.75rem;\n font-size: 0.75rem;\n line-height: 1.25rem;\n display: block;\n font-weight: 700;\n text-align: left;\n}\n.fr-footer__top-list {\n font-size: 0.75rem;\n line-height: 1.25rem;\n margin: 0;\n}\n.fr-footer__top-list li {\n margin-bottom: 0.75rem;\n}\n.fr-footer__top-link {\n font-size: 0.75rem;\n line-height: 1.25rem;\n}\n.fr-footer__top-link:not(:hover):not(:active) {\n --underline-idle-width: 0;\n}\n\n/**\n * La partie \"bottom\" du footer est constituée d'une liste de liens simples (ferrée à gauche)\n * ainsi que du copyright (ferré à droite)\n */\n.fr-footer {\n /**\n * Liste de liens avec séparateur\n */\n /**\n * Style du lien de la liste\n */\n /**\n * Copyright\n */\n}\n.fr-footer__bottom {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n margin-top: 2.5rem;\n}\n.fr-footer__bottom .fr-btn {\n font-size: 0.75rem;\n line-height: 1.25rem;\n min-height: 1.25rem;\n padding: 0rem 0.5rem;\n overflow: initial;\n max-width: 100%;\n max-height: none;\n display: inline;\n}\n.fr-footer__bottom .fr-btn::before {\n --icon-size: 1rem;\n margin-left: -0.125rem;\n margin-right: 0.5rem;\n}\n.fr-footer__bottom-list {\n width: 100%;\n padding: 0.5rem 0;\n width: 100%;\n margin: 0;\n}\n.fr-footer__bottom-item {\n position: relative;\n margin: 0.5rem 0 0 0.25rem;\n display: inline;\n}\n@media (min-width: 48em) {\n .fr-footer__bottom-item {\n margin: 0.5rem 0 0 0.75rem;\n }\n}\n.fr-footer__bottom-item::before {\n content: \"\";\n display: inline-block;\n vertical-align: middle;\n position: relative;\n width: 1px;\n height: 1rem;\n margin-right: 0.25rem;\n margin-bottom: 0.625rem;\n margin-top: 0.625rem;\n}\n@media (min-width: 48em) {\n .fr-footer__bottom-item::before {\n margin-right: 0.75rem;\n }\n}\n.fr-footer__bottom-item:first-child {\n margin: 0.5rem 0 0;\n}\n.fr-footer__bottom-item:first-child::before {\n content: none;\n}\n.fr-footer__bottom-link {\n font-size: 0.75rem;\n line-height: 1.25rem;\n}\n.fr-footer__bottom-link:not(:hover):not(:active) {\n --underline-idle-width: 0;\n}\n.fr-footer__bottom-copy {\n --text-spacing: 0 0 1rem 0;\n margin-top: 0.5rem;\n}\n.fr-footer__bottom-copy * {\n font-size: 0.75rem;\n line-height: 1.25rem;\n}\n\n/**\n * La partie \"partners\" du footer est constituée de logos organisés\n * en partenaires principaux (ferré à gauche) et secondaires (ferrés à droite)\n */\n.fr-footer {\n /**\n * Container des logos partenaires (principaux et secondaires)\n */\n /**\n * Container des logos partenaires principaux\n */\n /**\n * Container des logos partenaires secondaires\n */\n}\n.fr-footer__partners {\n margin-top: 1rem;\n padding-top: 1rem;\n /**\n * On surcharge le style du logo de base\n */\n}\n.fr-footer__partners a {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.fr-footer__partners .fr-footer__logo {\n width: auto;\n height: auto;\n}\n.fr-footer__partners + .fr-footer__bottom {\n margin-top: 0.5rem;\n}\n.fr-footer__partners-title {\n --title-spacing: 0 0 0.75rem 0;\n font-size: 0.875rem;\n line-height: 1.5rem;\n font-weight: 400;\n flex-basis: 100%;\n text-align: center;\n}\n@media (min-width: 36em) {\n .fr-footer__partners-title {\n text-align: left;\n }\n}\n.fr-footer__partners-link {\n --external-link-content: none;\n}\n.fr-footer__partners-logos {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n margin: 0 0 -0.5rem 0;\n}\n@media (min-width: 36em) {\n .fr-footer__partners-logos {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: space-between;\n margin-right: -0.5rem;\n }\n}\n@media (min-width: 48em) {\n .fr-footer__partners-logos {\n margin-right: -1rem;\n flex-wrap: nowrap;\n }\n}\n.fr-footer__partners-main {\n display: flex;\n flex-direction: row;\n justify-content: center;\n margin-bottom: 2rem;\n}\n@media (min-width: 36em) {\n .fr-footer__partners-main {\n margin-bottom: 1rem;\n }\n}\n@media (min-width: 48em) {\n .fr-footer__partners-main + .fr-footer__partners-sub {\n padding-left: 1rem;\n }\n}\n.fr-footer__partners-sub {\n margin-bottom: 0.5rem;\n /**\n * On surcharge le style du lien pour les logos secondaires\n */\n}\n.fr-footer__partners-sub, .fr-footer__partners-sub > ul {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-wrap: wrap;\n}\n@media (min-width: 36em) {\n .fr-footer__partners-sub, .fr-footer__partners-sub > ul {\n flex-direction: row;\n align-items: flex-start;\n }\n}\n@media (min-width: 48em) {\n .fr-footer__partners-sub, .fr-footer__partners-sub > ul {\n padding-top: 0;\n }\n .fr-footer__partners-sub > ul, .fr-footer__partners-sub > ul > ul {\n justify-content: flex-end;\n }\n}\n@media (min-width: 36em) {\n .fr-footer__partners-sub > li, .fr-footer__partners-sub > ul > li {\n margin: 0 0.5rem 0 0.5rem;\n }\n}\n@media (min-width: 48em) {\n .fr-footer__partners-sub > li, .fr-footer__partners-sub > ul > li {\n margin: 0 1rem 0 1rem;\n }\n}\n.fr-footer__partners-sub > li:first-child, .fr-footer__partners-sub > ul > li:first-child {\n margin-left: 0;\n}\n.fr-footer__partners-sub .fr-footer__partners-link {\n margin-bottom: 1rem;\n}\n@media (min-width: 48em) {\n .fr-footer__partners-sub .fr-footer__partners-link {\n margin-bottom: 0.5rem;\n }\n}\n@media (min-width: 36em) {\n .fr-footer__partners-sub {\n order: 3;\n }\n}\n\n.fr-footer {\n box-shadow: inset 0 2px 0 0 var(--border-plain-blue-france), inset 0 -1px 0 0 var(--border-default-grey);\n}\n.fr-footer__content-link {\n color: var(--text-default-grey);\n}\n.fr-footer__top-cat {\n color: var(--text-title-grey);\n}\n.fr-footer__top {\n background-color: var(--background-alt-grey);\n --idle: transparent;\n --hover: var(--background-alt-grey-hover);\n --active: var(--background-alt-grey-active);\n}\n.fr-footer__bottom {\n box-shadow: inset 0 1px 0 0 var(--border-default-grey);\n}\n.fr-footer__bottom .fr-btn {\n color: var(--text-mention-grey);\n}\n.fr-footer__bottom-item::before {\n box-shadow: inset 0 0 0 1px var(--border-default-grey);\n}\n.fr-footer__bottom-link {\n color: var(--text-mention-grey);\n}\n.fr-footer__bottom-copy {\n color: var(--text-mention-grey);\n}\n.fr-footer__partners {\n box-shadow: inset 0 1px 0 0 var(--border-default-grey);\n}\n.fr-footer__partners-title {\n color: var(--text-default-grey);\n}\n.fr-footer__partners .fr-footer__logo {\n background-color: var(--background-default-grey);\n --idle: transparent;\n --hover: var(--background-default-grey-hover);\n --active: var(--background-default-grey-active);\n box-shadow: inset 0 0 0 1px var(--border-default-grey);\n}\n.fr-footer__partners .fr-footer__partners-link, .fr-footer__partners .fr-footer__partners-link:hover, .fr-footer__partners .fr-footer__partners-link:active {\n background: #fff;\n}","////\n/// Footer Main\n/// @group footer\n////\n\n/* ¯¯¯¯¯¯¯¯¯ *\\\n FOOTER\n\\* ˍˍˍˍˍˍˍˍˍ */\n\n@use 'module/path';\n@use 'module/shame/media-query';\n\n@include path.to-dist(2);\n@include media-query.order;\n\n@import 'index';\n@import 'style/module';\n@import 'style/scheme';\n\n@include _footer-scheme;\n","////\n/// Footer Module : default\n/// @group footer\n////\n\n#{ns(footer)} {\n @include disable-list-style;\n @include size(100%);\n @include padding-top(8v);\n\n @include body {\n @include display-flex(row, center, null, wrap);\n @include margin-bottom(4v);\n @include margin-bottom(6v, md);\n\n & + #{ns(footer__bottom)} {\n @include margin-top(4v);\n }\n }\n\n /**\n * Conteneur du bloc marque, avec le logo principal et éventuellement\n * un logo opérateur\n */\n &__brand {\n @include display-flex(row, center);\n flex-basis: 100%;\n\n @include logo(md, lg) {\n @include margin(-4v);\n @include margin(-5v, md);\n }\n\n &-link {\n @include display-flex;\n @include disable-external();\n }\n\n /**\n * Si on ajoute un logo opérateur à côté du logo principal, on lui applique une marge à gauche\n * On prévoit que le logo soit encapsulé dans un <a>, ou bien directement en img ou en svg\n * (Eventuellement prévoir une classe pour pouvoir le mettre en background image)\n */\n #{ns(logo)} + #{ns(footer__brand-link)} {\n @include margin-left(6v);\n @include margin-left(8v, md);\n }\n\n @include respond-from(md) {\n flex-basis: auto;\n @include margin-right(4v);\n\n &#{ns(enlarge-link)} {\n @include margin(-4v 0 -4v -4v);\n @include padding(4v);\n align-self: flex-start;\n }\n }\n }\n\n /**\n * Hauteur auto pour le logo opérateur\n */\n &__logo {\n @include size(null, auto);\n max-height: 100%;\n }\n}\n","////\n/// Core Tool : Reset list\n/// @group core\n////\n\n@mixin enable-list-style() {\n $selector: null;\n\n @if & == null {\n $selector: ':root';\n }\n\n @include nest($selector) {\n --ul-type: disc;\n --ol-type: decimal;\n --ul-start: #{space(4v)};\n --ol-start: #{space(6v)};\n --xl-block: #{space(2v)};\n --li-bottom: #{space(1v)};\n --xl-base: 1em;\n --ol-content: counters(li-counter, \".\") \".\\00a0\\00a0\";\n }\n}\n\n@mixin disable-list-style() {\n --ul-type: none;\n --ol-type: none;\n --ul-start: 0;\n --ol-start: 0;\n --xl-block: 0;\n --li-bottom: 0;\n --ol-content: none;\n}\n\n@mixin enable-list-style-legacy($unify: false) {\n $ul: ul;\n $ol: ol;\n\n @if $unify {\n $ul: selector-associate('&', 'ul');\n $ol: selector-associate('&', 'ol');\n }\n\n @at-root {\n #{$ul} {\n list-style-type: disc;\n }\n\n #{$ol} {\n list-style-type: decimal;\n }\n\n #{$ul},\n #{$ol} {\n @include padding-left(4v);\n @include margin-y(2v);\n }\n }\n}\n\n@mixin disable-list-style-legacy($unify: false) {\n $ul: '#{&} ul';\n $ol: '#{&} ol';\n\n @if $unify {\n $ul: selector-associate('#{&}', 'ul');\n $ol: selector-associate('#{&}', 'ol');\n }\n\n @at-root {\n #{$ul} {\n list-style-type: none;\n }\n\n #{$ol} {\n list-style-type: none;\n }\n\n #{$ul},\n #{$ol} {\n @include padding-left(0);\n @include margin-y(0);\n }\n }\n}\n","////\n/// Core Tool : Spacing size\n/// @group core\n////\n\n@use '../../../../../module/spacing';\n\n@mixin width($width:null, $from: null) {\n @include respond-from($from) {\n @if $width != null {\n width: #{spacing.space($width)};\n }\n }\n}\n\n@mixin min-width($width:null, $from: null) {\n @include respond-from($from) {\n @if $width != null {\n min-width: #{spacing.space($width)};\n }\n }\n}\n\n@mixin max-width($width:null, $from: null) {\n @include respond-from($from) {\n @if $width != null {\n max-width: #{spacing.space($width)};\n }\n }\n}\n\n@mixin height($height:null, $from: null) {\n @include respond-from($from) {\n @if $height != null {\n height: #{spacing.space($height)};\n }\n }\n}\n\n@mixin min-height($height:null, $from: null) {\n @include respond-from($from) {\n @if $height != null {\n min-height: #{spacing.space($height)};\n }\n }\n}\n\n@mixin max-height($height:null, $from: null) {\n @include respond-from($from) {\n @if $height != null {\n max-height: #{spacing.space($height)};\n }\n }\n}\n\n@mixin size($width:null, $height:null, $from: null) {\n @include respond-from($from) {\n @if $width != null {\n width: #{spacing.space($width)};\n }\n @if $height != null {\n height: #{spacing.space($height)};\n }\n }\n}\n\n@mixin min-size($min-width:null, $min-height:null, $from: null) {\n @include respond-from($from) {\n @if $min-width != null {\n min-width: #{spacing.space($min-width)};\n }\n @if $min-height != null {\n min-height: #{spacing.space($min-height)};\n }\n }\n}\n\n@mixin max-size($max-width:null, $max-height:null, $from: null) {\n @include respond-from($from) {\n @if $max-width != null {\n max-width: #{spacing.space($max-width)};\n }\n @if $max-height != null {\n max-height: #{spacing.space($max-height)};\n }\n }\n}\n","////\n/// Core Tool : Spacing space\n/// @group core\n////\n\n@use 'module/spacing';\n\n/// Set space property\n///\n/// @param {String} $property ['margin'] - propriété à appliquer à l'espacement `['margin', 'padding']`\n/// @param {Number | list} $value [2] - valeur de l'espacement en v ou w. peut être une liste si la direction n'est pas renseignée\n/// @param {String} $direction - direction de l'espacement `['x', 'y', 'top', 'right', 'bottom', 'left']`\n///\n/// @example scss - Set margin-bottom to 24px\n/// .foo {\n/// @include _spacing('margin', 6v, 'bottom');\n/// }\n@mixin _spacing($property: margin, $value: 0, $direction: null) {\n $v: spacing.space($value);\n @if $direction != null {\n @if $direction == 'x' {\n #{$property}-left: $v;\n #{$property}-right: $v;\n }\n @else if $direction == 'y' {\n #{$property}-top: $v;\n #{$property}-bottom: $v;\n }\n @else {\n #{$property}-#{$direction}: $v;\n }\n }\n @else {\n #{$property}: $v;\n }\n}\n\n@mixin _spacing-from($property: margin, $value: 0, $direction: null, $from: null) {\n @include respond-from($from) {\n @include _spacing($property, $value, $direction);\n }\n}\n\n@mixin padding($values: 0 0 0 0, $from: null) {\n @include _spacing-from(padding, $values, null, $from);\n}\n\n@mixin padding-x($value: 0, $from: null) {\n @include _spacing-from(padding, $value, 'x', $from);\n}\n\n@mixin padding-y($value: 0, $from: null) {\n @include _spacing-from(padding, $value, 'y', $from);\n}\n\n@mixin padding-top($value: 0, $from: null) {\n @include _spacing-from(padding, $value, 'top', $from);\n}\n\n@mixin padding-right($value: 0, $from: null) {\n @include _spacing-from(padding, $value, 'right', $from);\n}\n\n@mixin padding-bottom($value: 0, $from: null) {\n @include _spacing-from(padding, $value, 'bottom', $from);\n}\n\n@mixin padding-left($value: 0, $from: null) {\n @include _spacing-from(padding, $value, 'left', $from);\n}\n\n@mixin margin($values: 0 0 0 0, $from: null) {\n @include _spacing-from(margin, $values, null, $from);\n}\n\n@mixin margin-x($value: 0, $from: null) {\n @include _spacing-from(margin, $value, 'x', $from);\n}\n\n@mixin margin-y($value: 0, $from: null) {\n @include _spacing-from(margin, $value, 'y', $from);\n}\n\n@mixin margin-top($value: 0, $from: null) {\n @include _spacing-from(margin, $value, 'top', $from);\n}\n\n@mixin margin-right($value: 0, $from: null) {\n @include _spacing-from(margin, $value, 'right', $from);\n}\n\n@mixin margin-bottom($value: 0, $from: null) {\n @include _spacing-from(margin, $value, 'bottom', $from);\n}\n\n@mixin margin-left($value: 0, $from: null) {\n @include _spacing-from(margin, $value, 'left', $from);\n}\n","////\n/// Footer module : Content\n/// @group Footer\n////\n\n/**\n * La partie \"content\" représente les informations sous forme de texte rajoutées dans le footer\n * ainsi que les éventuels liens simples\n */\n#{ns(footer)} {\n &__content {\n @include display-flex(null, null, null, wrap);\n flex-basis: 100%;\n @include margin-top(6v);\n\n @include respond-from(md) {\n @include margin-left(auto);\n }\n\n @include respond-from(lg) {\n @include margin-top(0);\n flex-basis: calc(100% - (100% / 2));\n @include max-width(147v);\n }\n }\n\n /**\n * Contenu texte simple\n */\n &__content-desc {\n @include enable-underline;\n @include set-text-margin(0 0 0 0);\n @include size(100%);\n @include text-style(sm);\n }\n\n /**\n * Liste des liens situés en dessous de la partie texte\n */\n &__content-list {\n @include display-flex(row);\n align-self: center;\n @include margin-bottom(-2v);\n @include margin-top(4v);\n @include margin-top(2v, md);\n flex-wrap: wrap;\n\n > li {\n @include margin-right(5v);\n @include margin-right(6v, sm);\n @include margin-top(2v);\n @include margin-bottom(2v);\n\n @include before(none);\n\n &:last-child {\n @include margin-right(0);\n }\n }\n }\n\n &__content-link {\n font-weight: bold;\n @include text-style(sm);\n\n &:not(:hover):not(:active) {\n @include link-underline-hover-only;\n }\n }\n}\n","////\n/// Footer module : Top\n/// @group Footer\n////\n\n/**\n * La partie \"top\" du footer est constituée de colonnes basées sur le système de grille du Design System\n * Ces colonnes sont constituées dune catégorie (optionnel) et d'une liste verticale de liens\n */\n#{ns(footer)} {\n &__top {\n @include display-flex(null);\n @include margin(-7.5v 0 6v);\n @include margin(-7.5v 0 8v, md);\n @include padding(8v 0 5v);\n }\n\n /**\n * Catégorie (optionnel)\n */\n &__top-cat {\n @include margin(0 0 3v);\n @include text-style(xs);\n display: block;\n font-weight: font-weight(bold);\n text-align: left;\n }\n\n /**\n * Style de la liste\n */\n &__top-list {\n @include text-style(xs);\n @include margin(0);\n\n li {\n @include margin-bottom(3v);\n }\n }\n\n /**\n * Style du lien\n */\n &__top-link {\n @include text-style(xs);\n\n &:not(:hover):not(:active) {\n @include link-underline-hover-only;\n }\n }\n}\n","////\n/// Footer module : Bottom\n/// @group Footer\n////\n\n/**\n * La partie \"bottom\" du footer est constituée d'une liste de liens simples (ferrée à gauche)\n * ainsi que du copyright (ferré à droite)\n */\n#{ns(footer)} {\n &__bottom {\n @include display-flex(row, center, null, wrap);\n @include margin-top(10v);\n\n @include nest-footer-bottom-btn(xs, left) {\n display: inline;\n }\n }\n\n /**\n * Liste de liens avec séparateur\n */\n &__bottom-list {\n @include size(100%);\n @include padding(2v 0);\n @include size(100%);\n @include margin(0);\n }\n\n &__bottom-item {\n @include relative;\n @include margin(2v 0 0 1v);\n @include margin(2v 0 0 3v, md);\n display: inline;\n\n @include before('', inline-block) {\n vertical-align: middle;\n @include relative;\n @include size(1px, 4v);\n @include margin-right(1v);\n @include margin-right(3v, md);\n @include margin-bottom(2.5v);\n @include margin-top(2.5v);\n }\n\n &:first-child {\n @include margin(2v 0 0);\n @include before(none);\n }\n }\n\n /**\n * Style du lien de la liste\n */\n &__bottom-link {\n @include text-style(xs);\n\n &:not(:hover):not(:active) {\n @include link-underline-hover-only;\n }\n }\n\n /**\n * Copyright\n */\n &__bottom-copy {\n @include set-text-margin(0 0 4v 0);\n @include margin-top(2v);\n\n * {\n @include text-style(xs);\n }\n }\n}\n","////\n/// Footer module : Partners\n/// @group Footer\n////\n\n/**\n * La partie \"partners\" du footer est constituée de logos organisés\n * en partenaires principaux (ferré à gauche) et secondaires (ferrés à droite)\n */\n#{ns(footer)} {\n &__partners {\n @include margin-top(4v);\n @include padding-top(4v);\n\n a {\n @include display-flex(null, center, center);\n }\n\n /**\n * On surcharge le style du logo de base\n */\n #{ns(footer__logo)} {\n @include size(auto, auto);\n }\n\n + #{ns(footer__bottom)} {\n @include margin-top(2v);\n }\n }\n\n &__partners-title {\n @include set-title-margin(0 0 3v 0);\n @include text-style(sm);\n @include font-weight(regular);\n flex-basis: 100%;\n text-align: center;\n\n @include respond-from(sm) {\n text-align: left;\n }\n }\n\n &__partners-link {\n @include disable-external();\n }\n\n /**\n * Container des logos partenaires (principaux et secondaires)\n */\n &__partners-logos {\n @include display-flex(column, null, null, wrap);\n @include margin(0 0 -2v 0);\n\n @include respond-from(sm) {\n @include display-flex(row, flex-start, space-between);\n @include margin-right(-2v);\n }\n\n @include respond-from(md) {\n @include margin-right(-4v);\n flex-wrap: nowrap;\n }\n }\n\n /**\n * Container des logos partenaires principaux\n */\n &__partners-main {\n @include display-flex(row,null,center);\n @include margin-bottom(8v);\n @include margin-bottom(4v, sm);\n\n + #{ns(footer__partners-sub)} {\n @include respond-from(md) {\n @include padding-left(4v);\n }\n }\n }\n\n /**\n * Container des logos partenaires secondaires\n */\n &__partners-sub {\n @include margin-bottom(2v);\n\n &,\n & > ul {\n @include display-flex(column, center, null, wrap);\n\n @include respond-from(sm) {\n flex-direction: row;\n align-items: flex-start;\n }\n\n @include respond-from(md) {\n & > ul {\n justify-content: flex-end;\n }\n @include padding-top(0);\n }\n\n & > li {\n @include margin(0 2v 0 2v, sm);\n @include margin(0 4v 0 4v, md);\n\n &:first-child {\n @include margin-left(0);\n }\n }\n }\n\n /**\n * On surcharge le style du lien pour les logos secondaires\n */\n #{ns(footer)}__partners-link {\n @include margin-bottom(4v);\n @include margin-bottom(2v, md);\n }\n\n @include respond-from(sm) {\n order: 3;\n }\n }\n}\n","@use 'sass:list';\n@use 'sass:map';\n@use 'module/legacy';\n@use 'module/media-query';\n@use 'module/spacing';\n@use 'module/specificity';\n@use 'module/string';\n@use 'module/utilities';\n@use '../variable/constant';\n@use '../function/box-shadow' as bs;\n@use '../function/colors';\n@use '../function/result';\n@use '../function/token';\n\n$COLOR: constant.$value;\n\n@mixin element($prop, $context, $tokens, $options: (), $value: $COLOR) {\n $legacy: map.get($options, legacy);\n $important: map.get($options, important);\n $hover: map.get($options, hover);\n $standalone: map.get($options, standalone);\n\n $legacy-target: null;\n @if $legacy == true {\n $legacy-target: ie11;\n }\n\n $tokens: token.normalise($tokens, $context);\n $type: decision;\n $options: (var: true);\n\n @if $legacy or $standalone {\n $type: hex;\n $option: (theme: light);\n }\n\n $colors: colors.from-list($tokens, $type, $options);\n $result: result.get($colors, $value);\n $result: specificity.important($result, $important);\n\n @include legacy.is($legacy-target) {\n #{$prop}: #{string.unstringify($result)};\n }\n\n @if ($hover == true or ($hover == inherit and $legacy == false)) and ($context == background and list.length($tokens) == 1) {\n\n $token: nth($tokens, 1);\n @if $legacy or $standalone {\n @include _apply-pseudos($token, false, true, $legacy-target, $prop, $value, $important);\n }\n @else {\n @if $prop == background-color {\n --idle: transparent; // #{$result};\n @include _apply-pseudos($token, true, false, null, $prop, $value, $important);\n }\n @else {\n @include _apply-pseudos($token, true, true, null, $prop, $value, $important);\n }\n }\n }\n}\n\n@mixin _apply-pseudos($token, $decision: true, $pseudo: false, $target: null, $prop: background-color, $value: constant.$value, $important: false) {\n @include legacy.is($target) {\n @include _apply-pseudo($token, hover, $decision, $pseudo, $prop, $value, $important);\n @include _apply-pseudo($token, active, $decision, $pseudo, $prop, $value, $important);\n }\n}\n\n@mixin _apply-pseudo($token, $type, $decision: true, $pseudo: false, $prop: background-color, $value: constant.$value, $important: false) {\n $nest: null;\n $p: --#{$type};\n @if $pseudo {\n $nest: '&:#{$type}';\n $p: $prop;\n }\n\n $t: hex;\n $options: (#{$type}: true);\n @if $decision {\n $t: decision;\n $options: (var: true, #{$type}: true);\n }\n\n $color: colors.from($token, $t, $options);\n $result: result.get($color, $value);\n $result: specificity.important($result, $important);\n\n @include utilities.nest($nest) {\n #{$p}: #{string.unstringify($result)};\n }\n}\n\n/// Ajout d'une couleur de background sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n@mixin background($tokens, $options:()) {\n @if not map.has-key($options, hover) {\n $options: map.merge($options, (hover: inherit));\n }\n @include element(background-color, background, $tokens, $options);\n}\n\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n/// - hover {boolean}: si true, surcharge la valeur de blend pour être héritée\n@mixin transparent-background($options) {\n $legacy: map.get($options, legacy);\n $important: map.get($options, important);\n $hover: map.get($options, hover);\n $tokens: token.normalise(default grey, background);\n $value: specificity.important(transparent, $important);\n\n @if $legacy {\n @include legacy.is(ie11) {\n background-color: transparent;\n\n @if $hover {\n &:hover {\n background-color: rgba(0, 0, 0, 0.05);\n }\n\n &:active {\n background-color: rgba(0, 0, 0, 0.1);\n }\n }\n }\n }\n @else {\n background-color: #{$value};\n @if $hover {\n --hover: inherit;\n --active: inherit;\n }\n }\n}\n\n/// Ajout d'une couleur de background sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n@mixin background-image($tokens, $options, $value: linear-gradient(0deg, $COLOR, $COLOR)) {\n $d: token.length($tokens);\n @if $d > 1 and $value == linear-gradient(0deg, $COLOR, $COLOR) {\n $transformed: ();\n @for $i from 1 through $d {\n $c: string.unquote('$color##{$i}');\n $transformed: list.append($transformed, linear-gradient(0deg, $c, $c), comma);\n }\n $value: $transformed;\n }\n @include element(background-image, background, $tokens, $options, $value);\n}\n\n/// Ajout d'une couleur de texte sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n@mixin text($tokens, $options) {\n @include element(color, text, $tokens, $options);\n}\n\n/// Ajout d'une couleur de texte sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n@mixin text-fill($tokens, $options) {\n @include element(-webkit-text-fill-color, text, $tokens, $options);\n}\n\n/// Ajout d'une couleur de fill sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n@mixin fill($tokens, $options) {\n @include element(fill, background , $tokens, $options);\n}\n\n/// Ajout d'une couleur de border sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n/// - side {String}: le côté affecté. valeurs: top, right, bottom, left\n/// @param {List} $value - définition des propriétés de border\n@mixin border($tokens, $options, $value:1px solid $COLOR) {\n $prop:border;\n @if map.has-key($options, side) {\n $prop:border-#{map.get($options, side)};\n }\n @include element($prop, border, $tokens, $options, $value);\n}\n\n@mixin no-border($options: ()) {\n $breakpoint: map.get($options, breakpoint);\n $legacy: map.get($options, legacy);\n @include media-query.respond-from($breakpoint) {\n @if $legacy {\n @include legacy.is(ie11) {\n border: 0;\n }\n }\n @else {\n border: 0;\n }\n }\n}\n\n/// Ajout d'une couleur d'outline sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n/// @param {List} $value - définition des propriétés d'outline\n@mixin outline($tokens, $options, $value:1px solid $COLOR) {\n @include element(outline, border, $tokens, $options, $value);\n}\n\n/// Ajout d'une couleur de box-shadow sur un élément\n/// @access public\n/// @param {list} $tokens - liste des tokens de décision\n/// @param {map} $options - map des options :\n/// - legacy {boolean}: version pour navigateurs modernes ou anciens.\n/// - important {boolean}: si true, applique !important à la règle css\n/// @param {List} $value - définition des propriétés de box-shadow\n@mixin box-shadow($tokens, $options, $value: all-1-in) {\n $has-keys: true;\n $transformed: ();\n $d: token.length($tokens);\n $i: 1;\n @each $v in $value {\n @if bs.has($v) {\n $transformed: append($transformed, bs.get($v, $i), comma);\n @if $i < $d {\n $i: $i + 1;\n }\n }\n @else {\n $has-keys: false;\n }\n }\n @if $has-keys {\n $value: $transformed;\n }\n @include element(box-shadow, border, $tokens, $options, spacing.space($value));\n}\n\n/// Supprime la shadow-box sur l'élément\n/// @access public\n/// @param {string} $breakpoint - la shadow-box est retiré à partir d'un breakpoint si celui-ci est défini\n@mixin no-box-shadow($options) {\n $breakpoint: map.get($options, breakpoint);\n $legacy: map.get($options, legacy);\n @include media-query.respond-from($breakpoint) {\n @if $legacy {\n @include legacy.is(ie11) {\n box-shadow: none;\n }\n }\n @else {\n box-shadow: none;\n }\n }\n}\n","////\n/// Core Tool : Selector block\n/// @group core\n////\n\n@mixin title() {\n &__title {\n @content;\n }\n}\n\n@mixin body() {\n &__body {\n @content;\n }\n}\n\n@mixin list() {\n &__list {\n @content;\n }\n}\n\n@mixin list-item() {\n &__item {\n @content;\n }\n}\n","////\n/// Core Tool : Display display\n/// @group core\n////\n\n@mixin display-flex($flex-direction: row, $align-items: null, $justify-content: null, $flex-wrap: null, $inline: false) {\n\n @if $inline == true {\n display: inline-flex;\n }\n @else {\n display: flex;\n }\n\n @if $flex-direction != null {\n flex-direction: #{$flex-direction};\n }\n\n @if $align-items != null {\n align-items: #{$align-items};\n }\n\n @if $justify-content != null {\n justify-content: #{$justify-content};\n }\n\n @if $flex-wrap != null {\n flex-wrap: #{$flex-wrap};\n }\n}\n","////\n/// Logo Tool\n/// @group logo\n////\n\n@use \"sass:math\";\n@use 'module/spacing';\n\n@mixin logo-size($size) {\n $font-size: spacing.space(map-get($logo-sizes, $size));\n font-size: #{$font-size * 1.05};\n\n @include before {\n @include size(#{2.75 * $font-size}, #{$font-size});\n @include margin-bottom(#{math.div($font-size, 3)});\n background-size: #{2.75 * $font-size} #{1.125 * $font-size}, #{2.75 * $font-size} #{$font-size}, 0;\n background-position: 0 #{(-0.0625 * $font-size)}, 0 0, 0 0;\n\n @at-root :root#{ns-attr(mourning)} #{&} {\n background-size: #{2.75 * $font-size} #{1.125 * $font-size}, 0, #{2.75 * $font-size} #{$font-size};\n }\n }\n\n @include after {\n min-width: #{2.625 * $font-size};\n background-size: #{5.25 * $font-size} #{3.75 * $font-size};\n background-position: 0 calc(100% + #{1.875 * $font-size});\n padding-top: #{(math.div(53, 24) * $font-size)};\n\n @at-root #{ns-attr(theme, 'dark')} #{&} {\n background-position: #{-2.625 * $font-size} 100%;\n }\n }\n}\n\n@mixin logo($size: md, $size-md: null) {\n #{ns(logo)} {\n @include logo-size($size);\n @include padding(map-get($logo-sizes, $size));\n\n @if $size-md != null {\n @include respond-from(md) {\n @include logo-size($size-md);\n @include padding(map-get($logo-sizes, $size-md));\n }\n }\n\n @content;\n }\n}\n","////\n/// Core Tool : Selector pseudo\n/// @group core\n////\n\n@mixin _pseudo($type:before, $content:null, $display:null) {\n @if $type != after and $type != before and $type != marker and $type != (before after) {\n @error '$type must be before or after element';\n }\n\n $selector: ();\n\n @each $pseudo in $type {\n $selector: append($selector, '&::#{$pseudo}', 'comma');\n }\n\n #{$selector} {\n\n @if $content != null {\n content: $content;\n }\n\n @if $display != null {\n display: #{$display};\n }\n\n @content;\n }\n}\n\n@mixin before($content: null, $display: null) {\n @include _pseudo(before, $content, $display) {\n @content;\n }\n}\n\n@mixin after($content: null, $display: null) {\n @include _pseudo(after, $content, $display) {\n @content;\n }\n}\n\n@mixin marker($content: null, $display: null) {\n @include _pseudo(marker, $content, $display) {\n @content;\n }\n}\n","////\n/// Core Tool : Reset\n/// @group core\n////\n\n$underline-thickness: 0.0625em;\n\n@mixin a-reset ($minimal: false) {\n text-decoration: var(--text-decoration);\n @if not $minimal {\n color: inherit;\n }\n}\n\n@mixin init-underline() {\n --underline-max-width: 100%;\n --underline-hover-width: 0;\n --underline-idle-width: var(--underline-max-width);\n --underline-x: calc(var(--underline-max-width) * 0);\n --underline-thickness: #{$underline-thickness};\n}\n\n@mixin enable-underline() {\n --underline-img: linear-gradient(0deg, currentColor, currentColor);\n}\n\n@mixin enable-underline-legacy() {\n [href] {\n text-decoration: underline;\n }\n}\n\n@mixin disable-underline() {\n --underline-img: none;\n}\n\n@mixin disable-underline-legacy() {\n [href] {\n text-decoration: none;\n }\n}\n\n@mixin link-underline() {\n background-image: var(--underline-img), var(--underline-img);\n background-position: var(--underline-x) 100%, var(--underline-x) calc(100% - var(--underline-thickness));\n background-repeat: no-repeat, no-repeat;\n transition: background-size 0s;\n background-size: var(--underline-hover-width) calc(var(--underline-thickness) * 2), var(--underline-idle-width) var(--underline-thickness);\n}\n\n@mixin link-underline-hover-only() {\n --underline-idle-width: 0;\n}\n\n@mixin hover-underline () {\n &:hover,\n &:active {\n --underline-hover-width: var(--underline-max-width);\n }\n}\n\n@mixin external-link() {\n @include icon-style(after);\n @include icon-size(sm, after);\n @include icon-image(external-link-line, after);\n @include after(var(--external-link-content)) {\n @include margin-left(1v);\n }\n}\n\n@mixin enable-external() {\n --external-link-content: '';\n}\n\n@mixin disable-external() {\n --external-link-content: none;\n}\n\n@mixin target-blank ($unify: false) {\n @if $unify and & {\n &[target=\"_blank\"] {\n @content;\n }\n }\n @else {\n [target=\"_blank\"] {\n @content;\n }\n }\n}\n","////\n/// Core Tool : Typography build\n/// @group core\n////\n\n@use 'module/spacing';\n\n@function get-text-style($font-size) {\n @return map-get($text-styles, $font-size);\n}\n\n@function get-title-style($font-size) {\n @return map-get($title-styles, $font-size);\n}\n\n@mixin _stylize($font-size, $styles, $prepend, $append) {\n $style: map-get($styles, $font-size);\n\n @if $prepend == null {\n $prepend: '';\n }\n\n @if $append == null {\n $append: '';\n }\n\n font-size: #{$prepend} spacing.space($font-size) #{$append};\n\n @if map-has-key($style, line-height) {\n line-height: #{$prepend} spacing.space(map-get($style, line-height)) #{$append};\n }\n}\n\n@mixin _responsive-styles($settings, $styles, $is-responsive, $prepend, $append) {\n $breakpoints: map-get($settings, breakpoints);\n\n @if map-has-key($settings, weight) {\n font-weight: #{$prepend} map-get($font-weight-scale, map-get($settings, weight)) #{$append};\n }\n\n @if $is-responsive {\n @each $breakpoint, $size in $breakpoints {\n @if $breakpoint == first {\n @include _stylize($size, $styles, $prepend, $append);\n }\n @else {\n @include respond-from($breakpoint) {\n @include _stylize($size, $styles, $prepend, $append);\n }\n }\n }\n }\n @else {\n @if map-has-key($breakpoints, md) {\n @include _stylize(map-get($breakpoints, md), $styles);\n }\n @else {\n @include _stylize(map-get($breakpoints, first), $styles);\n }\n }\n}\n\n@mixin _space-text($settings) {\n @include margin( var(#{'--' + map-get($settings, 'margin') + '-spacing'}) );\n}\n\n@mixin text-style($name, $with-spacing: false, $is-responsive: true, $prepend: null, $important: false) {\n $settings: map-get($text-settings, $name);\n @if $settings {\n $append: '';\n @if $important {\n $append: ' !important';\n }\n\n @include _responsive-styles($settings, $text-styles, $is-responsive, $prepend, $append);\n\n @if $with-spacing {\n @include _space-text($settings);\n }\n }\n}\n\n@mixin title-style($name, $with-spacing: false, $is-responsive: true, $prepend: null, $important: false) {\n $settings: map-get($title-settings, $name);\n @if $settings {\n $append: '';\n @if $important {\n $append: ' !important';\n }\n\n @include _responsive-styles($settings, $title-styles, $is-responsive, $prepend, $append);\n\n @if $with-spacing {\n @include _space-text($settings);\n }\n }\n}\n\n@mixin _set-typography-var($name, $value, $bp: null) {\n @if $bp != null {\n @include respond-from(#{$bp}) {\n --#{$name}-spacing: #{space($value)};\n }\n }\n @else {\n --#{$name}-spacing: #{space($value)};\n }\n}\n\n@mixin set-title-margin($margin, $bp:null) {\n @include _set-typography-var(title, $margin, $bp);\n}\n\n@mixin set-text-margin($margin, $bp:null) {\n @include _set-typography-var(text, $margin, $bp);\n}\n\n@mixin set-display-margin($margin, $bp:null) {\n @include _set-typography-var(display, $margin, $bp);\n}\n","////\n/// Core Tool : Selector nest\n/// @group core\n////\n\n@mixin nest($selector: null) {\n @if $selector {\n #{$selector} {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n","////\n/// Link Tool : sizes\n/// @group link\n////\n\n@use \"sass:math\";\n@use 'module/spacing';\n\n@mixin _build-link-size($size-settings, $border-radius: false) {\n $font-size: map_get($size-settings, font-size);\n $style: get-text-style($font-size);\n $line-height: spacing.space(map_get($style, line-height));\n font-size: spacing.space($font-size);\n line-height: $line-height;\n\n $min-height: spacing.space(map_get($size-settings, min-height));\n @if $min-height > 0 {\n min-height: $min-height;\n }\n\n $max-icon-height: icon-size(md);\n\n @if map_has_key($size-settings, icon-only) {\n $max-icon-height: icon-size(map_get($size-settings, icon-only));\n }\n @else if map_has_key($size-settings, icon) {\n $max-icon-height: icon-size(map_get($size-settings, icon));\n }\n\n $space-y: math.max($line-height, $max-icon-height);\n $padding-x: spacing.space(map_get($size-settings, padding-x));\n $padding-y: math.max(($min-height - $space-y) * 0.5, 0);\n\n padding: #{$padding-y} #{$padding-x};\n\n @if $border-radius {\n border-radius: #{$min-height * 0.5};\n }\n}\n\n@function _link-icon-margin($size) {\n @return math.div(icon-size($size), 8);\n}\n\n@mixin _link-align-on-content($size, $place, $size-settings) {\n $padding-x: spacing.space(map_get($size-settings, padding-x));\n $icon-margin: _link-icon-margin(map_get($size-settings, icon));\n\n @if $place == null {\n margin-left: -($padding-x);\n margin-right: -($padding-x);\n }\n @else if $place == left {\n margin-left: -($padding-x - $icon-margin);\n margin-right: -($padding-x);\n }\n @else if $place == right {\n margin-left: -($padding-x);\n margin-right: -($padding-x - $icon-margin);\n }\n @else if $place == only {\n $icon-size: icon-size(map_get($size-settings, icon-only));\n $min-height: spacing.space(map_get($size-settings, min-height));\n $padding-x: ($min-height - $icon-size) * 0.5;\n\n margin-left: -($padding-x);\n margin-right: -($padding-x);\n }\n}\n","////\n/// Link Tool : icons\n/// @group link\n////\n\n@use 'module/spacing';\n\n@mixin _build-link-icon($size-settings, $place, $size:md, $override-icon: true) {\n\n $icon-size: icon-size(map_get($size-settings, icon));\n\n @if $place == only {\n $icon-size: icon-size(map_get($size-settings, icon-only));\n }\n\n $icon-margin: _link-icon-margin(map_get($size-settings, icon));\n $icon-margin-x: spacing.space(map_get($size-settings, icon-margin-x));\n\n @if $place == left {\n overflow: initial;\n max-width: 100%;\n max-height: none;\n @include before {\n --icon-size: #{$icon-size};\n margin-left: -($icon-margin);\n margin-right: $icon-margin-x;\n }\n }\n @else if $place == right {\n overflow: initial;\n max-width: 100%;\n max-height: none;\n @include icon-content(false, $override-icon) {\n --icon-size: #{$icon-size};\n margin-right: -($icon-margin);\n margin-left: $icon-margin-x;\n }\n }\n @else if $place == only {\n $min-height: spacing.space(map_get($size-settings, min-height));\n $padding-x: ($min-height - $icon-size) * 0.5;\n\n overflow: hidden;\n white-space: nowrap;\n max-width: $min-height;\n max-height: $min-height;\n padding-left: $padding-x;\n padding-right: $padding-x;\n\n @include before {\n --icon-size: #{$icon-size};\n margin-left: 0;\n margin-right: $padding-x;\n }\n }\n}\n","////\n/// Core Tool : Spacing position\n/// @group core\n////\n\n@use 'module/spacing';\n\n@mixin position($position, $top: null, $right: null, $bottom: null, $left: null, $width: null, $height: null) {\n position: #{$position};\n @if $top != null {\n top: #{space($top)};\n }\n @if $right != null {\n right: #{space($right)};\n }\n @if $bottom != null {\n bottom: #{space($bottom)};\n }\n @if $left != null {\n left: #{space($left)};\n }\n\n @include size($width, $height);\n\n @content;\n}\n\n@mixin relative($top: null, $right: null, $bottom: null, $left: null, $width: null, $height: null) {\n @include position(relative, $top, $right, $bottom, $left, $width, $height);\n}\n\n@mixin absolute($top: null, $right: null, $bottom: null, $left: null, $width: null, $height: null) {\n @include position(absolute, $top, $right, $bottom, $left, $width, $height);\n}\n\n@mixin fixed($top: null, $right: null, $bottom: null, $left: null, $width: null, $height: null) {\n @include position(fixed, $top, $right, $bottom, $left, $width, $height);\n}\n\n@mixin sticky($top: null, $right: null, $bottom: null, $left: null, $width: null, $height: null) {\n @include position(sticky, $top, $right, $bottom, $left, $width, $height);\n}\n\n@mixin top($top) {\n top: spacing.space($top);\n}\n\n@mixin right($top) {\n right: spacing.space($top);\n}\n\n@mixin bottom($top) {\n bottom: spacing.space($top);\n}\n\n@mixin left($top) {\n left: spacing.space($top);\n}\n","////\n/// Core Tool : Typography font-weight\n/// @group core\n////\n\n/// Return font-weight value from font-weight map.\n///\n/// @param {String} $scale ['regular'] - Type scale value from `$weight-scale` (Default to 'regular' = 400)\n///\n/// @example scss - Set font-weight to bold (700)\n/// .foo {\n/// font-weight: font-weight('bold');\n/// }\n\n@function font-weight($scale: regular) {\n @return map-get($font-weight-scale, $scale);\n}\n\n@mixin font-weight($scale) {\n font-weight: font-weight($scale);\n}\n\n@mixin build-utillity-font-weight() {\n $fontWeightValues: map-get($font-weight-vars, values);\n @if $fontWeightValues == 'all' {\n $fontWeightValues: map-keys($font-weight-names);\n }\n @each $weight in $fontWeightValues {\n $name: map-get($font-weight-names, $weight);\n #{ns('text--' + $name)} {\n font-weight: #{$weight} !important;\n }\n }\n}\n","////\n/// footer Scheme\n/// @group footer\n////\n\n@use 'module/color';\n\n@mixin _footer-scheme($legacy: false) {\n #{ns(footer)} {\n @include color.box-shadow((plain blue-france) (default grey), (legacy:$legacy), top-2-in bottom-1-in);\n\n &__content-link {\n @include color.text(default grey, (legacy:$legacy));\n }\n\n &__top-cat {\n @include color.text(title grey, (legacy:$legacy));\n }\n\n &__top {\n @include color.background(alt grey, (legacy:$legacy));\n }\n\n &__bottom {\n @include color.box-shadow(default grey, (legacy:$legacy), top-1-in);\n #{ns(btn)} {\n @include color.text(mention grey, (legacy:$legacy));\n }\n }\n\n &__bottom-item {\n @include before {\n @include color.box-shadow(default grey, (legacy:$legacy));\n }\n }\n\n &__bottom-link {\n @include color.text(mention grey, (legacy:$legacy));\n }\n\n &__bottom-copy {\n @include color.text(mention grey, (legacy:$legacy));\n }\n\n &__partners {\n @include color.box-shadow(default grey, (legacy:$legacy), top-1-in);\n\n &-title {\n @include color.text(default grey, (legacy:$legacy));\n }\n\n #{ns(footer__logo)} {\n @include color.background(default grey, (legacy:$legacy));\n @include color.box-shadow(default grey, (legacy:$legacy));\n }\n\n @if not $legacy {\n #{ns(footer__partners-link)} {\n &,\n &:hover,\n &:active {\n background: color.$white;\n }\n }\n }\n }\n }\n}\n","@use 'options';\n\n$focus: #0a76f6;\n$absolute-black: #000;\n$black: nth(map-get(options.$values, grey-50), 1);\n$black-a0: rgba(nth(map-get(options.$values, grey-50), 1), 0);\n$black-a64: rgba(nth(map-get(options.$values, grey-50), 1), 64%);\n$white: nth(map-get(options.$values, grey-1000), 1);\n$blue-france: nth(map-get(options.$values, blue-france-sun-113), 1);\n$red-marianne: nth(map-get(options.$values, red-marianne-main-472), 1);\n","@use '../variable/breakpoints';\n\n/// Set media query styles\n///\n/// @param {String} $media [md] - Layout size `['xs', 'sm', 'md', 'lg', 'xl']`\n///\n/// @example scss -\n/// .foo {\n/// @include respond-from(md) {\n/// }\n/// }\n@mixin respond-from($media) {\n $limits: map_get(breakpoints.$values, $media);\n\n @if $limits != null {\n @media (min-width: nth($limits, 1)) {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n","@use 'module/media-query/variable/breakpoints';\n@use 'module/media-query';\n\n@mixin order () {\n @each $bp, $limits in breakpoints.$values {\n @if $bp != xs {\n @include media-query.respond-from($bp) {\n /*! media #{$bp} */\n }\n }\n }\n}\n"]}