diff --git a/main/assets/css/just-the-docs-dark.css.map b/main/assets/css/just-the-docs-dark.css.map index 920126fcc8..66a995343d 100644 --- a/main/assets/css/just-the-docs-dark.css.map +++ b/main/assets/css/just-the-docs-dark.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/accessible-pygments/github-dark.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/base.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/color_schemes/dark.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/skiptomain.scss","just-the-docs-dark.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAAkB;;;AAClB;EAAgB;EAAiB;AACjC;EAAkB;EAAiB;AACnC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAkB;EAAiB;AACnC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAqB;AACtC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAoB;AACrC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAgB;EAAiB;AACjC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AChFlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAAkB;;;AAClB;EAAa;EAAqB;;;AAClC;EAAgB;EAAgB;EAAqB;AACrD;EAAkB;EAAiB;AACnC;EAAkB;EAAiB;AACnC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAgB;EAAgB;EAAoB;AACpD;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAiB;EAAgB;EAAqB;AACtD;EAAiB;EAAgB;EAAqB;AACtD;EAAiB;EAAgB;EAAmB;EAAqB;AACzE;EAAkB;EAAgB;EAAqB;AACvD;EAAiB;EAAgB;EAAqB;AACtD;EAAiB;EAAgB;EAAmB;EAAqB;AACzE;EAAiB;EAAgB;EAA4B;AAC7D;EAAiB;EAAgB;EAAqB;AACtD;EAAkB;EAAgB;EAAmB;EAAqB;AAC1E;EAAiB;EAAiB;AAClC;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAgB;EAA4B;AAC7D;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAA0B;EAAgB;EAA6B;AACvE;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAgB;EAAiB;AACjC;EAAgB;EAAiB;AACjC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAiB;AAClC;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAiB;AAClC;EAAgB;EAAiB;AACjC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAgB;EAAoB;AACrD;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AAClC;EAAiB;EAAiB;AC1FlC;AAEA;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;EAGE;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;AAEE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;AAEE;EACA;;;AAGF;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;;;AAGF;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;;;AAGF;AAAA;AAAA;AAIA;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AC1VF;EACE,cCJa;;;ADOf;EACE;;;AAGF;EACE;;AEmBA;EACE;;AClBA;EHHJ;IEyBI;;;;AFnBJ;EACE,aIfiB;EJgBjB;EACA,aIbiB;EJcjB,OIiBY;EJhBZ,kBIYY;EJXZ;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAYE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;EACA;EACA;EACA,aI1CyB;EJ2CzB,OIjBY;;;AJoBd;EACE;EACA;;;AAGF;EACE,OCzDW;ED0DX;;;AAGF;EACE;EACA,uBInCY;EJoCZ;;AAEA;EACE;;;AAIJ;EACE,aIvEiB;EJwEjB;EACA,aIvEiB;;;AJ0EnB;AAAA;EAEE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA,kBInEY;EJoEZ;;;AAIF;EACE;EAGA;EACA;EACA;EACA;;;AK7GF;EACE;EACA;EACA;EACA,kBD4BY;;ADpBV;EEZJ;IAOI;IACA;IACA,ODwFW;ICvFX;IACA;IACA;;;AFAA;EEZJ;IAgBI;IACA,WD+EQ;;;ADpFR;EEQF;IAEI,aD2ES;;;ADrFX;EEQF;IAQI;;;AAOF;EACE;EACA,kBDLQ;;ADpBV;EEuBA;IAKI;IACA,kBDTM;;;ACYR;EACE;;AFjCJ;EEgCE;IAII;;;;AAOV;EACE;;AF5CE;EE2CJ;IAII;IACA,WDyCY;;;;ACrChB;EACE,aDaK;ECZL,gBDYK;EDvDL,eCuDK;EDtDL,cCsDK;;ADlEH;EEoDJ;IFrCI,eCqDG;IDpDH,cCoDG;;;ADpEH;EEoDJ;IAOI,aDSG;ICRH,gBDQG;;;;ACJP;EACE;EACA;;AFlEE;EEgEJ;IAKI;IACA;IACA,QDmBY;;;;ACfhB;AAAA;AAAA;EAGE;;AF9EE;EE2EJ;AAAA;AAAA;IAMI,ODGQ;;;;ACCZ;EACE;;AAEA;EACE;;AFzFA;EEqFJ;IAQI;IACA,aDxBG;ICyBH,gBD7BG;IC8BH;IACA;;;;AAIJ;EACE;EACA,YDbc;ECcd;;AFxGE;EEqGJ;IAMI,QDjBY;ICkBZ,YDlBY;ICmBZ;;;;AAIJ;EACE;EACA;EACA;EACA;EACA,aDrDK;ECsDL,gBDtDK;ECuDL,ODnGY;EDVZ,eCuDK;EDtDL,cCsDK;;ADlEH;EEiHJ;IFlGI,eCqDG;IDpDH,cCoDG;;;AF/BL;EACE;;ACtCA;EEiHJ;IHvEI;IACA,aEhDuB;;;ADKvB;EEiHJ;IAcI,aD/DG;ICgEH,gBDhEG;;;;AC+EP;EACE;EACA;EACA,SDhFK;ECiFL;;;AFnJE;EEuJF;IACE;;;AAIJ;EACE;;;AAQF;EACE;;;AAOF;EACE;EACA;EACA;EACA,aD/GK;ECgHL,gBDhHK;EDvDL,eCuDK;EDtDL,cCsDK;;ADlEH;EE6KJ;IF9JI,eCqDG;IDpDH,cCoDG;;;AFvEL;EACE;;ACEA;EE6KJ;IH3KI;;;ACFA;EE6KJ;IAYI;IACA;;;;AAIJ;EACE,OD5HK;EC6HL,QD7HK;EC8HL,OJ3MW;;;AKCb;EACE,aFEoB;;AEApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;;AAGF;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;IACA;IACA;;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,ORTY;EQUZ,kBRfY;EQgBZ;EACA;EACA;EACA;EACA;;ATvCE;ES2BJ;IAeI;IACA;IACA,kBRxBU;IQyBV;;;AAGF;EACE;EACA;;AAEA;EACE,OX/DO;;;AWoEb;EACE;EACA;EACA;EACA,cRIK;;ADlEH;ES0DJ;IAOI,cRGG;IQFH;;;AAGF;EACE;EACA;EACA;EACA,ORzDU;;;AQ6Dd;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kBRjEY;EQkEZ,4BRRc;EQSd,2BRTc;EQUd,YACE;;ATxFA;ES6EJ;IAeI;IACA,ORFmB;IQGnB;;;;AAIJ;EACE;EACA,eRrCK;EQsCL;;AVpFA;EACE;;AClBA;ESkGJ;IV5EI;;;ACtBA;EDOF;IACE;;;ACRA;ESkGJ;IVtFI;;;;AUiGJ;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EAEE,kBX3Ha;;;AW+HjB;EACE;EACA,aR9DK;EQ+DL,gBR/DK;;ADhEH;ES4HJ;IAMI;IACA;IACA,eRpEG;IQqEH;;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;;AVxIF;EACE;;ACRA;ES8IF;IVlIE;;;ACZA;EDHF;IACE;;;ACEA;ES8IF;IV5IE;;;AUqJF;EACE,ORtFG;EQuFH,QRvFG;EQwFH,cR1FG;EQ2FH,OXrKS;EWsKT;;AAGF;EACE;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA,ORrJY;EQsJZ;EACA;;AV5LA;EACE;;ACYA;ESyKJ;IVjLI;;;;AU2LJ;EACE;EACA,aRrHK;EQsHL,gBRtHK;EQuHL,cRrHK;EQsHL,aRxHK;EQyHL,ORjKY;EQkKZ;EACA,aR/GO;EQgHP,mBR1KY;;AFrBZ;EACE;;ACEA;ESmLJ;IVjLI;;;ACFA;ESmLJ;IAaI;IACA;IACA,cRlIG;IQmIH;IACA;;;;AAIJ;EACE,YR1IK;;;AQ6IP;EACE;;;AAGF;EACE;;AV1MA;EACE;;ACRA;ESgNJ;IVpMI;;;;AUyMJ;EACE;EACA,ORrJK;EQsJL,QRtJK;EQuJL;EACA,ORnJK;EQoJL,QRpJK;EQqJL,kBRz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BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AdhHA;EACE;;ACYA;EcZJ;IfII;;;;AAKF;EACE;;ACEA;EcRJ;IfUI;;;;AAKF;EACE;;ACRA;EcJJ;IfgBI;;;;AAKF;EACE;;AClBA;EcAJ;IfsBI;;;;AAKF;EACE;;AC5BA;EcIJ;If4BI;;;;AAKF;EACE;;ACtCA;EcQJ;IfkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EcYJ;If0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EcgBJ;IfiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EcoBJ;IfwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EcwBJ;If+DI;;;;Ae3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,abxDiB;;;Aa2DnB;EACE,ab1DyB;;;Aa6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AhBlCA;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AhB7GA;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OpBXW;EoBYX,kBjBkBY;EiBjBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACpBF;EACE,kBlByBY;;;AkBtBd;EACI;EACA;EACA,elB4EY;EkB3EZ;EACA;;AAEA;EACI,OlB8BI;EkB7BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBoBM;EkBnBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBiDY;EkBhDZ;EACA;;AACA;EACE;EACA;EACA,OlBEM;EkBDN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBGY;EkBFZ;EACA;;AAEA;EACI,OlB/CG;EkBgDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBzDK;EkB0DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBxBY;EkByBZ;EACA;;AACA;EACE;EACA;EACA,OlB3EK;EkB4EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBtEY;EkBuEZ;EACA;;AAEA;EACI,OlBhHK;EkBiHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlB1HO;EkB2HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBjGY;EkBkGZ;EACA;;AACA;EACE;EACA;EACA,OlB5IO;EkB6IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #6e7681 }\n.highlight { background: #0d1117; color: #E6EDF3 }\n.highlight .c { color: #8B949E; font-style: italic } /* Comment */\n.highlight .err { color: #F85149 } /* Error */\n.highlight .esc { color: #E6EDF3 } /* Escape */\n.highlight .g { color: #E6EDF3 } /* Generic */\n.highlight .k { color: #FF7B72 } /* Keyword */\n.highlight .l { color: #A5D6FF } /* Literal */\n.highlight .n { color: #E6EDF3 } /* Name */\n.highlight .o { color: #FF7B72; font-weight: bold } /* Operator */\n.highlight .x { color: #E6EDF3 } /* Other */\n.highlight .p { color: #E6EDF3 } /* Punctuation */\n.highlight .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */\n.highlight .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */\n.highlight .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */\n.highlight .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */\n.highlight .c1 { color: #8B949E; font-style: italic } /* Comment.Single */\n.highlight .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */\n.highlight .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */\n.highlight .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */\n.highlight .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */\n.highlight .gr { color: #FFA198 } /* Generic.Error */\n.highlight .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */\n.highlight .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */\n.highlight .go { color: #8B949E } /* Generic.Output */\n.highlight .gp { color: #8B949E } /* Generic.Prompt */\n.highlight .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #79C0FF } /* Generic.Subheading */\n.highlight .gt { color: #FF7B72 } /* Generic.Traceback */\n.highlight .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */\n.highlight .kc { color: #79C0FF } /* Keyword.Constant */\n.highlight .kd { color: #FF7B72 } /* Keyword.Declaration */\n.highlight .kn { color: #FF7B72 } /* Keyword.Namespace */\n.highlight .kp { color: #79C0FF } /* Keyword.Pseudo */\n.highlight .kr { color: #FF7B72 } /* Keyword.Reserved */\n.highlight .kt { color: #FF7B72 } /* Keyword.Type */\n.highlight .ld { color: #79C0FF } /* Literal.Date */\n.highlight .m { color: #A5D6FF } /* Literal.Number */\n.highlight .s { color: #A5D6FF } /* Literal.String */\n.highlight .na { color: #E6EDF3 } /* Name.Attribute */\n.highlight .nb { color: #E6EDF3 } /* Name.Builtin */\n.highlight .nc { color: #F0883E; font-weight: bold } /* Name.Class */\n.highlight .no { color: #79C0FF; font-weight: bold } /* Name.Constant */\n.highlight .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */\n.highlight .ni { color: #FFA657 } /* Name.Entity */\n.highlight .ne { color: #F0883E; font-weight: bold } /* Name.Exception */\n.highlight .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */\n.highlight .nl { color: #79C0FF; font-weight: bold } /* Name.Label */\n.highlight .nn { color: #FF7B72 } /* Name.Namespace */\n.highlight .nx { color: #E6EDF3 } /* Name.Other */\n.highlight .py { color: #79C0FF } /* Name.Property */\n.highlight .nt { color: #7EE787 } /* Name.Tag */\n.highlight .nv { color: #79C0FF } /* Name.Variable */\n.highlight .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */\n.highlight .pm { color: #E6EDF3 } /* Punctuation.Marker */\n.highlight .w { color: #6E7681 } /* Text.Whitespace */\n.highlight .mb { color: #A5D6FF } /* Literal.Number.Bin */\n.highlight .mf { color: #A5D6FF } /* Literal.Number.Float */\n.highlight .mh { color: #A5D6FF } /* Literal.Number.Hex */\n.highlight .mi { color: #A5D6FF } /* Literal.Number.Integer */\n.highlight .mo { color: #A5D6FF } /* Literal.Number.Oct */\n.highlight .sa { color: #79C0FF } /* Literal.String.Affix */\n.highlight .sb { color: #A5D6FF } /* Literal.String.Backtick */\n.highlight .sc { color: #A5D6FF } /* Literal.String.Char */\n.highlight .dl { color: #79C0FF } /* Literal.String.Delimiter */\n.highlight .sd { color: #A5D6FF } /* Literal.String.Doc */\n.highlight .s2 { color: #A5D6FF } /* Literal.String.Double */\n.highlight .se { color: #79C0FF } /* Literal.String.Escape */\n.highlight .sh { color: #79C0FF } /* Literal.String.Heredoc */\n.highlight .si { color: #A5D6FF } /* Literal.String.Interpol */\n.highlight .sx { color: #A5D6FF } /* Literal.String.Other */\n.highlight .sr { color: #79C0FF } /* Literal.String.Regex */\n.highlight .s1 { color: #A5D6FF } /* Literal.String.Single */\n.highlight .ss { color: #A5D6FF } /* Literal.String.Symbol */\n.highlight .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */\n.highlight .vc { color: #79C0FF } /* Name.Variable.Class */\n.highlight .vg { color: #79C0FF } /* Name.Variable.Global */\n.highlight .vi { color: #79C0FF } /* Name.Variable.Instance */\n.highlight .vm { color: #79C0FF } /* Name.Variable.Magic */\n.highlight .il { color: #A5D6FF } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","$color-scheme: dark;\n$body-background-color: $grey-dk-300;\n$body-heading-color: $grey-lt-000;\n$body-text-color: $grey-lt-300;\n$link-color: lighten($blue-000, 10%);\n$nav-child-link-color: $grey-dk-000;\n$sidebar-color: $grey-dk-300;\n$base-button-color: $grey-dk-250;\n$btn-primary-color: $blue-200;\n$code-background-color: #0d1117; // github-dark bg color\n$code-linenumber-color: #e6edf3; // github-dark line number color\n$feedback-color: darken($sidebar-color, 3%);\n$table-background-color: $grey-dk-250;\n$search-background-color: $grey-dk-250;\n$search-result-preview-color: $grey-lt-300;\n$border-color: $grey-dk-200;\n\n@import \"./vendor/accessible-pygments/github-dark\";\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/dark\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-300 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-300 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-300 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-300 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-300 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-300 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-dark.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/accessible-pygments/github-dark.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/base.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/color_schemes/dark.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/skiptomain.scss","just-the-docs-dark.scss"],"names":[],"mappings":"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;EACA;EACA,kBD4BY;;ADpBV;EEZJ;IAOI;IACA;IACA,ODwFW;ICvFX;IACA;IACA;;;AFAA;EEZJ;IAgBI;IACA,WD+EQ;;;ADpFR;EEQF;IAEI,aD2ES;;;ADrFX;EEQF;IAQI;;;AAOF;EACE;EACA,kBDLQ;;ADpBV;EEuBA;IAKI;IACA,kBDTM;;;ACYR;EACE;;AFjCJ;EEgCE;IAII;;;;AAOV;EACE;;AF5CE;EE2CJ;IAII;IACA,WDyCY;;;;ACrChB;EACE,aDaK;ECZL,gBDYK;EDvDL,eCuDK;EDtDL,cCsDK;;ADlEH;EEoDJ;IFrCI,eCqDG;IDpDH,cCoDG;;;ADpEH;EEoDJ;IAOI,aDSG;ICRH,gBDQG;;;;ACJP;EACE;EACA;;AFlEE;EEgEJ;IAKI;IACA;IACA,QDmBY;;;;ACfhB;AAAA;AAAA;EAGE;;AF9EE;EE2EJ;AAAA;AAAA;IAMI,ODGQ;;;;ACCZ;EACE;;AAEA;EACE;;AFzFA;EEqFJ;IAQI;IACA,aDxBG;ICyBH,gBD7BG;IC8BH;IACA;;;;AAIJ;EACE;EACA,YDbc;ECcd;;AFxGE;EEqGJ;IAMI,QDjBY;ICkBZ,YDlBY;ICmBZ;;;;AAIJ;EACE;EACA;EACA;EACA;EACA,aDrDK;ECsDL,gBDtDK;ECuDL,ODnGY;EDVZ,eCuDK;EDtDL,cCsDK;;ADlEH;EEiHJ;IFlGI,eCqDG;IDpDH,cCoDG;;;AF/BL;EACE;;ACtCA;EEiHJ;IHvEI;IACA,aEhDuB;;;ADKvB;EEiHJ;IAcI,aD/DG;ICgEH,gBDhEG;;;;AC+EP;EACE;EACA;EACA,SDhFK;ECiFL;;;AFnJE;EEuJF;IACE;;;AAIJ;EACE;;;AAQF;EACE;;;AAOF;EACE;EACA;EACA;EACA,aD/GK;ECgHL,gBDhHK;EDvDL,eCuDK;EDtDL,cCsDK;;ADlEH;EE6KJ;IF9JI,eCqDG;IDpDH,cCoDG;;;AFvEL;EACE;;ACEA;EE6KJ;IH3KI;;;ACFA;EE6KJ;IAYI;IACA;;;;AAIJ;EACE,OD5HK;EC6HL,QD7HK;EC8HL,OJ3MW;;;AKCb;EACE,aFEoB;;AEApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;;AAGF;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;IACA;IACA;;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,ORTY;EQUZ,kBRfY;EQgBZ;EACA;EACA;EACA;EACA;;ATvCE;ES2BJ;IAeI;IACA;IACA,kBRxBU;IQyBV;;;AAGF;EACE;EACA;;AAEA;EACE,OX/DO;;;AWoEb;EACE;EACA;EACA;EACA,cRIK;;ADlEH;ES0DJ;IAOI,cRGG;IQFH;;;AAGF;EACE;EACA;EACA;EACA,ORzDU;;;AQ6Dd;EACE;EACA;EACA;EACA;EACA;EACA;EACA,kBRjEY;EQkEZ,4BRRc;EQSd,2BRTc;EQUd,YACE;;ATxFA;ES6EJ;IAeI;IACA,ORFmB;IQGnB;;;;AAIJ;EACE;EACA,eRrCK;EQsCL;;AVpFA;EACE;;AClBA;ESkGJ;IV5EI;;;ACtBA;EDOF;IACE;;;ACRA;ESkGJ;IVtFI;;;;AUiGJ;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EAEE,kBX3Ha;;;AW+HjB;EACE;EACA,aR9DK;EQ+DL,gBR/DK;;ADhEH;ES4HJ;IAMI;IACA;IACA,eRpEG;IQqEH;;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;;AVxIF;EACE;;ACRA;ES8IF;IVlIE;;;ACZA;EDHF;IACE;;;ACEA;ES8IF;IV5IE;;;AUqJF;EACE,ORtFG;EQuFH,QRvFG;EQwFH,cR1FG;EQ2FH,OXrKS;EWsKT;;AAGF;EACE;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA,ORrJY;EQsJZ;EACA;;AV5LA;EACE;;ACYA;ESyKJ;IVjLI;;;;AU2LJ;EACE;EACA,aRrHK;EQsHL,gBRtHK;EQuHL,cRrHK;EQsHL,aRxHK;EQyHL,ORjKY;EQkKZ;EACA,aR/GO;EQgHP,mBR1KY;;AFrBZ;EACE;;ACEA;ESmLJ;IVjLI;;;ACFA;ESmLJ;IAaI;IACA;IACA,cRlIG;IQmIH;IACA;;;;AAIJ;EACE,YR1IK;;;AQ6IP;EACE;;;AAGF;EACE;;AV1MA;EACE;;ACRA;ESgNJ;IVpMI;;;;AUyMJ;EACE;EACA,ORrJK;EQsJL,QRtJK;EQuJL;EACA,ORnJK;EQoJL,QRpJK;EQqJL,kBRz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BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AdhHA;EACE;;ACYA;EcZJ;IfII;;;;AAKF;EACE;;ACEA;EcRJ;IfUI;;;;AAKF;EACE;;ACRA;EcJJ;IfgBI;;;;AAKF;EACE;;AClBA;EcAJ;IfsBI;;;;AAKF;EACE;;AC5BA;EcIJ;If4BI;;;;AAKF;EACE;;ACtCA;EcQJ;IfkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EcYJ;If0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EcgBJ;IfiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EcoBJ;IfwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EcwBJ;If+DI;;;;Ae3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,abxDiB;;;Aa2DnB;EACE,ab1DyB;;;Aa6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AhBlCA;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AhB7GA;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OpBXW;EoBYX,kBjBkBY;EiBjBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACpBF;EACE,kBlByBY;;;AkBtBd;EACI;EACA;EACA,elB4EY;EkB3EZ;EACA;;AAEA;EACI,OlB8BI;EkB7BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBoBM;EkBnBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBiDY;EkBhDZ;EACA;;AACA;EACE;EACA;EACA,OlBEM;EkBDN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBGY;EkBFZ;EACA;;AAEA;EACI,OlB/CG;EkBgDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBzDK;EkB0DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBxBY;EkByBZ;EACA;;AACA;EACE;EACA;EACA,OlB3EK;EkB4EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBtEY;EkBuEZ;EACA;;AAEA;EACI,OlBhHK;EkBiHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlB1HO;EkB2HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBjGY;EkBkGZ;EACA;;AACA;EACE;EACA;EACA,OlB5IO;EkB6IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #6e7681 }\n.highlight { background: #0d1117; color: #E6EDF3 }\n.highlight .c { color: #8B949E; font-style: italic } /* Comment */\n.highlight .err { color: #F85149 } /* Error */\n.highlight .esc { color: #E6EDF3 } /* Escape */\n.highlight .g { color: #E6EDF3 } /* Generic */\n.highlight .k { color: #FF7B72 } /* Keyword */\n.highlight .l { color: #A5D6FF } /* Literal */\n.highlight .n { color: #E6EDF3 } /* Name */\n.highlight .o { color: #FF7B72; font-weight: bold } /* Operator */\n.highlight .x { color: #E6EDF3 } /* Other */\n.highlight .p { color: #E6EDF3 } /* Punctuation */\n.highlight .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */\n.highlight .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */\n.highlight .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */\n.highlight .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */\n.highlight .c1 { color: #8B949E; font-style: italic } /* Comment.Single */\n.highlight .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */\n.highlight .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */\n.highlight .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */\n.highlight .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */\n.highlight .gr { color: #FFA198 } /* Generic.Error */\n.highlight .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */\n.highlight .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */\n.highlight .go { color: #8B949E } /* Generic.Output */\n.highlight .gp { color: #8B949E } /* Generic.Prompt */\n.highlight .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #79C0FF } /* Generic.Subheading */\n.highlight .gt { color: #FF7B72 } /* Generic.Traceback */\n.highlight .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */\n.highlight .kc { color: #79C0FF } /* Keyword.Constant */\n.highlight .kd { color: #FF7B72 } /* Keyword.Declaration */\n.highlight .kn { color: #FF7B72 } /* Keyword.Namespace */\n.highlight .kp { color: #79C0FF } /* Keyword.Pseudo */\n.highlight .kr { color: #FF7B72 } /* Keyword.Reserved */\n.highlight .kt { color: #FF7B72 } /* Keyword.Type */\n.highlight .ld { color: #79C0FF } /* Literal.Date */\n.highlight .m { color: #A5D6FF } /* Literal.Number */\n.highlight .s { color: #A5D6FF } /* Literal.String */\n.highlight .na { color: #E6EDF3 } /* Name.Attribute */\n.highlight .nb { color: #E6EDF3 } /* Name.Builtin */\n.highlight .nc { color: #F0883E; font-weight: bold } /* Name.Class */\n.highlight .no { color: #79C0FF; font-weight: bold } /* Name.Constant */\n.highlight .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */\n.highlight .ni { color: #FFA657 } /* Name.Entity */\n.highlight .ne { color: #F0883E; font-weight: bold } /* Name.Exception */\n.highlight .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */\n.highlight .nl { color: #79C0FF; font-weight: bold } /* Name.Label */\n.highlight .nn { color: #FF7B72 } /* Name.Namespace */\n.highlight .nx { color: #E6EDF3 } /* Name.Other */\n.highlight .py { color: #79C0FF } /* Name.Property */\n.highlight .nt { color: #7EE787 } /* Name.Tag */\n.highlight .nv { color: #79C0FF } /* Name.Variable */\n.highlight .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */\n.highlight .pm { color: #E6EDF3 } /* Punctuation.Marker */\n.highlight .w { color: #6E7681 } /* Text.Whitespace */\n.highlight .mb { color: #A5D6FF } /* Literal.Number.Bin */\n.highlight .mf { color: #A5D6FF } /* Literal.Number.Float */\n.highlight .mh { color: #A5D6FF } /* Literal.Number.Hex */\n.highlight .mi { color: #A5D6FF } /* Literal.Number.Integer */\n.highlight .mo { color: #A5D6FF } /* Literal.Number.Oct */\n.highlight .sa { color: #79C0FF } /* Literal.String.Affix */\n.highlight .sb { color: #A5D6FF } /* Literal.String.Backtick */\n.highlight .sc { color: #A5D6FF } /* Literal.String.Char */\n.highlight .dl { color: #79C0FF } /* Literal.String.Delimiter */\n.highlight .sd { color: #A5D6FF } /* Literal.String.Doc */\n.highlight .s2 { color: #A5D6FF } /* Literal.String.Double */\n.highlight .se { color: #79C0FF } /* Literal.String.Escape */\n.highlight .sh { color: #79C0FF } /* Literal.String.Heredoc */\n.highlight .si { color: #A5D6FF } /* Literal.String.Interpol */\n.highlight .sx { color: #A5D6FF } /* Literal.String.Other */\n.highlight .sr { color: #79C0FF } /* Literal.String.Regex */\n.highlight .s1 { color: #A5D6FF } /* Literal.String.Single */\n.highlight .ss { color: #A5D6FF } /* Literal.String.Symbol */\n.highlight .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */\n.highlight .vc { color: #79C0FF } /* Name.Variable.Class */\n.highlight .vg { color: #79C0FF } /* Name.Variable.Global */\n.highlight .vi { color: #79C0FF } /* Name.Variable.Instance */\n.highlight .vm { color: #79C0FF } /* Name.Variable.Magic */\n.highlight .il { color: #A5D6FF } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","$color-scheme: dark;\n$body-background-color: $grey-dk-300;\n$body-heading-color: $grey-lt-000;\n$body-text-color: $grey-lt-300;\n$link-color: lighten($blue-000, 10%);\n$nav-child-link-color: $grey-dk-000;\n$sidebar-color: $grey-dk-300;\n$base-button-color: $grey-dk-250;\n$btn-primary-color: $blue-200;\n$code-background-color: #0d1117; // github-dark bg color\n$code-linenumber-color: #e6edf3; // github-dark line number color\n$feedback-color: darken($sidebar-color, 3%);\n$table-background-color: $grey-dk-250;\n$search-background-color: $grey-dk-250;\n$search-result-preview-color: $grey-lt-300;\n$border-color: $grey-dk-200;\n\n@import \"./vendor/accessible-pygments/github-dark\";\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/dark\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-300 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-300 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-300 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-300 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-300 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-300 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-dark.css"} \ No newline at end of file diff --git a/main/assets/css/just-the-docs-default.css.map b/main/assets/css/just-the-docs-default.css.map index 2d411b3ef5..fa5ed6da2b 100644 --- a/main/assets/css/just-the-docs-default.css.map +++ b/main/assets/css/just-the-docs-default.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/base.scss","../../_sass/color_schemes/meshtastic.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/color_schemes/light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/skiptomain.scss","just-the-docs-default.scss"],"names":[],"mappings":"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AGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AdrBE;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AfhHA;EACE;;ACYA;EeZJ;IhBII;;;;AAKF;EACE;;ACEA;EeRJ;IhBUI;;;;AAKF;EACE;;ACRA;EeJJ;IhBgBI;;;;AAKF;EACE;;AClBA;EeAJ;IhBsBI;;;;AAKF;EACE;;AC5BA;EeIJ;IhB4BI;;;;AAKF;EACE;;ACtCA;EeQJ;IhBkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EeYJ;IhB0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EegBJ;IhBiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EeoBJ;IhBwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EewBJ;IhB+DI;;;;AgB3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,adxDiB;;;Ac2DnB;EACE,ad1DyB;;;Ac6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AjBlCA;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AjB7GA;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OrBCW;EqBAX,kBrBNsB;EqBOtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACnBF;EACE;;;AAGF;EACI;EACA;EACA,enB2EY;EmB1EZ;EACA;;AAEA;EACI,OnB6BI;EmB5BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnBmBM;EmBlBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBgDY;EmB/CZ;EACA;;AACA;EACE;EACA;EACA,OnBCM;EmBAN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBEY;EmBDZ;EACA;;AAEA;EACI,OnBhDG;EmBiDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnB1DK;EmB2DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBzBY;EmB0BZ;EACA;;AACA;EACE;EACA;EACA,OnB5EK;EmB6EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBvEY;EmBwEZ;EACA;;AAEA;EACI,OnBjHK;EmBkHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnB3HO;EmB4HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBlGY;EmBmGZ;EACA;;AACA;EACE;EACA;EACA,OnB7IO;EmB8IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","// Meshtastic Material 3 — Light color scheme for just-the-docs\n// Source: core/ui/.../Color.kt §8.2 (Light Scheme)\n//\n// Brand colors:\n// Primary (Light): #2D8F52 (Green 700)\n// Surface (Light): #F5F6FA (Neutral 50)\n\n$color-scheme: light;\n\n// Body / page background\n$body-background-color: #F5F6FA; // Neutral 50 — surfaceLight\n$sidebar-color: #ECEDF3; // Neutral 100 — surfaceContainerLight\n$body-text-color: #2C2D3C; // Neutral 800 — onSurfaceLight\n$body-heading-color: #2C2D3C; // Neutral 800\n\n// Links\n$link-color: #2D8F52; // Green 700 — primaryLight\n$nav-link-color: #2D8F52; // Green 700\n\n// Navigation\n$nav-child-link-color: #555668; // Neutral 600 — secondaryLight\n$search-result-preview-color: #555668;\n\n// Code\n$code-background-color: #ECEDF3; // Neutral 100\n$code-linenumber-color: #9496A6; // Neutral 400\n\n// Borders\n$border-color: #D5D6E0; // Neutral 200 — outlineVariantLight\n$table-background-color: #F5F6FA; // Neutral 50\n\n// Buttons\n$btn-primary-color: #2D8F52; // Green 700\n\n// Feedback / callouts\n$feedback-color: #E0E1EB; // surfaceContainerHighLight\n\n// Search\n$search-background-color: #FFFFFF; // surfaceContainerLowestLight\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","$color-scheme: light !default;\n$body-background-color: $white !default;\n$body-heading-color: $grey-dk-300 !default;\n$body-text-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$sidebar-color: $grey-lt-000 !default;\n$base-button-color: #f7f7f7 !default;\n$btn-primary-color: $purple-100 !default;\n$code-background-color: $white !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n$table-background-color: $white !default;\n$search-background-color: $white !default;\n$search-result-preview-color: $grey-dk-100 !default;\n\n@import \"./vendor/accessible-pygments/github-light\";\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/meshtastic\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-default.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/base.scss","../../_sass/color_schemes/meshtastic.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/color_schemes/light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/skiptomain.scss","just-the-docs-default.scss"],"names":[],"mappings":"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AGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AdrBE;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AfhHA;EACE;;ACYA;EeZJ;IhBII;;;;AAKF;EACE;;ACEA;EeRJ;IhBUI;;;;AAKF;EACE;;ACRA;EeJJ;IhBgBI;;;;AAKF;EACE;;AClBA;EeAJ;IhBsBI;;;;AAKF;EACE;;AC5BA;EeIJ;IhB4BI;;;;AAKF;EACE;;ACtCA;EeQJ;IhBkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EeYJ;IhB0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EegBJ;IhBiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EeoBJ;IhBwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EewBJ;IhB+DI;;;;AgB3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,adxDiB;;;Ac2DnB;EACE,ad1DyB;;;Ac6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AjBlCA;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AjB7GA;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OrBCW;EqBAX,kBrBNsB;EqBOtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACnBF;EACE;;;AAGF;EACI;EACA;EACA,enB2EY;EmB1EZ;EACA;;AAEA;EACI,OnB6BI;EmB5BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnBmBM;EmBlBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBgDY;EmB/CZ;EACA;;AACA;EACE;EACA;EACA,OnBCM;EmBAN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBEY;EmBDZ;EACA;;AAEA;EACI,OnBhDG;EmBiDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnB1DK;EmB2DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBzBY;EmB0BZ;EACA;;AACA;EACE;EACA;EACA,OnB5EK;EmB6EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBvEY;EmBwEZ;EACA;;AAEA;EACI,OnBjHK;EmBkHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnB3HO;EmB4HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBlGY;EmBmGZ;EACA;;AACA;EACE;EACA;EACA,OnB7IO;EmB8IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","// Meshtastic Material 3 — Light color scheme for just-the-docs\n// Source: core/ui/.../Color.kt §8.2 (Light Scheme)\n//\n// Brand colors:\n// Primary (Light): #2D8F52 (Green 700)\n// Surface (Light): #F5F6FA (Neutral 50)\n\n$color-scheme: light;\n\n// Body / page background\n$body-background-color: #F5F6FA; // Neutral 50 — surfaceLight\n$sidebar-color: #ECEDF3; // Neutral 100 — surfaceContainerLight\n$body-text-color: #2C2D3C; // Neutral 800 — onSurfaceLight\n$body-heading-color: #2C2D3C; // Neutral 800\n\n// Links\n$link-color: #2D8F52; // Green 700 — primaryLight\n$nav-link-color: #2D8F52; // Green 700\n\n// Navigation\n$nav-child-link-color: #555668; // Neutral 600 — secondaryLight\n$search-result-preview-color: #555668;\n\n// Code\n$code-background-color: #ECEDF3; // Neutral 100\n$code-linenumber-color: #9496A6; // Neutral 400\n\n// Borders\n$border-color: #D5D6E0; // Neutral 200 — outlineVariantLight\n$table-background-color: #F5F6FA; // Neutral 50\n\n// Buttons\n$btn-primary-color: #2D8F52; // Green 700\n\n// Feedback / callouts\n$feedback-color: #E0E1EB; // surfaceContainerHighLight\n\n// Search\n$search-background-color: #FFFFFF; // surfaceContainerLowestLight\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","$color-scheme: light !default;\n$body-background-color: $white !default;\n$body-heading-color: $grey-dk-300 !default;\n$body-text-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$sidebar-color: $grey-lt-000 !default;\n$base-button-color: #f7f7f7 !default;\n$btn-primary-color: $purple-100 !default;\n$code-background-color: $white !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n$table-background-color: $white !default;\n$search-background-color: $white !default;\n$search-result-preview-color: $grey-dk-100 !default;\n\n@import \"./vendor/accessible-pygments/github-light\";\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/meshtastic\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-default.css"} \ No newline at end of file diff --git a/main/assets/css/just-the-docs-light.css.map b/main/assets/css/just-the-docs-light.css.map index 6bf9b449d3..de087cf010 100644 --- a/main/assets/css/just-the-docs-light.css.map +++ b/main/assets/css/just-the-docs-light.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/base.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/color_schemes/light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/skiptomain.scss","just-the-docs-light.scss"],"names":[],"mappings":"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;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AbrBE;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AdhHA;EACE;;ACYA;EcZJ;IfII;;;;AAKF;EACE;;ACEA;EcRJ;IfUI;;;;AAKF;EACE;;ACRA;EcJJ;IfgBI;;;;AAKF;EACE;;AClBA;EcAJ;IfsBI;;;;AAKF;EACE;;AC5BA;EcIJ;If4BI;;;;AAKF;EACE;;ACtCA;EcQJ;IfkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EcYJ;If0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EcgBJ;IfiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EcoBJ;IfwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EcwBJ;If+DI;;;;Ae3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,abxDiB;;;Aa2DnB;EACE,ab1DyB;;;Aa6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AhBlCA;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AhB7GA;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OjBwBW;EiBvBX,kBjBaM;EiBZN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACtBF;EACE,kBlBsBM;;;AkBnBR;EACI;EACA;EACA,elB8EY;EkB7EZ;EACA;;AAEA;EACI,OlBgCI;EkB/BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBsBM;EkBrBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBmDY;EkBlDZ;EACA;;AACA;EACE;EACA;EACA,OlBIM;EkBHN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBKY;EkBJZ;EACA;;AAEA;EACI,OlB7CG;EkB8CH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBvDK;EkBwDL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBtBY;EkBuBZ;EACA;;AACA;EACE;EACA;EACA,OlBzEK;EkB0EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBpEY;EkBqEZ;EACA;;AAEA;EACI,OlB9GK;EkB+GL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBxHO;EkByHP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elB/FY;EkBgGZ;EACA;;AACA;EACE;EACA;EACA,OlB1IO;EkB2IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","$color-scheme: light !default;\n$body-background-color: $white !default;\n$body-heading-color: $grey-dk-300 !default;\n$body-text-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$sidebar-color: $grey-lt-000 !default;\n$base-button-color: #f7f7f7 !default;\n$btn-primary-color: $purple-100 !default;\n$code-background-color: $white !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n$table-background-color: $white !default;\n$search-background-color: $white !default;\n$search-result-preview-color: $grey-dk-100 !default;\n\n@import \"./vendor/accessible-pygments/github-light\";\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-light.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/base.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/color_schemes/light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/skiptomain.scss","just-the-docs-light.scss"],"names":[],"mappings":"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;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AbrBE;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AdhHA;EACE;;ACYA;EcZJ;IfII;;;;AAKF;EACE;;ACEA;EcRJ;IfUI;;;;AAKF;EACE;;ACRA;EcJJ;IfgBI;;;;AAKF;EACE;;AClBA;EcAJ;IfsBI;;;;AAKF;EACE;;AC5BA;EcIJ;If4BI;;;;AAKF;EACE;;ACtCA;EcQJ;IfkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EcYJ;If0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EcgBJ;IfiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EcoBJ;IfwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EcwBJ;If+DI;;;;Ae3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,abxDiB;;;Aa2DnB;EACE,ab1DyB;;;Aa6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AhBlCA;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AhB7GA;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OjBwBW;EiBvBX,kBjBaM;EiBZN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACtBF;EACE,kBlBsBM;;;AkBnBR;EACI;EACA;EACA,elB8EY;EkB7EZ;EACA;;AAEA;EACI,OlBgCI;EkB/BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBsBM;EkBrBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBmDY;EkBlDZ;EACA;;AACA;EACE;EACA;EACA,OlBIM;EkBHN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBKY;EkBJZ;EACA;;AAEA;EACI,OlB7CG;EkB8CH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBvDK;EkBwDL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBtBY;EkBuBZ;EACA;;AACA;EACE;EACA;EACA,OlBzEK;EkB0EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBpEY;EkBqEZ;EACA;;AAEA;EACI,OlB9GK;EkB+GL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBxHO;EkByHP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elB/FY;EkBgGZ;EACA;;AACA;EACE;EACA;EACA,OlB1IO;EkB2IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","$color-scheme: light !default;\n$body-background-color: $white !default;\n$body-heading-color: $grey-dk-300 !default;\n$body-text-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$sidebar-color: $grey-lt-000 !default;\n$base-button-color: #f7f7f7 !default;\n$btn-primary-color: $purple-100 !default;\n$code-background-color: $white !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n$table-background-color: $white !default;\n$search-background-color: $white !default;\n$search-result-preview-color: $grey-dk-100 !default;\n\n@import \"./vendor/accessible-pygments/github-light\";\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-light.css"} \ No newline at end of file diff --git a/main/assets/css/just-the-docs-meshtastic-dark.css.map b/main/assets/css/just-the-docs-meshtastic-dark.css.map index 2ec6082ca5..20e31f802d 100644 --- a/main/assets/css/just-the-docs-meshtastic-dark.css.map +++ b/main/assets/css/just-the-docs-meshtastic-dark.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/base.scss","../../_sass/color_schemes/meshtastic-dark.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/skiptomain.scss","just-the-docs-meshtastic-dark.scss"],"names":[],"mappings":"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;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AbrBE;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AdhHA;EACE;;ACYA;EcZJ;IfII;;;;AAKF;EACE;;ACEA;EcRJ;IfUI;;;;AAKF;EACE;;ACRA;EcJJ;IfgBI;;;;AAKF;EACE;;AClBA;EcAJ;IfsBI;;;;AAKF;EACE;;AC5BA;EcIJ;If4BI;;;;AAKF;EACE;;ACtCA;EcQJ;IfkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EcYJ;If0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EcgBJ;IfiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EcoBJ;IfwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EcwBJ;If+DI;;;;Ae3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,abxDiB;;;Aa2DnB;EACE,ab1DyB;;;Aa6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AhBlCA;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AhB7GA;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OpBCW;EoBAX,kBpBNsB;EoBOtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACpBF;EACE,kBrBCsB;;;AqBExB;EACI;EACA;EACA,elB4EY;EkB3EZ;EACA;;AAEA;EACI,OlB8BI;EkB7BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBoBM;EkBnBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBiDY;EkBhDZ;EACA;;AACA;EACE;EACA;EACA,OlBEM;EkBDN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBGY;EkBFZ;EACA;;AAEA;EACI,OlB/CG;EkBgDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBzDK;EkB0DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBxBY;EkByBZ;EACA;;AACA;EACE;EACA;EACA,OlB3EK;EkB4EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBtEY;EkBuEZ;EACA;;AAEA;EACI,OlBhHK;EkBiHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlB1HO;EkB2HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBjGY;EkBkGZ;EACA;;AACA;EACE;EACA;EACA,OlB5IO;EkB6IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","// Meshtastic Material 3 — Dark color scheme for just-the-docs\n// Source: core/ui/.../Color.kt §8.3 (Dark Scheme)\n//\n// Brand colors:\n// Primary (Dark): #67EA94 (Green 500)\n// Surface (Dark): #1A1B26 (Neutral 900)\n\n$color-scheme: dark;\n\n// Body / page background\n$body-background-color: #1A1B26; // Neutral 900 — surfaceDark\n$sidebar-color: #1A1B26; // Neutral 900\n$body-text-color: #ECEDF3; // Neutral 100 — onSurfaceDark\n$body-heading-color: #ECEDF3; // Neutral 100\n\n// Links\n$link-color: #67EA94; // Green 500 — primaryDark\n$nav-link-color: #67EA94; // Green 500\n\n// Navigation\n$nav-child-link-color: #B8BAC8; // Neutral 300 — secondaryDark\n$search-result-preview-color: #B8BAC8;\n\n// Code\n$code-background-color: #0F1017; // Neutral 950 — surfaceContainerLowestDark\n$code-linenumber-color: #9496A6; // Neutral 400\n\n// Borders\n$border-color: #3D3E50; // Neutral 700 — outlineVariantDark\n$table-background-color: #242533; // Interpolated — surfaceContainerDark\n\n// Buttons\n$btn-primary-color: #67EA94; // Green 500\n$base-button-color: #2C2D3C; // Neutral 800\n\n// Feedback / callouts\n$feedback-color: #242533; // surfaceContainerDark\n\n// Search\n$search-background-color: #242533; // surfaceContainerDark\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/meshtastic-dark\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-meshtastic-dark.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/base.scss","../../_sass/color_schemes/meshtastic-dark.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/skiptomain.scss","just-the-docs-meshtastic-dark.scss"],"names":[],"mappings":"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;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AbrBE;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ab5CJ;Ea+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AdhHA;EACE;;ACYA;EcZJ;IfII;;;;AAKF;EACE;;ACEA;EcRJ;IfUI;;;;AAKF;EACE;;ACRA;EcJJ;IfgBI;;;;AAKF;EACE;;AClBA;EcAJ;IfsBI;;;;AAKF;EACE;;AC5BA;EcIJ;If4BI;;;;AAKF;EACE;;ACtCA;EcQJ;IfkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EcYJ;If0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EcgBJ;IfiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EcoBJ;IfwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EcwBJ;If+DI;;;;Ae3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,abxDiB;;;Aa2DnB;EACE,ab1DyB;;;Aa6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AhBlCA;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhBzEJ;EgB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AhB7GA;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AhB/IJ;EgBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OpBCW;EoBAX,kBpBNsB;EoBOtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACpBF;EACE,kBrBCsB;;;AqBExB;EACI;EACA;EACA,elB4EY;EkB3EZ;EACA;;AAEA;EACI,OlB8BI;EkB7BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBoBM;EkBnBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBiDY;EkBhDZ;EACA;;AACA;EACE;EACA;EACA,OlBEM;EkBDN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBGY;EkBFZ;EACA;;AAEA;EACI,OlB/CG;EkBgDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlBzDK;EkB0DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBxBY;EkByBZ;EACA;;AACA;EACE;EACA;EACA,OlB3EK;EkB4EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,elBtEY;EkBuEZ;EACA;;AAEA;EACI,OlBhHK;EkBiHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OlB1HO;EkB2HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,elBjGY;EkBkGZ;EACA;;AACA;EACE;EACA;EACA,OlB5IO;EkB6IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","// Meshtastic Material 3 — Dark color scheme for just-the-docs\n// Source: core/ui/.../Color.kt §8.3 (Dark Scheme)\n//\n// Brand colors:\n// Primary (Dark): #67EA94 (Green 500)\n// Surface (Dark): #1A1B26 (Neutral 900)\n\n$color-scheme: dark;\n\n// Body / page background\n$body-background-color: #1A1B26; // Neutral 900 — surfaceDark\n$sidebar-color: #1A1B26; // Neutral 900\n$body-text-color: #ECEDF3; // Neutral 100 — onSurfaceDark\n$body-heading-color: #ECEDF3; // Neutral 100\n\n// Links\n$link-color: #67EA94; // Green 500 — primaryDark\n$nav-link-color: #67EA94; // Green 500\n\n// Navigation\n$nav-child-link-color: #B8BAC8; // Neutral 300 — secondaryDark\n$search-result-preview-color: #B8BAC8;\n\n// Code\n$code-background-color: #0F1017; // Neutral 950 — surfaceContainerLowestDark\n$code-linenumber-color: #9496A6; // Neutral 400\n\n// Borders\n$border-color: #3D3E50; // Neutral 700 — outlineVariantDark\n$table-background-color: #242533; // Interpolated — surfaceContainerDark\n\n// Buttons\n$btn-primary-color: #67EA94; // Green 500\n$base-button-color: #2C2D3C; // Neutral 800\n\n// Feedback / callouts\n$feedback-color: #242533; // surfaceContainerDark\n\n// Search\n$search-background-color: #242533; // surfaceContainerDark\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/meshtastic-dark\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-meshtastic-dark.css"} \ No newline at end of file diff --git a/main/assets/css/just-the-docs-meshtastic.css.map b/main/assets/css/just-the-docs-meshtastic.css.map index 16d98f9d03..3370484dcb 100644 --- a/main/assets/css/just-the-docs-meshtastic.css.map +++ b/main/assets/css/just-the-docs-meshtastic.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/base.scss","../../_sass/color_schemes/meshtastic.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/color_schemes/light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3754-i4j6dz/_sass/skiptomain.scss","just-the-docs-meshtastic.scss"],"names":[],"mappings":"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AGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AdrBE;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AfhHA;EACE;;ACYA;EeZJ;IhBII;;;;AAKF;EACE;;ACEA;EeRJ;IhBUI;;;;AAKF;EACE;;ACRA;EeJJ;IhBgBI;;;;AAKF;EACE;;AClBA;EeAJ;IhBsBI;;;;AAKF;EACE;;AC5BA;EeIJ;IhB4BI;;;;AAKF;EACE;;ACtCA;EeQJ;IhBkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EeYJ;IhB0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EegBJ;IhBiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EeoBJ;IhBwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EewBJ;IhB+DI;;;;AgB3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,adxDiB;;;Ac2DnB;EACE,ad1DyB;;;Ac6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AjBlCA;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AjB7GA;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OrBCW;EqBAX,kBrBNsB;EqBOtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACpBF;EACE,kBtBCsB;;;AsBExB;EACI;EACA;EACA,enB4EY;EmB3EZ;EACA;;AAEA;EACI,OnB8BI;EmB7BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnBoBM;EmBnBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBiDY;EmBhDZ;EACA;;AACA;EACE;EACA;EACA,OnBEM;EmBDN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBGY;EmBFZ;EACA;;AAEA;EACI,OnB/CG;EmBgDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnBzDK;EmB0DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBxBY;EmByBZ;EACA;;AACA;EACE;EACA;EACA,OnB3EK;EmB4EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBtEY;EmBuEZ;EACA;;AAEA;EACI,OnBhHK;EmBiHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnB1HO;EmB2HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBjGY;EmBkGZ;EACA;;AACA;EACE;EACA;EACA,OnB5IO;EmB6IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","// Meshtastic Material 3 — Light color scheme for just-the-docs\n// Source: core/ui/.../Color.kt §8.2 (Light Scheme)\n//\n// Brand colors:\n// Primary (Light): #2D8F52 (Green 700)\n// Surface (Light): #F5F6FA (Neutral 50)\n\n$color-scheme: light;\n\n// Body / page background\n$body-background-color: #F5F6FA; // Neutral 50 — surfaceLight\n$sidebar-color: #ECEDF3; // Neutral 100 — surfaceContainerLight\n$body-text-color: #2C2D3C; // Neutral 800 — onSurfaceLight\n$body-heading-color: #2C2D3C; // Neutral 800\n\n// Links\n$link-color: #2D8F52; // Green 700 — primaryLight\n$nav-link-color: #2D8F52; // Green 700\n\n// Navigation\n$nav-child-link-color: #555668; // Neutral 600 — secondaryLight\n$search-result-preview-color: #555668;\n\n// Code\n$code-background-color: #ECEDF3; // Neutral 100\n$code-linenumber-color: #9496A6; // Neutral 400\n\n// Borders\n$border-color: #D5D6E0; // Neutral 200 — outlineVariantLight\n$table-background-color: #F5F6FA; // Neutral 50\n\n// Buttons\n$btn-primary-color: #2D8F52; // Green 700\n\n// Feedback / callouts\n$feedback-color: #E0E1EB; // surfaceContainerHighLight\n\n// Search\n$search-background-color: #FFFFFF; // surfaceContainerLowestLight\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","$color-scheme: light !default;\n$body-background-color: $white !default;\n$body-heading-color: $grey-dk-300 !default;\n$body-text-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$sidebar-color: $grey-lt-000 !default;\n$base-button-color: #f7f7f7 !default;\n$btn-primary-color: $purple-100 !default;\n$code-background-color: $white !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n$table-background-color: $white !default;\n$search-background-color: $white !default;\n$search-result-preview-color: $grey-dk-100 !default;\n\n@import \"./vendor/accessible-pygments/github-light\";\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/meshtastic\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-meshtastic.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/accessible-pygments/github-light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/vendor/normalize.scss/normalize.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/base.scss","../../_sass/color_schemes/meshtastic.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/_variables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/content.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/navigation.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/labels.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/color_schemes/light.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/support/mixins/_buttons.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/search.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/tables.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/code.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_colors.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_layout.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_typography.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_lists.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/utilities/_spacing.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/print.scss","../../../../../../../../../../tmp/jekyll-remote-theme-20260911-3084-4kvr6e/_sass/skiptomain.scss","just-the-docs-meshtastic.scss"],"names":[],"mappings":"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AGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACvOF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AdrBE;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;Ad5CJ;Ec+BE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;;AAQR;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAKF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AfhHA;EACE;;ACYA;EeZJ;IhBII;;;;AAKF;EACE;;ACEA;EeRJ;IhBUI;;;;AAKF;EACE;;ACRA;EeJJ;IhBgBI;;;;AAKF;EACE;;AClBA;EeAJ;IhBsBI;;;;AAKF;EACE;;AC5BA;EeIJ;IhB4BI;;;;AAKF;EACE;;ACtCA;EeQJ;IhBkCI;IACA,aEhDuB;;;;AFqDzB;EACE;EACA,aEvDuB;;ADKvB;EeYJ;IhB0CI;;;;AAKF;EACE;EACA,aElEuB;;ADKvB;EegBJ;IhBiDI;;;;AAKF;EACE;EACA,aE7EuB;;ADKvB;EeoBJ;IhBwDI;;;;AAKF;EACE;EACA,aExFuB;;ADKvB;EewBJ;IhB+DI;;;;AgB3DJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,adxDiB;;;Ac2DnB;EACE,ad1DyB;;;Ac6D3B;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC/EF;EACE;EACA;EACA;;AAGE;EACE;;;ACLN;EACE;EACA;;;AAQA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AAhCF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAEF;EACE;EACA;;;AjBlCA;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjBzEJ;EiB6CE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AAaN;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAvBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AjB7GA;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AjB/IJ;EiBwHE;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;EAvBF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAEF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;IACA;;;AC3JR;EACE;AAAA;AAAA;AAAA;AAAA;AAAA;IAME;;EAGF;IACE;IACA;;EAGF;IACE;IACA;IACA;;EAGF;IACE;;EAGF;IACE;IACA;;EAGF;IACE;;EAGF;IACE;;EAGF;IACE;IACA;;;ACvCJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE,OrBCW;EqBAX,kBrBNsB;EqBOtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACpBF;EACE,kBtBCsB;;;AsBExB;EACI;EACA;EACA,enB4EY;EmB3EZ;EACA;;AAEA;EACI,OnB8BI;EmB7BJ;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnBoBM;EmBnBN;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBiDY;EmBhDZ;EACA;;AACA;EACE;EACA;EACA,OnBEM;EmBDN;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBGY;EmBFZ;EACA;;AAEA;EACI,OnB/CG;EmBgDH;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnBzDK;EmB0DL;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBxBY;EmByBZ;EACA;;AACA;EACE;EACA;EACA,OnB3EK;EmB4EL;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAMJ;EACI;EACA;EACA,enBtEY;EmBuEZ;EACA;;AAEA;EACI,OnBhHK;EmBiHL;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACE,OnB1HO;EmB2HP;EACA;EACA;EACA;EACA;;;AAIN;EACI;EACA;EACA,enBjGY;EmBkGZ;EACA;;AACA;EACE;EACA;EACA,OnB5IO;EmB6IP;EACA;EACA;EACA;EACA;;;AAIN;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE","sourcesContent":["/*\ngenerated by accessible-pygments \nCopyright (c) 2022, Quansight Labs\nLicensed under the BSD license, see LICENSE for details.\n--\ngenerated by Pygments \nCopyright 2006-2025 by the Pygments team.\nLicensed under the BSD license, see LICENSE for details.\n*/\n\n.highlight .hll { background-color: #0969da4a }\n.highlight .c { color: #6E7781 } /* Comment */\n.highlight .err { color: #CF222E } /* Error */\n.highlight .k { color: #CF222E } /* Keyword */\n.highlight .l { color: #953800 } /* Literal */\n.highlight .n { color: #8250DF } /* Name */\n.highlight .o { color: #116329 } /* Operator */\n.highlight .p { color: #24292F } /* Punctuation */\n.highlight .ch { color: #6E7781 } /* Comment.Hashbang */\n.highlight .cm { color: #6E7781 } /* Comment.Multiline */\n.highlight .cp { color: #6E7781 } /* Comment.Preproc */\n.highlight .cpf { color: #6E7781 } /* Comment.PreprocFile */\n.highlight .c1 { color: #6E7781 } /* Comment.Single */\n.highlight .cs { color: #6E7781 } /* Comment.Special */\n.highlight .gd { color: #0550AE } /* Generic.Deleted */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #CF222E } /* Generic.Error */\n.highlight .gh { color: #0550AE } /* Generic.Heading */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #0550AE } /* Generic.Subheading */\n.highlight .kc { color: #0550AE } /* Keyword.Constant */\n.highlight .kd { color: #CF222E } /* Keyword.Declaration */\n.highlight .kn { color: #CF222E } /* Keyword.Namespace */\n.highlight .kp { color: #CF222E } /* Keyword.Pseudo */\n.highlight .kr { color: #CF222E } /* Keyword.Reserved */\n.highlight .kt { color: #CF222E } /* Keyword.Type */\n.highlight .ld { color: #953800 } /* Literal.Date */\n.highlight .m { color: #953800 } /* Literal.Number */\n.highlight .s { color: #0550AE } /* Literal.String */\n.highlight .na { color: #953800 } /* Name.Attribute */\n.highlight .nb { color: #953800 } /* Name.Builtin */\n.highlight .nc { color: #0550AE } /* Name.Class */\n.highlight .no { color: #0550AE } /* Name.Constant */\n.highlight .nd { color: #953800 } /* Name.Decorator */\n.highlight .ni { color: #116329 } /* Name.Entity */\n.highlight .ne { color: #8250DF } /* Name.Exception */\n.highlight .nf { color: #0550AE } /* Name.Function */\n.highlight .nl { color: #953800 } /* Name.Label */\n.highlight .nn { color: #24292F } /* Name.Namespace */\n.highlight .nx { color: #8250DF } /* Name.Other */\n.highlight .py { color: #0550AE } /* Name.Property */\n.highlight .nt { color: #116329 } /* Name.Tag */\n.highlight .nv { color: #953800 } /* Name.Variable */\n.highlight .ow { color: #8250DF } /* Operator.Word */\n.highlight .pm { color: #24292F } /* Punctuation.Marker */\n.highlight .w { color: #24292F } /* Text.Whitespace */\n.highlight .mb { color: #953800 } /* Literal.Number.Bin */\n.highlight .mf { color: #953800 } /* Literal.Number.Float */\n.highlight .mh { color: #953800 } /* Literal.Number.Hex */\n.highlight .mi { color: #953800 } /* Literal.Number.Integer */\n.highlight .mo { color: #953800 } /* Literal.Number.Oct */\n.highlight .sa { color: #0550AE } /* Literal.String.Affix */\n.highlight .sb { color: #0550AE } /* Literal.String.Backtick */\n.highlight .sc { color: #0550AE } /* Literal.String.Char */\n.highlight .dl { color: #0550AE } /* Literal.String.Delimiter */\n.highlight .sd { color: #0550AE } /* Literal.String.Doc */\n.highlight .s2 { color: #0550AE } /* Literal.String.Double */\n.highlight .se { color: #0550AE } /* Literal.String.Escape */\n.highlight .sh { color: #0550AE } /* Literal.String.Heredoc */\n.highlight .si { color: #0550AE } /* Literal.String.Interpol */\n.highlight .sx { color: #0550AE } /* Literal.String.Other */\n.highlight .sr { color: #0550AE } /* Literal.String.Regex */\n.highlight .s1 { color: #0550AE } /* Literal.String.Single */\n.highlight .ss { color: #0550AE } /* Literal.String.Symbol */\n.highlight .bp { color: #953800 } /* Name.Builtin.Pseudo */\n.highlight .fm { color: #0550AE } /* Name.Function.Magic */\n.highlight .vc { color: #953800 } /* Name.Variable.Class */\n.highlight .vg { color: #953800 } /* Name.Variable.Global */\n.highlight .vi { color: #953800 } /* Name.Variable.Instance */\n.highlight .vm { color: #953800 } /* Name.Variable.Magic */\n.highlight .il { color: #953800 } /* Literal.Number.Integer.Long */\n","/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// Base element style overrides\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\n:root {\n color-scheme: $color-scheme;\n}\n\n* {\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n\n @include fs-4;\n}\n\nbody {\n font-family: $body-font-family;\n font-size: inherit;\n line-height: $body-line-height;\n color: $body-text-color;\n background-color: $body-background-color;\n overflow-wrap: break-word;\n}\n\nol,\nul,\ndl,\npre,\naddress,\nblockquote,\ntable,\ndiv,\nhr,\nform,\nfieldset,\nnoscript .table-wrapper {\n margin-top: 0;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n#toctitle {\n margin-top: 0;\n margin-bottom: 1em;\n font-weight: 500;\n line-height: $body-heading-line-height;\n color: $body-heading-color;\n}\n\np {\n margin-top: 1em;\n margin-bottom: 1em;\n}\n\na {\n color: $link-color;\n text-decoration: none;\n}\n\na:not([class]) {\n text-decoration: underline;\n text-decoration-color: $border-color;\n text-underline-offset: 2px;\n\n &:hover {\n text-decoration-color: rgba($link-color, 0.45);\n }\n}\n\ncode {\n font-family: $mono-font-family;\n font-size: 0.75em;\n line-height: $body-line-height;\n}\n\nfigure,\npre {\n margin: 0;\n}\n\nli {\n margin: 0.25em 0;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nhr {\n height: 1px;\n padding: 0;\n margin: $sp-6 0;\n background-color: $border-color;\n border: 0;\n}\n\n// adds a GitHub-style sidebar to blockquotes\nblockquote {\n margin: 10px 0;\n\n // resets user-agent stylesheets for blockquotes\n margin-block-start: 0;\n margin-inline-start: 0;\n padding-left: 1rem;\n border-left: 3px solid $border-color;\n}\n","// Meshtastic Material 3 — Light color scheme for just-the-docs\n// Source: core/ui/.../Color.kt §8.2 (Light Scheme)\n//\n// Brand colors:\n// Primary (Light): #2D8F52 (Green 700)\n// Surface (Light): #F5F6FA (Neutral 50)\n\n$color-scheme: light;\n\n// Body / page background\n$body-background-color: #F5F6FA; // Neutral 50 — surfaceLight\n$sidebar-color: #ECEDF3; // Neutral 100 — surfaceContainerLight\n$body-text-color: #2C2D3C; // Neutral 800 — onSurfaceLight\n$body-heading-color: #2C2D3C; // Neutral 800\n\n// Links\n$link-color: #2D8F52; // Green 700 — primaryLight\n$nav-link-color: #2D8F52; // Green 700\n\n// Navigation\n$nav-child-link-color: #555668; // Neutral 600 — secondaryLight\n$search-result-preview-color: #555668;\n\n// Code\n$code-background-color: #ECEDF3; // Neutral 100\n$code-linenumber-color: #9496A6; // Neutral 400\n\n// Borders\n$border-color: #D5D6E0; // Neutral 200 — outlineVariantLight\n$table-background-color: #F5F6FA; // Neutral 50\n\n// Buttons\n$btn-primary-color: #2D8F52; // Green 700\n\n// Feedback / callouts\n$feedback-color: #E0E1EB; // surfaceContainerHighLight\n\n// Search\n$search-background-color: #FFFFFF; // surfaceContainerLowestLight\n","@mixin fs-1 {\n & {\n font-size: $font-size-1 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-1-sm !important;\n }\n}\n\n@mixin fs-2 {\n & {\n font-size: $font-size-2 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-3 !important;\n }\n}\n\n@mixin fs-3 {\n & {\n font-size: $font-size-3 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-4 !important;\n }\n}\n\n@mixin fs-4 {\n & {\n font-size: $font-size-4 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-5 !important;\n }\n}\n\n@mixin fs-5 {\n & {\n font-size: $font-size-5 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-6 !important;\n }\n}\n\n@mixin fs-6 {\n & {\n font-size: $font-size-6 !important;\n }\n\n @include mq(sm) {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n}\n\n@mixin fs-7 {\n & {\n font-size: $font-size-7 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-8 !important;\n }\n}\n\n@mixin fs-8 {\n & {\n font-size: $font-size-8 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-9 !important;\n }\n}\n\n@mixin fs-9 {\n & {\n font-size: $font-size-9 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10 !important;\n }\n}\n\n@mixin fs-10 {\n & {\n font-size: $font-size-10 !important;\n line-height: $body-heading-line-height;\n }\n\n @include mq(sm) {\n font-size: $font-size-10-sm !important;\n }\n}\n","// Media query\n\n// Media query mixin\n// Usage:\n// @include mq(md) {\n// ..medium and up styles\n// }\n@mixin mq($name) {\n // Retrieves the value from the key\n $value: map-get($media-queries, $name);\n\n // If the key exists in the map\n @if $value {\n // Prints a media query based on the value\n @media (min-width: $value) {\n @content;\n }\n } @else {\n @warn \"No value could be retrieved from `#{$media-query}`. Please make sure it is defined in `$media-queries` map.\";\n }\n}\n\n// Responsive container\n\n@mixin container {\n padding-right: $gutter-spacing-sm;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-right: $gutter-spacing;\n padding-left: $gutter-spacing;\n }\n}\n","// Typography\n\n// prettier-ignore\n$body-font-family: system-ui, -apple-system, blinkmacsystemfont, \"Segoe UI\",\n roboto, \"Helvetica Neue\", arial, sans-serif, \"Segoe UI Emoji\" !default;\n$mono-font-family: \"SFMono-Regular\", menlo, consolas, monospace !default;\n$root-font-size: 16px !default; // DEPRECATED: previously base font-size for rems\n$body-line-height: 1.4 !default;\n$content-line-height: 1.6 !default;\n$body-heading-line-height: 1.25 !default;\n\n// Font size\n// `-sm` suffix is the size at the small (and above) media query\n\n$font-size-1: 0.5625rem !default;\n$font-size-1-sm: 0.625rem !default;\n$font-size-2: 0.6875rem !default; // h4 - uppercased!, h6 not uppercased, text-small\n$font-size-3: 0.75rem !default; // h5\n$font-size-4: 0.875rem !default;\n$font-size-5: 1rem !default; // h3\n$font-size-6: 1.125rem !default; // h2\n$font-size-7: 1.5rem !default;\n$font-size-8: 2rem !default; // h1\n$font-size-9: 2.25rem !default;\n$font-size-10: 2.625rem !default;\n$font-size-10-sm: 3rem !default;\n\n// Colors\n\n$white: #fff !default;\n$grey-dk-000: #959396 !default;\n$grey-dk-100: #5c5962 !default;\n$grey-dk-200: #44434d !default;\n$grey-dk-250: #302d36 !default;\n$grey-dk-300: #27262b !default;\n$grey-lt-000: #f5f6fa !default;\n$grey-lt-100: #eeebee !default;\n$grey-lt-200: #ecebed !default;\n$grey-lt-300: #e6e1e8 !default;\n$purple-000: #7253ed !default;\n$purple-100: #5e41d0 !default;\n$purple-200: #4e26af !default;\n$purple-300: #381885 !default;\n$blue-000: #2c84fa !default;\n$blue-100: #2869e6 !default;\n$blue-200: #264caf !default;\n$blue-300: #183385 !default;\n$green-000: #41d693 !default;\n$green-100: #11b584 !default;\n$green-200: #009c7b !default;\n$green-300: #026e57 !default;\n$yellow-000: #ffeb82 !default;\n$yellow-100: #fadf50 !default;\n$yellow-200: #f7d12e !default;\n$yellow-300: #e7af06 !default;\n$red-000: #f77e7e !default;\n$red-100: #f96e65 !default;\n$red-200: #e94c4c !default;\n$red-300: #dd2e2e !default;\n\n// Spacing\n\n$spacing-unit: 1rem; // 1rem == 16px\n\n$spacers: (\n sp-0: 0,\n sp-1: $spacing-unit * 0.25,\n sp-2: $spacing-unit * 0.5,\n sp-3: $spacing-unit * 0.75,\n sp-4: $spacing-unit,\n sp-5: $spacing-unit * 1.5,\n sp-6: $spacing-unit * 2,\n sp-7: $spacing-unit * 2.5,\n sp-8: $spacing-unit * 3,\n sp-9: $spacing-unit * 3.5,\n sp-10: $spacing-unit * 4,\n) !default;\n$sp-1: map-get($spacers, sp-1) !default; // 0.25 rem == 4px\n$sp-2: map-get($spacers, sp-2) !default; // 0.5 rem == 8px\n$sp-3: map-get($spacers, sp-3) !default; // 0.75 rem == 12px\n$sp-4: map-get($spacers, sp-4) !default; // 1 rem == 16px\n$sp-5: map-get($spacers, sp-5) !default; // 1.5 rem == 24px\n$sp-6: map-get($spacers, sp-6) !default; // 2 rem == 32px\n$sp-7: map-get($spacers, sp-7) !default; // 2.5 rem == 40px\n$sp-8: map-get($spacers, sp-8) !default; // 3 rem == 48px\n$sp-9: map-get($spacers, sp-9) !default; // 3.5 rem == 56px\n$sp-10: map-get($spacers, sp-10) !default; // 4 rem == 64px\n\n// Borders\n\n$border: 1px solid !default;\n$border-radius: 4px !default;\n$border-color: $grey-lt-100 !default;\n\n// Grid system\n\n$gutter-spacing: $sp-6 !default;\n$gutter-spacing-sm: $sp-4 !default;\n$nav-width: 16.5rem !default;\n$nav-width-md: 15.5rem !default;\n$nav-list-item-height: $sp-6 !default;\n$nav-list-item-height-sm: $sp-8 !default;\n$nav-list-expander-right: true;\n$content-width: 50rem !default;\n$header-height: 3.75rem !default;\n$search-results-width: $content-width - $nav-width !default;\n$transition-duration: 400ms;\n\n// Media queries in pixels\n\n$media-queries: (\n xs: 20rem,\n sm: 31.25rem,\n md: $content-width,\n lg: $content-width + $nav-width,\n xl: 87.5rem,\n) !default;\n","// The basic two column layout\n\n.side-bar {\n z-index: 0;\n display: flex;\n flex-wrap: wrap;\n background-color: $sidebar-color;\n\n @include mq(md) {\n flex-flow: column nowrap;\n position: fixed;\n width: $nav-width-md;\n height: 100%;\n border-right: $border $border-color;\n align-items: flex-end;\n }\n\n @include mq(lg) {\n width: calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width});\n min-width: $nav-width;\n }\n\n & + .main {\n @include mq(md) {\n margin-left: $nav-width-md;\n }\n\n @include mq(lg) {\n // stylelint-disable function-name-case\n // disable for Max(), we want to use the CSS max() function\n margin-left: Max(\n #{$nav-width},\n calc((100% - #{$nav-width + $content-width}) / 2 + #{$nav-width})\n );\n // stylelint-enable function-name-case\n }\n\n .main-header {\n display: none;\n background-color: $sidebar-color;\n\n @include mq(md) {\n display: flex;\n background-color: $body-background-color;\n }\n\n &.nav-open {\n display: block;\n\n @include mq(md) {\n display: flex;\n }\n }\n }\n }\n}\n\n.main {\n margin: auto;\n\n @include mq(md) {\n position: relative;\n max-width: $content-width;\n }\n}\n\n.main-content-wrap {\n padding-top: $gutter-spacing-sm;\n padding-bottom: $gutter-spacing-sm;\n\n @include container;\n\n @include mq(md) {\n padding-top: $gutter-spacing;\n padding-bottom: $gutter-spacing;\n }\n}\n\n.main-header {\n z-index: 0;\n border-bottom: $border $border-color;\n\n @include mq(md) {\n display: flex;\n justify-content: space-between;\n height: $header-height;\n }\n}\n\n.site-nav,\n.site-header,\n.site-footer {\n width: 100%;\n\n @include mq(lg) {\n width: $nav-width;\n }\n}\n\n.site-nav {\n display: none;\n\n &.nav-open {\n display: block;\n }\n\n @include mq(md) {\n display: block;\n padding-top: $sp-8;\n padding-bottom: $gutter-spacing-sm;\n overflow-y: auto;\n flex: 1 1 auto;\n }\n}\n\n.site-header {\n display: flex;\n min-height: $header-height;\n align-items: center;\n\n @include mq(md) {\n height: $header-height;\n max-height: $header-height;\n border-bottom: $border $border-color;\n }\n}\n\n.site-title {\n flex-grow: 1;\n display: flex;\n height: 100%;\n align-items: center;\n padding-top: $sp-3;\n padding-bottom: $sp-3;\n color: $body-heading-color;\n\n @include container;\n\n @include fs-6;\n\n @include mq(md) {\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n }\n}\n\n@if variable-exists(logo) {\n .site-logo {\n width: 100%;\n height: 100%;\n background-image: url($logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: contain;\n }\n}\n\n.site-button {\n display: flex;\n height: 100%;\n padding: $gutter-spacing-sm;\n align-items: center;\n}\n\n@include mq(md) {\n .site-header .site-button {\n display: none;\n }\n}\n\n.site-title:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n}\n\n.site-button:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n}\n\n.site-footer {\n position: absolute;\n bottom: 0;\n left: 0;\n padding-top: $sp-4;\n padding-bottom: $sp-4;\n\n @include container;\n\n @include fs-2;\n\n @include mq(md) {\n position: static;\n justify-self: end;\n }\n}\n\n.icon {\n width: $sp-5;\n height: $sp-5;\n color: $link-color;\n}\n","@charset \"UTF-8\";\n\n// Styles for rendered markdown in the .main-content container\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity, selector-max-id\n\n.main-content {\n line-height: $content-line-height;\n\n ol,\n ul,\n dl,\n pre,\n address,\n blockquote,\n .table-wrapper {\n margin-top: 0.5em;\n }\n\n a {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ul,\n ol {\n padding-left: 1.5em;\n }\n\n li {\n .highlight {\n margin-top: $sp-1;\n }\n }\n\n ol {\n list-style-type: none;\n counter-reset: step-counter;\n\n > li {\n position: relative;\n\n &::before {\n position: absolute;\n top: 0.2em;\n left: -1.6em;\n color: $grey-dk-000;\n content: counter(step-counter);\n counter-increment: step-counter;\n @include fs-3;\n\n @include mq(sm) {\n top: 0.11em;\n }\n }\n\n ol {\n counter-reset: sub-counter;\n\n > li {\n &::before {\n content: counter(sub-counter, lower-alpha);\n counter-increment: sub-counter;\n }\n }\n }\n }\n }\n\n ul {\n list-style: none;\n\n > li {\n &::before {\n position: absolute;\n margin-left: -1.4em;\n color: $grey-dk-000;\n content: \"•\";\n }\n }\n }\n\n .task-list-item {\n &::before {\n content: \"\";\n }\n }\n\n .task-list-item-checkbox {\n margin-right: 0.6em;\n margin-left: -1.4em;\n\n // The same margin-left is used above for ul > li::before\n }\n\n hr + * {\n margin-top: 0;\n }\n\n h1:first-of-type {\n margin-top: 0.5em;\n }\n\n dl {\n display: grid;\n grid-template: auto / 10em 1fr;\n }\n\n dt,\n dd {\n margin: 0.25em 0;\n }\n\n dt {\n grid-column: 1;\n font-weight: 500;\n text-align: right;\n\n &::after {\n content: \":\";\n }\n }\n\n dd {\n grid-column: 2;\n margin-bottom: 0;\n margin-left: 1em;\n\n blockquote,\n div,\n dl,\n dt,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n li,\n ol,\n p,\n pre,\n table,\n ul,\n .table-wrapper {\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n dd,\n ol,\n ul {\n dl:first-child {\n dt:first-child,\n dd:nth-child(2) {\n margin-top: 0;\n }\n }\n }\n\n .anchor-heading {\n position: absolute;\n right: -$sp-4;\n width: $sp-5;\n height: 100%;\n padding-right: $sp-1;\n padding-left: $sp-1;\n overflow: visible;\n\n @include mq(md) {\n right: auto;\n left: -$sp-5;\n }\n\n svg {\n display: inline-block;\n width: 100%;\n height: 100%;\n color: $link-color;\n visibility: hidden;\n }\n }\n\n .anchor-heading:hover,\n .anchor-heading:focus,\n h1:hover > .anchor-heading,\n h2:hover > .anchor-heading,\n h3:hover > .anchor-heading,\n h4:hover > .anchor-heading,\n h5:hover > .anchor-heading,\n h6:hover > .anchor-heading {\n svg {\n visibility: visible;\n }\n }\n\n summary {\n cursor: pointer;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n #toctitle {\n position: relative;\n margin-top: 1.5em;\n margin-bottom: 0.25em;\n\n + table,\n + .table-wrapper,\n + .code-example,\n + .highlighter-rouge,\n + .sectionbody .listingblock {\n margin-top: 1em;\n }\n\n + p:not(.label) {\n margin-top: 0;\n }\n }\n\n > h1:first-child,\n > h2:first-child,\n > h3:first-child,\n > h4:first-child,\n > h5:first-child,\n > h6:first-child,\n > .sect1:first-child > h2,\n > .sect2:first-child > h3,\n > .sect3:first-child > h4,\n > .sect4:first-child > h5,\n > .sect5:first-child > h6 {\n margin-top: $sp-2;\n }\n}\n","// Main nav, breadcrumb, etc...\n// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type, selector-max-specificity\n\n.nav-list {\n padding: 0;\n margin-top: 0;\n margin-bottom: 0;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n margin: 0;\n\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n\n .nav-list-link {\n display: block;\n min-height: $nav-list-item-height-sm;\n padding-top: $sp-1;\n padding-bottom: $sp-1;\n line-height: #{$nav-list-item-height-sm - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height-sm;\n padding-left: $gutter-spacing-sm;\n } @else {\n padding-right: $gutter-spacing-sm;\n padding-left: $nav-list-item-height-sm;\n }\n\n @include mq(md) {\n min-height: $nav-list-item-height;\n line-height: #{$nav-list-item-height - 2 * $sp-1};\n @if $nav-list-expander-right {\n padding-right: $nav-list-item-height;\n padding-left: $gutter-spacing;\n } @else {\n padding-right: $gutter-spacing;\n padding-left: $nav-list-item-height;\n }\n }\n\n &.external > svg {\n width: $sp-4;\n height: $sp-4;\n vertical-align: text-bottom;\n }\n\n &.active {\n font-weight: 600;\n text-decoration: none;\n }\n\n &:hover,\n &.active {\n color: darken($link-color, 5%);\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 80%,\n rgba($feedback-color, 0) 100%\n );\n }\n }\n\n .nav-list-expander {\n position: absolute;\n @if $nav-list-expander-right {\n right: 0;\n }\n\n width: $nav-list-item-height-sm;\n height: $nav-list-item-height-sm;\n padding: #{$nav-list-item-height-sm * 0.25};\n color: $link-color;\n\n @include mq(md) {\n width: $nav-list-item-height;\n height: $nav-list-item-height;\n padding: #{$nav-list-item-height * 0.25};\n }\n\n &:hover {\n background-image: linear-gradient(\n -90deg,\n rgba($feedback-color, 1) 0%,\n rgba($feedback-color, 0.8) 100%\n );\n }\n\n @if $nav-list-expander-right {\n svg {\n transform: rotate(90deg);\n }\n }\n }\n\n > .nav-list {\n display: none;\n padding-left: $sp-3;\n list-style: none;\n\n .nav-list-item {\n position: relative;\n\n .nav-list-link {\n color: $nav-child-link-color;\n }\n\n .nav-list-expander {\n color: $nav-child-link-color;\n }\n }\n }\n\n &.active {\n > .nav-list-expander svg {\n @if $nav-list-expander-right {\n transform: rotate(-90deg);\n } @else {\n transform: rotate(90deg);\n }\n }\n\n > .nav-list {\n display: block;\n }\n }\n }\n}\n\n.nav-category {\n padding: $sp-2 $gutter-spacing-sm;\n font-weight: 600;\n text-align: start;\n text-transform: uppercase;\n border-bottom: $border $border-color;\n @include fs-2;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing;\n margin-top: $gutter-spacing-sm;\n text-align: start;\n\n &:first-child {\n margin-top: 0;\n }\n }\n}\n\n.nav-list.nav-category-list {\n > .nav-list-item {\n margin: 0;\n\n > .nav-list {\n padding: 0;\n\n > .nav-list-item {\n > .nav-list-link {\n color: $link-color;\n }\n\n > .nav-list-expander {\n color: $link-color;\n }\n }\n }\n }\n}\n\n// Aux nav\n\n.aux-nav {\n height: 100%;\n overflow-x: auto;\n @include fs-2;\n\n .aux-nav-list {\n display: flex;\n height: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .aux-nav-list-item {\n display: inline-block;\n height: 100%;\n padding: 0;\n margin: 0;\n }\n\n @include mq(md) {\n padding-right: $gutter-spacing-sm;\n }\n}\n\n// Breadcrumb nav\n\n.breadcrumb-nav {\n @include mq(md) {\n margin-top: -$sp-4;\n }\n}\n\n.breadcrumb-nav-list {\n padding-left: 0;\n margin-bottom: $sp-3;\n list-style: none;\n}\n\n.breadcrumb-nav-list-item {\n display: table-cell;\n @include fs-2;\n\n &::before {\n display: none;\n }\n\n &::after {\n display: inline-block;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $grey-dk-000;\n content: \"/\";\n }\n\n &:last-child {\n &::after {\n content: \"\";\n }\n }\n}\n","// Typography\n// stylelint-disable selector-no-type, selector-max-type, selector-max-specificity, selector-max-id\n\nh1,\n.text-alpha {\n font-weight: 300;\n\n @include fs-8;\n}\n\nh2,\n.text-beta,\n#toctitle {\n @include fs-6;\n}\n\nh3,\n.text-gamma {\n @include fs-5;\n}\n\nh4,\n.text-delta {\n font-weight: 400;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n @include fs-2;\n}\n\nh4 code {\n text-transform: none;\n}\n\nh5,\n.text-epsilon {\n @include fs-3;\n}\n\nh6,\n.text-zeta {\n @include fs-2;\n}\n\n.text-small {\n @include fs-2;\n}\n\n.text-mono {\n font-family: $mono-font-family !important;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n","// Labels (not the form kind)\n\n// this :not() prevents a style clash with Mermaid.js's\n// diagram labels, which also use .label\n// for more, see https://github.com/just-the-docs/just-the-docs/issues/1272\n// and the accompanying PR\n.label:not(g),\n.label-blue:not(g) {\n display: inline-block;\n padding: 0.16em 0.56em;\n margin-right: $sp-2;\n margin-left: $sp-2;\n color: $white;\n text-transform: uppercase;\n vertical-align: middle;\n background-color: $blue-100;\n border-radius: 12px;\n\n @include fs-2;\n}\n\n.label-green:not(g) {\n background-color: $green-300;\n}\n\n.label-purple:not(g) {\n background-color: $purple-100;\n}\n\n.label-red:not(g) {\n background-color: $red-300;\n}\n\n.label-yellow:not(g) {\n color: $grey-dk-200;\n background-color: $yellow-200;\n}\n","// Buttons and things that look like buttons\n// stylelint-disable color-named\n\n.btn {\n display: inline-block;\n box-sizing: border-box;\n padding: 0.3em 1em;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n line-height: 1.5;\n color: $link-color;\n text-decoration: none;\n vertical-align: baseline;\n cursor: pointer;\n background-color: $base-button-color;\n border-width: 0;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n appearance: none;\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: darken($link-color, 2%);\n }\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n text-decoration: none;\n background-color: darken($base-button-color, 1%);\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($base-button-color, 3%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken(#dcdcdc, 5%);\n }\n\n &:disabled,\n &.disabled {\n &,\n &:hover {\n color: rgba(102, 102, 102, 0.5);\n cursor: default;\n background-color: rgba(229, 229, 229, 0.5);\n background-image: none;\n box-shadow: none;\n }\n }\n}\n\n.btn-outline {\n color: $link-color;\n background: transparent;\n box-shadow: inset 0 0 0 2px $grey-lt-300;\n\n &:hover,\n &:active,\n &.zeroclipboard-is-hover,\n &.zeroclipboard-is-active {\n color: darken($link-color, 4%);\n text-decoration: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 3px $grey-lt-300;\n }\n\n &:focus {\n text-decoration: none;\n outline: none;\n box-shadow:\n inset 0 0 0 2px $grey-dk-100,\n 0 0 0 3px rgba(blue, 0.25);\n }\n\n &:focus:hover,\n &.selected:focus {\n box-shadow: inset 0 0 0 2px $grey-dk-100;\n }\n}\n\n.btn-primary {\n @include btn-color($white, $btn-primary-color);\n}\n\n.btn-purple {\n @include btn-color($white, $purple-100);\n}\n\n.btn-blue {\n @include btn-color($white, $blue-200);\n}\n\n.btn-green {\n @include btn-color($white, $green-300);\n}\n\n.btn-reset {\n background: none;\n border: none;\n margin: 0;\n text-align: inherit;\n font: inherit;\n border-radius: 0;\n appearance: none;\n}\n","$color-scheme: light !default;\n$body-background-color: $white !default;\n$body-heading-color: $grey-dk-300 !default;\n$body-text-color: $grey-dk-100 !default;\n$link-color: $purple-000 !default;\n$nav-child-link-color: $grey-dk-100 !default;\n$sidebar-color: $grey-lt-000 !default;\n$base-button-color: #f7f7f7 !default;\n$btn-primary-color: $purple-100 !default;\n$code-background-color: $white !default;\n$feedback-color: darken($sidebar-color, 3%) !default;\n$table-background-color: $white !default;\n$search-background-color: $white !default;\n$search-result-preview-color: $grey-dk-100 !default;\n\n@import \"./vendor/accessible-pygments/github-light\";\n","// Colored button\n\n@mixin btn-color($fg, $bg) {\n color: $fg;\n background-color: darken($bg, 2%);\n background-image: linear-gradient(lighten($bg, 5%), darken($bg, 2%));\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.12);\n\n &:hover,\n &.zeroclipboard-is-hover {\n color: $fg;\n background-color: darken($bg, 4%);\n background-image: linear-gradient((lighten($bg, 2%), darken($bg, 4%)));\n }\n\n &:active,\n &.selected,\n &.zeroclipboard-is-active {\n background-color: darken($bg, 5%);\n background-image: none;\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n &.selected:hover {\n background-color: darken($bg, 10%);\n }\n}\n","// Search input and autocomplete\n\n.search {\n position: relative;\n z-index: 2;\n flex-grow: 1;\n height: $sp-10;\n padding: $sp-2;\n transition: padding linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: relative !important;\n width: auto !important;\n height: 100% !important;\n padding: 0;\n transition: none;\n }\n}\n\n.search-input-wrap {\n position: relative;\n z-index: 1;\n height: $sp-8;\n overflow: hidden;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n transition: height linear #{$transition-duration * 0.5};\n\n @include mq(md) {\n position: absolute;\n width: 100%;\n max-width: $search-results-width;\n height: 100% !important;\n border-radius: 0;\n box-shadow: none;\n transition: width ease $transition-duration;\n }\n}\n\n.search-input {\n position: absolute;\n width: 100%;\n height: 100%;\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing-sm + $sp-5};\n font-size: 1rem;\n color: $body-text-color;\n background-color: $search-background-color;\n border-top: 0;\n border-right: 0;\n border-bottom: 0;\n border-left: 0;\n border-radius: 0;\n\n @include mq(md) {\n padding: $sp-2 $gutter-spacing-sm $sp-2 #{$gutter-spacing + $sp-5};\n font-size: 0.875rem;\n background-color: $body-background-color;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n &:focus {\n outline: 2px solid $link-color;\n outline-offset: -2px;\n\n + .search-label .search-icon {\n color: $link-color;\n }\n }\n}\n\n.search-label {\n position: absolute;\n display: flex;\n height: 100%;\n padding-left: $gutter-spacing-sm;\n\n @include mq(md) {\n padding-left: $gutter-spacing;\n transition: padding-left linear #{$transition-duration * 0.5};\n }\n\n .search-icon {\n width: #{$sp-4 * 1.2};\n height: #{$sp-4 * 1.2};\n align-self: center;\n color: $grey-dk-000;\n }\n}\n\n.search-results {\n position: absolute;\n left: 0;\n display: none;\n width: 100%;\n max-height: calc(100% - #{$sp-10});\n overflow-y: auto;\n background-color: $search-background-color;\n border-bottom-right-radius: $border-radius;\n border-bottom-left-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n\n @include mq(md) {\n top: 100%;\n width: $search-results-width;\n max-height: calc(100vh - 200%) !important;\n }\n}\n\n.search-results-list {\n padding-left: 0;\n margin-bottom: $sp-1;\n list-style: none;\n @include fs-4;\n\n @include mq(md) {\n @include fs-3;\n }\n}\n\n.search-results-list-item {\n padding: 0;\n margin: 0;\n}\n\n.search-result {\n display: block;\n padding: $sp-1 $sp-3;\n\n &:hover,\n &.active {\n background-color: $feedback-color;\n }\n}\n\n.search-result-title {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 40%;\n padding-right: $sp-2;\n vertical-align: top;\n }\n}\n\n.search-result-doc {\n display: flex;\n align-items: center;\n word-wrap: break-word;\n\n &.search-result-doc-parent {\n opacity: 0.5;\n @include fs-3;\n\n @include mq(md) {\n @include fs-2;\n }\n }\n\n .search-result-icon {\n width: $sp-4;\n height: $sp-4;\n margin-right: $sp-2;\n color: $link-color;\n flex-shrink: 0;\n }\n\n .search-result-doc-title {\n overflow: auto;\n }\n}\n\n.search-result-section {\n margin-left: #{$sp-4 + $sp-2};\n word-wrap: break-word;\n}\n\n.search-result-rel-url {\n display: block;\n margin-left: #{$sp-4 + $sp-2};\n overflow: hidden;\n color: $search-result-preview-color;\n text-overflow: ellipsis;\n white-space: nowrap;\n @include fs-1;\n}\n\n.search-result-previews {\n display: block;\n padding-top: $sp-2;\n padding-bottom: $sp-2;\n padding-left: $sp-4;\n margin-left: $sp-2;\n color: $search-result-preview-color;\n word-wrap: break-word;\n border-left: $border;\n border-left-color: $border-color;\n @include fs-2;\n\n @include mq(sm) {\n display: inline-block;\n width: 60%;\n padding-left: $sp-2;\n margin-left: 0;\n vertical-align: top;\n }\n}\n\n.search-result-preview + .search-result-preview {\n margin-top: $sp-1;\n}\n\n.search-result-highlight {\n font-weight: bold;\n}\n\n.search-no-result {\n padding: $sp-2 $sp-3;\n @include fs-3;\n}\n\n.search-button {\n position: fixed;\n right: $sp-4;\n bottom: $sp-4;\n display: flex;\n width: $sp-9;\n height: $sp-9;\n background-color: $search-background-color;\n border: 1px solid rgba($link-color, 0.3);\n border-radius: #{$sp-9 * 0.5};\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n align-items: center;\n justify-content: center;\n}\n\n.search-overlay {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1;\n width: 0;\n height: 0;\n background-color: rgba(0, 0, 0, 0.3);\n opacity: 0;\n transition:\n opacity ease $transition-duration,\n width 0s $transition-duration,\n height 0s $transition-duration;\n}\n\n.search-active {\n .search {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n }\n\n .search-input-wrap {\n height: $sp-10;\n border-radius: 0;\n\n @include mq(md) {\n width: $search-results-width;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n }\n }\n\n .search-input {\n background-color: $search-background-color;\n\n @include mq(md) {\n padding-left: 2.3rem;\n }\n }\n\n .search-label {\n @include mq(md) {\n padding-left: 0.6rem;\n }\n }\n\n .search-results {\n display: block;\n }\n\n .search-overlay {\n width: 100%;\n height: 100%;\n opacity: 1;\n transition:\n opacity ease $transition-duration,\n width 0s,\n height 0s;\n }\n\n @include mq(md) {\n .main {\n position: fixed;\n right: 0;\n left: 0;\n }\n }\n\n .main-header {\n padding-top: $sp-10;\n\n @include mq(md) {\n padding-top: 0;\n }\n }\n}\n","// Tables\n// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type\n\n.table-wrapper {\n display: block;\n width: 100%;\n max-width: 100%;\n margin-bottom: $sp-5;\n overflow-x: auto;\n border-radius: $border-radius;\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.12),\n 0 3px 10px rgba(0, 0, 0, 0.08);\n}\n\ntable {\n display: table;\n min-width: 100%;\n border-collapse: separate;\n}\n\nth,\ntd {\n min-width: 7.5rem;\n padding: $sp-2 $sp-3;\n background-color: $table-background-color;\n border-bottom: $border rgba($border-color, 0.5);\n border-left: $border $border-color;\n\n @include fs-3;\n\n &:first-of-type {\n border-left: 0;\n }\n}\n\ntbody {\n tr {\n &:last-of-type {\n th,\n td {\n border-bottom: 0;\n }\n\n td {\n padding-bottom: $sp-3;\n }\n }\n }\n}\n\nthead {\n th {\n border-bottom: $border $border-color;\n }\n}\n","// Code and syntax highlighting\n// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type, scss/comment-no-empty\n\n// {% raw %}\n\n// This instruction applies to all queues not within 'pre' or 'figure', avoiding 'code' generated by the highlight.\n:not(pre, figure) {\n & > code {\n padding: 0.2em 0.15em;\n font-weight: 400;\n background-color: $code-background-color;\n border: $border $border-color;\n border-radius: $border-radius;\n }\n}\n\n// Avoid appearance of dark border around visited code links in Safari\na:visited code {\n border-color: $border-color;\n}\n\n// Content structure for highlighted code blocks using fences or Liquid\n//\n// ```[LANG]...```, no kramdown line_numbers:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n//\n// ```[LANG]...```, kramdown line_numbers = true:\n// div.[language-LANG.]highlighter-rouge > div.highlight > pre.highlight > code\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.rouge-gutter.gl > pre.lineno\n// | td.rouge-code > pre\n//\n// {% highlight LANG %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n//\n// {% highlight LANG linenos %}...{% endhighlight %}:\n// figure.highlight > pre > code.language-LANG\n// > div.table-wrapper > table.rouge-table > tbody > tr\n// > td.gutter.gl > pre.lineno\n// | td.code > pre\n//\n// ----...---- (AsciiDoc)\n// div.listingblock > div.content > pre.rouge.highlight\n//\n// fix_linenos removes the outermost pre when it encloses table.rouge-table\n//\n// See docs/index-test.md for some tests.\n//\n// No kramdown line_numbers: fences and Liquid highlighting look the same.\n// Kramdown line_numbers = true: fences have a wider gutter than with Liquid?\n\n// ```[LANG]...```\n// or in AsciiDoc:\n//\n// ----\n// ...\n// ----\n\n// the code may appear with 3 different types:\n// container \\ case: default case, code with line number, code with html rendering\n// top level: div.highlighter-rouge, figure.highlight, figure.highlight\n// second level: div.highlight, div.table-wrapper, pre.highlight\n// third level: pre.highlight, td.code, absent\n// last level: code, pre, code (optionality)\n// highlighter level: span, span, span\n// the spacing are only in the second level for case 1, 3 and in the third level for case 2\n// in AsciiDoc, there is a parent container that contains optionally a title and the content.\n\n// select top level container\ndiv.highlighter-rouge,\ndiv.listingblock > div.content,\nfigure.highlight {\n margin-top: 0;\n margin-bottom: $sp-3;\n background-color: $code-background-color;\n border-radius: $border-radius;\n box-shadow: none;\n -webkit-overflow-scrolling: touch;\n position: relative;\n padding: 0;\n\n // copy button (or other button)\n // the button appear only when there is a hover on the code or focus on button\n > button {\n width: $sp-3;\n opacity: 0;\n position: absolute;\n top: 0;\n right: 0;\n padding: $sp-3;\n border: none;\n background: none;\n color: $body-text-color;\n box-sizing: content-box;\n\n svg {\n fill: $body-text-color;\n }\n\n &:active {\n text-decoration: none;\n outline: none;\n opacity: 1;\n }\n\n &:focus {\n opacity: 1;\n outline: 2px solid $link-color;\n }\n }\n\n // the button can be seen by doing a simple hover in the code, there is no need to go over the location of the button\n &:hover {\n > button {\n cursor: copy;\n opacity: 1;\n }\n }\n}\n\n// setting the spacing and scrollbar on the second level for the first case\n// remove all space on the second and third level\n// this is a mixin to accommodate for the slightly different structures generated via Markdown vs AsciiDoc\n@mixin scroll-and-spacing($code-div, $pre-select) {\n #{$code-div} {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n\n #{$pre-select},\n code {\n padding: 0;\n margin: 0;\n border: 0;\n }\n}\n\n// for Markdown\ndiv.highlighter-rouge {\n @include scroll-and-spacing(\"div.highlight\", \"pre.highlight\");\n}\n\n// for AsciiDoc. we also need to fix the margins for its parent container.\ndiv.listingblock {\n margin-top: 0;\n margin-bottom: $sp-3;\n\n @include scroll-and-spacing(\"div.content\", \"div.content > pre\");\n}\n\n// {% highlight LANG %}...{% endhighlight %},\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the second level for the thirt case\n// the css rule are apply only to the last code enviroment\n// setting the scroolbar\nfigure.highlight {\n pre,\n :not(pre) > code {\n overflow-x: auto;\n padding: $sp-3;\n margin: 0;\n border: 1px solid $body-text-color;\n border-radius: $border-radius;\n }\n}\n\n// ```[LANG]...```, kramdown line_numbers = true,\n// {% highlight LANG linenos %}...{% endhighlight %}:\n\n// setting the spacing and scrollbar on the thirt level for the second case\n.highlight .table-wrapper {\n padding: $sp-3 0;\n margin: 0;\n border: 0;\n box-shadow: none;\n\n td,\n pre {\n min-width: 0;\n padding: 0;\n background-color: $code-background-color;\n border: 0;\n\n @include fs-2;\n }\n\n td.gl {\n width: 1em;\n padding-right: $sp-3;\n padding-left: $sp-3;\n }\n\n pre {\n margin: 0;\n line-height: 2;\n }\n}\n\n// Code examples: html render of a code\n.code-example,\n.listingblock > .title {\n padding: $sp-3;\n margin-bottom: $sp-3;\n overflow: auto;\n border: 1px solid $border-color;\n border-radius: $border-radius;\n\n + .highlighter-rouge,\n + .sectionbody .listingblock,\n + .content,\n + figure.highlight {\n position: relative;\n margin-top: -$sp-4;\n border-right: 1px solid $border-color;\n border-bottom: 1px solid $border-color;\n border-left: 1px solid $border-color;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n\n// Mermaid diagram code blocks should be left unstyled.\ncode.language-mermaid {\n padding: 0;\n background-color: inherit;\n border: 0;\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight,\npre.highlight {\n background: $code-background-color; // Code Background\n // For Backwards Compatibility Before $code-linenumber-color was added\n @if variable-exists(code-linenumber-color) {\n color: $code-linenumber-color; // Code Line Numbers\n } @else {\n color: $body-text-color; // Code Line Numbers\n }\n}\n\n// Override OneDarkJekyll Colors for Code Blocks\n.highlight pre {\n background: $code-background-color; // Code Background\n}\n\n// {% endraw %}\n","// Utility classes for colors\n\n// Text colors\n\n.text-grey-dk-000 {\n color: $grey-dk-000 !important;\n}\n\n.text-grey-dk-100 {\n color: $grey-dk-100 !important;\n}\n\n.text-grey-dk-200 {\n color: $grey-dk-200 !important;\n}\n\n.text-grey-dk-250 {\n color: $grey-dk-250 !important;\n}\n\n.text-grey-dk-300 {\n color: $grey-dk-300 !important;\n}\n\n.text-grey-lt-000 {\n color: $grey-lt-000 !important;\n}\n\n.text-grey-lt-100 {\n color: $grey-lt-100 !important;\n}\n\n.text-grey-lt-200 {\n color: $grey-lt-200 !important;\n}\n\n.text-grey-lt-300 {\n color: $grey-lt-300 !important;\n}\n\n.text-blue-000 {\n color: $blue-000 !important;\n}\n\n.text-blue-100 {\n color: $blue-100 !important;\n}\n\n.text-blue-200 {\n color: $blue-200 !important;\n}\n\n.text-blue-300 {\n color: $blue-300 !important;\n}\n\n.text-green-000 {\n color: $green-000 !important;\n}\n\n.text-green-100 {\n color: $green-100 !important;\n}\n\n.text-green-200 {\n color: $green-200 !important;\n}\n\n.text-green-300 {\n color: $green-300 !important;\n}\n\n.text-purple-000 {\n color: $purple-000 !important;\n}\n\n.text-purple-100 {\n color: $purple-100 !important;\n}\n\n.text-purple-200 {\n color: $purple-200 !important;\n}\n\n.text-purple-300 {\n color: $purple-300 !important;\n}\n\n.text-yellow-000 {\n color: $yellow-000 !important;\n}\n\n.text-yellow-100 {\n color: $yellow-100 !important;\n}\n\n.text-yellow-200 {\n color: $yellow-200 !important;\n}\n\n.text-yellow-300 {\n color: $yellow-300 !important;\n}\n\n.text-red-000 {\n color: $red-000 !important;\n}\n\n.text-red-100 {\n color: $red-100 !important;\n}\n\n.text-red-200 {\n color: $red-200 !important;\n}\n\n.text-red-300 {\n color: $red-300 !important;\n}\n\n// Background colors\n\n.bg-grey-dk-000 {\n background-color: $grey-dk-000 !important;\n}\n\n.bg-grey-dk-100 {\n background-color: $grey-dk-100 !important;\n}\n\n.bg-grey-dk-200 {\n background-color: $grey-dk-200 !important;\n}\n\n.bg-grey-dk-250 {\n background-color: $grey-dk-250 !important;\n}\n\n.bg-grey-dk-300 {\n background-color: $grey-dk-300 !important;\n}\n\n.bg-grey-lt-000 {\n background-color: $grey-lt-000 !important;\n}\n\n.bg-grey-lt-100 {\n background-color: $grey-lt-100 !important;\n}\n\n.bg-grey-lt-200 {\n background-color: $grey-lt-200 !important;\n}\n\n.bg-grey-lt-300 {\n background-color: $grey-lt-300 !important;\n}\n\n.bg-blue-000 {\n background-color: $blue-000 !important;\n}\n\n.bg-blue-100 {\n background-color: $blue-100 !important;\n}\n\n.bg-blue-200 {\n background-color: $blue-200 !important;\n}\n\n.bg-blue-300 {\n background-color: $blue-300 !important;\n}\n\n.bg-green-000 {\n background-color: $green-000 !important;\n}\n\n.bg-green-100 {\n background-color: $green-100 !important;\n}\n\n.bg-green-200 {\n background-color: $green-200 !important;\n}\n\n.bg-green-300 {\n background-color: $green-300 !important;\n}\n\n.bg-purple-000 {\n background-color: $purple-000 !important;\n}\n\n.bg-purple-100 {\n background-color: $purple-100 !important;\n}\n\n.bg-purple-200 {\n background-color: $purple-200 !important;\n}\n\n.bg-purple-300 {\n background-color: $purple-300 !important;\n}\n\n.bg-yellow-000 {\n background-color: $yellow-000 !important;\n}\n\n.bg-yellow-100 {\n background-color: $yellow-100 !important;\n}\n\n.bg-yellow-200 {\n background-color: $yellow-200 !important;\n}\n\n.bg-yellow-300 {\n background-color: $yellow-300 !important;\n}\n\n.bg-red-000 {\n background-color: $red-000 !important;\n}\n\n.bg-red-100 {\n background-color: $red-100 !important;\n}\n\n.bg-red-200 {\n background-color: $red-200 !important;\n}\n\n.bg-red-300 {\n background-color: $red-300 !important;\n}\n","// Utility classes for layout\n\n// Display\n\n.d-block {\n display: block !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n// Screenreader-only\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .d-sm-block, .d-md-none, .d-lg-inline\n .d-#{$media-query}-block {\n display: block !important;\n }\n .d-#{$media-query}-flex {\n display: flex !important;\n }\n .d-#{$media-query}-inline {\n display: inline !important;\n }\n .d-#{$media-query}-inline-block {\n display: inline-block !important;\n }\n .d-#{$media-query}-none {\n display: none !important;\n }\n }\n }\n}\n\n// Horizontal alignment\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.flex-justify-start {\n justify-content: flex-start !important;\n}\n\n.flex-justify-end {\n justify-content: flex-end !important;\n}\n\n.flex-justify-between {\n justify-content: space-between !important;\n}\n\n.flex-justify-around {\n justify-content: space-around !important;\n}\n\n// Vertical alignment\n\n.v-align-baseline {\n vertical-align: baseline !important;\n}\n\n.v-align-bottom {\n vertical-align: bottom !important;\n}\n\n.v-align-middle {\n vertical-align: middle !important;\n}\n\n.v-align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.v-align-text-top {\n vertical-align: text-top !important;\n}\n\n.v-align-top {\n vertical-align: top !important;\n}\n","// Utility classes for typography\n\n.fs-1 {\n @include fs-1;\n}\n\n.fs-2 {\n @include fs-2;\n}\n\n.fs-3 {\n @include fs-3;\n}\n\n.fs-4 {\n @include fs-4;\n}\n\n.fs-5 {\n @include fs-5;\n}\n\n.fs-6 {\n @include fs-6;\n}\n\n.fs-7 {\n @include fs-7;\n}\n\n.fs-8 {\n @include fs-8;\n}\n\n.fs-9 {\n @include fs-9;\n}\n\n.fs-10 {\n @include fs-10;\n}\n\n.fw-300 {\n font-weight: 300 !important;\n}\n\n.fw-400 {\n font-weight: 400 !important;\n}\n\n.fw-500 {\n font-weight: 500 !important;\n}\n\n.fw-700 {\n font-weight: 700 !important;\n}\n\n.lh-0 {\n line-height: 0 !important;\n}\n\n.lh-default {\n line-height: $body-line-height;\n}\n\n.lh-tight {\n line-height: $body-heading-line-height;\n}\n\n.ls-5 {\n letter-spacing: 0.05em !important;\n}\n\n.ls-10 {\n letter-spacing: 0.1em !important;\n}\n\n.ls-0 {\n letter-spacing: 0 !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n","// Utility classes for lists\n\n// stylelint-disable selector-max-type\n\n.list-style-none {\n padding: 0 !important;\n margin: 0 !important;\n list-style: none !important;\n\n li {\n &::before {\n display: none !important;\n }\n }\n}\n","// Utility classes for margins and padding\n\n// stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before\n\n// Margin spacer utilities\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-0, .m-1, .m-2...\n .m-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n .mx-#{$scale}-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @for $i from 1 through length($spacers) {\n @include mq($media-query) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .m-sm-0, .m-md-1, .m-lg-2...\n .m-#{$media-query}-#{$scale} {\n margin: #{$size} !important;\n }\n .mt-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n }\n .mr-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n }\n .mb-#{$media-query}-#{$scale} {\n margin-bottom: #{$size} !important;\n }\n .ml-#{$media-query}-#{$scale} {\n margin-left: #{$size} !important;\n }\n\n .mx-#{$media-query}-#{$scale} {\n margin-right: #{$size} !important;\n margin-left: #{$size} !important;\n }\n\n .my-#{$media-query}-#{$scale} {\n margin-top: #{$size} !important;\n margin-bottom: #{$size} !important;\n }\n\n .mxn-#{$media-query}-#{$scale} {\n margin-right: -#{$size} !important;\n margin-left: -#{$size} !important;\n }\n }\n }\n}\n\n// Padding spacer utilities\n\n@for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-0, .p-1, .p-2...\n .p-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n}\n\n@each $media-query in map-keys($media-queries) {\n @include mq($media-query) {\n @for $i from 1 through length($spacers) {\n $size: #{map-get($spacers, sp-#{$i - 1})};\n $scale: #{$i - 1};\n\n // .p-sm-0, .p-md-1, .p-lg-2...\n .p-#{$media-query}-#{$scale} {\n padding: #{$size} !important;\n }\n .pt-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n }\n .pr-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n }\n .pb-#{$media-query}-#{$scale} {\n padding-bottom: #{$size} !important;\n }\n .pl-#{$media-query}-#{$scale} {\n padding-left: #{$size} !important;\n }\n\n .px-#{$media-query}-#{$scale} {\n padding-right: #{$size} !important;\n padding-left: #{$size} !important;\n }\n\n .py-#{$media-query}-#{$scale} {\n padding-top: #{$size} !important;\n padding-bottom: #{$size} !important;\n }\n }\n }\n}\n","// stylelint-disable selector-max-specificity, selector-max-id, selector-max-type, selector-no-qualifying-type\n\n@media print {\n .site-footer,\n .site-button,\n #edit-this-page,\n #back-to-top,\n .site-nav,\n .main-header {\n display: none !important;\n }\n\n hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n }\n\n .side-bar {\n width: 100%;\n height: auto;\n border-right: 0 !important;\n }\n\n .site-header {\n border-bottom: 1px solid $border-color;\n }\n\n .site-title {\n font-size: 1rem !important;\n font-weight: 700 !important;\n }\n\n .text-small {\n font-size: 8pt !important;\n }\n\n pre.highlight {\n border: 1px solid $border-color;\n }\n\n .main {\n max-width: none;\n margin-left: 0;\n }\n}\n","// Skipnav\n// Skip to main content\n\na.skip-to-main {\n left: -999px;\n position: absolute;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n z-index: -999;\n}\n\na.skip-to-main:focus,\na.skip-to-main:active {\n color: $link-color;\n background-color: $body-background-color;\n left: auto;\n top: auto;\n width: 30%;\n height: auto;\n overflow: auto;\n margin: 10px 35%;\n padding: 5px;\n border-radius: 15px;\n border: 4px solid $btn-primary-color;\n text-align: center;\n font-size: 1.2em;\n z-index: 999;\n}\n","\n@import \"./support/support\";\n@import \"./custom/setup\";\n@import \"./color_schemes/light\";\n\n@import \"./color_schemes/meshtastic\";\n\n@import \"./modules\";\ndiv.opaque {\n background-color: $body-background-color;\n}\n\np.tip, blockquote.tip {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $green-300;\n content: \"Tip\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .tip-title {\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.tip-title, blockquote.tip-title {\n border: 1px $green-000 solid;\n border-left: $border-radius solid $green-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $green-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.tip {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.tip-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.note, blockquote.note {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $blue-300;\n content: \"Note\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .note-title {\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.note-title, blockquote.note-title {\n border: 1px $blue-000 solid;\n border-left: $border-radius solid $blue-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $blue-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.note {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.note-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n\np.warning, blockquote.warning {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n \n &::before {\n color: $yellow-300;\n content: \"Warning\";\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n \n > .warning-title {\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\np.warning-title, blockquote.warning-title {\n border: 1px $yellow-000 solid;\n border-left: $border-radius solid $yellow-300;\n border-radius: $border-radius;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08);\n padding: .8rem;\n > p:first-child {\n margin-top: 0;\n margin-bottom: 0;\n color: $yellow-300;\n display: block;\n font-weight: bold;\n text-transform: uppercase;\n font-size: .75em;\n padding-bottom: .125rem;\n }\n}\n\nblockquote.warning {\n margin-left: 0;\n margin-right: 0;\n\n > p:first-child {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\nblockquote.warning-title {\n margin-left: 0;\n margin-right: 0;\n\n > p:nth-child(2) {\n margin-top: 0;\n }\n\n > p:last-child {\n margin-bottom: 0;\n }\n}\n\n\n@import \"./custom/custom\";\n\n\n"],"file":"just-the-docs-meshtastic.css"} \ No newline at end of file diff --git a/main/assets/js/search-data.json b/main/assets/js/search-data.json index f7e0205cb6..81c32c74de 100644 --- a/main/assets/js/search-data.json +++ b/main/assets/js/search-data.json @@ -5419,7 +5419,7 @@ },"774": { "doc": "Desktop App", "title": "Feature Parity", - "content": "| Feature | Android | Desktop | Notes | . | Messaging | ✓ | ✓ | Full parity | . | Node List | ✓ | ✓ | Full parity | . | Map | ✓ | ✓ | Interactive MapLibre map, with base map and overlay pickers and custom tile sources. No offline downloads or local .mbtiles archives | . | Map layers (.kml/.kmz/GeoJSON) | ✓ | ✓ | Same layer store and sheet as Android; imported files draw on the desktop map | . | Site Planner | ✓ | ✓* | *Opens in your browser on desktop; the estimate is not drawn on the desktop map | . | Settings | ✓ | ✓ | Full parity | . | Bluetooth (BLE) | ✓ | ✓ | Via Kable on desktop | . | Firmware Update | ✓ | ✓ | In-app USB, BLE, and Wi-Fi (ESP32) update work the same as Android. The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only | . | Notifications | ✓ | ✓ | Native OS notifications | . | Widgets | ✓ | ✗ | Android-only | . | AI Assistant (Chirpy) | ✓* | ✗ | Google flavor Android only | . | App Functions (system AI) | ✓† | ✗ | Google flavor Android only | . *Chirpy AI requires Android 14+ on Google flavor builds with supported hardware. †App Functions exposes app actions to the Android system AI on Google flavor builds. See App Functions. ", + "content": "| Feature | Android | Desktop | Notes | . | Messaging | ✓ | ✓ | Full parity | . | Node List | ✓ | ✓ | Full parity | . | Map | ✓ | ✓ | Interactive MapLibre map, with base map and overlay pickers and custom tile sources. Offline terrain (hillshade and contours) can be downloaded; offline base-map packs and local .mbtiles archives cannot | . | Map layers (.kml/.kmz/GeoJSON) | ✓ | ✓ | Same layer store and sheet as Android; imported files draw on the desktop map | . | Site Planner | ✓ | ✓* | *Opens in your browser on desktop; the estimate is not drawn on the desktop map | . | Settings | ✓ | ✓ | Full parity | . | Bluetooth (BLE) | ✓ | ✓ | Via Kable on desktop | . | Firmware Update | ✓ | ✓ | In-app USB, BLE, and Wi-Fi (ESP32) update work the same as Android. The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only | . | Notifications | ✓ | ✓ | Native OS notifications | . | Widgets | ✓ | ✗ | Android-only | . | AI Assistant (Chirpy) | ✓* | ✗ | Google flavor Android only | . | App Functions (system AI) | ✓† | ✗ | Google flavor Android only | . *Chirpy AI requires Android 14+ on Google flavor builds with supported hardware. †App Functions exposes app actions to the Android system AI on Google flavor builds. See App Functions. ", "url": "/Meshtastic-Android/main/en/user/desktop.html#feature-parity", "relUrl": "/en/user/desktop.html#feature-parity" @@ -5447,7 +5447,7 @@ },"778": { "doc": "Desktop App", "title": "Known Limitations", - "content": ". | Offline tile downloads and local .mbtiles archives are not available on desktop. | .kml/.kmz/GeoJSON layer import works — see Map & Waypoints. Site Planner opens in your browser rather than in the app; to bring its coverage estimate onto the map, click the transmitter pin in the browser and use the planner’s GeoJSON export, then add the file as a layer — not the KML export, which is a ground-overlay image this map cannot draw. Custom network tile sources work too — see Map & Waypoints | The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only, and the desktop app does not offer it. Use the Web Flasher instead | Some Android-specific features (widgets, specific notification channels) are unavailable | Performance may vary on low-spec hardware running Compose Desktop | BLE bonding is not yet supported on desktop (pairing works without bonding) | . ", + "content": ". | Offline base-map downloads and local .mbtiles archives are not available on desktop. Offline terrain is — see Map & Waypoints. | .kml/.kmz/GeoJSON layer import works — see Map & Waypoints. Site Planner opens in your browser rather than in the app; to bring its coverage estimate onto the map, click the transmitter pin in the browser and use the planner’s GeoJSON export, then add the file as a layer — not the KML export, which is a ground-overlay image this map cannot draw. Custom network tile sources work too — see Map & Waypoints | The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only, and the desktop app does not offer it. Use the Web Flasher instead | Some Android-specific features (widgets, specific notification channels) are unavailable | Performance may vary on low-spec hardware running Compose Desktop | BLE bonding is not yet supported on desktop (pairing works without bonding) | . ", "url": "/Meshtastic-Android/main/en/user/desktop.html#known-limitations", "relUrl": "/en/user/desktop.html#known-limitations" @@ -8016,7 +8016,7 @@ },"1145": { "doc": "Local Mesh Discovery", "title": "Mesh Beacon", - "content": "Mesh Beacon lets nodes invite others to join their mesh. A beaconing node periodically broadcasts an invitation — optionally advertising a channel, region, and modem preset — that nearby nodes can hear even before they share a configuration. Configure it under Settings → Module configuration → Mesh Beacon. The entry appears only on radios running firmware 2.8.0 or newer. A read-only Region row at the top of the screen shows the region the beacon advertises: that region, and the preset, are always the ones the radio itself uses, so a beacon cannot invite anyone onto settings your radio is not running. | Listen for beacons — receive invitations broadcast by other nodes. | Broadcast a beacon — periodically advertise this mesh to nearby nodes, with an optional Beacon message of up to 100 bytes, a Broadcast interval picked from fixed intervals between 1 hour and 72 hours, and an Offered channel chosen from your radio’s own channels. The offered channel is required, and defaults to your primary channel. | Broadcast targets — optional extra destinations beyond the offered channel. Add target appends a row; each row picks a Channel and a Transmit preset, and Remove target deletes it. With no targets, the beacon goes out on the offered channel alone. | . Two conditions block beacon setup: . | The radio has no region set. The screen shows nothing but Set your radio’s region before setting up a beacon. Set the region on Settings → LoRa first. | The radio uses custom LoRa settings. A beacon advertises a modem preset for others to join, so a radio with Use Preset turned off has no standard preset to offer. In that state Broadcast a beacon can be turned off but not on, and the broadcast settings are read-only. Listening for beacons is unaffected. | . Received invitations appear as Mesh invitations cards on the Discovery screen. Each card shows the sender’s message plus the offered channel, region, preset, and signal quality, with these actions: . | Join — switch to the offered channel and preset (retunes the radio and reboots). When the offer matches your current frequency slot, an Add channel action adds it without a reboot. | Discover — seed a Discovery scan with the offered preset so you can survey that mesh before joining (shown only when the beacon offers a preset). | Dismiss — ignore the invitation. | . Channels advertised by beacons also show up in the scan setup as Beacon channels — select one to include it as a scan target. An invitation to a mesh your radio is already on is suppressed: no card, no notification, and no Beacon channels entry. A channel counts as one you already have only when both its name and its key match a channel on your radio — the same name with a different key is a different mesh, so that invitation still reaches you. ", + "content": "Mesh Beacon lets nodes invite others to join their mesh. A beaconing node periodically broadcasts an invitation — optionally advertising a channel, region, and modem preset — that nearby nodes can hear even before they share a configuration. Configure it under Settings → Module configuration → Mesh Beacon. The entry appears only on radios running firmware 2.8.0 or newer. A read-only Region row at the top of the screen shows the region the beacon advertises: that region, and the preset, are always the ones the radio itself uses, so a beacon cannot invite anyone onto settings your radio is not running. | Listen for beacons — receive invitations broadcast by other nodes. | Broadcast a beacon — periodically advertise this mesh to nearby nodes, with an optional Beacon message of up to 100 bytes, a Broadcast interval picked from fixed intervals between 1 hour and 72 hours, and an Offered channel chosen from your radio’s own channels. The offered channel is required, and defaults to your primary channel. Over remote admin the picker offers the primary channel only. | Broadcast targets — optional extra destinations beyond the offered channel. Add target appends a row; each row picks a Channel and a Transmit preset, and Remove target deletes it. With no targets, the beacon goes out on the offered channel alone. | . Two conditions block beacon setup: . | The radio has no region set. The screen shows nothing but Set your radio’s region before setting up a beacon. Set the region on Settings → LoRa first. | The radio uses custom LoRa settings. A beacon advertises a modem preset for others to join, so a radio with Use Preset turned off has no standard preset to offer. In that state Broadcast a beacon can be turned off but not on, and the broadcast settings are read-only. Listening for beacons is unaffected. | . Received invitations appear as Mesh invitations cards on the Discovery screen. Each card shows the sender’s message plus the offered channel, region, preset, and signal quality, with these actions: . | Join — switch to the offered channel and preset (retunes the radio and reboots). When the offer matches your current frequency slot, an Add channel action adds it without a reboot. | Discover — seed a Discovery scan with the offered preset so you can survey that mesh before joining (shown only when the beacon offers a preset). | Dismiss — ignore the invitation. | . Channels advertised by beacons also show up in the scan setup as Beacon channels — select one to include it as a scan target. An invitation to a mesh your radio is already on is suppressed: no card, no notification, and no Beacon channels entry. A channel counts as one you already have only when both its name and its key match a channel on your radio — the same name with a different key is a different mesh, so that invitation still reaches you. ", "url": "/Meshtastic-Android/main/en/user/discovery.html#mesh-beacon", "relUrl": "/en/user/discovery.html#mesh-beacon" @@ -12083,7 +12083,7 @@ },"1726": { "doc": "Help & In-App Docs", "title": "Browsing", - "content": "The docs browser lists every user-guide page. Tap a page to read it; images and cross-links work just like they do here. Search . The search box sits at the top of the docs browser. Type in it to filter pages by title and keywords — results update as you type, and the Clear search button (✕) empties the box. A page open in the browser: . ", + "content": "The docs browser lists every user-guide page. Tap a page to read it; images and cross-links work just like they do here. Search . Tap the search field at the top of the docs browser to open a full-screen search view. Type to filter pages by title and keywords — results update as you type, under the same field. The back arrow, or the keyboard’s search action, closes the view. The field hides while you scroll down the page list and comes back when you scroll up. A page open in the browser: . ", "url": "/Meshtastic-Android/main/en/user/help-and-docs.html#browsing", "relUrl": "/en/user/help-and-docs.html#browsing" @@ -14365,7 +14365,7 @@ },"2052": { "doc": "Map & Waypoints", "title": "Map View", - "content": "The map displays: . | Node positions — colored markers for each node reporting location | Waypoints — shared points of interest | Your position — your current GPS location | . Node Markers . Each node that reports a position is shown as a node chip marker displaying the node’s short name. The chip is colored by the node’s own identity color (a stable color derived from its node number) — the same chip used in the node list, so a node looks the same everywhere. Marker color does not encode online/offline status. When a node’s position updates live, its marker briefly pulses. Nearby markers are clustered as you zoom out. Map Controls . | Zoom — pinch or use +/- buttons | Pan — drag to explore | Center — tap the location button to center on your position | Node tap — tap a node marker to view details | . The floating toolbar provides quick access to the compass, the map type and layers pickers, node filters, Site Planner, and location tracking. Tap the compass to reorient north-up, or tap the location button to center on your current position. On Google Play builds a refresh button joins them while a network layer is showing; on F-Droid and Desktop, refresh a network layer from its own row in the layers sheet instead. Filtering the Map . Tap the filter button in the floating toolbar to open Filter map. Display controls what is drawn: Only Favorites, Show Waypoints, Show Precision Circles, and a slider that hides nodes not heard from recently. Node roles is a chip per device role, plus All to show every role; a selected chip means that role is shown. Nodes narrows the set further with Hide offline nodes, Only show direct nodes, Exclude MQTT, Show ignored nodes, and Include unknown. A dot on the filter button means at least one filter is hiding something — check it before concluding the mesh is quiet. Turning Show Waypoints off hides every waypoint, including your own. Show ignored nodes adds them to the map rather than showing only them — unlike the node list’s Only show ignored Nodes. ", + "content": "The map displays: . | Node positions — colored markers for each node reporting location | Waypoints — shared points of interest | Your position — your current GPS location | . Node Markers . Each node that reports a position is shown as a node chip marker displaying the node’s short name. The chip is colored by the node’s own identity color (a stable color derived from its node number) — the same chip used in the node list, so a node looks the same everywhere. Marker color does not encode online/offline status. When a node’s position updates live, its marker briefly pulses. Nearby markers are clustered as you zoom out. Map Controls . | Zoom — pinch or use +/- buttons | Pan — drag to explore | Center — tap the location button to center on your position | Node tap — tap a node marker to view details | . The floating toolbar provides quick access to the compass, the map type and layers pickers, node filters, Site Planner, and location tracking. Tap the compass to reorient north-up, or tap the location button to center on your current position. On Google Play builds a refresh button joins them while a network layer is showing; on F-Droid and Desktop, refresh a network layer from its own row in the layers sheet instead. Filtering the Map . Tap the filter button in the floating toolbar to open Filter map. Display controls what is drawn: Only Favorites, Show Waypoints, Show Precision Circles, and a slider that hides nodes not heard from recently. Node roles is a chip per device role, plus All to show every role; a selected chip means that role is shown. Nodes narrows the set further with Hide offline nodes, Only show direct nodes, Signed only, Encrypted only, Exclude MQTT, Show ignored nodes, and Include unknown — the same rules as the node list’s filter toggles. A dot on the filter button means at least one filter is hiding something — check it before concluding the mesh is quiet. Turning Show Waypoints off hides every waypoint, including your own. Show ignored nodes adds them to the map rather than showing only them — unlike the node list’s Only show ignored Nodes. ", "url": "/Meshtastic-Android/main/en/user/map-and-waypoints.html#map-view", "relUrl": "/en/user/map-and-waypoints.html#map-view" @@ -14393,7 +14393,7 @@ },"2056": { "doc": "Map & Waypoints", "title": "Map Sources", - "content": "Every build offers a base map picker from the map toolbar. Google Play builds open on Google’s own map types; F-Droid and Desktop builds open on MapLibre’s vector styles. Further down the base map picker, all three offer the same raster base maps: . | Base map | Notes | . | Normal / Satellite / Terrain / Hybrid | Google Play only — Google’s own map types | . | Liberty | Default on F-Droid and Desktop. Vector street map | . | Positron | F-Droid and Desktop only. Low-contrast vector map; keeps node markers legible over it | . | Dark | F-Droid and Desktop only. Vector map suited to dark themes | . | OpenStreetMap | Classic raster street tiles | . | OpenTopoMap | Raster topographic | . | USGS Topo / USGS Imagery | US coverage only | . | Esri Topo / Esri Imagery | Topographic and satellite imagery | . Overlays can be toggled on top of any base map, from the layers sheet: . | Weather radar — NOAA NEXRAD reflectivity (US coverage) | Hillshade — terrain relief, on F-Droid and Desktop only. Useful for understanding why a link fails, since LoRa range is limited by terrain | . Adding your own tile source . Any XYZ tile endpoint can be added as a base map, on every flavor and on desktop. Open Manage Custom Tile Sources at the foot of the base map picker and paste a URL template using {z}, {x} and {y} — plus {s} if the provider uses rotating subdomains. A national mapping service, for example: . https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg . Tiles are cached on disk, so panning does not re-download what you were just looking at. On Android, the same screen also imports a local .mbtiles archive for fully offline use. On F-Droid, select a vector base map first — Liberty, Positron, or Dark — since a download is defined against a vector style and Start Download stays disabled over a raster one. Frame the area you want on screen, then tap Start Download in the layers sheet: that creates a paused pack covering the current zoom plus two levels deeper. Press play on the pack’s row to actually download it. On Google Play, the layers sheet’s Offline Manager section downloads its own offline regions instead — water, roads and administrative boundaries extracted from the public Protomaps basemap dataset, drawn directly as map shapes rather than raster tiles. Frame the area you want, tap Start Download, and once it finishes flip Show on map to draw it (it’s off by default so it never surprises you by covering up the live map). You can still import a pre-made .mbtiles archive here too, as before. Desktop has neither. Going offline . An Offline pill appears over the map whenever the device has no network connection. On Google Play builds, if you’ve imported a local .mbtiles archive, the map switches to it automatically the moment the network drops — no toggle to remember — and switches back once you’re reconnected, as long as you haven’t picked a different base map yourself in between. On F-Droid, a downloaded offline area keeps rendering on its own; the pill is purely informational there. Desktop has no offline downloads at all yet, so the pill is informational there too. ", + "content": "Every build offers a base map picker from the map toolbar. Google Play builds open on Google’s own map types; F-Droid and Desktop builds open on MapLibre’s vector styles. Further down the base map picker, all three offer the same raster base maps: . | Base map | Notes | . | Normal / Satellite / Terrain / Hybrid | Google Play only — Google’s own map types | . | Liberty | Default on F-Droid and Desktop. Vector street map | . | Positron | F-Droid and Desktop only. Low-contrast vector map; keeps node markers legible over it | . | Dark | F-Droid and Desktop only. Vector map suited to dark themes | . | OpenStreetMap | Classic raster street tiles | . | OpenTopoMap | Raster topographic | . | USGS Topo / USGS Imagery | US coverage only | . | Esri Topo / Esri Imagery | Topographic and satellite imagery | . Overlays can be toggled on top of any base map, from the layers sheet: . | Weather radar — NOAA NEXRAD reflectivity (US coverage) | Hillshade — terrain relief from an online tile source, on F-Droid and Desktop only; Google Play draws hillshade from downloaded offline terrain instead. Useful for understanding why a link fails, since LoRa range is limited by terrain | . Adding your own tile source . Any XYZ tile endpoint can be added as a base map, on every flavor and on desktop. Open Manage Custom Tile Sources at the foot of the base map picker and paste a URL template using {z}, {x} and {y} — plus {s} if the provider uses rotating subdomains. A national mapping service, for example: . https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg . Tiles are cached on disk, so panning does not re-download what you were just looking at. On Android, the same screen also imports a local .mbtiles archive for fully offline use. On F-Droid, select a vector base map first — Liberty, Positron, or Dark — since a download is defined against a vector style and Start Download stays disabled over a raster one. Frame the area you want on screen, then tap Start Download in the layers sheet: that creates a paused pack covering the current zoom plus two levels deeper. Press play on the pack’s row to actually download it. On Google Play, the layers sheet’s Offline Manager section downloads its own offline regions instead — water, roads and administrative boundaries extracted from the public Protomaps basemap dataset, drawn directly as map shapes rather than raster tiles. Frame the area you want, tap Start Download, and once it finishes flip Show on map to draw it (it’s off by default so it never surprises you by covering up the live map). You can still import a pre-made .mbtiles archive here too, as before. Desktop has neither, though the offline terrain described next does work there. Offline terrain . Hillshade and elevation contours can be downloaded for offline use as well, so a downloaded area still shows why a link fails when there is no network. The terrain data comes from Mapterhorn and is credited on the map. On Google Play, each downloaded region in the Offline Manager list has a Download Terrain button and Hillshade and Contours switches; terrain attaches to that region and shares its storage limit, and an area too large for terrain asks you to zoom in or pick a smaller region. On F-Droid and Desktop, the layers sheet has an Offline Terrain section of its own: frame the area, tap Start Download, and the hillshade and contours draw from the downloaded tiles from then on. Going offline . An Offline pill appears over the map whenever the device has no network connection. On Google Play builds, if you’ve imported a local .mbtiles archive, the map switches to it automatically the moment the network drops — no toggle to remember — and switches back once you’re reconnected, as long as you haven’t picked a different base map yourself in between. On F-Droid, a downloaded offline area keeps rendering on its own; the pill is purely informational there. Desktop downloads offline terrain but no base-map packs, so the pill is informational there too. ", "url": "/Meshtastic-Android/main/en/user/map-and-waypoints.html#map-sources", "relUrl": "/en/user/map-and-waypoints.html#map-sources" @@ -25607,7 +25607,7 @@ },"3658": { "doc": "Nodes", "title": "Node List", - "content": "The node list shows every node your radio has heard, including: . | Node name — user-configured long name | Short name — 4-character identifier | Signal quality — SNR, RSSI, and a quality word, shown only for nodes your radio heard directly. In the Complete layout a node reached through a relay shows its hop count here instead; a node heard only over MQTT shows neither | Last heard — time since last communication | Distance — estimated distance (if positions are shared) | Battery — remote node battery level (if telemetry is enabled) | . Choosing What the List Shows . The list has two densities, set at Settings → Node Layout. Complete shows every field a node has reported and hides the ones it hasn’t. Compact fits more nodes on screen and lets you pick the fields yourself — Power, Last Heard Time, Relative Last Heard Time, Distance and Bearing, Hops Away, Signal (Direct Only), Channel, and Device & Role. The Environment Metrics toggle applies to both densities. A preview above the toggles shows the effect before you leave the screen. Node Status Indicators . | Indicator | Meaning | . | Green last-heard time | Node heard within the last 2 hours | . | Plain last-heard time | Node not heard for over 2 hours | . | ⭐ Favorite | Node you marked as a favorite. | . There is no separate “away” tier. Node Roles . Nodes can be configured with different roles that affect their mesh behavior: . | Role | Description | . | Client | Standard end-user node | . | Client Base | Treats favorited-node traffic as Router Late priority; all other traffic as Client | . | Client Mute | Receives but doesn’t retransmit | . | Client Hidden | Like Client Mute, plus hides from node list | . | Router | Prioritizes message forwarding; stays awake to relay | . | Router Late | Infrastructure node that rebroadcasts once, but only after all other modes (provides supplemental coverage) | . | Router Client | ⚠️ Deprecated (removed in firmware 2.3.15) — no longer selectable; use Router or Client instead | . | Repeater | ⚠️ Deprecated (removed in firmware 2.7.11) — no longer selectable; use Router instead | . | Tracker | Optimized for position reporting at regular intervals | . | Sensor | Optimized for telemetry reporting | . | TAK | Interoperates with TAK systems (sends/receives CoT) | . | TAK Tracker | TAK position reporting only | . | Lost and Found | Sends its position to the default channel as a text message at regular intervals, to help recover a lost radio | . Choosing a Role . Most users should keep the default Client role. Consider a different role when: . | Router — You have a node in a fixed, elevated location with reliable power (rooftop, hilltop). Routers stay awake continuously to relay messages for others and are essential for extending mesh coverage. Don’t use Router on battery-powered handheld radios. | Router Late — An infrastructure node that always rebroadcasts packets once but only after all other routing modes have had their turn. Provides supplemental coverage for local clusters without competing with primary routers. | Client Base — Treats traffic from/to your favorited nodes with Router Late priority (ensuring those messages get extra relay coverage) while handling everything else as a normal Client. | Client Mute — You want to receive mesh traffic but not contribute to relaying. Useful for monitoring-only radios or to reduce congestion in dense areas. | Tracker — An unattended radio whose sole purpose is broadcasting its GPS position (e.g., a vehicle, pet, or asset). Sleeps between broadcasts to conserve battery. | Sensor — An unattended radio reporting environmental telemetry (temperature, humidity, air quality). Similar power profile to Tracker. | TAK / TAK Tracker — Only needed if interoperating with ATAK/WinTAK systems. See TAK Integration for details. | . 💡 Tip: The mesh works best when most nodes are Client or Router. Too many Client Mute nodes reduce mesh resilience; too many Routers in a dense area can cause congestion. A good rule of thumb: one Router per 5–10 Clients in your area. Encryption Indicators . Nodes display encryption status icons next to their name: . | Icon | Meaning | . | 🔒 Locked | Communication uses PKI (public key infrastructure) — end-to-end encrypted with verified identity | . | 🔓 Unlocked | No public key has been received for this node, so it cannot be direct messaged — use Request User Info on the node detail page to ask for one | . | ⚠️ Mismatch | Public key mismatch — the node’s key has changed since last seen (investigate before trusting) | . 💡 Tip: Direct messages always use PKI, so the radio needs the other node’s public key before it can send one. It refuses the send rather than falling back to channel encryption. Keys arrive inside node info, which is why an open lock usually clears itself once that node is heard from properly. If you see a key mismatch warning, the node may have been reset or compromised. To clear a mismatch, first confirm through another trusted channel that the key change was intentional — a factory reset causes one. Then touch & hold the node, choose Remove, and let the two radios exchange keys again the next time yours hears it. ", + "content": "The node list shows every node your radio has heard, including: . | Node name — user-configured long name | Short name — 4-character identifier | Signal quality — SNR, RSSI, and a quality word, shown only for nodes your radio heard directly. In the Complete layout a node reached through a relay shows its hop count here instead; a node heard only over MQTT shows neither | Last heard — time since last communication | Distance — estimated distance (if positions are shared) | Battery — remote node battery level (if telemetry is enabled) | . Choosing What the List Shows . The list has two densities, set at Settings → Node Layout. Complete shows every field a node has reported and hides the ones it hasn’t. Compact fits more nodes on screen and lets you pick the fields yourself — Power, Last Heard Time, Relative Last Heard Time, Distance and Bearing, Hops Away, Signal (Direct Only), Channel, and Device & Role. The Environment Metrics toggle applies to both densities. A preview above the toggles shows the effect before you leave the screen. Node Status Indicators . | Indicator | Meaning | . | Green last-heard time | Node heard within the last 2 hours | . | Plain last-heard time | Node not heard for over 2 hours | . | ⭐ Favorite | Node you marked as a favorite. | . There is no separate “away” tier. Node Roles . Nodes can be configured with different roles that affect their mesh behavior: . | Role | Description | . | Client | Standard end-user node | . | Client Base | Treats favorited-node traffic as Router Late priority; all other traffic as Client | . | Client Mute | Receives but doesn’t retransmit | . | Client Hidden | Like Client Mute, plus hides from node list | . | Router | Prioritizes message forwarding; stays awake to relay | . | Router Late | Infrastructure node that rebroadcasts once, but only after all other modes (provides supplemental coverage) | . | Router Client | ⚠️ Deprecated (removed in firmware 2.3.15) — no longer selectable; use Router or Client instead | . | Repeater | ⚠️ Deprecated (removed in firmware 2.7.11) — no longer selectable; use Router instead | . | Tracker | Optimized for position reporting at regular intervals | . | Sensor | Optimized for telemetry reporting | . | TAK | Interoperates with TAK systems (sends/receives CoT) | . | TAK Tracker | TAK position reporting only | . | Lost and Found | Sends its position to the default channel as a text message at regular intervals, to help recover a lost radio | . Choosing a Role . Most users should keep the default Client role. Consider a different role when: . | Router — You have a node in a fixed, elevated location with reliable power (rooftop, hilltop). Routers stay awake continuously to relay messages for others and are essential for extending mesh coverage. Don’t use Router on battery-powered handheld radios. | Router Late — An infrastructure node that always rebroadcasts packets once but only after all other routing modes have had their turn. Provides supplemental coverage for local clusters without competing with primary routers. | Client Base — Treats traffic from/to your favorited nodes with Router Late priority (ensuring those messages get extra relay coverage) while handling everything else as a normal Client. | Client Mute — You want to receive mesh traffic but not contribute to relaying. Useful for monitoring-only radios or to reduce congestion in dense areas. | Tracker — An unattended radio whose sole purpose is broadcasting its GPS position (e.g., a vehicle, pet, or asset). Sleeps between broadcasts to conserve battery. | Sensor — An unattended radio reporting environmental telemetry (temperature, humidity, air quality). Similar power profile to Tracker. | TAK / TAK Tracker — Only needed if interoperating with ATAK/WinTAK systems. See TAK Integration for details. | . 💡 Tip: The mesh works best when most nodes are Client or Router. Too many Client Mute nodes reduce mesh resilience; too many Routers in a dense area can cause congestion. A good rule of thumb: one Router per 5–10 Clients in your area. Security indicators . Each node carries one security icon beside its name in the node list. Tap it to read what it means, and choose Show All Meanings in that dialog for the full legend. The detail screen shows the same state in words, as a Security row that opens the same dialog. | Icon | Meaning | Shown for | . | Person with a shield check (green) | Verified contact — you verified this node’s key in person by exchanging contact QR codes, so its identity is confirmed. The strongest trust the list shows. Your own connected node carries it too | Any firmware version | . | Nodes icon with a shield check (green) | Signed node — this node signs its broadcasts with its identity key, so its identity is consistent over time, but you have not verified it in person. On firmware 2.8 the icon appears from the version alone, before any signed broadcast has been heard | Firmware 2.8 or newer, and any node whose signed broadcast your node has verified | . | 🔒 Closed lock | A public key is on file and matches, so direct messages to this node are encrypted | Firmware before 2.8, or no reported version | . | 🔓 Open lock | No public key has been received for this node, so it cannot be direct messaged — use Request User Info on the node detail page to ask for one | Firmware before 2.8, or no reported version | . | ⚠️ Mismatch | Public key mismatch — a different key arrived for this node after one was stored. Investigate before trusting | Any firmware version | . Every node on firmware 2.8 or newer signs its broadcasts, so on that firmware the signed state is the baseline and the locks are not shown. Direct messages always use public-key encryption, so your node needs the other node’s public key before it can send one. It refuses the send rather than falling back to channel encryption. Keys arrive inside node info, which is why an open lock usually clears itself once that node is heard from properly. A mismatch never replaces the key you already hold. The app keeps the first key it recorded and refuses the new one, as the firmware does, so a stray or hostile node info cannot silently break encrypted messaging to a contact. To clear a mismatch, first confirm through another trusted channel that the key change was intentional — a factory reset causes one. Then touch & hold the node, choose Remove, and let the two nodes exchange keys again the next time yours hears it. ", "url": "/Meshtastic-Android/main/en/user/nodes.html#node-list", "relUrl": "/en/user/nodes.html#node-list" @@ -25621,14 +25621,14 @@ },"3660": { "doc": "Nodes", "title": "Sharing a Contact", - "content": "On a node’s detail screen, tap Share Contact to produce a link and a QR code for that node. From the same dialog, Share link opens the Android share sheet (on desktop it copies the link instead), Write to NFC tag saves it to a writable NFC tag, and Copy puts it on the clipboard. While that dialog is open and in front of you, the phone also offers the same link to any NFC reader, so someone can take the contact by tapping their phone against yours with no tag involved. To add someone else’s contact, use the import button on the node list and choose Scan Shared Contact QR Code, Scan Shared Contact NFC, or Input Shared Contact URL. The app asks you to confirm with Import Shared Contact?, and warns you when the contact is one you already have. ", + "content": "On a node’s detail screen, tap Share Contact to produce a link and a QR code for that node. From the same dialog, Share link opens the Android share sheet (on desktop it copies the link instead), Write to NFC tag saves it to a writable NFC tag, and Copy puts it on the clipboard. While that dialog is open and in front of you, the phone also offers the same link to any NFC reader, so someone can take the contact by tapping their phone against yours with no tag involved. Sharing your own contact this way marks it as verified in person, so whoever imports it sees the Verified contact icon rather than the signed one. Relaying someone else’s contact passes on only what your app had already recorded about them. To add someone else’s contact, use the import button on the node list and choose Scan Shared Contact QR Code, Scan Shared Contact NFC, or Input Shared Contact URL. The app asks you to confirm with Import Shared Contact?, and warns you when the contact is one you already have. ", "url": "/Meshtastic-Android/main/en/user/nodes.html#sharing-a-contact", "relUrl": "/en/user/nodes.html#sharing-a-contact" },"3661": { "doc": "Nodes", "title": "Filtering & Sorting", - "content": "Text Search . Type in the search field to filter nodes by name or short name. The filter updates in real time as you type. Filter Toggles . | Filter | Description | . | Hide offline nodes | Show only nodes heard within the last 2 hours | . | Only show direct nodes | Show only nodes your radio heard directly, with no relay in between | . | Include unknown | Show nodes that haven’t sent user info yet. On by default, so a node heard before its info arrives stays visible; these carry a badge marking them incomplete, and cannot be direct messaged until their user info brings a public key | . | Exclude infrastructure | Hide infrastructure-role nodes (Router, Router Late, Client Base, and legacy Repeater nodes) and any node that cannot be messaged, whatever its role | . | Exclude MQTT | Hide nodes heard only via MQTT internet bridge | . | Only show ignored Nodes | Replace the list with the nodes you have ignored. Every other node is hidden while this is on, and a banner appears at the top of the list to take you back | . Sort Options . | Sort | Description | . | Last heard | Most recently heard nodes first | . | A-Z | Sorted by node long name | . | Distance | Nearest nodes first (requires position sharing) | . | Hops away | Fewest relay hops first | . | Channel | Grouped by channel index | . | via MQTT | Grouped by MQTT vs. radio-heard | . | via Favorite (default) | Favorited nodes first, then the rest | . ", + "content": "Text Search . Type in the search field to filter nodes by name or short name. The filter updates in real time as you type. Filter Toggles . | Filter | Description | . | Hide offline nodes | Show only nodes heard within the last 2 hours | . | Only show direct nodes | Show only nodes your radio heard directly, with no relay in between | . | Include unknown | Show nodes that haven’t sent user info yet. On by default, so a node heard before its info arrives stays visible; these carry a badge marking them incomplete, and cannot be direct messaged until their user info brings a public key | . | Exclude infrastructure | Hide infrastructure-role nodes (Router, Router Late, Client Base, and legacy Repeater nodes) and any node that cannot be messaged, whatever its role | . | Exclude MQTT | Hide nodes heard only via MQTT internet bridge | . | Signed only | Show only nodes whose signed broadcasts your node has actually heard and verified. Stricter than the icon: a node on 2.8 shows as signed by its firmware version before any signed broadcast arrives, and a contact verified in person on older firmware is not signed at all | . | Encrypted only | Show nodes with a matching public key on file, the key an encrypted direct message needs. A node with a key mismatch is excluded | . | Only show ignored Nodes | Replace the list with the nodes you have ignored. Every other node is hidden while this is on, and a banner appears at the top of the list to take you back | . Sort Options . | Sort | Description | . | Last heard | Most recently heard nodes first | . | A-Z | Sorted by node long name | . | Distance | Nearest nodes first (requires position sharing) | . | Hops away | Fewest relay hops first | . | Channel | Grouped by channel index | . | via MQTT | Grouped by MQTT vs. radio-heard | . | via Favorite (default) | Favorited nodes first, then the rest | . ", "url": "/Meshtastic-Android/main/en/user/nodes.html#filtering--sorting", "relUrl": "/en/user/nodes.html#filtering--sorting" @@ -31095,14 +31095,14 @@ },"4442": { "doc": "Settings — Radio & User", "title": "User Settings", - "content": "User Profile . On Settings → User. | Setting | Description | . | Long Name | Your display name (up to 39 characters) | . | Short Name | 4-character abbreviated name | . | Status Message | A short, public free-text status other nodes display alongside your node — up to 80 bytes, cleared with the ✕ in the field. The radio broadcasts it to the mesh when you change it and again every 12 hours. Needs firmware 2.8 or newer, and is absent otherwise | . | Unmessageable | Marks the node as one nobody should try to message — for an unmonitored or infrastructure node. Other clients hide it from the contact list. Needs supporting firmware | . | Licensed amateur radio (Ham) | Enable if you hold an amateur radio license (permits higher power). Turning it on is staged behind a confirmation dialog. On your own radio it then relabels Long Name as Call sign and adds a separate Long Name field; over remote admin the field stays Long Name | . Applying Changes . The footer appears as soon as you change something. Discard throws the change away, and the other button writes it to the radio: it reads Save & restart on the screens the firmware applies with a reboot — Position, Network, Bluetooth, Security, and most module screens — and Save everywhere else. The status message is saved with the same Save, but it never reboots the node — and, like the rest of this screen, it can be edited on a remote node you administer. For your own radio there is a shortcut while it is connected: touch & hold your node in the node list and choose Update status. Older firmware and a disconnected radio have no shortcut — the field above is still the way in. ", + "content": "User Profile . On Settings → User. | Setting | Description | . | Long Name | Your display name (up to 39 characters) | . | Short Name | 4-character abbreviated name | . | Status Message | A short, public free-text status other nodes display alongside your node — up to 80 bytes, cleared with the ✕ in the field. The radio broadcasts it to the mesh when you change it and again every 12 hours. Needs firmware 2.8 or newer, and is absent otherwise | . | Unmessageable | Marks the node as one nobody should try to message — for an unmonitored or infrastructure node. Other clients hide it from the contact list. Needs supporting firmware | . | Licensed amateur radio (Ham) | Enable if you hold an amateur radio license (permits higher power). Turning it on is staged behind a confirmation dialog. On your own radio it then relabels Long Name as Call sign and adds a separate Long Name field; over remote admin the field stays Long Name | . Applying Changes . The footer appears as soon as you change something. Discard throws the change away, and the other button writes it to the radio: it reads Save & restart on the screens the firmware applies with a reboot — Position, Network, Bluetooth, Security, and most module screens — and Save everywhere else. The status message is saved with the same Save, but it never reboots the node — and, like the rest of this screen, it can be edited on a remote node you administer. For your own radio there is a shortcut while it is connected: touch & hold your node in the node list and choose Update status. Older firmware and a disconnected node have no shortcut — the field itself is still the way in. ", "url": "/Meshtastic-Android/main/en/user/settings-radio-user.html#user-settings", "relUrl": "/en/user/settings-radio-user.html#user-settings" },"4443": { "doc": "Settings — Radio & User", "title": "Configuration", - "content": "Device Config . On Settings → Device configuration → Device. | Setting | Description | Default | . | Device Role | Node behavior. The picker lists the firmware names (CLIENT, ROUTER, ROUTER_LATE, TAK, and so on), and the description of whichever role is selected appears under the field. Choosing ROUTER or ROUTER_LATE asks you to confirm you have read the device-role guidance first | CLIENT | . | Rebroadcast Mode | How the node retransmits messages. As with the role, the picker lists the firmware names and describes only the selected one | ALL | . | Node Info Broadcast Interval | How often the node re-announces itself. A dropdown of fixed intervals — Unset, then 3 to 72 hours — not a value you type in seconds | 3 hours | . | Double Tap as Button | Treat a double tap as a button press | Disabled | . | Triple Click Ad Hoc Ping | Send an ad-hoc position ping on a triple click | Disabled | . | LED Heartbeat | Blink the status LED periodically | Enabled | . | Time Zone | POSIX time-zone string for the device clock, with buttons to copy your phone’s zone or clear it | — | . | Button / Buzzer GPIO | Advanced: which pins the button and buzzer are wired to | — | . LoRa Config . On Settings → LoRa. | Setting | Description | Default | . | Region | Regulatory region for frequency bands. You must set this before transmitting | Unset (must configure) | . | Presets | Speed/range tradeoff | LongFast | . | Number of Hops | Maximum retransmit hops | 3 | . | Transmit Power | Transmission power (dBm); 0 = max allowed for region | 0 (region max) | . | Frequency Override | Overrides the computed operating frequency outright (MHz). It does not offset the calculated value — leave at 0 unless you know you need a specific frequency | 0 (use calculated) | . | Use Preset | On by default. Turn it off to set Spread Factor, Coding Rate and Bandwidth by hand instead of taking them from the modem preset | On | . | Spread Factor | Manual mode only: 7–12. Higher spreads further but slower | From preset | . | Coding Rate | Manual mode only: 5–8. More redundancy costs airtime | From preset | . | Bandwidth | Manual mode only: the channel bandwidth in kHz, typed in directly. On the 2.4 GHz region the app offers a list of the bandwidths your radio supports instead, and a stored value that is not on that list shows as Unsupported and blocks saving until you pick a supported one | From preset | . | Frequency Slot | Which slot within the region’s band to use. 0 derives it from the primary channel name | 0 (automatic) | . | Transmit Enabled | Turning this off makes the node receive-only | On | . | Override Duty Cycle | Ignores the region’s duty-cycle limit. Illegal in most regions; turn it on only where your license permits | Off | . | Ignore MQTT | Drop packets that arrived from MQTT rather than over the air. The firmware turns this on for you whenever you set a region that has a duty-cycle limit — the EU bands, Thailand, and Ukraine 433 | Off, until you set a duty-cycle-limited region | . | Ok to MQTT | Allow your packets to be forwarded to MQTT by gateways | Off | . | RX Boosted Gain | Extra receive gain on SX126x radios; costs a little current | Off | . | PA fan disabled | Turn off the power-amplifier fan on hardware that has one | Off | . Some regions are amateur-radio allocations whose presets only licensed operators may use. On firmware 2.8 or newer the app knows which regions those are and grays the whole Presets list out until Licensed amateur radio (Ham) is turned on for the node you are configuring; the text under the field says so while it is grayed out. ⚠️ Important: Operating without the correct region may violate local radio regulations. See the region configuration guide on meshtastic.org for details. Modem Presets . The Lite, Narrow, Medium Turbo, and Tiny presets need firmware 2.8 or newer — the app hides them on older radios. 💡 Tip: The SNR Limit values are negative on purpose. LoRa can decode signals below the noise floor, so a more-negative limit means the preset tolerates a weaker, noisier signal (more range). See How the Signal Meter Works for the full explanation. | Preset | Range | Speed | SNR Limit | Best For | . | Short Turbo | ~1 km | 21.9 kbps | −7.5 dB | Dense urban with line-of-sight; data-heavy applications | . | Short Fast | ~3 km | 10.9 kbps | −7.5 dB | Urban neighborhoods; buildings within a few blocks | . | Short Slow | ~5 km | 6.25 kbps | −10 dB | Suburban short-range; moderate building density | . | Medium Fast | ~5 km | 3.52 kbps | −12.5 dB | Suburban areas; moderate building density | . | Medium Slow | ~8 km | 1.95 kbps | −15 dB | Suburban/rural; moderate range with slower speed | . | Long Turbo | ~10 km | 1.34 kbps | −17.5 dB | Similar range to Long Fast but with 500 kHz bandwidth; faster throughput | . | Long Fast | ~10 km | 1.1 kbps | −17.5 dB | General use (default) — balanced range and speed | . | Long Moderate | ~20 km | 0.34 kbps | −17.5 dB | Rural with some terrain; occasional use | . | Lite Fast | ~5 km | 1.76 kbps | −12.5 dB | EU 866 MHz SRD band (125 kHz BW); comparable to Medium Fast | . | Lite Slow | ~10 km | 0.98 kbps | −15 dB | EU 866 MHz SRD band (125 kHz BW); comparable to Long Fast | . | Narrow Fast | ~5 km | 2.28 kbps | −7.5 dB | EU 868 MHz band (62.5 kHz BW); avoids interference with other devices | . | Narrow Slow | ~10 km | 1.30 kbps | −10 dB | EU 868 MHz band (62.5 kHz BW); comparable to Long Fast | . | Medium Turbo | ~5 km | 7.0 kbps | −12.5 dB | Like Medium Fast but with 500 kHz bandwidth; not legal in every region. Needs firmware 2.8 or newer | . | Tiny Fast | ~10 km | 0.68 kbps | −7.5 dB | Amateur bands that cap occupied bandwidth; these presets use 15.6 kHz. Needs firmware 2.8 or newer, an SX126x or SX127x radio, and a TCXO of ±5 ppm or better | . | Tiny Slow | ~20 km | 0.33 kbps | −10 dB | Same band restrictions as Tiny Fast, longer range. Same firmware, radio, and TCXO requirements | . | Long Slow | ~30 km | 0.18 kbps | −20 dB | ⚠️ Deprecated — still selectable but may be removed in a future firmware release | . | Very Long Slow | ~40+ km | 0.09 kbps | −20 dB | ⚠️ Deprecated — still selectable but may be removed in a future firmware release | . ℹ️ Note: This table uses the common short names. The app’s Presets dropdown lists the raw firmware names instead — SHORT_FAST, LONG_FAST, LITE_FAST, NARROW_FAST, and so on. Local Mesh Discovery shows the same presets as Long Fast and Short Turbo. Choosing a Modem Preset . The modem preset controls the fundamental tradeoff between range and data rate: . | Slower presets use more spreading, making signals decodable at weaker signal levels (lower SNR limit). This means longer range but fewer bytes per second. | Faster presets pack more data per transmission but require a stronger signal to decode. | . Practical guidance: . | Urban mesh (many nodes, short distances): Use Long Fast (default) or Short Fast. Higher speed means less airtime congestion when many nodes share the channel. | Rural/sparse mesh (few nodes, long distances): Use Long Moderate. Range matters more than speed when nodes are far apart. | EU 866/868 MHz regulatory compliance: Use Lite Fast, Lite Slow, Narrow Fast, or Narrow Slow — these are optimized for the EU SRD/868 MHz bands with narrower bandwidths. | Fixed infrastructure links: Use Short Turbo or Long Turbo for dedicated point-to-point links with good antennas and line-of-sight. | Mixed environments: Stick with Long Fast — it’s the community default and ensures compatibility with others in your area. | . All nodes on the same channel must use the same modem preset. Nodes with mismatched presets cannot communicate even if they share the same frequency and encryption key. The range estimates in the Modem Presets table assume flat terrain and modest antennas. Elevation advantage (hilltop, rooftop) dramatically increases effective range. A well-placed Router with Long Fast can often outperform a ground-level node with Long Slow. Display Config . On Settings → Device configuration → Display. These control the radio’s own screen, not the app’s. | Setting | Description | . | Screen on for | How long the display stays lit before sleeping | . | Carousel interval | How often the radio cycles between screens on its own | . | Display mode | Screen layout/density used by the firmware | . | Display units | Metric or Imperial on the radio’s screen | . | Use 12h clock format | Show the radio’s clock as 12-hour rather than 24-hour | . | Bold Heading | Draw the screen’s heading text in bold | . | Flip screen | Rotate the display 180° for an inverted mounting | . | OLED type | Auto, SSD1306, SH1106, SH1107 | . | Wake on tap or motion | Light the screen when the radio is tapped or moved | . | Compass orientation | Rotation offset for the compass rose (0°, 90°, 180°, 270°) | . | Always point north | Locks the compass rose north-up instead of rotating it with your heading. Independent of Compass orientation — neither replaces the other | . Position Config . On Settings → Device configuration → Position. ⚠️ Important: Saving this screen always reboots the radio. | Setting | Description | . | GPS Mode (Physical Hardware) | Three-state: GPS enabled, disabled, or not present. Not a simple on/off | . | GPS Polling Interval | How often the radio asks its GPS for a fix | . | Broadcast Interval | How often the position is shared with the mesh | . | Smart Position | Broadcast based on movement rather than purely on the clock | . | Smart Interval | With Smart Position on, the shortest gap between broadcasts | . | Smart Distance | With Smart Position on, how far you must move before broadcasting | . | Fixed Position | Use a manually entered latitude, longitude and altitude instead of the GPS | . | Position Flags | A group of toggles choosing which fields ride along with a position — altitude, its reference and precision, satellites in view, timestamp, and so on | . | GPS EN / Receive / Transmit GPIO | Advanced: the pins the GPS module is wired to | . Power Config . On Settings → Device configuration → Power. | Setting | Description | . | Enable power saving mode | Let the radio sleep aggressively between activity | . | Shutdown on power loss | Power the device down after external power disappears | . | Super deep sleep duration | How long the deepest sleep state lasts | . | Minimum wake time | The shortest time the radio stays awake once woken | . | Wait for Bluetooth duration | How long to wait for a phone to connect before sleeping | . | ADC multiplier override | Turn on a manual correction for battery-voltage readings | . | ADC multiplier override ratio | The correction factor itself, used only when the override is on | . | Battery INA_2XX I2C address | Address of an external INA-series power sensor, if fitted | . Network Config . On Settings → Device configuration → Network, on radios with Wi-Fi or Ethernet. ⚠️ Warning: Turning on Wi-Fi enabled or Ethernet enabled ends the Bluetooth connection between your phone and the radio. Reconnect over the network afterwards from the Connections screen, or turn Wi-Fi off again from the radio’s own screen or over USB. Saving this screen also always reboots the radio. | Setting | Description | . | Wi-Fi enabled | Enable the Wi-Fi radio (ESP32 radios) | . | SSID | Network name to connect to. Appears only once Wi-Fi enabled is on, along with Password. Scan Wi-Fi QR code fills both from a standard Wi-Fi QR code; on Android, holding the phone against a Wi-Fi NFC tag while this screen is open fills them the same way, and the app offers to open system settings if NFC is turned off | . | Password | Network password | . | Ethernet enabled | Use a wired connection on hardware that has one | . | IPv4 mode | DHCP, or a static address configured with the four fields that follow | . | Wi-Fi IP / Subnet / Gateway / DNS | The static address, only used when IPv4 mode is static | . | UDP broadcasting | Share mesh traffic with other nodes over the local network | . | NTP server | Time synchronization server | . | rsyslog server | Remote logging server | . Bluetooth Config . On Settings → Device configuration → Bluetooth, on radios with Bluetooth. ⚠️ Important: Saving this screen always reboots the radio. | Setting | Description | . | Bluetooth enabled | Enable/disable BLE radio | . | Pairing mode | Fixed PIN, Random PIN, or No PIN | . | Fixed PIN | PIN code for pairing. Must be exactly six digits — the field rejects anything else | . Security Config . On Settings → Security. The screen is grouped into cards: Packet authenticity, Direct Message Key (your node’s key pair), Admin Keys, Logs, and Administration. ⚠️ Important: Saving this screen always reboots the radio. | Setting | Description | . | Public Key | Your node’s public key (read-only) | . | Admin Key | Keys permitted to administer this node remotely — up to three | . | Private Key | Your node’s private key (handle securely). Shown redacted when you are viewing another node over remote admin — the firmware does not send it | . | Regenerate Private Key | Issues a new keypair for this node, behind a confirmation. Every peer that knew your old key must learn the new one | . | Admin Channel Enabled | ⚠️ Removed — now configured automatically when an admin key is set | . | Serial console | Serial console over the Stream API | . | Debug log API enabled | Output live debug logging over serial, and view and export position-redacted radio logs over Bluetooth | . | Managed Mode | Restrict non-admin channel changes. Only selectable once an Admin Key is set | . | Backup Keys | Save an encrypted backup of the node’s keys on this phone (Android only, and only for your own node) | . | Restore Keys | Write the backed-up keys back to the node (available once a backup exists) | . | Delete Key Backup | Remove the stored key backup from this phone | . | Protection level | How unsigned or relayed packets are treated: Strict — Require authentication, Balanced — Prefer authenticated, or Compatible — Accept unsigned (requires supporting firmware; Strict asks for confirmation) | . Lockdown Mode . Lockdown encrypts the device’s storage and requires a passphrase for each connection. It needs supporting firmware; the row does not appear otherwise. Enabling it asks you to set and confirm a passphrase, and to acknowledge that it locks the debug (SWD) port on hardware that supports locking. You can turn lockdown off again at any time with the passphrase, and a full device erase restores the hardware regardless. Alongside the passphrase you set the limits that end a session automatically: . | Field | What it does | . | Boots remaining | How many device boots the unlocked state survives | . | Hours until expiry | Wall-clock lifetime of the unlocked state | . | Session cap (minutes) | A per-boot uptime cap on the unlocked state. 0, the default, means no cap | . Once active, the row reads Active — storage encrypted, this connection authenticated when unlocked, or Active — enter your passphrase to unlock this connection when not. Lock Now ends the current session immediately. Repeated wrong passphrases are rate-limited with a back-off before you can try again. ⚠️ Warning: There is no passphrase recovery. Losing it means erasing the device to get it back, which destroys its keys, channels and settings. ", + "content": "Device Config . On Settings → Device configuration → Device. | Setting | Description | Default | . | Device Role | Node behavior. The picker lists the firmware names (CLIENT, ROUTER, ROUTER_LATE, TAK, and so on), and the description of whichever role is selected appears under the field. Choosing ROUTER or ROUTER_LATE asks you to confirm you have read the device-role guidance first | CLIENT | . | Rebroadcast Mode | How the node retransmits messages. As with the role, the picker lists the firmware names and describes only the selected one | ALL | . | Node Info Broadcast Interval | How often the node re-announces itself. A dropdown of fixed intervals — Unset, then 3 to 72 hours — not a value you type in seconds | 3 hours | . | Double Tap as Button | Treat a double tap as a button press | Disabled | . | Triple Click Ad Hoc Ping | Send an ad-hoc position ping on a triple click | Disabled | . | LED Heartbeat | Blink the status LED periodically | Enabled | . | Time Zone | POSIX time-zone string for the device clock, with buttons to copy your phone’s zone or clear it | — | . | Button / Buzzer GPIO | Advanced: which pins the button and buzzer are wired to | — | . LoRa Config . On Settings → LoRa. | Setting | Description | Default | . | Region | Regulatory region for frequency bands. You must set this before transmitting. On firmware 2.8 or newer, the first region set also creates the node’s identity key and gives it a new node number | Unset (must configure) | . | Presets | Speed/range tradeoff | LongFast | . | Number of Hops | Maximum retransmit hops | 3 | . | Transmit Power | Transmission power (dBm); 0 = max allowed for region | 0 (region max) | . | Frequency Override | Overrides the computed operating frequency outright (MHz). It does not offset the calculated value — leave at 0 unless you know you need a specific frequency | 0 (use calculated) | . | Use Preset | On by default. Turn it off to set Spread Factor, Coding Rate and Bandwidth by hand instead of taking them from the modem preset | On | . | Spread Factor | Manual mode only: 5–12. Higher spreads further but slower. On SX127x (RF95) radios the firmware does not accept 5 or 6 and uses 11 instead | From preset | . | Coding Rate | Manual mode only: 5–8. More redundancy costs airtime | From preset | . | Bandwidth | Manual mode only: the channel bandwidth in kHz, typed in directly. On the 2.4 GHz region the app offers a list of the bandwidths your radio supports instead, and a stored value that is not on that list shows as Unsupported and blocks saving until you pick a supported one | From preset | . | Frequency Slot | Which slot within the region’s band to use. 0 derives it from the primary channel name | 0 (automatic) | . | Transmit Enabled | Turning this off makes the node receive-only | On | . | Override Duty Cycle | Ignores the region’s duty-cycle limit. Illegal in most regions; turn it on only where your license permits | Off | . | Ignore MQTT | Drop packets that arrived from MQTT rather than over the air. The firmware turns this on for you whenever you set a region that has a duty-cycle limit — the EU bands, Thailand, and Ukraine 433 | Off, until you set a duty-cycle-limited region | . | Ok to MQTT | Allow your packets to be forwarded to MQTT by gateways | Off | . | RX Boosted Gain | Extra receive gain on SX126x radios; costs a little current | Off | . | PA fan disabled | Turn off the power-amplifier fan on hardware that has one | Off | . Some regions are amateur-radio allocations whose presets only licensed operators may use. On firmware 2.8 or newer the app knows which regions those are and grays the whole Presets list out until Licensed amateur radio (Ham) is turned on for the node you are configuring; the text under the field says so while it is grayed out. ⚠️ Important: Operating without the correct region may violate local radio regulations. See the region configuration guide on meshtastic.org for details. Modem Presets . The Lite, Narrow, Medium Turbo, and Tiny presets need firmware 2.8 or newer — the app hides them on older radios. 💡 Tip: The SNR Limit values are negative on purpose. LoRa can decode signals below the noise floor, so a more-negative limit means the preset tolerates a weaker, noisier signal (more range). See How the Signal Meter Works for the full explanation. | Preset | Range | Speed | SNR Limit | Best For | . | Short Turbo | ~1 km | 21.9 kbps | −7.5 dB | Dense urban with line-of-sight; data-heavy applications | . | Short Fast | ~3 km | 10.9 kbps | −7.5 dB | Urban neighborhoods; buildings within a few blocks | . | Short Slow | ~5 km | 6.25 kbps | −10 dB | Suburban short-range; moderate building density | . | Medium Fast | ~5 km | 3.52 kbps | −12.5 dB | Suburban areas; moderate building density | . | Medium Slow | ~8 km | 1.95 kbps | −15 dB | Suburban/rural; moderate range with slower speed | . | Long Turbo | ~10 km | 1.34 kbps | −17.5 dB | Similar range to Long Fast but with 500 kHz bandwidth; faster throughput | . | Long Fast | ~10 km | 1.1 kbps | −17.5 dB | General use (default) — balanced range and speed | . | Long Moderate | ~20 km | 0.34 kbps | −17.5 dB | Rural with some terrain; occasional use | . | Lite Fast | ~5 km | 1.76 kbps | −12.5 dB | EU 866 MHz SRD band (125 kHz BW); comparable to Medium Fast | . | Lite Slow | ~10 km | 0.98 kbps | −15 dB | EU 866 MHz SRD band (125 kHz BW); comparable to Long Fast | . | Narrow Fast | ~5 km | 2.28 kbps | −7.5 dB | EU 868 MHz band (62.5 kHz BW); avoids interference with other devices | . | Narrow Slow | ~10 km | 1.30 kbps | −10 dB | EU 868 MHz band (62.5 kHz BW); comparable to Long Fast | . | Medium Turbo | ~5 km | 7.0 kbps | −12.5 dB | Like Medium Fast but with 500 kHz bandwidth; not legal in every region. Needs firmware 2.8 or newer | . | Tiny Fast | ~10 km | 0.68 kbps | −7.5 dB | Amateur bands that cap occupied bandwidth; these presets use 15.6 kHz. Needs firmware 2.8 or newer, an SX126x or SX127x radio, and a TCXO of ±5 ppm or better | . | Tiny Slow | ~20 km | 0.33 kbps | −10 dB | Same band restrictions as Tiny Fast, longer range. Same firmware, radio, and TCXO requirements | . | Long Slow | ~30 km | 0.18 kbps | −20 dB | ⚠️ Deprecated — still selectable but may be removed in a future firmware release | . | Very Long Slow | ~40+ km | 0.09 kbps | −20 dB | ⚠️ Deprecated — still selectable but may be removed in a future firmware release | . ℹ️ Note: This table uses the common short names. The app’s Presets dropdown lists the raw firmware names instead — SHORT_FAST, LONG_FAST, LITE_FAST, NARROW_FAST, and so on. Local Mesh Discovery shows the same presets as Long Fast and Short Turbo. Choosing a Modem Preset . The modem preset controls the fundamental tradeoff between range and data rate: . | Slower presets use more spreading, making signals decodable at weaker signal levels (lower SNR limit). This means longer range but fewer bytes per second. | Faster presets pack more data per transmission but require a stronger signal to decode. | . Practical guidance: . | Urban mesh (many nodes, short distances): Use Long Fast (default) or Short Fast. Higher speed means less airtime congestion when many nodes share the channel. | Rural/sparse mesh (few nodes, long distances): Use Long Moderate. Range matters more than speed when nodes are far apart. | EU 866/868 MHz regulatory compliance: Use Lite Fast, Lite Slow, Narrow Fast, or Narrow Slow — these are optimized for the EU SRD/868 MHz bands with narrower bandwidths. | Fixed infrastructure links: Use Short Turbo or Long Turbo for dedicated point-to-point links with good antennas and line-of-sight. | Mixed environments: Stick with Long Fast — it’s the community default and ensures compatibility with others in your area. | . All nodes on the same channel must use the same modem preset. Nodes with mismatched presets cannot communicate even if they share the same frequency and encryption key. The range estimates in the Modem Presets table assume flat terrain and modest antennas. Elevation advantage (hilltop, rooftop) dramatically increases effective range. A well-placed Router with Long Fast can often outperform a ground-level node with Long Slow. Display Config . On Settings → Device configuration → Display. These control the radio’s own screen, not the app’s. | Setting | Description | . | Screen on for | How long the display stays lit before sleeping | . | Carousel interval | How often the radio cycles between screens on its own | . | Display mode | Screen layout/density used by the firmware | . | Display units | Metric or Imperial on the radio’s screen | . | Use 12h clock format | Show the radio’s clock as 12-hour rather than 24-hour | . | Bold Heading | Draw the screen’s heading text in bold | . | Flip screen | Rotate the display 180° for an inverted mounting | . | OLED type | Auto, SSD1306, SH1106, SH1107 | . | Wake on tap or motion | Light the screen when the radio is tapped or moved | . | Compass orientation | Rotation offset for the compass rose (0°, 90°, 180°, 270°) | . | Always point north | Locks the compass rose north-up instead of rotating it with your heading. Independent of Compass orientation — neither replaces the other | . Position Config . On Settings → Device configuration → Position. ⚠️ Important: Saving this screen always reboots the radio. | Setting | Description | . | GPS Mode (Physical Hardware) | Three-state: GPS enabled, disabled, or not present. Not a simple on/off | . | GPS Polling Interval | How often the radio asks its GPS for a fix | . | Broadcast Interval | How often the position is shared with the mesh | . | Smart Position | Broadcast based on movement rather than purely on the clock | . | Smart Interval | With Smart Position on, the shortest gap between broadcasts | . | Smart Distance | With Smart Position on, how far you must move before broadcasting | . | Fixed Position | Use a manually entered latitude, longitude and altitude instead of the GPS | . | Position Flags | A group of toggles choosing which fields ride along with a position — altitude, its reference and precision, satellites in view, timestamp, and so on | . | GPS EN / Receive / Transmit GPIO | Advanced: the pins the GPS module is wired to | . Power Config . On Settings → Device configuration → Power. | Setting | Description | . | Enable power saving mode | Let the radio sleep aggressively between activity | . | Shutdown on power loss | Power the device down after external power disappears | . | Super deep sleep duration | How long the deepest sleep state lasts | . | Minimum wake time | The shortest time the radio stays awake once woken | . | Wait for Bluetooth duration | How long to wait for a phone to connect before sleeping | . | ADC multiplier override | Turn on a manual correction for battery-voltage readings | . | ADC multiplier override ratio | The correction factor itself, used only when the override is on | . | Battery INA_2XX I2C address | Address of an external INA-series power sensor, if fitted | . Network Config . On Settings → Device configuration → Network, on radios with Wi-Fi or Ethernet. ⚠️ Warning: Turning on Wi-Fi enabled or Ethernet enabled ends the Bluetooth connection between your phone and the radio. Reconnect over the network afterwards from the Connections screen, or turn Wi-Fi off again from the radio’s own screen or over USB. Saving this screen also always reboots the radio. | Setting | Description | . | Wi-Fi enabled | Enable the Wi-Fi radio (ESP32 radios) | . | SSID | Network name to connect to. Appears only once Wi-Fi enabled is on, along with Password. Scan Wi-Fi QR code fills both from a standard Wi-Fi QR code; on Android, holding the phone against a Wi-Fi NFC tag while this screen is open fills them the same way, and the app offers to open system settings if NFC is turned off | . | Password | Network password | . | Ethernet enabled | Use a wired connection on hardware that has one | . | IPv4 mode | DHCP, or a static address configured with the four fields that follow | . | Wi-Fi IP / Subnet / Gateway / DNS | The static address, only used when IPv4 mode is static | . | UDP broadcasting | Share mesh traffic with other nodes over the local network | . | NTP server | Time synchronization server | . | rsyslog server | Remote logging server | . Bluetooth Config . On Settings → Device configuration → Bluetooth, on radios with Bluetooth. ⚠️ Important: Saving this screen always reboots the radio. | Setting | Description | . | Bluetooth enabled | Enable/disable BLE radio | . | Pairing mode | Fixed PIN, Random PIN, or No PIN | . | Fixed PIN | PIN code for pairing. Must be exactly six digits — the field rejects anything else | . Security Config . On Settings → Security. The screen is grouped into cards: Packet authenticity, Direct Message Key (your node’s key pair), Admin Keys, Logs, and Administration. ⚠️ Important: Saving this screen always reboots the radio. | Setting | Description | . | Public Key | Your node’s public key (read-only) | . | Admin Key | Keys permitted to administer this node remotely — up to three | . | Private Key | Your node’s private key (handle securely). Shown redacted when you are viewing another node over remote admin — the firmware does not send it | . | Regenerate Private Key | Issues a new keypair for this node, behind a confirmation. Every peer that knew your old key must learn the new one | . | Admin Channel Enabled | ⚠️ Removed — now configured automatically when an admin key is set | . | Serial console | Serial console over the Stream API | . | Debug log API enabled | Output live debug logging over serial, and view and export position-redacted radio logs over Bluetooth | . | Managed Mode | Restrict non-admin channel changes. Only selectable once an Admin Key is set | . | Backup Keys | Save an encrypted backup of the node’s keys on this phone (Android only, and only for your own node) | . | Restore Keys | Write the backed-up keys back to the node (available once a backup exists) | . | Delete Key Backup | Remove the stored key backup from this phone | . | Protection level | How unsigned or relayed packets are treated: Strict — Require authentication, Balanced — Prefer authenticated, or Compatible — Accept unsigned (requires supporting firmware; Strict asks for confirmation) | . Lockdown Mode . Lockdown encrypts the device’s storage and requires a passphrase for each connection. It needs supporting firmware; the row does not appear otherwise. Enabling it asks you to set and confirm a passphrase, and to acknowledge that it locks the debug (SWD) port on hardware that supports locking. You can turn lockdown off again at any time with the passphrase, and a full device erase restores the hardware regardless. Alongside the passphrase you set the limits that end a session automatically: . | Field | What it does | . | Boots remaining | How many device boots the unlocked state survives | . | Hours until expiry | Wall-clock lifetime of the unlocked state | . | Session cap (minutes) | A per-boot uptime cap on the unlocked state. 0, the default, means no cap | . Once active, the row reads Active — storage encrypted, this connection authenticated when unlocked, or Active — enter your passphrase to unlock this connection when not. Lock Now ends the current session immediately. Repeated wrong passphrases are rate-limited with a back-off before you can try again. ⚠️ Warning: There is no passphrase recovery. Losing it means erasing the device to get it back, which destroys its keys, channels and settings. ", "url": "/Meshtastic-Android/main/en/user/settings-radio-user.html#configuration", "relUrl": "/en/user/settings-radio-user.html#configuration" @@ -34798,7 +34798,7 @@ },"4971": { "doc": "TAK Integration", "title": "Setup", - "content": "Prerequisites . | ATAK (Android Team Awareness Kit), iTAK, or WinTAK installed | Your node’s Device Role (Device configuration) set to TAK or TAK Tracker — this is what makes the TAK module appear in Module configuration at all | Firmware 2.8.0 or newer on the radio. Earlier firmware accepts a TAK config write and never stores it, so the app hides the TAK module entry below that version even when the role is set correctly. See Firmware Updates | . ⚠️ Warning: The old Meshtastic ATAK Plugin is no longer part of this path and cannot work. It bridged through the cross-process AIDL API, which was removed in app 2.8.0; the mesh service is now in-process only. Do not install it. Interop today runs over the app’s own local TAK server plus the Mesh to CoT Converter, both described below, with stock ATAK/iTAK/WinTAK. Configuration . Navigate to Settings → Module configuration → TAK. The module’s own settings are your TAK identity — there is no separate enable switch here, because the Device Role setting in Device configuration is what turns TAK on. Your node broadcasts this identity, which appears on TAK maps. | Setting | Description | . | Team Color | Your team color on the TAK map (e.g., Blue, Red, Cyan, Green) | . | Member Role | Your operational role within that team (Team Member, Team Lead, HQ, Medic, RTO, etc.) | . Your TAK callsign isn’t a separate setting — it’s derived automatically from your Meshtastic node name. 💡 Tip: Team/role colors are the standard TAK affiliation colors. Coordinate with your TAK team to use consistent team assignments. Local TAK Server . The app can also run a local TAK server so ATAK/iTAK on the same phone can connect directly, without a remote TAK server. The server binds to localhost only (127.0.0.1:8089) and uses TLS with mutual certificate authentication (mTLS), so it is not reachable from other devices on the network. Open Settings → Advanced → TAK Server. These are app settings stored on this phone, which is why they sit next to Firmware Update and Debug Panel rather than under the TAK module config — and why they need neither a TAK role nor firmware 2.8.0: . | Enable Local TAK Server — starts the loopback-only mTLS server on port 8089 for ATAK/iTAK connections from the same phone. | TAK Mesh Channel — selects which Meshtastic channel outgoing TAK traffic is sent on (default: the primary channel, index 0). Incoming TAK traffic is accepted from any channel. Matches the equivalent setting on iOS and in the legacy ATAK plugin. | Mesh to CoT Converter — off by default, and shown under the server toggle. With the server running, this synthesizes a CoT contact for every node in your node database, so ordinary Meshtastic nodes appear on the ATAK map as contacts. This is what replaced the old plugin’s node visibility — without it, only TAK-role nodes show up. | Export TAK Data Package — generates a .zip data package that ATAK/iTAK can import to connect to this server. | . ", + "content": "Prerequisites . | ATAK (Android Team Awareness Kit), iTAK, or WinTAK installed | Your node’s Device Role (Device configuration) set to TAK or TAK Tracker — this is what makes the TAK module appear in Module configuration at all | Firmware 2.8.0 or newer on the radio. Earlier firmware accepts a TAK config write and never stores it, so the app hides the TAK module entry below that version even when the role is set correctly. See Firmware Updates | . ⚠️ Warning: The old Meshtastic ATAK Plugin is no longer part of this path and cannot work. It bridged through the cross-process AIDL API, which was removed in app 2.8.0; the mesh service is now in-process only. Do not install it. Interop today runs over the app’s own local TAK server plus the Mesh to CoT Converter, both described in the following sections, with stock ATAK/iTAK/WinTAK. Configuration . Navigate to Settings → Module configuration → TAK. The module’s own settings are your TAK identity — there is no separate enable switch here, because the Device Role setting in Device configuration is what turns TAK on. Your node broadcasts this identity, which appears on TAK maps. | Setting | Description | . | Team Color | Your team color on the TAK map (e.g., Blue, Red, Cyan, Green) | . | Member Role | Your operational role within that team (Team Member, Team Lead, HQ, Medic, RTO, etc.) | . Your TAK callsign isn’t a separate setting — it’s derived automatically from your Meshtastic node name. 💡 Tip: Team/role colors are the standard TAK affiliation colors. Coordinate with your TAK team to use consistent team assignments. Local TAK Server . The app can also run a local TAK server so ATAK/iTAK on the same phone can connect directly, without a remote TAK server. The server binds to localhost only (127.0.0.1:8089) and uses TLS with mutual certificate authentication (mTLS), so it is not reachable from other devices on the network. Open Settings → Advanced → TAK Server. These are app settings stored on this phone, which is why they sit next to Firmware Update and Debug Panel rather than under the TAK module config — and why they need neither a TAK role nor firmware 2.8.0: . | Enable Local TAK Server — starts the loopback-only mTLS server on port 8089 for ATAK/iTAK connections from the same phone. | TAK Mesh Channel — selects which Meshtastic channel outgoing TAK traffic is sent on (default: the primary channel, index 0). Incoming TAK traffic is accepted from any channel. Matches the equivalent setting on iOS and in the legacy ATAK plugin. | Mesh to CoT Converter — off by default, and shown under the server toggle. With the server running, this synthesizes a CoT contact for every node in your node database, so ordinary Meshtastic nodes appear on the ATAK map as contacts. This is what replaced the old plugin’s node visibility — without it, only TAK-role nodes show up. | Export TAK Data Package — generates a .zip data package that ATAK/iTAK can import to connect to this server. | . ", "url": "/Meshtastic-Android/main/en/user/tak.html#setup", "relUrl": "/en/user/tak.html#setup" @@ -46670,7 +46670,7 @@ },"6667": { "doc": "User Guide", "title": "What’s New in the Docs", - "content": "August 2026 — Local Mesh Discovery — Mesh Beacon advertises the region and preset your radio actually uses, requires a region and a standard modem preset before it will broadcast, and hides invitations to channels your radio already has. August 2026 — Map & Waypoints — Filter the map by node role and by how a node was heard, from a new filter sheet. August 2026 — Map & Waypoints — Every map layer and overlay now has its own opacity slider. August 2026 — Map & Waypoints — F-Droid builds draw the map with MapLibre, and the Desktop app has an interactive map for the first time. August 2026 — Settings — Radio & User — The status message moved into the User Profile, beside Long Name and Short Name; its separate module screen is gone. August 2026 — Messages & Channels — Swipe a message right to reply, double-tap it to react, and day separators group the thread. August 2026 — Messages & Channels — The conversation list keeps per-contact drafts and adds pinning, mark-unread, and swipe-to-mute/delete, and a conversation can be opened as a floating bubble. August 2026 — Units & Locale — New page. Units now follow your device region and OS locale, with a Units setting to override them, and all number formatting goes through ICU. ", + "content": "September 2026 — Nodes — Nodes on firmware 2.8 show signed and verified identity icons in place of the PKI lock, and Signed only and Encrypted only filters join the node list and the map. September 2026 — Map & Waypoints — Offline terrain (hillshade and contours) can be downloaded on Google Play, F-Droid, and Desktop. August 2026 — Local Mesh Discovery — Mesh Beacon advertises the region and preset your radio actually uses, requires a region and a standard modem preset before it will broadcast, and hides invitations to channels your radio already has. August 2026 — Map & Waypoints — Filter the map by node role and by how a node was heard, from a new filter sheet. August 2026 — Map & Waypoints — Every map layer and overlay now has its own opacity slider. August 2026 — Map & Waypoints — F-Droid builds draw the map with MapLibre, and the Desktop app has an interactive map for the first time. August 2026 — Settings — Radio & User — The status message moved into the User Profile, beside Long Name and Short Name; its separate module screen is gone. August 2026 — Messages & Channels — Swipe a message right to reply, double-tap it to react, and day separators group the thread. ", "url": "/Meshtastic-Android/main/en/user.html#whats-new-in-the-docs", "relUrl": "/en/user.html#whats-new-in-the-docs" diff --git a/main/docs/developer/adding-a-feature-module.html b/main/docs/developer/adding-a-feature-module.html index 6927833f25..94ba7ef688 100644 --- a/main/docs/developer/adding-a-feature-module.html +++ b/main/docs/developer/adding-a-feature-module.html @@ -13,7 +13,7 @@ Step-by-step guide for creating a new KMP feature module in the Meshtastic proje ## Create the Module Directory -```bash +```shell mkdir -p feature/my-feature/src/{commonMain,commonTest,androidMain,jvmMain,iosMain}/kotlin/org/meshtastic/feature/myfeature ``` diff --git a/main/docs/developer/architecture.html b/main/docs/developer/architecture.html index de7c9cb1e4..0c1ebb5369 100644 --- a/main/docs/developer/architecture.html +++ b/main/docs/developer/architecture.html @@ -13,7 +13,7 @@ The Meshtastic Android and Desktop apps follow a modular Kotlin Multiplatform (K ## Layer Overview -``` +```text ┌─────────────────────────────────────────────┐ │ androidApp / desktopApp │ Platform entry points ├─────────────────────────────────────────────┤ @@ -101,7 +101,7 @@ Protobuf models come from the external `org.meshtastic:protobufs` Maven artifact Each module uses the standard KMP source set hierarchy: -``` +```text src/ ├── commonMain/ ← Shared code (all platforms) ├── commonTest/ ← Shared tests diff --git a/main/docs/developer/codebase.html b/main/docs/developer/codebase.html index 4fa5a2ce46..99b9459ffc 100644 --- a/main/docs/developer/codebase.html +++ b/main/docs/developer/codebase.html @@ -13,7 +13,7 @@ Repository layout, namespacing conventions, and build system overview. ## Repository Structure -``` +```text Meshtastic-Android/ ├── androidApp/ # Android application module │ ├── src/main/ # Shared Android code @@ -72,7 +72,7 @@ Meshtastic-Android/ ## Namespacing Convention All Kotlin packages follow the pattern: -``` +```text org.meshtastic.{layer}.{module}.{subpackage} ``` @@ -120,7 +120,7 @@ block rather than assuming a plugin does or does not exist. ### Key Gradle Tasks -```bash +```shell # Compile check across all KMP targets ./gradlew kmpSmokeCompile diff --git a/main/docs/developer/contributing.html b/main/docs/developer/contributing.html index 9ce39899b4..db764e2956 100644 --- a/main/docs/developer/contributing.html +++ b/main/docs/developer/contributing.html @@ -45,7 +45,7 @@ Examples: ## Commit Messages Follow conventional commit style: -``` +```text feat(docs): add in-app documentation browser fix(ble): handle reconnection timeout refactor(navigation): migrate to typed routes @@ -73,7 +73,7 @@ Before submitting: - **Line length:** 120 characters maximum Run formatting: -```bash +```shell ./gradlew spotlessApply ``` @@ -88,12 +88,12 @@ Run formatting: ## Verification Full pre-merge verification: -```bash +```shell ./gradlew spotlessCheck detekt kmpSmokeCompile test allTests ``` For docs-specific changes, also run: -```bash +```shell ./gradlew generateDocsBundle validateDocsBundle ``` diff --git a/main/docs/developer/navigation-and-deep-links.html b/main/docs/developer/navigation-and-deep-links.html index 66da9be38f..403e949dd0 100644 --- a/main/docs/developer/navigation-and-deep-links.html +++ b/main/docs/developer/navigation-and-deep-links.html @@ -141,7 +141,7 @@ These are called from the settings navigation composition. ## Testing Deep link routing is tested in: -``` +```text core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt ``` diff --git a/main/docs/developer/testing.html b/main/docs/developer/testing.html index ea870d6659..cd348e7e89 100644 --- a/main/docs/developer/testing.html +++ b/main/docs/developer/testing.html @@ -17,7 +17,7 @@ Testing strategy and practices for the Meshtastic KMP project. Shared tests that run on all platforms: -```bash +```shell ./gradlew allTests ``` @@ -30,7 +30,7 @@ Shared tests that run on all platforms: Android-specific tests that run on JVM: -```bash +```shell ./gradlew test ``` @@ -59,7 +59,7 @@ Uses Android Gradle Plugin's native (layoutlib) screenshot testing framework, sp - **`:screenshot-tests`** — the **visual-regression gate**. CI runs `validateDebugScreenshotTest` on it; reframing one of these baselines is a real diff to review. Holds atomic, dual-purpose components. - **`:docs-screenshots`** — **generate-only**, *not* validated in CI. Holds doc-framed compositions whose framing is tuned for the docs site, so reframing a doc image never churns the regression gate. -```bash +```shell ./gradlew :screenshot-tests:updateDebugScreenshotTest # record regression goldens ./gradlew :screenshot-tests:validateDebugScreenshotTest # compare against goldens (CI gate) ./gradlew :docs-screenshots:updateDebugScreenshotTest # record doc-framed composition images @@ -74,7 +74,7 @@ The `:baselineprofile` module (#5735) generates a [Baseline Profile](https://dev The Macrobenchmark generator (`BaselineProfileGenerator`) and the before/after benchmark (`StartupBenchmark`) live in `baselineprofile/src/main/kotlin/org/meshtastic/baselineprofile/`. Both run on a device/emulator: -```bash +```shell ./gradlew :androidApp:generateGoogleReleaseBaselineProfile # Generate the profile (commit the output) ./gradlew :androidApp:benchmarkGoogleReleaseBaselineProfile # Quantify the cold-start win ``` @@ -87,7 +87,7 @@ Extending the journey past cold start needs a fake transport or a connected radi ## Test Organization -``` +```text feature/my-feature/src/ ├── commonTest/kotlin/org/meshtastic/feature/myfeature/ │ ├── MyBusinessLogicTest.kt @@ -116,7 +116,7 @@ feature/my-feature/src/ ## Running Tests -```bash +```shell # All KMP tests ./gradlew allTests diff --git a/main/docs/user/desktop.html b/main/docs/user/desktop.html index abb3322b87..76b077bcb1 100644 --- a/main/docs/user/desktop.html +++ b/main/docs/user/desktop.html @@ -57,7 +57,7 @@ Bluetooth Low Energy is supported on desktop via the [Kable](https://github.com/ ---------|---------|---------|-------| Messaging | ✓ | ✓ | Full parity | Node List | ✓ | ✓ | Full parity | - Map | ✓ | ✓ | Interactive MapLibre map, with base map and overlay pickers and custom tile sources. No offline downloads or local `.mbtiles` archives | + Map | ✓ | ✓ | Interactive MapLibre map, with base map and overlay pickers and custom tile sources. Offline terrain (hillshade and contours) can be downloaded; offline base-map packs and local `.mbtiles` archives cannot | Map layers (`.kml`/`.kmz`/GeoJSON) | ✓ | ✓ | Same layer store and sheet as Android; imported files draw on the desktop map | Site Planner | ✓ | ✓* | *Opens in your browser on desktop; the estimate is not drawn on the desktop map | Settings | ✓ | ✓ | Full parity | @@ -117,7 +117,7 @@ Individual doc pages render with full formatting: ## Building from Source -```bash +```shell git clone https://github.com/meshtastic/Meshtastic-Android.git cd Meshtastic-Android ./gradlew :desktopApp:run @@ -129,7 +129,7 @@ Requirements: ## Known Limitations -- Offline tile downloads and local `.mbtiles` archives are not available on desktop. +- Offline base-map downloads and local `.mbtiles` archives are not available on desktop. Offline terrain is — see [Map & Waypoints](map-and-waypoints). - `.kml`/`.kmz`/GeoJSON layer import works — see [Map & Waypoints](map-and-waypoints#map-layers). Site Planner opens in your browser rather than in the app; to bring its coverage estimate onto the map, click the transmitter pin diff --git a/main/docs/user/discovery.html b/main/docs/user/discovery.html index b2587aaeb8..72bafb0a13 100644 --- a/main/docs/user/discovery.html +++ b/main/docs/user/discovery.html @@ -90,7 +90,7 @@ Mesh Beacon lets nodes invite others to join their mesh. A beaconing node period Configure it under **Settings → Module configuration → Mesh Beacon**. The entry appears only on radios running firmware 2.8.0 or newer. A read-only **Region** row at the top of the screen shows the region the beacon advertises: that region, and the preset, are always the ones the radio itself uses, so a beacon cannot invite anyone onto settings your radio is not running. - **Listen for beacons** — receive invitations broadcast by other nodes. -- **Broadcast a beacon** — periodically advertise this mesh to nearby nodes, with an optional **Beacon message** of up to 100 bytes, a **Broadcast interval** picked from fixed intervals between 1 hour and 72 hours, and an **Offered channel** chosen from your radio's own channels. The offered channel is required, and defaults to your primary channel. +- **Broadcast a beacon** — periodically advertise this mesh to nearby nodes, with an optional **Beacon message** of up to 100 bytes, a **Broadcast interval** picked from fixed intervals between 1 hour and 72 hours, and an **Offered channel** chosen from your radio's own channels. The offered channel is required, and defaults to your primary channel. Over remote admin the picker offers the primary channel only. - **Broadcast targets** — optional extra destinations beyond the offered channel. **Add target** appends a row; each row picks a **Channel** and a **Transmit preset**, and **Remove target** deletes it. With no targets, the beacon goes out on the offered channel alone. Two conditions block beacon setup: diff --git a/main/docs/user/help-and-docs.html b/main/docs/user/help-and-docs.html index 0fc497bf18..869efb0bcb 100644 --- a/main/docs/user/help-and-docs.html +++ b/main/docs/user/help-and-docs.html @@ -19,7 +19,7 @@ The docs browser lists every user-guide page. Tap a page to read it; images and ### Search -The search box sits at the top of the docs browser. Type in it to filter pages by title and keywords — results update as you type, and the **Clear search** button (✕) empties the box. +Tap the search field at the top of the docs browser to open a full-screen search view. Type to filter pages by title and keywords — results update as you type, under the same field. The back arrow, or the keyboard's search action, closes the view. The field hides while you scroll down the page list and comes back when you scroll up. ![Searching the in-app documentation](../../assets/screenshots/docs-browser_search.png) diff --git a/main/docs/user/map-and-waypoints.html b/main/docs/user/map-and-waypoints.html index e722ae6edc..e59b2213d3 100644 --- a/main/docs/user/map-and-waypoints.html +++ b/main/docs/user/map-and-waypoints.html @@ -35,7 +35,7 @@ The floating toolbar provides quick access to the compass, the map type and laye ### Filtering the Map -Tap the filter button in the floating toolbar to open **Filter map**. **Display** controls what is drawn: **Only Favorites**, **Show Waypoints**, **Show Precision Circles**, and a slider that hides nodes not heard from recently. **Node roles** is a chip per device role, plus **All** to show every role; a selected chip means that role is shown. **Nodes** narrows the set further with **Hide offline nodes**, **Only show direct nodes**, **Exclude MQTT**, **Show ignored nodes**, and **Include unknown**. +Tap the filter button in the floating toolbar to open **Filter map**. **Display** controls what is drawn: **Only Favorites**, **Show Waypoints**, **Show Precision Circles**, and a slider that hides nodes not heard from recently. **Node roles** is a chip per device role, plus **All** to show every role; a selected chip means that role is shown. **Nodes** narrows the set further with **Hide offline nodes**, **Only show direct nodes**, **Signed only**, **Encrypted only**, **Exclude MQTT**, **Show ignored nodes**, and **Include unknown** — the same rules as the node list's [filter toggles](nodes). A dot on the filter button means at least one filter is hiding something — check it before concluding the mesh is quiet. Turning **Show Waypoints** off hides every waypoint, including your own. **Show ignored nodes** adds them to the map rather than showing only them — unlike the node list's **Only show ignored Nodes**. @@ -136,8 +136,9 @@ picker, all three offer the same raster base maps: Overlays can be toggled on top of any base map, from the layers sheet: - **Weather radar** — NOAA NEXRAD reflectivity (US coverage) -- **Hillshade** — terrain relief, on **F-Droid** and **Desktop** only. Useful for understanding why a - link fails, since LoRa range is limited by terrain +- **Hillshade** — terrain relief from an online tile source, on **F-Droid** and **Desktop** only; Google + Play draws hillshade from downloaded offline terrain instead. Useful for understanding why a link + fails, since LoRa range is limited by terrain ### Adding your own tile source @@ -145,7 +146,7 @@ Any XYZ tile endpoint can be added as a base map, on every flavor and on desktop Tile Sources** at the foot of the base map picker and paste a URL template using `{z}`, `{x}` and `{y}` — plus `{s}` if the provider uses rotating subdomains. A national mapping service, for example: -``` +```text https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg ``` @@ -162,7 +163,18 @@ On **Google Play**, the layers sheet's **Offline Manager** section downloads its — water, roads and administrative boundaries extracted from the public Protomaps basemap dataset, drawn directly as map shapes rather than raster tiles. Frame the area you want, tap **Start Download**, and once it finishes flip **Show on map** to draw it (it's off by default so it never surprises you by covering up the -live map). You can still import a pre-made `.mbtiles` archive here too, as before. **Desktop** has neither. +live map). You can still import a pre-made `.mbtiles` archive here too, as before. **Desktop** has neither, though +the offline terrain described next does work there. + +### Offline terrain + +Hillshade and elevation contours can be downloaded for offline use as well, so a downloaded area still +shows why a link fails when there is no network. The terrain data comes from Mapterhorn and is credited on +the map. On **Google Play**, each downloaded region in the **Offline Manager** list has a **Download Terrain** +button and **Hillshade** and **Contours** switches; terrain attaches to that region and shares its storage limit, and an area +too large for terrain asks you to zoom in or pick a smaller region. On **F-Droid** and **Desktop**, the +layers sheet has an **Offline Terrain** section of its own: frame the area, tap **Start Download**, and the +hillshade and contours draw from the downloaded tiles from then on. ### Going offline @@ -170,8 +182,8 @@ An **Offline** pill appears over the map whenever the device has no network conn builds, if you've imported a local `.mbtiles` archive, the map switches to it automatically the moment the network drops — no toggle to remember — and switches back once you're reconnected, as long as you haven't picked a different base map yourself in between. On **F-Droid**, a downloaded offline area keeps rendering on -its own; the pill is purely informational there. **Desktop** has no offline downloads at all yet, so the pill -is informational there too. +its own; the pill is purely informational there. **Desktop** downloads offline terrain but no base-map +packs, so the pill is informational there too. ## Related Topics diff --git a/main/docs/user/mqtt.html b/main/docs/user/mqtt.html index 1dcb7c46ee..402c9dc7df 100644 --- a/main/docs/user/mqtt.html +++ b/main/docs/user/mqtt.html @@ -21,7 +21,7 @@ The MQTT module connects your node to an MQTT broker, allowing: ## How It Works -``` +```text [Your Node] → Radio → [Gateway Node with Wi-Fi] → MQTT Broker → [Remote Gateway] → Radio → [Remote Node] ``` diff --git a/main/docs/user/nodes.html b/main/docs/user/nodes.html index b98812ad2f..f843ca7527 100644 --- a/main/docs/user/nodes.html +++ b/main/docs/user/nodes.html @@ -69,19 +69,23 @@ Most users should keep the default **Client** role. Consider a different role wh > 💡 **Tip:** The mesh works best when most nodes are **Client** or **Router**. Too many Client Mute nodes reduce mesh resilience; too many Routers in a dense area can cause congestion. A good rule of thumb: one Router per 5–10 Clients in your area. -### Encryption Indicators +### Security indicators -Nodes display encryption status icons next to their name: +Each node carries one security icon beside its name in the node list. Tap it to read what it means, and choose **Show All Meanings** in that dialog for the full legend. The detail screen shows the same state in words, as a **Security** row that opens the same dialog. - Icon | Meaning | -------|---------| - 🔒 Locked | Communication uses PKI (public key infrastructure) — end-to-end encrypted with verified identity | - 🔓 Unlocked | No public key has been received for this node, so it cannot be direct messaged — use **Request User Info** on the node detail page to ask for one | - ⚠️ Mismatch | Public key mismatch — the node's key has changed since last seen (investigate before trusting) | + Icon | Meaning | Shown for | +------|---------|-----------| + Person with a shield check (green) | **Verified contact** — you verified this node's key in person by exchanging contact QR codes, so its identity is confirmed. The strongest trust the list shows. Your own connected node carries it too | Any firmware version | + Nodes icon with a shield check (green) | **Signed node** — this node signs its broadcasts with its identity key, so its identity is consistent over time, but you have not verified it in person. On firmware 2.8 the icon appears from the version alone, before any signed broadcast has been heard | Firmware 2.8 or newer, and any node whose signed broadcast your node has verified | + 🔒 Closed lock | A public key is on file and matches, so direct messages to this node are encrypted | Firmware before 2.8, or no reported version | + 🔓 Open lock | No public key has been received for this node, so it cannot be direct messaged — use **Request User Info** on the node detail page to ask for one | Firmware before 2.8, or no reported version | + ⚠️ Mismatch | **Public key mismatch** — a different key arrived for this node after one was stored. Investigate before trusting | Any firmware version | -> 💡 **Tip:** Direct messages always use PKI, so the radio needs the other node's public key before it can send one. It refuses the send rather than falling back to channel encryption. Keys arrive inside node info, which is why an open lock usually clears itself once that node is heard from properly. If you see a key mismatch warning, the node may have been reset or compromised. +Every node on firmware 2.8 or newer signs its broadcasts, so on that firmware the signed state is the baseline and the locks are not shown. -To clear a mismatch, first confirm through another trusted channel that the key change was intentional — a factory reset causes one. Then touch & hold the node, choose **Remove**, and let the two radios exchange keys again the next time yours hears it. +Direct messages always use public-key encryption, so your node needs the other node's public key before it can send one. It refuses the send rather than falling back to channel encryption. Keys arrive inside node info, which is why an open lock usually clears itself once that node is heard from properly. + +A mismatch never replaces the key you already hold. The app keeps the first key it recorded and refuses the new one, as the firmware does, so a stray or hostile node info cannot silently break encrypted messaging to a contact. To clear a mismatch, first confirm through another trusted channel that the key change was intentional — a factory reset causes one. Then touch & hold the node, choose **Remove**, and let the two nodes exchange keys again the next time yours hears it. ## Quick Actions @@ -104,6 +108,8 @@ radio is connected and running firmware 2.8 or newer — see On a node's detail screen, tap **Share Contact** to produce a link and a QR code for that node. From the same dialog, **Share link** opens the Android share sheet (on desktop it copies the link instead), **Write to NFC tag** saves it to a writable NFC tag, and **Copy** puts it on the clipboard. While that dialog is open and in front of you, the phone also offers the same link to any NFC reader, so someone can take the contact by tapping their phone against yours with no tag involved. +Sharing your own contact this way marks it as verified in person, so whoever imports it sees the **Verified contact** icon rather than the signed one. Relaying someone else's contact passes on only what your app had already recorded about them. + To add someone else's contact, use the import button on the node list and choose **Scan Shared Contact QR Code**, **Scan Shared Contact NFC**, or **Input Shared Contact URL**. The app asks you to confirm with **Import Shared Contact?**, and warns you when the contact is one you already have. ## Filtering & Sorting @@ -121,6 +127,8 @@ Type in the search field to filter nodes by name or short name. The filter updat **Include unknown** | Show nodes that haven't sent user info yet. **On by default**, so a node heard before its info arrives stays visible; these carry a badge marking them incomplete, and cannot be direct messaged until their user info brings a public key | **Exclude infrastructure** | Hide infrastructure-role nodes (Router, Router Late, Client Base, and legacy Repeater nodes) and any node that cannot be messaged, whatever its role | **Exclude MQTT** | Hide nodes heard only via MQTT internet bridge | + **Signed only** | Show only nodes whose signed broadcasts your node has actually heard and verified. Stricter than the icon: a node on 2.8 shows as signed by its firmware version before any signed broadcast arrives, and a contact verified in person on older firmware is not signed at all | + **Encrypted only** | Show nodes with a matching public key on file, the key an encrypted direct message needs. A node with a key mismatch is excluded | **Only show ignored Nodes** | Replace the list with the nodes you have ignored. Every other node is hidden while this is on, and a banner appears at the top of the list to take you back | ### Sort Options diff --git a/main/docs/user/settings-radio-user.html b/main/docs/user/settings-radio-user.html index 7693c87a8e..1af05bc359 100644 --- a/main/docs/user/settings-radio-user.html +++ b/main/docs/user/settings-radio-user.html @@ -47,7 +47,7 @@ The footer appears as soon as you change something. **Discard** throws the chang The status message is saved with the same **Save**, but it never reboots the node — and, like the rest of this screen, it can be edited on a remote node you administer. For your own radio there is a shortcut while it is connected: touch & hold your node in the [node list](nodes.md) and choose -**Update status**. Older firmware and a disconnected radio have no shortcut — the field above is +**Update status**. Older firmware and a disconnected node have no shortcut — the field itself is still the way in. ## Configuration @@ -73,13 +73,13 @@ On **Settings → LoRa**. Setting | Description | Default | ---------|-------------|---------| - Region | Regulatory region for frequency bands. You must set this before transmitting | Unset (must configure) | + Region | Regulatory region for frequency bands. You must set this before transmitting. On firmware 2.8 or newer, the first region set also creates the node's identity key and gives it a new node number | Unset (must configure) | Presets | Speed/range tradeoff | LongFast | Number of Hops | Maximum retransmit hops | 3 | Transmit Power | Transmission power (dBm); 0 = max allowed for region | 0 (region max) | Frequency Override | Overrides the computed operating frequency outright (MHz). It does not offset the calculated value — leave at 0 unless you know you need a specific frequency | 0 (use calculated) | Use Preset | On by default. Turn it off to set Spread Factor, Coding Rate and Bandwidth by hand instead of taking them from the modem preset | On | - Spread Factor | Manual mode only: 7–12. Higher spreads further but slower | From preset | + Spread Factor | Manual mode only: 5–12. Higher spreads further but slower. On SX127x (RF95) radios the firmware does not accept 5 or 6 and uses 11 instead | From preset | Coding Rate | Manual mode only: 5–8. More redundancy costs airtime | From preset | Bandwidth | Manual mode only: the channel bandwidth in kHz, typed in directly. On the 2.4 GHz region the app offers a list of the bandwidths your radio supports instead, and a stored value that is not on that list shows as *Unsupported* and blocks saving until you pick a supported one | From preset | Frequency Slot | Which slot within the region's band to use. 0 derives it from the primary channel name | 0 (automatic) | diff --git a/main/docs/user/tak.html b/main/docs/user/tak.html index ac34591cd5..c5d3ffc43e 100644 --- a/main/docs/user/tak.html +++ b/main/docs/user/tak.html @@ -32,7 +32,7 @@ The TAK module allows Meshtastic nodes to: > ⚠️ **Warning:** The old **Meshtastic ATAK Plugin** is no longer part of this path and cannot > work. It bridged through the cross-process AIDL API, which was removed in app 2.8.0; the mesh > service is now in-process only. Do not install it. Interop today runs over the app's own local -> TAK server plus the Mesh to CoT Converter, both described below, with stock ATAK/iTAK/WinTAK. +> TAK server plus the Mesh to CoT Converter, both described in the following sections, with stock ATAK/iTAK/WinTAK. ### Configuration diff --git a/main/docs/user/translate.html b/main/docs/user/translate.html index ca2a9dd044..b540052bda 100644 --- a/main/docs/user/translate.html +++ b/main/docs/user/translate.html @@ -42,7 +42,7 @@ If your language is not yet listed on Crowdin: The Android app uses **Compose Multiplatform resources** for all user-visible strings: -``` +```text core/resources/src/commonMain/composeResources/ ├── values/ ← English (default) │ └── strings.xml @@ -55,7 +55,7 @@ core/resources/src/commonMain/composeResources/ In-app documentation follows a similar pattern under `docs/`: -``` +```text docs/ ├── en/user/ ← English source (default) │ ├── onboarding.md diff --git a/main/en/developer/adding-a-feature-module.html b/main/en/developer/adding-a-feature-module.html index 43fd892534..df8fe4efba 100644 --- a/main/en/developer/adding-a-feature-module.html +++ b/main/en/developer/adding-a-feature-module.html @@ -1,4 +1,4 @@ - Adding a Feature Module | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
Meshtastic Docs ↗

Adding a Feature Module

Step-by-step guide for creating a new KMP feature module in the Meshtastic project.

Create the Module Directory

mkdir -p feature/my-feature/src/{commonMain,commonTest,androidMain,jvmMain,iosMain}/kotlin/org/meshtastic/feature/myfeature
+            Adding a Feature Module | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Adding a Feature Module

Step-by-step guide for creating a new KMP feature module in the Meshtastic project.

Create the Module Directory

mkdir -p feature/my-feature/src/{commonMain,commonTest,androidMain,jvmMain,iosMain}/kotlin/org/meshtastic/feature/myfeature
 

Create build.gradle.kts

plugins {
     alias(libs.plugins.meshtastic.kmp.feature)
 }
diff --git a/main/en/developer/architecture.html b/main/en/developer/architecture.html
index 651d3fb458..97520cc4d9 100644
--- a/main/en/developer/architecture.html
+++ b/main/en/developer/architecture.html
@@ -1,4 +1,4 @@
-            Architecture | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Architecture

The Meshtastic Android and Desktop apps follow a modular Kotlin Multiplatform (KMP) architecture with clear layer boundaries. iOS is a compile-only validation target; no iOS app ships.

Layer Overview

┌─────────────────────────────────────────────┐
+            Architecture | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Architecture

The Meshtastic Android and Desktop apps follow a modular Kotlin Multiplatform (KMP) architecture with clear layer boundaries. iOS is a compile-only validation target; no iOS app ships.

Layer Overview

┌─────────────────────────────────────────────┐
 │          androidApp / desktopApp            │  Platform entry points
 ├─────────────────────────────────────────────┤
 │              feature/* modules               │  UI + Business Logic
@@ -7,7 +7,7 @@
 ├─────────────────────────────────────────────┤
 │           Platform (Android/JVM/iOS)         │  OS-specific bindings
 └─────────────────────────────────────────────┘
-

Module Categories

androidApp/ — Android Application

The Android application entry point:

  • Activity, Application, and Manifest definitions
  • Koin DI module composition (AppKoinModule)
  • Flavor-specific bindings (google/, fdroid/)
  • Android-only integrations (widgets, services)

desktopApp/ — Desktop JVM Application

The Desktop (Linux/macOS/Windows) entry point:

  • Compose Desktop window management
  • Desktop-specific DI (DesktopKoinModule)
  • Platform stubs for Android-only capabilities
  • DesktopRadioTransportFactory and a jSerialComm-based serial transport; the BLE and TCP transport implementations it wires up are shared code — they live in core:network, built on core:ble’s BLE primitives — not desktopApp-owned

feature/* — Feature Modules

Each feature/ module owns a vertical slice of functionality:

Module Responsibility
feature:intro Onboarding/welcome flow
feature:messaging Messages, channels, contacts, quick chat
feature:connections Bluetooth/USB/TCP connection management
feature:map Map display, waypoints — shared state, policy and the waypoint editor
feature:map-maplibre MapLibre map surfaces — used by the fdroid flavor and Desktop; the google flavor uses Google Maps instead. Tile-source definitions and the custom-source editor are in feature:map, so both renderers share them
feature:node Node list, node detail, metrics
feature:settings All configuration screens
feature:firmware Firmware update flow
feature:docs In-app documentation browser
feature:wifi-provision Wi-Fi provisioning
feature:widget Android home screen widgets
feature:discovery Mesh network discovery

Feature modules:

  • Use the meshtastic.kmp.feature convention plugin
  • Depend on core modules, never on other feature modules
  • Own their navigation entries and DI registrations
  • Contain platform-specific implementations in androidMain/jvmMain/iosMain

core/* — Core Modules

Shared infrastructure used by all features:

Module Responsibility
core:common Utilities, extensions, build config
core:navigation Routes, deep links, Navigation 3
core:ui Shared Compose components, icons, theme
core:resources Shared string resources
core:model Domain models
core:data Data layer abstractions
core:domain Use cases / business logic
core:database Room KMP database
core:datastore DataStore preferences
core:prefs App preferences
core:repository Repository interfaces
core:service Mesh service layer
core:di DI utilities
core:network HTTP/serial/transport
core:ble Bluetooth LE abstractions
core:barcode QR / barcode scanning (channel-share QR codes)
core:nfc NFC read/write support
core:takserver Embedded TAK server integration
core:testing Test utilities
core:konsist Konsist architecture/convention tests

Protobuf models come from the external org.meshtastic:protobufs Maven artifact (pinned in gradle/libs.versions.toml).

KMP Source Sets

Each module uses the standard KMP source set hierarchy:

src/
+

Module Categories

androidApp/ — Android Application

The Android application entry point:

  • Activity, Application, and Manifest definitions
  • Koin DI module composition (AppKoinModule)
  • Flavor-specific bindings (google/, fdroid/)
  • Android-only integrations (widgets, services)

desktopApp/ — Desktop JVM Application

The Desktop (Linux/macOS/Windows) entry point:

  • Compose Desktop window management
  • Desktop-specific DI (DesktopKoinModule)
  • Platform stubs for Android-only capabilities
  • DesktopRadioTransportFactory and a jSerialComm-based serial transport; the BLE and TCP transport implementations it wires up are shared code — they live in core:network, built on core:ble’s BLE primitives — not desktopApp-owned

feature/* — Feature Modules

Each feature/ module owns a vertical slice of functionality:

Module Responsibility
feature:intro Onboarding/welcome flow
feature:messaging Messages, channels, contacts, quick chat
feature:connections Bluetooth/USB/TCP connection management
feature:map Map display, waypoints — shared state, policy and the waypoint editor
feature:map-maplibre MapLibre map surfaces — used by the fdroid flavor and Desktop; the google flavor uses Google Maps instead. Tile-source definitions and the custom-source editor are in feature:map, so both renderers share them
feature:node Node list, node detail, metrics
feature:settings All configuration screens
feature:firmware Firmware update flow
feature:docs In-app documentation browser
feature:wifi-provision Wi-Fi provisioning
feature:widget Android home screen widgets
feature:discovery Mesh network discovery

Feature modules:

  • Use the meshtastic.kmp.feature convention plugin
  • Depend on core modules, never on other feature modules
  • Own their navigation entries and DI registrations
  • Contain platform-specific implementations in androidMain/jvmMain/iosMain

core/* — Core Modules

Shared infrastructure used by all features:

Module Responsibility
core:common Utilities, extensions, build config
core:navigation Routes, deep links, Navigation 3
core:ui Shared Compose components, icons, theme
core:resources Shared string resources
core:model Domain models
core:data Data layer abstractions
core:domain Use cases / business logic
core:database Room KMP database
core:datastore DataStore preferences
core:prefs App preferences
core:repository Repository interfaces
core:service Mesh service layer
core:di DI utilities
core:network HTTP/serial/transport
core:ble Bluetooth LE abstractions
core:barcode QR / barcode scanning (channel-share QR codes)
core:nfc NFC read/write support
core:takserver Embedded TAK server integration
core:testing Test utilities
core:konsist Konsist architecture/convention tests

Protobuf models come from the external org.meshtastic:protobufs Maven artifact (pinned in gradle/libs.versions.toml).

KMP Source Sets

Each module uses the standard KMP source set hierarchy:

src/
 ├── commonMain/     ← Shared code (all platforms)
 ├── commonTest/     ← Shared tests
 ├── androidMain/    ← Android-specific
diff --git a/main/en/developer/codebase.html b/main/en/developer/codebase.html
index 5381966acb..737fb5e19e 100644
--- a/main/en/developer/codebase.html
+++ b/main/en/developer/codebase.html
@@ -1,4 +1,4 @@
-            Codebase | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Codebase

Repository layout, namespacing conventions, and build system overview.

Repository Structure

Meshtastic-Android/
+            Codebase | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Codebase

Repository layout, namespacing conventions, and build system overview.

Repository Structure

Meshtastic-Android/
 ├── androidApp/                 # Android application module
 │   ├── src/main/           # Shared Android code
 │   ├── src/google/         # Google Play flavor (proprietary Google integrations — Gemini, Maps, Play services)
@@ -51,8 +51,8 @@
 │   └── libs.versions.toml
 ├── specs/                  # Feature specifications
 └── .github/workflows/      # CI/CD workflows
-

Namespacing Convention

All Kotlin packages follow the pattern:

org.meshtastic.{layer}.{module}.{subpackage}
-

Examples:

  • org.meshtastic.core.navigation — core navigation module
  • org.meshtastic.feature.docs.ui — docs feature UI package
  • org.meshtastic.app.di — app DI configuration

Build System

Gradle Kotlin DSL

All build files use Kotlin DSL (.gradle.kts). Configuration:

  • Version catalog: gradle/libs.versions.toml
  • Convention plugins: build-logic/convention/
  • Settings: settings.gradle.kts

Convention Plugins

Located in build-logic/convention/src/main/kotlin/. The full set is registered in build-logic/convention/build.gradle.kts; these are the ones a module build applies most often:

Plugin Purpose
meshtastic.kmp.feature Standard feature module setup
meshtastic.kmp.library Shared KMP library module
meshtastic.kmp.library.compose KMP library that also ships Compose UI
meshtastic.kmp.jvm.android JVM + Android target configuration
meshtastic.koin Koin Annotations + K2 compiler plugin
meshtastic.kotlinx.serialization Serialization plugin setup
meshtastic.android.room Room KMP setup and schema location
meshtastic.android.screenshot Compose Preview screenshot testing

The rest cover the application and library variants, lint, detekt, spotless, Dokka, Kover, AboutLibraries, analytics, secrets, the docs tasks and the root aggregate — read the register(…) block rather than assuming a plugin does or does not exist.

Build Variants (Android)

Flavor Description
google Google Play distribution; includes proprietary APIs
fdroid F-Droid distribution; FOSS-only dependencies

Key Gradle Tasks

# Compile check across all KMP targets
+

Namespacing Convention

All Kotlin packages follow the pattern:

org.meshtastic.{layer}.{module}.{subpackage}
+

Examples:

  • org.meshtastic.core.navigation — core navigation module
  • org.meshtastic.feature.docs.ui — docs feature UI package
  • org.meshtastic.app.di — app DI configuration

Build System

Gradle Kotlin DSL

All build files use Kotlin DSL (.gradle.kts). Configuration:

  • Version catalog: gradle/libs.versions.toml
  • Convention plugins: build-logic/convention/
  • Settings: settings.gradle.kts

Convention Plugins

Located in build-logic/convention/src/main/kotlin/. The full set is registered in build-logic/convention/build.gradle.kts; these are the ones a module build applies most often:

Plugin Purpose
meshtastic.kmp.feature Standard feature module setup
meshtastic.kmp.library Shared KMP library module
meshtastic.kmp.library.compose KMP library that also ships Compose UI
meshtastic.kmp.jvm.android JVM + Android target configuration
meshtastic.koin Koin Annotations + K2 compiler plugin
meshtastic.kotlinx.serialization Serialization plugin setup
meshtastic.android.room Room KMP setup and schema location
meshtastic.android.screenshot Compose Preview screenshot testing

The rest cover the application and library variants, lint, detekt, spotless, Dokka, Kover, AboutLibraries, analytics, secrets, the docs tasks and the root aggregate — read the register(…) block rather than assuming a plugin does or does not exist.

Build Variants (Android)

Flavor Description
google Google Play distribution; includes proprietary APIs
fdroid F-Droid distribution; FOSS-only dependencies

Key Gradle Tasks

# Compile check across all KMP targets
 ./gradlew kmpSmokeCompile
 
 # Run all tests
diff --git a/main/en/developer/contributing.html b/main/en/developer/contributing.html
index 2a89590fb2..f6a496d4b8 100644
--- a/main/en/developer/contributing.html
+++ b/main/en/developer/contributing.html
@@ -1,8 +1,8 @@
-            Contributing | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Contributing

Guidelines for contributing to the Meshtastic Android/Desktop project (a KMP codebase that also compiles for iOS).

Branch Naming

Branches use conventional-commit style prefixes:

Prefix Use for
feat/<scope> New user-visible behavior
fix/<scope> Bug fixes
refactor/<scope> Code structure changes
chore/<scope> Tooling, deps, CI, cleanup
docs/<scope> Documentation only
build/<scope> Build system changes
ci/<scope> CI workflow changes
test/<scope> Test additions or fixes
deps/<scope> Dependency updates

Timestamp-based spec prefixes (YYYYMMDD-HHMMSS-feature-name, as created by /speckit.git.feature) are also valid for spec-driven work.

Examples:

  • feat/desktop-ble-transport
  • fix/bluetooth-reconnect
  • 20260601-074653-air-quality-telemetry

Development Workflow

  1. Fork the repository (external contributors) or create a branch (maintainers).
  2. Implement your changes following the architecture guidelines.
  3. Test locally: ./gradlew spotlessCheck detekt kmpSmokeCompile test allTests
  4. Commit with clear, descriptive messages.
  5. Push and open a Pull Request.

Commit Messages

Follow conventional commit style:

feat(docs): add in-app documentation browser
+            Contributing | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Contributing

Guidelines for contributing to the Meshtastic Android/Desktop project (a KMP codebase that also compiles for iOS).

Branch Naming

Branches use conventional-commit style prefixes:

Prefix Use for
feat/<scope> New user-visible behavior
fix/<scope> Bug fixes
refactor/<scope> Code structure changes
chore/<scope> Tooling, deps, CI, cleanup
docs/<scope> Documentation only
build/<scope> Build system changes
ci/<scope> CI workflow changes
test/<scope> Test additions or fixes
deps/<scope> Dependency updates

Timestamp-based spec prefixes (YYYYMMDD-HHMMSS-feature-name, as created by /speckit.git.feature) are also valid for spec-driven work.

Examples:

  • feat/desktop-ble-transport
  • fix/bluetooth-reconnect
  • 20260601-074653-air-quality-telemetry

Development Workflow

  1. Fork the repository (external contributors) or create a branch (maintainers).
  2. Implement your changes following the architecture guidelines.
  3. Test locally: ./gradlew spotlessCheck detekt kmpSmokeCompile test allTests
  4. Commit with clear, descriptive messages.
  5. Push and open a Pull Request.

Commit Messages

Follow conventional commit style:

feat(docs): add in-app documentation browser
 fix(ble): handle reconnection timeout
 refactor(navigation): migrate to typed routes
 test(search): add keyword ranking tests
-

Pull Request Checklist

Before submitting:

  • Code compiles on all targets: ./gradlew kmpSmokeCompile
  • All tests pass: ./gradlew allTests
  • Code style passes: ./gradlew spotlessCheck
  • Static analysis passes: ./gradlew detekt
  • New code has appropriate test coverage
  • No android.* imports in commonMain
  • Koin modules registered if new DI is added
  • Routes added to Routes.kt if new navigation is introduced
  • Documentation updated if user-facing behavior changes

Code Style

  • Formatting: Enforced by Spotless (KtLint rules)
  • Static analysis: Detekt with project-specific configuration
  • Imports: No wildcard imports; organized automatically by Spotless
  • Line length: 120 characters maximum

Run formatting:

./gradlew spotlessApply
-

Architecture Rules

  • Feature modules must not depend on other feature modules
  • commonMain must not contain android.*, java.io.*, or platform-specific imports
  • Prefer interface + DI over expect/actual for complex platform behaviors
  • All navigation routes must be @Serializable and defined in Routes.kt
  • Use Koin annotations (@Single, @Factory, @Module) for dependency injection

Verification

Full pre-merge verification:

./gradlew spotlessCheck detekt kmpSmokeCompile test allTests
-

For docs-specific changes, also run:

./gradlew generateDocsBundle validateDocsBundle
+

Pull Request Checklist

Before submitting:

  • Code compiles on all targets: ./gradlew kmpSmokeCompile
  • All tests pass: ./gradlew allTests
  • Code style passes: ./gradlew spotlessCheck
  • Static analysis passes: ./gradlew detekt
  • New code has appropriate test coverage
  • No android.* imports in commonMain
  • Koin modules registered if new DI is added
  • Routes added to Routes.kt if new navigation is introduced
  • Documentation updated if user-facing behavior changes

Code Style

  • Formatting: Enforced by Spotless (KtLint rules)
  • Static analysis: Detekt with project-specific configuration
  • Imports: No wildcard imports; organized automatically by Spotless
  • Line length: 120 characters maximum

Run formatting:

./gradlew spotlessApply
+

Architecture Rules

  • Feature modules must not depend on other feature modules
  • commonMain must not contain android.*, java.io.*, or platform-specific imports
  • Prefer interface + DI over expect/actual for complex platform behaviors
  • All navigation routes must be @Serializable and defined in Routes.kt
  • Use Koin annotations (@Single, @Factory, @Module) for dependency injection

Verification

Full pre-merge verification:

./gradlew spotlessCheck detekt kmpSmokeCompile test allTests
+

For docs-specific changes, also run:

./gradlew generateDocsBundle validateDocsBundle
 

Prose in docs/en/ follows Section 11 of the Meshtastic Client Design Standards — see Documentation Style for what’s specific to this repository.

Getting Help

  • Meshtastic Discord#app-development channel
  • GitHub Issues — for bug reports and feature requests
  • GitHub Discussions — for questions and ideas

diff --git a/main/en/developer/navigation-and-deep-links.html b/main/en/developer/navigation-and-deep-links.html index 62a42fd405..d24803137e 100644 --- a/main/en/developer/navigation-and-deep-links.html +++ b/main/en/developer/navigation-and-deep-links.html @@ -21,5 +21,5 @@ https://meshtastic.org/{path} # App Link, android:autoVerify — also open entry<SettingsRoute.HelpDocs> { DocsBrowserScreen(backStack) } entry<SettingsRoute.HelpDocPage> { route -> DocsPageRouteScreen(route.pageId, backStack) } } -

These are called from the settings navigation composition.

Testing

Deep link routing is tested in:

core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt
+

These are called from the settings navigation composition.

Testing

Deep link routing is tested in:

core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt
 

diff --git a/main/en/developer/testing.html b/main/en/developer/testing.html index d766d4a8b5..0902da6424 100644 --- a/main/en/developer/testing.html +++ b/main/en/developer/testing.html @@ -1,23 +1,23 @@ - Testing | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
Meshtastic Docs ↗

Testing

Testing strategy and practices for the Meshtastic KMP project.

Test Categories

KMP Unit Tests (commonTest)

Shared tests that run on all platforms:

./gradlew allTests
-
  • Business logic tests
  • Data model validation
  • Search/ranking algorithm tests
  • Route serialization tests

Android Host Tests

Android-specific tests that run on JVM:

./gradlew test
+            Testing | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

Testing

Testing strategy and practices for the Meshtastic KMP project.

Test Categories

KMP Unit Tests (commonTest)

Shared tests that run on all platforms:

./gradlew allTests
+
  • Business logic tests
  • Data model validation
  • Search/ranking algorithm tests
  • Route serialization tests

Android Host Tests

Android-specific tests that run on JVM:

./gradlew test
 
  • ViewModel tests
  • Repository tests with Room fakes
  • Android-specific integration tests

Compose UI Tests

Compose Multiplatform UI test framework:

@Test
 fun myScreenTest() = runComposeUiTest {
     setContent { MyScreen() }
     onNodeWithText("Expected").assertIsDisplayed()
 }
-

Located in commonTest or jvmTest source sets.

Screenshot Tests

Uses Android Gradle Plugin’s native (layoutlib) screenshot testing framework, split across two modules:

  • :screenshot-tests — the visual-regression gate. CI runs validateDebugScreenshotTest on it; reframing one of these baselines is a real diff to review. Holds atomic, dual-purpose components.
  • :docs-screenshotsgenerate-only, not validated in CI. Holds doc-framed compositions whose framing is tuned for the docs site, so reframing a doc image never churns the regression gate.
./gradlew :screenshot-tests:updateDebugScreenshotTest    # record regression goldens
+

Located in commonTest or jvmTest source sets.

Screenshot Tests

Uses Android Gradle Plugin’s native (layoutlib) screenshot testing framework, split across two modules:

  • :screenshot-tests — the visual-regression gate. CI runs validateDebugScreenshotTest on it; reframing one of these baselines is a real diff to review. Holds atomic, dual-purpose components.
  • :docs-screenshotsgenerate-only, not validated in CI. Holds doc-framed compositions whose framing is tuned for the docs site, so reframing a doc image never churns the regression gate.
./gradlew :screenshot-tests:updateDebugScreenshotTest    # record regression goldens
 ./gradlew :screenshot-tests:validateDebugScreenshotTest  # compare against goldens (CI gate)
 ./gradlew :docs-screenshots:updateDebugScreenshotTest    # record doc-framed composition images
 ./gradlew :screenshot-tests:copyDocsScreenshots          # copy doc images from BOTH modules into docs/assets
-

Rendering is host-deterministic here (layoutlib): a local update produces references byte-identical to CI, so locally-recorded goldens pass validate. See docs/assets/screenshots/README.md for which module a new screenshot belongs in.

Baseline Profile / Startup Performance

The :baselineprofile module (#5735) generates a Baseline Profile for :androidApp, AOT-compiling the hot startup paths so ART doesn’t pay the JIT cost on first launch. It targets the google flavor (the variant most users run).

The Macrobenchmark generator (BaselineProfileGenerator) and the before/after benchmark (StartupBenchmark) live in baselineprofile/src/main/kotlin/org/meshtastic/baselineprofile/. Both run on a device/emulator:

./gradlew :androidApp:generateGoogleReleaseBaselineProfile   # Generate the profile (commit the output)
+

Rendering is host-deterministic here (layoutlib): a local update produces references byte-identical to CI, so locally-recorded goldens pass validate. See docs/assets/screenshots/README.md for which module a new screenshot belongs in.

Baseline Profile / Startup Performance

The :baselineprofile module (#5735) generates a Baseline Profile for :androidApp, AOT-compiling the hot startup paths so ART doesn’t pay the JIT cost on first launch. It targets the google flavor (the variant most users run).

The Macrobenchmark generator (BaselineProfileGenerator) and the before/after benchmark (StartupBenchmark) live in baselineprofile/src/main/kotlin/org/meshtastic/baselineprofile/. Both run on a device/emulator:

./gradlew :androidApp:generateGoogleReleaseBaselineProfile   # Generate the profile (commit the output)
 ./gradlew :androidApp:benchmarkGoogleReleaseBaselineProfile  # Quantify the cold-start win
-

The generated profile is merged into androidApp/src/googleRelease/generated/baselineProfiles/ and packaged into release builds via androidx.profileinstaller.

ℹ️ Note: The journey covers cold start only (launch → first frame), because CI has no paired radio. Post-connection screens (node list, map, message thread) are not yet AOT-compiled.

Extending the journey past cold start needs a fake transport or a connected radio wired into the harness.

Test Organization

feature/my-feature/src/
+

The generated profile is merged into androidApp/src/googleRelease/generated/baselineProfiles/ and packaged into release builds via androidx.profileinstaller.

ℹ️ Note: The journey covers cold start only (launch → first frame), because CI has no paired radio. Post-connection screens (node list, map, message thread) are not yet AOT-compiled.

Extending the journey past cold start needs a fake transport or a connected radio wired into the harness.

Test Organization

feature/my-feature/src/
 ├── commonTest/kotlin/org/meshtastic/feature/myfeature/
 │   ├── MyBusinessLogicTest.kt
 │   └── MyModelTest.kt
 └── jvmTest/kotlin/org/meshtastic/feature/myfeature/
     └── MyDesktopSpecificTest.kt
-

Testing Guidelines

DO

  • Write tests in commonTest when possible (runs everywhere)
  • Test business logic independently from UI
  • Use fakes/stubs instead of mocks where practical
  • Test edge cases: empty states, error states, boundary values
  • Test deep link routing in DeepLinkRouterTest
  • Keep tests fast — no network, no disk I/O in unit tests

DON’T

  • Don’t test framework behavior (Compose internals, Room queries)
  • Don’t create tests that depend on other feature modules
  • Don’t use Thread.sleep — use coroutine test dispatchers
  • Don’t rely on test execution order

Running Tests

# All KMP tests
+

Testing Guidelines

DO

  • Write tests in commonTest when possible (runs everywhere)
  • Test business logic independently from UI
  • Use fakes/stubs instead of mocks where practical
  • Test edge cases: empty states, error states, boundary values
  • Test deep link routing in DeepLinkRouterTest
  • Keep tests fast — no network, no disk I/O in unit tests

DON’T

  • Don’t test framework behavior (Compose internals, Room queries)
  • Don’t create tests that depend on other feature modules
  • Don’t use Thread.sleep — use coroutine test dispatchers
  • Don’t rely on test execution order

Running Tests

# All KMP tests
 ./gradlew allTests
 
 # Specific module
diff --git a/main/en/user.html b/main/en/user.html
index f0918b4b66..4b2b16b3cb 100644
--- a/main/en/user.html
+++ b/main/en/user.html
@@ -1 +1 @@
-            User Guide | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
Meshtastic Docs ↗

User Guide

Documentation for using the Meshtastic Android and Desktop app.

What’s New in the Docs

August 2026Local Mesh Discovery — Mesh Beacon advertises the region and preset your radio actually uses, requires a region and a standard modem preset before it will broadcast, and hides invitations to channels your radio already has.

August 2026Map & Waypoints — Filter the map by node role and by how a node was heard, from a new filter sheet.

August 2026Map & Waypoints — Every map layer and overlay now has its own opacity slider.

August 2026Map & Waypoints — F-Droid builds draw the map with MapLibre, and the Desktop app has an interactive map for the first time.

August 2026Settings — Radio & User — The status message moved into the User Profile, beside Long Name and Short Name; its separate module screen is gone.

August 2026Messages & Channels — Swipe a message right to reply, double-tap it to react, and day separators group the thread.

August 2026Messages & Channels — The conversation list keeps per-contact drafts and adds pinning, mark-unread, and swipe-to-mute/delete, and a conversation can be opened as a floating bubble.

August 2026Units & Locale — New page. Units now follow your device region and OS locale, with a Units setting to override them, and all number formatting goes through ICU.


Table of contents


+ User Guide | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
Meshtastic Docs ↗

User Guide

Documentation for using the Meshtastic Android and Desktop app.

What’s New in the Docs

September 2026Nodes — Nodes on firmware 2.8 show signed and verified identity icons in place of the PKI lock, and Signed only and Encrypted only filters join the node list and the map.

September 2026Map & Waypoints — Offline terrain (hillshade and contours) can be downloaded on Google Play, F-Droid, and Desktop.

August 2026Local Mesh Discovery — Mesh Beacon advertises the region and preset your radio actually uses, requires a region and a standard modem preset before it will broadcast, and hides invitations to channels your radio already has.

August 2026Map & Waypoints — Filter the map by node role and by how a node was heard, from a new filter sheet.

August 2026Map & Waypoints — Every map layer and overlay now has its own opacity slider.

August 2026Map & Waypoints — F-Droid builds draw the map with MapLibre, and the Desktop app has an interactive map for the first time.

August 2026Settings — Radio & User — The status message moved into the User Profile, beside Long Name and Short Name; its separate module screen is gone.

August 2026Messages & Channels — Swipe a message right to reply, double-tap it to react, and day separators group the thread.


Table of contents


diff --git a/main/en/user/desktop.html b/main/en/user/desktop.html index 810d867a53..ba758e75b4 100644 --- a/main/en/user/desktop.html +++ b/main/en/user/desktop.html @@ -1,4 +1,4 @@ - Desktop App | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Desktop App

This page covers installing the Meshtastic desktop app, connecting a radio, and how it differs from Android. The desktop app shares its core codebase with Android via Kotlin Multiplatform, so most features work identically across Linux, macOS, and Windows.

Installation

Linux

  • Download the .deb, .rpm, or .AppImage package from the releases page
  • Or install from Flathub: flatpak install flathub org.meshtastic.MeshtasticDesktop
  • Or build from source using ./gradlew :desktopApp:run

macOS

  • Download the .dmg package from the releases page
  • Or build from source

Windows

  • Download the .msi or .exe installer from the releases page
  • Or build from source

Connecting Your Radio

USB Serial (Primary)

The most reliable connection method on desktop:

Connect your radio via USB. The app detects the serial port automatically; if it doesn’t, select the port from the Connect menu.

TCP/IP

For network-connected radios:

  1. Enter the radio’s IP address and port (default: 4403).
  2. Click Connect.

Bluetooth (BLE)

Bluetooth Low Energy is supported on desktop via the Kable library:

  1. Ensure your system has a Bluetooth adapter. The app scans for nearby Meshtastic radios automatically.
  2. Select your radio from the Connect screen.

Feature Parity

Feature Android Desktop Notes
Messaging Full parity
Node List Full parity
Map Interactive MapLibre map, with base map and overlay pickers and custom tile sources. No offline downloads or local .mbtiles archives
Map layers (.kml/.kmz/GeoJSON) Same layer store and sheet as Android; imported files draw on the desktop map
Site Planner ✓* *Opens in your browser on desktop; the estimate is not drawn on the desktop map
Settings Full parity
Bluetooth (BLE) Via Kable on desktop
Firmware Update In-app USB, BLE, and Wi-Fi (ESP32) update work the same as Android. The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only
Notifications Native OS notifications
Widgets Android-only
AI Assistant (Chirpy) ✓* Google flavor Android only
App Functions (system AI) ✓† Google flavor Android only

*Chirpy AI requires Android 14+ on Google flavor builds with supported hardware.

†App Functions exposes app actions to the Android system AI on Google flavor builds. See App Functions.

UI Differences

The desktop app uses the same Compose Multiplatform UI with adaptations for larger screens and desktop interaction.

Keyboard Shortcuts

Shortcuts use (Command) on macOS and Ctrl on Windows and Linux. (The Super / Windows key is not bound.)

Shortcut Action
⌘/Ctrl+Q Quit the app
⌘/Ctrl+, Open Settings
⌘/Ctrl+1 Switch to Messages tab
⌘/Ctrl+2 Switch to Nodes tab
⌘/Ctrl+3 Switch to Map tab
⌘/Ctrl+4 Switch to Connect tab
⌘/Ctrl+/ Open About

Window & System Tray

  • Window resizing — responsive layout adapts to window dimensions
  • System tray — closing the window minimizes to the system tray for background mesh operation. On a desktop environment with no tray, there is nowhere to minimize to, so closing quits the app instead
  • Tray menu — right-click the tray icon to show window or quit
  • Mouse interaction — hover states and standard desktop navigation

Notification Preferences

The desktop app provides in-app toggles for controlling which notifications are shown. Find them in the App Notifications section of the Settings screen: Direct message notifications, New node notifications, and Low battery notifications.

Built-in Documentation Browser

The desktop app includes a built-in documentation browser for quick access to help content without leaving the app.

Docs browser with table of contents

The browser supports full-text search across all documentation:

Searching the docs browser

Individual doc pages render with full formatting:

A documentation page

Building from Source

git clone https://github.com/meshtastic/Meshtastic-Android.git
+            Desktop App | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
🌐 English
Meshtastic Docs ↗

Desktop App

This page covers installing the Meshtastic desktop app, connecting a radio, and how it differs from Android. The desktop app shares its core codebase with Android via Kotlin Multiplatform, so most features work identically across Linux, macOS, and Windows.

Installation

Linux

  • Download the .deb, .rpm, or .AppImage package from the releases page
  • Or install from Flathub: flatpak install flathub org.meshtastic.MeshtasticDesktop
  • Or build from source using ./gradlew :desktopApp:run

macOS

  • Download the .dmg package from the releases page
  • Or build from source

Windows

  • Download the .msi or .exe installer from the releases page
  • Or build from source

Connecting Your Radio

USB Serial (Primary)

The most reliable connection method on desktop:

Connect your radio via USB. The app detects the serial port automatically; if it doesn’t, select the port from the Connect menu.

TCP/IP

For network-connected radios:

  1. Enter the radio’s IP address and port (default: 4403).
  2. Click Connect.

Bluetooth (BLE)

Bluetooth Low Energy is supported on desktop via the Kable library:

  1. Ensure your system has a Bluetooth adapter. The app scans for nearby Meshtastic radios automatically.
  2. Select your radio from the Connect screen.

Feature Parity

Feature Android Desktop Notes
Messaging Full parity
Node List Full parity
Map Interactive MapLibre map, with base map and overlay pickers and custom tile sources. Offline terrain (hillshade and contours) can be downloaded; offline base-map packs and local .mbtiles archives cannot
Map layers (.kml/.kmz/GeoJSON) Same layer store and sheet as Android; imported files draw on the desktop map
Site Planner ✓* *Opens in your browser on desktop; the estimate is not drawn on the desktop map
Settings Full parity
Bluetooth (BLE) Via Kable on desktop
Firmware Update In-app USB, BLE, and Wi-Fi (ESP32) update work the same as Android. The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only
Notifications Native OS notifications
Widgets Android-only
AI Assistant (Chirpy) ✓* Google flavor Android only
App Functions (system AI) ✓† Google flavor Android only

*Chirpy AI requires Android 14+ on Google flavor builds with supported hardware.

†App Functions exposes app actions to the Android system AI on Google flavor builds. See App Functions.

UI Differences

The desktop app uses the same Compose Multiplatform UI with adaptations for larger screens and desktop interaction.

Keyboard Shortcuts

Shortcuts use (Command) on macOS and Ctrl on Windows and Linux. (The Super / Windows key is not bound.)

Shortcut Action
⌘/Ctrl+Q Quit the app
⌘/Ctrl+, Open Settings
⌘/Ctrl+1 Switch to Messages tab
⌘/Ctrl+2 Switch to Nodes tab
⌘/Ctrl+3 Switch to Map tab
⌘/Ctrl+4 Switch to Connect tab
⌘/Ctrl+/ Open About

Window & System Tray

  • Window resizing — responsive layout adapts to window dimensions
  • System tray — closing the window minimizes to the system tray for background mesh operation. On a desktop environment with no tray, there is nowhere to minimize to, so closing quits the app instead
  • Tray menu — right-click the tray icon to show window or quit
  • Mouse interaction — hover states and standard desktop navigation

Notification Preferences

The desktop app provides in-app toggles for controlling which notifications are shown. Find them in the App Notifications section of the Settings screen: Direct message notifications, New node notifications, and Low battery notifications.

Built-in Documentation Browser

The desktop app includes a built-in documentation browser for quick access to help content without leaving the app.

Docs browser with table of contents

The browser supports full-text search across all documentation:

Searching the docs browser

Individual doc pages render with full formatting:

A documentation page

Building from Source

git clone https://github.com/meshtastic/Meshtastic-Android.git
 cd Meshtastic-Android
 ./gradlew :desktopApp:run
-

Requirements:

  • JDK 25 (Gradle can provision the toolchain itself via foojay)
  • No Android SDK required for desktop-only builds

Known Limitations

  • Offline tile downloads and local .mbtiles archives are not available on desktop.
  • .kml/.kmz/GeoJSON layer import works — see Map & Waypoints. Site Planner opens in your browser rather than in the app; to bring its coverage estimate onto the map, click the transmitter pin in the browser and use the planner’s GeoJSON export, then add the file as a layer — not the KML export, which is a ground-overlay image this map cannot draw. Custom network tile sources work too — see Map & Waypoints
  • The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only, and the desktop app does not offer it. Use the Web Flasher instead
  • Some Android-specific features (widgets, specific notification channels) are unavailable
  • Performance may vary on low-spec hardware running Compose Desktop
  • BLE bonding is not yet supported on desktop (pairing works without bonding)
  • Connections — connection methods overview
  • Firmware Updates — in-app USB, BLE, and Wi-Fi update all work the same as on Android
  • Map & Waypoints — base maps, layers, custom tile sources, and what the desktop map does not do

+

Requirements:

  • JDK 25 (Gradle can provision the toolchain itself via foojay)
  • No Android SDK required for desktop-only builds

Known Limitations

  • Offline base-map downloads and local .mbtiles archives are not available on desktop. Offline terrain is — see Map & Waypoints.
  • .kml/.kmz/GeoJSON layer import works — see Map & Waypoints. Site Planner opens in your browser rather than in the app; to bring its coverage estimate onto the map, click the transmitter pin in the browser and use the planner’s GeoJSON export, then add the file as a layer — not the KML export, which is a ground-overlay image this map cannot draw. Custom network tile sources work too — see Map & Waypoints
  • The USB maintenance flow — nRF52/RP2040 factory erase and bootloader upgrade — is Android-only, and the desktop app does not offer it. Use the Web Flasher instead
  • Some Android-specific features (widgets, specific notification channels) are unavailable
  • Performance may vary on low-spec hardware running Compose Desktop
  • BLE bonding is not yet supported on desktop (pairing works without bonding)
  • Connections — connection methods overview
  • Firmware Updates — in-app USB, BLE, and Wi-Fi update all work the same as on Android
  • Map & Waypoints — base maps, layers, custom tile sources, and what the desktop map does not do

diff --git a/main/en/user/discovery.html b/main/en/user/discovery.html index 6c1b1b3a6c..5cf974a4e1 100644 --- a/main/en/user/discovery.html +++ b/main/en/user/discovery.html @@ -1,4 +1,4 @@ - Local Mesh Discovery | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Local Mesh Discovery

Discovery tools help you understand how your mesh network is connected — which nodes can hear each other, what paths messages take, and where bottlenecks or weak links exist.

The app offers two complementary approaches:

  • Local Mesh Discovery (Scanner) — an automated mode that cycles your connected radio through different LoRa presets, listens on each, and ranks which preset performs best at your location.
  • Manual exploration — traceroute, Neighbor Info, and the node list, which you can use at any time to investigate specific paths and topology.

Local Mesh Discovery (Scanner)

Local Mesh Discovery is a dedicated scanning mode that helps you find the best LoRa modem preset for your location and see which nodes are active on each preset. It cycles your connected radio through one or more presets you choose, dwells on each one — listens for a set time — to collect packets, then analyzes and ranks the results.

Connect your radio, then open Settings → Advanced → Local Mesh Discovery. On Android the Advanced section stays grayed out until a radio is connected and the app has finished reading its configuration, and every entry in it is disabled on a managed device. On desktop, Local Mesh Discovery has its own entry on the Settings screen, with no such gate.

ℹ️ Note: Discovery temporarily changes your radio’s LoRa settings while it scans, then restores your original configuration when it finishes.

Setting Up a Scan

Before starting, configure these controls:

Control Description
LoRa preset picker Select one or more presets to scan. Discovery dwells on each selected preset in turn.
Dwell time Time to listen on each preset. Choose from 1, 5, 15, 30, 45, 60, 90, 120, or 180 minutes. Longer dwell times collect more packets and give a clearer picture, but take longer.
Keep screen awake Keeps the phone out of Android Doze mode, which would otherwise drop radio packets during a long scan. Recommended — a scan run with it off can under-count what the radio heard.

The Start Scan button stays disabled — with an explanation of why — until the scan can run. Common reasons it’s disabled:

  • The radio is not connected.
  • No presets have been selected to scan.
  • The selected preset uses 2.4 GHz, which your hardware doesn’t support.

Live Progress

While a scan runs, Discovery shows its current stage:

Stage What’s happening
Preparing scan Saving your current configuration and getting ready to scan.
Shifting to <preset> Switching the radio to the next preset to test.
Reconnecting on <preset> Re-establishing the connection after the preset change.
Dwelling on <preset> Listening on the current preset to collect packets, with a countdown to the next step.
Analyzing results Processing the collected packets and ranking the presets.
Restoring home preset Putting your original LoRa configuration back.
Cancelling scan You tapped Stop Scan; partial results are saved before the original preset is restored.
Scan failed: <reason> The scan could not continue — most often the radio did not come back within a minute of a preset change. The results collected so far are saved, and the original preset is restored automatically.

Dwell countdown showing time remaining on the current preset

If a scan is interrupted — the app is closed, or the radio goes away — the app restores your original preset the next time it reconnects to that radio, and tells you it has done so. Reconnect the same radio to let that happen; until you do, the radio stays on whichever preset the scan left it on.

Reading the Results

When the scan completes, Discovery presents a per-preset result card for each preset it tested, plus an overall summary.

Per-preset result card with ranking and collected metrics

Metrics include:

Metric What it tells you
RF health Overall quality of the radio environment on that preset.
Channel utilization How busy the airwaves were during the dwell.
Airtime Transmission time observed.
Direct vs. relayed nodes How many mesh nodes were heard directly versus via a relay.
Bad / duplicate packets Counts of corrupt and repeated packets, indicating congestion or interference.

Additional features available from the results:

  • Scan History — saved sessions you can revisit; view or delete past scans.
  • Discovery Map — a map of the nodes found during the scan.
  • Report export — export a report as a PDF on Android, or as text on other platforms.

💡 Tip: On Google Play builds, Discovery can generate an on-device AI summary (Gemini Nano) of your results. F-Droid builds always use the algorithmic summary — the proprietary ML Kit dependency is deliberately excluded from that flavor — so you get a readable interpretation of the scan either way.

Mesh Beacon

Mesh Beacon lets nodes invite others to join their mesh. A beaconing node periodically broadcasts an invitation — optionally advertising a channel, region, and modem preset — that nearby nodes can hear even before they share a configuration.

Configure it under Settings → Module configuration → Mesh Beacon. The entry appears only on radios running firmware 2.8.0 or newer. A read-only Region row at the top of the screen shows the region the beacon advertises: that region, and the preset, are always the ones the radio itself uses, so a beacon cannot invite anyone onto settings your radio is not running.

  • Listen for beacons — receive invitations broadcast by other nodes.
  • Broadcast a beacon — periodically advertise this mesh to nearby nodes, with an optional Beacon message of up to 100 bytes, a Broadcast interval picked from fixed intervals between 1 hour and 72 hours, and an Offered channel chosen from your radio’s own channels. The offered channel is required, and defaults to your primary channel.
  • Broadcast targets — optional extra destinations beyond the offered channel. Add target appends a row; each row picks a Channel and a Transmit preset, and Remove target deletes it. With no targets, the beacon goes out on the offered channel alone.

Two conditions block beacon setup:

  • The radio has no region set. The screen shows nothing but Set your radio’s region before setting up a beacon. Set the region on Settings → LoRa first.
  • The radio uses custom LoRa settings. A beacon advertises a modem preset for others to join, so a radio with Use Preset turned off has no standard preset to offer. In that state Broadcast a beacon can be turned off but not on, and the broadcast settings are read-only. Listening for beacons is unaffected.

Received invitations appear as Mesh invitations cards on the Discovery screen. Each card shows the sender’s message plus the offered channel, region, preset, and signal quality, with these actions:

  • Join — switch to the offered channel and preset (retunes the radio and reboots). When the offer matches your current frequency slot, an Add channel action adds it without a reboot.
  • Discover — seed a Discovery scan with the offered preset so you can survey that mesh before joining (shown only when the beacon offers a preset).
  • Dismiss — ignore the invitation.

Channels advertised by beacons also show up in the scan setup as Beacon channels — select one to include it as a scan target.

An invitation to a mesh your radio is already on is suppressed: no card, no notification, and no Beacon channels entry. A channel counts as one you already have only when both its name and its key match a channel on your radio — the same name with a different key is a different mesh, so that invitation still reaches you.

Manual Exploration

The following tools are available at any time from the node list and node detail screens. Use them to investigate specific paths and build a topology picture, alongside or instead of a full scan.

Traceroute

Traceroute reveals the exact path a message takes from your node to any other node on the mesh. It’s the single most useful tool for debugging connectivity problems.

Running a Traceroute

  1. Navigate to Nodes and tap the node you want to trace.
  2. On the node detail screen, find Traceroute in the Telemetry section and tap its request button. Once a result arrives, a second button on the same row opens the traceroute log, where each hop is listed with its signal quality.

Reading the Results

A traceroute result looks like this:

Route traced toward destination:
+            Local Mesh Discovery | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
🌐 English
Meshtastic Docs ↗

Local Mesh Discovery

Discovery tools help you understand how your mesh network is connected — which nodes can hear each other, what paths messages take, and where bottlenecks or weak links exist.

The app offers two complementary approaches:

  • Local Mesh Discovery (Scanner) — an automated mode that cycles your connected radio through different LoRa presets, listens on each, and ranks which preset performs best at your location.
  • Manual exploration — traceroute, Neighbor Info, and the node list, which you can use at any time to investigate specific paths and topology.

Local Mesh Discovery (Scanner)

Local Mesh Discovery is a dedicated scanning mode that helps you find the best LoRa modem preset for your location and see which nodes are active on each preset. It cycles your connected radio through one or more presets you choose, dwells on each one — listens for a set time — to collect packets, then analyzes and ranks the results.

Connect your radio, then open Settings → Advanced → Local Mesh Discovery. On Android the Advanced section stays grayed out until a radio is connected and the app has finished reading its configuration, and every entry in it is disabled on a managed device. On desktop, Local Mesh Discovery has its own entry on the Settings screen, with no such gate.

ℹ️ Note: Discovery temporarily changes your radio’s LoRa settings while it scans, then restores your original configuration when it finishes.

Setting Up a Scan

Before starting, configure these controls:

Control Description
LoRa preset picker Select one or more presets to scan. Discovery dwells on each selected preset in turn.
Dwell time Time to listen on each preset. Choose from 1, 5, 15, 30, 45, 60, 90, 120, or 180 minutes. Longer dwell times collect more packets and give a clearer picture, but take longer.
Keep screen awake Keeps the phone out of Android Doze mode, which would otherwise drop radio packets during a long scan. Recommended — a scan run with it off can under-count what the radio heard.

The Start Scan button stays disabled — with an explanation of why — until the scan can run. Common reasons it’s disabled:

  • The radio is not connected.
  • No presets have been selected to scan.
  • The selected preset uses 2.4 GHz, which your hardware doesn’t support.

Live Progress

While a scan runs, Discovery shows its current stage:

Stage What’s happening
Preparing scan Saving your current configuration and getting ready to scan.
Shifting to <preset> Switching the radio to the next preset to test.
Reconnecting on <preset> Re-establishing the connection after the preset change.
Dwelling on <preset> Listening on the current preset to collect packets, with a countdown to the next step.
Analyzing results Processing the collected packets and ranking the presets.
Restoring home preset Putting your original LoRa configuration back.
Cancelling scan You tapped Stop Scan; partial results are saved before the original preset is restored.
Scan failed: <reason> The scan could not continue — most often the radio did not come back within a minute of a preset change. The results collected so far are saved, and the original preset is restored automatically.

Dwell countdown showing time remaining on the current preset

If a scan is interrupted — the app is closed, or the radio goes away — the app restores your original preset the next time it reconnects to that radio, and tells you it has done so. Reconnect the same radio to let that happen; until you do, the radio stays on whichever preset the scan left it on.

Reading the Results

When the scan completes, Discovery presents a per-preset result card for each preset it tested, plus an overall summary.

Per-preset result card with ranking and collected metrics

Metrics include:

Metric What it tells you
RF health Overall quality of the radio environment on that preset.
Channel utilization How busy the airwaves were during the dwell.
Airtime Transmission time observed.
Direct vs. relayed nodes How many mesh nodes were heard directly versus via a relay.
Bad / duplicate packets Counts of corrupt and repeated packets, indicating congestion or interference.

Additional features available from the results:

  • Scan History — saved sessions you can revisit; view or delete past scans.
  • Discovery Map — a map of the nodes found during the scan.
  • Report export — export a report as a PDF on Android, or as text on other platforms.

💡 Tip: On Google Play builds, Discovery can generate an on-device AI summary (Gemini Nano) of your results. F-Droid builds always use the algorithmic summary — the proprietary ML Kit dependency is deliberately excluded from that flavor — so you get a readable interpretation of the scan either way.

Mesh Beacon

Mesh Beacon lets nodes invite others to join their mesh. A beaconing node periodically broadcasts an invitation — optionally advertising a channel, region, and modem preset — that nearby nodes can hear even before they share a configuration.

Configure it under Settings → Module configuration → Mesh Beacon. The entry appears only on radios running firmware 2.8.0 or newer. A read-only Region row at the top of the screen shows the region the beacon advertises: that region, and the preset, are always the ones the radio itself uses, so a beacon cannot invite anyone onto settings your radio is not running.

  • Listen for beacons — receive invitations broadcast by other nodes.
  • Broadcast a beacon — periodically advertise this mesh to nearby nodes, with an optional Beacon message of up to 100 bytes, a Broadcast interval picked from fixed intervals between 1 hour and 72 hours, and an Offered channel chosen from your radio’s own channels. The offered channel is required, and defaults to your primary channel. Over remote admin the picker offers the primary channel only.
  • Broadcast targets — optional extra destinations beyond the offered channel. Add target appends a row; each row picks a Channel and a Transmit preset, and Remove target deletes it. With no targets, the beacon goes out on the offered channel alone.

Two conditions block beacon setup:

  • The radio has no region set. The screen shows nothing but Set your radio’s region before setting up a beacon. Set the region on Settings → LoRa first.
  • The radio uses custom LoRa settings. A beacon advertises a modem preset for others to join, so a radio with Use Preset turned off has no standard preset to offer. In that state Broadcast a beacon can be turned off but not on, and the broadcast settings are read-only. Listening for beacons is unaffected.

Received invitations appear as Mesh invitations cards on the Discovery screen. Each card shows the sender’s message plus the offered channel, region, preset, and signal quality, with these actions:

  • Join — switch to the offered channel and preset (retunes the radio and reboots). When the offer matches your current frequency slot, an Add channel action adds it without a reboot.
  • Discover — seed a Discovery scan with the offered preset so you can survey that mesh before joining (shown only when the beacon offers a preset).
  • Dismiss — ignore the invitation.

Channels advertised by beacons also show up in the scan setup as Beacon channels — select one to include it as a scan target.

An invitation to a mesh your radio is already on is suppressed: no card, no notification, and no Beacon channels entry. A channel counts as one you already have only when both its name and its key match a channel on your radio — the same name with a different key is a different mesh, so that invitation still reaches you.

Manual Exploration

The following tools are available at any time from the node list and node detail screens. Use them to investigate specific paths and build a topology picture, alongside or instead of a full scan.

Traceroute

Traceroute reveals the exact path a message takes from your node to any other node on the mesh. It’s the single most useful tool for debugging connectivity problems.

Running a Traceroute

  1. Navigate to Nodes and tap the node you want to trace.
  2. On the node detail screen, find Traceroute in the Telemetry section and tap its request button. Once a result arrives, a second button on the same row opens the traceroute log, where each hop is listed with its signal quality.

Reading the Results

A traceroute result looks like this:

Route traced toward destination:
 
 ■ Your Node (YOUR)
 ⇊ 8.5 dB
diff --git a/main/en/user/help-and-docs.html b/main/en/user/help-and-docs.html
index d7d539e66b..35199263da 100644
--- a/main/en/user/help-and-docs.html
+++ b/main/en/user/help-and-docs.html
@@ -1 +1 @@
-            Help & In-App Docs | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
🌐 English
Meshtastic Docs ↗

Help & In-App Docs

This same user documentation ships inside the app, so you can read it offline without leaving Meshtastic. Open it from Settings → Help & Documentation.

Browsing

The docs browser lists every user-guide page. Tap a page to read it; images and cross-links work just like they do here.

In-app documentation browser table of contents

The search box sits at the top of the docs browser. Type in it to filter pages by title and keywords — results update as you type, and the Clear search button (✕) empties the box.

Searching the in-app documentation

A page open in the browser:

A documentation page rendered in the app

Chirpy — the AI Assistant

Chirpy answers plain-language questions about Meshtastic using this bundled documentation as its source. Tap the Chirpy button in the docs browser, type a question, and it replies with an answer and links to the relevant pages.

Chirpy AI assistant answering a question with page links

Chirpy is Google-flavor Android only. On F-Droid, desktop and iOS builds the assistant button does not appear at all — the same is true on a phone whose hardware cannot run the on-device model. Browsing and the docs browser’s own search work normally on every platform.

🔒 Privacy: On supported phones running the Google-flavor build, Chirpy runs on-device using Gemini Nano — your questions never leave your phone. A small model downloads on first use.

  • Translate the App — how these pages get localized into other languages
  • App Functions — the separate system-AI integration (distinct from Chirpy)

+ Help & In-App Docs | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Help & In-App Docs

This same user documentation ships inside the app, so you can read it offline without leaving Meshtastic. Open it from Settings → Help & Documentation.

Browsing

The docs browser lists every user-guide page. Tap a page to read it; images and cross-links work just like they do here.

In-app documentation browser table of contents

Tap the search field at the top of the docs browser to open a full-screen search view. Type to filter pages by title and keywords — results update as you type, under the same field. The back arrow, or the keyboard’s search action, closes the view. The field hides while you scroll down the page list and comes back when you scroll up.

Searching the in-app documentation

A page open in the browser:

A documentation page rendered in the app

Chirpy — the AI Assistant

Chirpy answers plain-language questions about Meshtastic using this bundled documentation as its source. Tap the Chirpy button in the docs browser, type a question, and it replies with an answer and links to the relevant pages.

Chirpy AI assistant answering a question with page links

Chirpy is Google-flavor Android only. On F-Droid, desktop and iOS builds the assistant button does not appear at all — the same is true on a phone whose hardware cannot run the on-device model. Browsing and the docs browser’s own search work normally on every platform.

🔒 Privacy: On supported phones running the Google-flavor build, Chirpy runs on-device using Gemini Nano — your questions never leave your phone. A small model downloads on first use.

  • Translate the App — how these pages get localized into other languages
  • App Functions — the separate system-AI integration (distinct from Chirpy)

diff --git a/main/en/user/map-and-waypoints.html b/main/en/user/map-and-waypoints.html index 01b0445cef..816030b2df 100644 --- a/main/en/user/map-and-waypoints.html +++ b/main/en/user/map-and-waypoints.html @@ -1,2 +1,2 @@ - Map & Waypoints | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Map & Waypoints

The Map screen shows the geographic positions of nodes on your mesh, along with shared waypoints.

Map View

The map displays:

  • Node positions — colored markers for each node reporting location
  • Waypoints — shared points of interest
  • Your position — your current GPS location

Node Markers

Each node that reports a position is shown as a node chip marker displaying the node’s short name. The chip is colored by the node’s own identity color (a stable color derived from its node number) — the same chip used in the node list, so a node looks the same everywhere. Marker color does not encode online/offline status. When a node’s position updates live, its marker briefly pulses. Nearby markers are clustered as you zoom out.

Map Controls

  • Zoom — pinch or use +/- buttons
  • Pan — drag to explore
  • Center — tap the location button to center on your position
  • Node tap — tap a node marker to view details

The floating toolbar provides quick access to the compass, the map type and layers pickers, node filters, Site Planner, and location tracking. Tap the compass to reorient north-up, or tap the location button to center on your current position. On Google Play builds a refresh button joins them while a network layer is showing; on F-Droid and Desktop, refresh a network layer from its own row in the layers sheet instead.

Map floating toolbar with compass, filter, refresh, and location controls

Filtering the Map

Tap the filter button in the floating toolbar to open Filter map. Display controls what is drawn: Only Favorites, Show Waypoints, Show Precision Circles, and a slider that hides nodes not heard from recently. Node roles is a chip per device role, plus All to show every role; a selected chip means that role is shown. Nodes narrows the set further with Hide offline nodes, Only show direct nodes, Exclude MQTT, Show ignored nodes, and Include unknown.

A dot on the filter button means at least one filter is hiding something — check it before concluding the mesh is quiet. Turning Show Waypoints off hides every waypoint, including your own. Show ignored nodes adds them to the map rather than showing only them — unlike the node list’s Only show ignored Nodes.

Waypoints

Waypoints are shared points of interest, visible to everyone on your mesh.

Creating a Waypoint

Your radio must be connected — the map ignores a touch & hold while it is not, because saving a waypoint means broadcasting it.

  1. Touch & hold the map at the desired location.
  2. Enter a name and optional description.
  3. Choose an icon/emoji for the waypoint.
  4. Tap Send to share with the mesh.

Waypoints always broadcast to the whole mesh on the primary channel. Unlike a message, a waypoint cannot be addressed to one channel or sent as a direct message.

Waypoint Properties

Property Description
Name Short identifier (max 29 characters)
Description Optional longer description
Icon Visual marker emoji on the map
Locked If locked, only the creator can edit or delete
Expiration Optional auto-remove date and time
Geofence Optional enter/exit alert area — see Waypoint Geofences

Waypoint Expiration

Waypoints can be set to expire automatically:

  • Never (default) — waypoint remains until manually deleted
  • Timed — pick a specific date and time; the waypoint is automatically removed once that time passes. Useful for temporary markers like rally points, hazards, or meeting locations.

Expired waypoints are automatically hidden from the map so they don’t clutter the display. The expiration countdown is based on the absolute time you picked, not a duration from when the waypoint was created or received.

Waypoint Geofences

Any waypoint can also define a geofence — an alert area — so you or others get notified when a node enters or leaves it:

  1. Set a geofence radius from the preset chips (or Off to disable), or tap Set area on map to draw a custom rectangular area instead.
  2. Once a region is set, toggle Notify on enter and/or Notify on exit.
  3. Optionally enable Favorites only to limit alerts to your favorited nodes.

Since waypoints (and their geofences) are broadcast to the whole mesh, only the creator is alerted by default. If someone else shares a geofenced waypoint with you, its detail view offers a Notify me of crossings opt-in so you can also receive enter/exit alerts for it.

Managing Waypoints

  • Tap a waypoint to see its name, description, and geofence radius. On Google Play builds the first tap opens the marker’s info bubble — tap the bubble to open the waypoint itself
  • Locked waypoints can only be changed on the mesh by the node that locked them
  • Unlocked waypoints can be edited by any mesh member while connected to a radio — saving re-broadcasts the waypoint
  • Confirming a delete removes your own copy. To remove it from everyone else’s map too, select Delete for everyone in the delete dialog; that box appears only for a waypoint you may change (unlocked, or locked by you) and only while you are connected

Map Layers

Tap the layers icon on the map to open Manage Map Layers. It imports your own overlays in .kml, .kmz, or GeoJSON format — including KMZ ground overlays (georeferenced images, such as exported topo or aerial tiles), which drape at their stated bounds. Add one by picking a file with Add Layer, opening a file with Meshtastic, or sharing it into the app from another app. Add Network Layer instead takes a name and an http:// or https:// URL pointing at a KML or GeoJSON file; that layer then carries its own refresh button in the sheet. On Google Play builds the toolbar’s refresh button re-fetches every visible network layer at once.

Imported layers are listed with a toggle to show/hide each one and an option to remove it. Each layer — imported or built-in overlay — carries its own opacity slider while it is switched on, so an overlay can be faded back rather than only switched off. This works on the Google Play build, the F-Droid build, and Desktop, which shares the same layer store and file picker.

Site Planner

Site Planner estimates RF coverage for a transmitter and draws it on the map as a color-coded overlay. Open it from a map control, or from a node’s detail page via Estimate coverage (shown only for nodes with a known position). Configure the transmitter (location, frequency, TX power, antenna gain and height), the receiver (sensitivity, height), and simulation options (max range, high-resolution terrain, color palette), then run the estimate. Like map layers, Site Planner works on both the Google Play and F-Droid builds, where the finished estimate is drawn on the map as a coverage overlay. On Desktop the same form is shown but the planner opens in your browser; to bring the estimate onto the map, click the transmitter pin in the browser, choose the planner’s GeoJSON export, then add the downloaded file under Manage Map Layers with Add Layer. Use the GeoJSON export, not the KML one — the KML is a ground-overlay image this map cannot draw.

Position Sharing

Enabling Position Sharing

Your node shares its GPS position based on:

  • Broadcast Interval — share the position on a fixed timer
  • Smart Position — share only once you have moved far enough; Smart Interval sets the shortest gap between broadcasts and Smart Distance how far you must move
  • Fixed Position — publish a latitude, longitude, and altitude you enter by hand instead of the GPS reading
  • GPS Mode (Physical Hardware) — GPS enabled, disabled, or not present on this hardware; offered only while Fixed Position is off

Configure position behavior in Settings → Device configuration → Position. The screen is only reachable while your radio is connected, and saving it reboots the radio. For the full field list, see Settings — Radio & User.

Privacy Considerations

🔒 Privacy: Position data is broadcast to all nodes on your channel. If you don’t want your location shared, disable GPS position in settings or use a fixed/fake position. To keep sharing a position without pinpointing yourself, edit the channel in Settings → Channels, turn Precise location off, and set the slider beneath it — the channel then publishes an approximate area, shown as ± a distance, instead of an exact point.

Map Sources

Every build offers a base map picker from the map toolbar. Google Play builds open on Google’s own map types; F-Droid and Desktop builds open on MapLibre’s vector styles. Further down the base map picker, all three offer the same raster base maps:

Base map Notes
Normal / Satellite / Terrain / Hybrid Google Play only — Google’s own map types
Liberty Default on F-Droid and Desktop. Vector street map
Positron F-Droid and Desktop only. Low-contrast vector map; keeps node markers legible over it
Dark F-Droid and Desktop only. Vector map suited to dark themes
OpenStreetMap Classic raster street tiles
OpenTopoMap Raster topographic
USGS Topo / USGS Imagery US coverage only
Esri Topo / Esri Imagery Topographic and satellite imagery

Overlays can be toggled on top of any base map, from the layers sheet:

  • Weather radar — NOAA NEXRAD reflectivity (US coverage)
  • Hillshade — terrain relief, on F-Droid and Desktop only. Useful for understanding why a link fails, since LoRa range is limited by terrain

Adding your own tile source

Any XYZ tile endpoint can be added as a base map, on every flavor and on desktop. Open Manage Custom Tile Sources at the foot of the base map picker and paste a URL template using {z}, {x} and {y} — plus {s} if the provider uses rotating subdomains. A national mapping service, for example:

https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg
-

Tiles are cached on disk, so panning does not re-download what you were just looking at.

On Android, the same screen also imports a local .mbtiles archive for fully offline use.

On F-Droid, select a vector base map first — Liberty, Positron, or Dark — since a download is defined against a vector style and Start Download stays disabled over a raster one. Frame the area you want on screen, then tap Start Download in the layers sheet: that creates a paused pack covering the current zoom plus two levels deeper. Press play on the pack’s row to actually download it.

On Google Play, the layers sheet’s Offline Manager section downloads its own offline regions instead — water, roads and administrative boundaries extracted from the public Protomaps basemap dataset, drawn directly as map shapes rather than raster tiles. Frame the area you want, tap Start Download, and once it finishes flip Show on map to draw it (it’s off by default so it never surprises you by covering up the live map). You can still import a pre-made .mbtiles archive here too, as before. Desktop has neither.

Going offline

An Offline pill appears over the map whenever the device has no network connection. On Google Play builds, if you’ve imported a local .mbtiles archive, the map switches to it automatically the moment the network drops — no toggle to remember — and switches back once you’re reconnected, as long as you haven’t picked a different base map yourself in between. On F-Droid, a downloaded offline area keeps rendering on its own; the pill is purely informational there. Desktop has no offline downloads at all yet, so the pill is informational there too.

  • Nodes — view and filter your node list
  • Node Metrics — signal quality and position history for individual nodes
  • Local Mesh Discovery — traceroute and neighbor info for understanding mesh topology
  • Units & Locale — distance and coordinate display formats

+ Map & Waypoints | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Map & Waypoints

The Map screen shows the geographic positions of nodes on your mesh, along with shared waypoints.

Map View

The map displays:

  • Node positions — colored markers for each node reporting location
  • Waypoints — shared points of interest
  • Your position — your current GPS location

Node Markers

Each node that reports a position is shown as a node chip marker displaying the node’s short name. The chip is colored by the node’s own identity color (a stable color derived from its node number) — the same chip used in the node list, so a node looks the same everywhere. Marker color does not encode online/offline status. When a node’s position updates live, its marker briefly pulses. Nearby markers are clustered as you zoom out.

Map Controls

  • Zoom — pinch or use +/- buttons
  • Pan — drag to explore
  • Center — tap the location button to center on your position
  • Node tap — tap a node marker to view details

The floating toolbar provides quick access to the compass, the map type and layers pickers, node filters, Site Planner, and location tracking. Tap the compass to reorient north-up, or tap the location button to center on your current position. On Google Play builds a refresh button joins them while a network layer is showing; on F-Droid and Desktop, refresh a network layer from its own row in the layers sheet instead.

Map floating toolbar with compass, filter, refresh, and location controls

Filtering the Map

Tap the filter button in the floating toolbar to open Filter map. Display controls what is drawn: Only Favorites, Show Waypoints, Show Precision Circles, and a slider that hides nodes not heard from recently. Node roles is a chip per device role, plus All to show every role; a selected chip means that role is shown. Nodes narrows the set further with Hide offline nodes, Only show direct nodes, Signed only, Encrypted only, Exclude MQTT, Show ignored nodes, and Include unknown — the same rules as the node list’s filter toggles.

A dot on the filter button means at least one filter is hiding something — check it before concluding the mesh is quiet. Turning Show Waypoints off hides every waypoint, including your own. Show ignored nodes adds them to the map rather than showing only them — unlike the node list’s Only show ignored Nodes.

Waypoints

Waypoints are shared points of interest, visible to everyone on your mesh.

Creating a Waypoint

Your radio must be connected — the map ignores a touch & hold while it is not, because saving a waypoint means broadcasting it.

  1. Touch & hold the map at the desired location.
  2. Enter a name and optional description.
  3. Choose an icon/emoji for the waypoint.
  4. Tap Send to share with the mesh.

Waypoints always broadcast to the whole mesh on the primary channel. Unlike a message, a waypoint cannot be addressed to one channel or sent as a direct message.

Waypoint Properties

Property Description
Name Short identifier (max 29 characters)
Description Optional longer description
Icon Visual marker emoji on the map
Locked If locked, only the creator can edit or delete
Expiration Optional auto-remove date and time
Geofence Optional enter/exit alert area — see Waypoint Geofences

Waypoint Expiration

Waypoints can be set to expire automatically:

  • Never (default) — waypoint remains until manually deleted
  • Timed — pick a specific date and time; the waypoint is automatically removed once that time passes. Useful for temporary markers like rally points, hazards, or meeting locations.

Expired waypoints are automatically hidden from the map so they don’t clutter the display. The expiration countdown is based on the absolute time you picked, not a duration from when the waypoint was created or received.

Waypoint Geofences

Any waypoint can also define a geofence — an alert area — so you or others get notified when a node enters or leaves it:

  1. Set a geofence radius from the preset chips (or Off to disable), or tap Set area on map to draw a custom rectangular area instead.
  2. Once a region is set, toggle Notify on enter and/or Notify on exit.
  3. Optionally enable Favorites only to limit alerts to your favorited nodes.

Since waypoints (and their geofences) are broadcast to the whole mesh, only the creator is alerted by default. If someone else shares a geofenced waypoint with you, its detail view offers a Notify me of crossings opt-in so you can also receive enter/exit alerts for it.

Managing Waypoints

  • Tap a waypoint to see its name, description, and geofence radius. On Google Play builds the first tap opens the marker’s info bubble — tap the bubble to open the waypoint itself
  • Locked waypoints can only be changed on the mesh by the node that locked them
  • Unlocked waypoints can be edited by any mesh member while connected to a radio — saving re-broadcasts the waypoint
  • Confirming a delete removes your own copy. To remove it from everyone else’s map too, select Delete for everyone in the delete dialog; that box appears only for a waypoint you may change (unlocked, or locked by you) and only while you are connected

Map Layers

Tap the layers icon on the map to open Manage Map Layers. It imports your own overlays in .kml, .kmz, or GeoJSON format — including KMZ ground overlays (georeferenced images, such as exported topo or aerial tiles), which drape at their stated bounds. Add one by picking a file with Add Layer, opening a file with Meshtastic, or sharing it into the app from another app. Add Network Layer instead takes a name and an http:// or https:// URL pointing at a KML or GeoJSON file; that layer then carries its own refresh button in the sheet. On Google Play builds the toolbar’s refresh button re-fetches every visible network layer at once.

Imported layers are listed with a toggle to show/hide each one and an option to remove it. Each layer — imported or built-in overlay — carries its own opacity slider while it is switched on, so an overlay can be faded back rather than only switched off. This works on the Google Play build, the F-Droid build, and Desktop, which shares the same layer store and file picker.

Site Planner

Site Planner estimates RF coverage for a transmitter and draws it on the map as a color-coded overlay. Open it from a map control, or from a node’s detail page via Estimate coverage (shown only for nodes with a known position). Configure the transmitter (location, frequency, TX power, antenna gain and height), the receiver (sensitivity, height), and simulation options (max range, high-resolution terrain, color palette), then run the estimate. Like map layers, Site Planner works on both the Google Play and F-Droid builds, where the finished estimate is drawn on the map as a coverage overlay. On Desktop the same form is shown but the planner opens in your browser; to bring the estimate onto the map, click the transmitter pin in the browser, choose the planner’s GeoJSON export, then add the downloaded file under Manage Map Layers with Add Layer. Use the GeoJSON export, not the KML one — the KML is a ground-overlay image this map cannot draw.

Position Sharing

Enabling Position Sharing

Your node shares its GPS position based on:

  • Broadcast Interval — share the position on a fixed timer
  • Smart Position — share only once you have moved far enough; Smart Interval sets the shortest gap between broadcasts and Smart Distance how far you must move
  • Fixed Position — publish a latitude, longitude, and altitude you enter by hand instead of the GPS reading
  • GPS Mode (Physical Hardware) — GPS enabled, disabled, or not present on this hardware; offered only while Fixed Position is off

Configure position behavior in Settings → Device configuration → Position. The screen is only reachable while your radio is connected, and saving it reboots the radio. For the full field list, see Settings — Radio & User.

Privacy Considerations

🔒 Privacy: Position data is broadcast to all nodes on your channel. If you don’t want your location shared, disable GPS position in settings or use a fixed/fake position. To keep sharing a position without pinpointing yourself, edit the channel in Settings → Channels, turn Precise location off, and set the slider beneath it — the channel then publishes an approximate area, shown as ± a distance, instead of an exact point.

Map Sources

Every build offers a base map picker from the map toolbar. Google Play builds open on Google’s own map types; F-Droid and Desktop builds open on MapLibre’s vector styles. Further down the base map picker, all three offer the same raster base maps:

Base map Notes
Normal / Satellite / Terrain / Hybrid Google Play only — Google’s own map types
Liberty Default on F-Droid and Desktop. Vector street map
Positron F-Droid and Desktop only. Low-contrast vector map; keeps node markers legible over it
Dark F-Droid and Desktop only. Vector map suited to dark themes
OpenStreetMap Classic raster street tiles
OpenTopoMap Raster topographic
USGS Topo / USGS Imagery US coverage only
Esri Topo / Esri Imagery Topographic and satellite imagery

Overlays can be toggled on top of any base map, from the layers sheet:

  • Weather radar — NOAA NEXRAD reflectivity (US coverage)
  • Hillshade — terrain relief from an online tile source, on F-Droid and Desktop only; Google Play draws hillshade from downloaded offline terrain instead. Useful for understanding why a link fails, since LoRa range is limited by terrain

Adding your own tile source

Any XYZ tile endpoint can be added as a base map, on every flavor and on desktop. Open Manage Custom Tile Sources at the foot of the base map picker and paste a URL template using {z}, {x} and {y} — plus {s} if the provider uses rotating subdomains. A national mapping service, for example:

https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg
+

Tiles are cached on disk, so panning does not re-download what you were just looking at.

On Android, the same screen also imports a local .mbtiles archive for fully offline use.

On F-Droid, select a vector base map first — Liberty, Positron, or Dark — since a download is defined against a vector style and Start Download stays disabled over a raster one. Frame the area you want on screen, then tap Start Download in the layers sheet: that creates a paused pack covering the current zoom plus two levels deeper. Press play on the pack’s row to actually download it.

On Google Play, the layers sheet’s Offline Manager section downloads its own offline regions instead — water, roads and administrative boundaries extracted from the public Protomaps basemap dataset, drawn directly as map shapes rather than raster tiles. Frame the area you want, tap Start Download, and once it finishes flip Show on map to draw it (it’s off by default so it never surprises you by covering up the live map). You can still import a pre-made .mbtiles archive here too, as before. Desktop has neither, though the offline terrain described next does work there.

Offline terrain

Hillshade and elevation contours can be downloaded for offline use as well, so a downloaded area still shows why a link fails when there is no network. The terrain data comes from Mapterhorn and is credited on the map. On Google Play, each downloaded region in the Offline Manager list has a Download Terrain button and Hillshade and Contours switches; terrain attaches to that region and shares its storage limit, and an area too large for terrain asks you to zoom in or pick a smaller region. On F-Droid and Desktop, the layers sheet has an Offline Terrain section of its own: frame the area, tap Start Download, and the hillshade and contours draw from the downloaded tiles from then on.

Going offline

An Offline pill appears over the map whenever the device has no network connection. On Google Play builds, if you’ve imported a local .mbtiles archive, the map switches to it automatically the moment the network drops — no toggle to remember — and switches back once you’re reconnected, as long as you haven’t picked a different base map yourself in between. On F-Droid, a downloaded offline area keeps rendering on its own; the pill is purely informational there. Desktop downloads offline terrain but no base-map packs, so the pill is informational there too.

  • Nodes — view and filter your node list
  • Node Metrics — signal quality and position history for individual nodes
  • Local Mesh Discovery — traceroute and neighbor info for understanding mesh topology
  • Units & Locale — distance and coordinate display formats

diff --git a/main/en/user/mqtt.html b/main/en/user/mqtt.html index 022e8422eb..2d0598f8e8 100644 --- a/main/en/user/mqtt.html +++ b/main/en/user/mqtt.html @@ -1,2 +1,2 @@ - MQTT | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

MQTT

MQTT bridges your Meshtastic mesh network to the internet, enabling long-range communication beyond radio range.

Overview

The MQTT module connects your node to an MQTT broker, allowing:

  • Messages to reach nodes on different physical meshes via the internet
  • Integration with home automation and monitoring systems
  • Publishing node positions to the public Meshtastic map
  • Custom data pipelines for logging and alerting

How It Works

[Your Node] → Radio → [Gateway Node with Wi-Fi] → MQTT Broker → [Remote Gateway] → Radio → [Remote Node]
+            MQTT | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
🌐 English
Meshtastic Docs ↗

MQTT

MQTT bridges your Meshtastic mesh network to the internet, enabling long-range communication beyond radio range.

Overview

The MQTT module connects your node to an MQTT broker, allowing:

  • Messages to reach nodes on different physical meshes via the internet
  • Integration with home automation and monitoring systems
  • Publishing node positions to the public Meshtastic map
  • Custom data pipelines for logging and alerting

How It Works

[Your Node] → Radio → [Gateway Node with Wi-Fi] → MQTT Broker → [Remote Gateway] → Radio → [Remote Node]
 

A gateway node with internet access (Wi-Fi or Ethernet) publishes mesh messages to an MQTT topic. Remote gateways subscribed to the same topic inject those messages into their local mesh.

Configuration

Enabling MQTT

  1. Navigate to Settings → Module configuration → MQTT.
  2. Enable the MQTT module.
  3. Configure the broker connection:
Setting Description Default
Address MQTT broker hostname mqtt.meshtastic.org
Username Broker authentication meshdev
Password Broker authentication large4cats
Root topic Base topic for messages msh, which the radio rewrites to msh/<REGION> once you set a region
Encryption enabled Encrypt MQTT payload Enabled
JSON output enabled Also publish and consume the /2/json/ topic. Deprecated in the protobuf schema, but still the only toggle for this behavior — and the app’s own proxy honors it Disabled
TLS enabled Secure connection to broker Disabled
Map reporting Report position to public map Disabled
Proxy to client enabled Relay MQTT through the connected phone Disabled

Connection Status and Test Connection

The top of the MQTT settings screen shows the status of the relay this phone runs — Connected, Connecting, Reconnecting, Disconnected, or Inactive. It reads Inactive whenever the phone is not relaying, which includes the normal case of a radio reaching the broker over its own Wi-Fi or Ethernet. The radio’s own connection to the broker is not reported here.

Test connection probes the broker before you commit the settings to the radio, and distinguishes the failure modes: the hostname not resolving, the TCP connection being refused, TLS failing, the attempt timing out, or the broker rejecting your credentials with a reason.

MQTT Proxy on This Phone

If your radio has no internet access of its own, it can use the connected phone as its MQTT gateway: enable MQTT and Proxy to client enabled in the module config, and the app relays MQTT traffic between the radio and the broker over your phone’s internet connection.

ℹ️ Note: The proxy relay is mobile-only. On the Desktop app the MQTT settings are present, but no relay runs behind them.

The MQTT proxy on this phone toggle at the top of the MQTT settings screen shows whether this relay is running and lets you cut it off (or restart it) immediately — without editing and re-saving the radio’s MQTT configuration.

Default Meshtastic Broker

The community maintains a public broker at mqtt.meshtastic.org. This is intended for general use and testing.

When this phone relays MQTT for the radio, connections to that broker always use TLS on port 8883 even if TLS enabled is off — the app forces the switch on and grays it out. A radio that reaches the broker over its own Wi-Fi or Ethernet forces nothing: turn TLS enabled on yourself, or it connects in the clear on port 1883. For any other broker the toggle decides in both cases (port 8883 with TLS, 1883 without).

🔒 Privacy: Messages on the public broker are readable by anyone subscribed. Always use channel encryption for private communications.

Private Broker

For better privacy and control, you can run your own MQTT broker:

  • Mosquitto (lightweight, open-source)
  • HiveMQ
  • EMQX

Configure your node to point to your private broker with appropriate credentials.

Map Reporting

When Map reporting is on, your node periodically publishes a map report to the broker. The report goes out unencrypted, whatever keys your channels use, and carries your node id, long and short name, approximate location, hardware model, role, firmware version, LoRa region, modem preset, and primary channel name.

Turning it on opens a consent card. Turn on I agree. and choose a Map reporting interval (seconds) of one hour or more — the screen will not save until you do. A slider sets the position precision, and the app shows the resulting accuracy as a ± distance, so you can publish an approximate location rather than an exact one.

Reports appear at meshmap.net and similar community map services.

🔒 Privacy: A map report is readable by anyone subscribed to the broker. Leave Map reporting off if you do not want your approximate location published.

Direction Description
Uplink Messages from mesh → MQTT broker
Downlink Messages from MQTT broker → mesh

Uplink and downlink are per-channel settings, not MQTT module settings. Open Settings → Channels, tap the channel, and use MQTT Uplink Enabled and MQTT Downlink Enabled. Every channel you want bridged out needs uplink on, and every channel you want MQTT traffic injected into needs downlink on.

Message Formats

MQTT carries two payload formats:

Format Description Use case
Protobuf Binary Meshtastic protobuf encoding Node-to-node mesh bridging
JSON Human-readable JSON on the /2/json/ topic Consumers outside the mesh (dashboards, home automation)

ℹ️ Note: json_enabled is marked deprecated in the protobuf schema, but it has not been replaced and it is not ignored. When it is on, the app’s own MQTT proxy subscribes to the /2/json/ topic and decodes those payloads.

Encryption & Privacy

Understanding the layered encryption model:

  1. Channel encryption happens on the mesh before MQTT. If your channel has a PSK, the MQTT payload is already encrypted — the broker and any subscribers see only the ciphertext.
  2. Encryption enabled (the module setting) decides which copy of the packet the gateway publishes — it is not an extra layer. Leave it on and the broker receives the packet still encrypted with your channel key. Turn it off and the gateway publishes the decrypted packet, so anyone subscribed to the topic reads your messages in the clear. Turn it off only when you own the broker and want plain payloads for a dashboard.
  3. TLS encrypts the TCP connection to the broker itself, preventing network-level eavesdropping.

🔒 Security: The default public channel has a well-known key. Messages on the default channel sent via MQTT are effectively unencrypted — anyone can decode them. Always use a custom PSK for private communications.

Best Practices

  • Use channel-level encryption (PSK) on channels that bridge to MQTT
  • Don’t enable MQTT on nodes without internet access (the radio buffers unsendable messages and wastes memory)
  • Use a private broker for sensitive deployments
  • Be mindful of airtime when downlinking messages from busy MQTT topics — every downlinked message consumes radio airtime on your local mesh
  • Consider enabling uplink-only if you only need to monitor your mesh remotely without injecting messages back

Troubleshooting

MQTT Not Connecting

  • Check Wi-Fi — the gateway node must have an active internet connection (Wi-Fi or Ethernet). MQTT does not work over the LoRa radio link itself.
  • Verify credentials — with incorrect credentials, most brokers fail silently — double-check for trailing spaces.
  • Firewall — port 1883 (MQTT) or 8883 (MQTT over TLS) must be reachable. Some networks allow only web traffic (ports 80 and 443).
  • DNS resolution — if using a custom broker hostname, verify the node can resolve it. Try the broker’s IP address directly.

Messages Not Bridging

  • Check uplink/downlink settings — if only uplink is enabled, messages flow from mesh to MQTT but not back. Enable downlink on the receiving gateway.
  • Channel mismatch — both gateways must share the same channel with the same PSK. A mismatch means messages are encrypted with different keys and appear as garbage.
  • Topic mismatch — both gateways must use exactly the same root topic. Setting a region rewrites a default root to msh/<REGION> (for example msh/US), so gateways in different regions do not meet until you give both the same explicit root.
  • Ignore MQTT is on — in a region with a duty-cycle limit, the radio turns on Ignore MQTT (LoRa config, Advanced) when you set the region, and then drops every packet that reached it via MQTT. Turn it off on the receiving nodes, not only on the gateway.
  • Ok to MQTT is off — on a public broker a gateway uplinks other nodes’ packets only when the sending node has Ok to MQTT (LoRa config, Advanced) on. Your own traffic bridges either way; your neighbors’ does not until they opt in.

diff --git a/main/en/user/nodes.html b/main/en/user/nodes.html index cce18b9e0a..4c6b146f8c 100644 --- a/main/en/user/nodes.html +++ b/main/en/user/nodes.html @@ -1 +1 @@ - Nodes | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Nodes

The Nodes screen lists every node visible on your mesh.

Node List

The node list shows every node your radio has heard, including:

  • Node name — user-configured long name
  • Short name — 4-character identifier
  • Signal quality — SNR, RSSI, and a quality word, shown only for nodes your radio heard directly. In the Complete layout a node reached through a relay shows its hop count here instead; a node heard only over MQTT shows neither
  • Last heard — time since last communication
  • Distance — estimated distance (if positions are shared)
  • Battery — remote node battery level (if telemetry is enabled)

Choosing What the List Shows

The list has two densities, set at Settings → Node Layout. Complete shows every field a node has reported and hides the ones it hasn’t. Compact fits more nodes on screen and lets you pick the fields yourself — Power, Last Heard Time, Relative Last Heard Time, Distance and Bearing, Hops Away, Signal (Direct Only), Channel, and Device & Role. The Environment Metrics toggle applies to both densities. A preview above the toggles shows the effect before you leave the screen.

Node Status Indicators

Indicator Meaning
Green last-heard time Node heard within the last 2 hours
Plain last-heard time Node not heard for over 2 hours
⭐ Favorite Node you marked as a favorite.

There is no separate “away” tier.

Node Roles

Nodes can be configured with different roles that affect their mesh behavior:

Role Description
Client Standard end-user node
Client Base Treats favorited-node traffic as Router Late priority; all other traffic as Client
Client Mute Receives but doesn’t retransmit
Client Hidden Like Client Mute, plus hides from node list
Router Prioritizes message forwarding; stays awake to relay
Router Late Infrastructure node that rebroadcasts once, but only after all other modes (provides supplemental coverage)
Router Client ⚠️ Deprecated (removed in firmware 2.3.15) — no longer selectable; use Router or Client instead
Repeater ⚠️ Deprecated (removed in firmware 2.7.11) — no longer selectable; use Router instead
Tracker Optimized for position reporting at regular intervals
Sensor Optimized for telemetry reporting
TAK Interoperates with TAK systems (sends/receives CoT)
TAK Tracker TAK position reporting only
Lost and Found Sends its position to the default channel as a text message at regular intervals, to help recover a lost radio

Choosing a Role

Most users should keep the default Client role. Consider a different role when:

  • Router — You have a node in a fixed, elevated location with reliable power (rooftop, hilltop). Routers stay awake continuously to relay messages for others and are essential for extending mesh coverage. Don’t use Router on battery-powered handheld radios.
  • Router Late — An infrastructure node that always rebroadcasts packets once but only after all other routing modes have had their turn. Provides supplemental coverage for local clusters without competing with primary routers.
  • Client Base — Treats traffic from/to your favorited nodes with Router Late priority (ensuring those messages get extra relay coverage) while handling everything else as a normal Client.
  • Client Mute — You want to receive mesh traffic but not contribute to relaying. Useful for monitoring-only radios or to reduce congestion in dense areas.
  • Tracker — An unattended radio whose sole purpose is broadcasting its GPS position (e.g., a vehicle, pet, or asset). Sleeps between broadcasts to conserve battery.
  • Sensor — An unattended radio reporting environmental telemetry (temperature, humidity, air quality). Similar power profile to Tracker.
  • TAK / TAK Tracker — Only needed if interoperating with ATAK/WinTAK systems. See TAK Integration for details.

💡 Tip: The mesh works best when most nodes are Client or Router. Too many Client Mute nodes reduce mesh resilience; too many Routers in a dense area can cause congestion. A good rule of thumb: one Router per 5–10 Clients in your area.

Encryption Indicators

Nodes display encryption status icons next to their name:

Icon Meaning
🔒 Locked Communication uses PKI (public key infrastructure) — end-to-end encrypted with verified identity
🔓 Unlocked No public key has been received for this node, so it cannot be direct messaged — use Request User Info on the node detail page to ask for one
⚠️ Mismatch Public key mismatch — the node’s key has changed since last seen (investigate before trusting)

💡 Tip: Direct messages always use PKI, so the radio needs the other node’s public key before it can send one. It refuses the send rather than falling back to channel encryption. Keys arrive inside node info, which is why an open lock usually clears itself once that node is heard from properly. If you see a key mismatch warning, the node may have been reset or compromised.

To clear a mismatch, first confirm through another trusted channel that the key change was intentional — a factory reset causes one. Then touch & hold the node, choose Remove, and let the two radios exchange keys again the next time yours hears it.

Quick Actions

From the node list, you can:

  • Tap a node to view its detail page
  • Touch & hold for quick actions:
    • Mark/remove favorite
    • Mute/unmute notifications
    • Send a direct message
    • Trace route
    • Ignore/unignore
    • Remove

Touch & hold your own node instead and you get one action, Update status, which opens the User settings screen with the cursor already in the Status Message field. It only appears while the radio is connected and running firmware 2.8 or newer — see Settings — Radio & User for the field itself.

Sharing a Contact

On a node’s detail screen, tap Share Contact to produce a link and a QR code for that node. From the same dialog, Share link opens the Android share sheet (on desktop it copies the link instead), Write to NFC tag saves it to a writable NFC tag, and Copy puts it on the clipboard. While that dialog is open and in front of you, the phone also offers the same link to any NFC reader, so someone can take the contact by tapping their phone against yours with no tag involved.

To add someone else’s contact, use the import button on the node list and choose Scan Shared Contact QR Code, Scan Shared Contact NFC, or Input Shared Contact URL. The app asks you to confirm with Import Shared Contact?, and warns you when the contact is one you already have.

Filtering & Sorting

Type in the search field to filter nodes by name or short name. The filter updates in real time as you type.

Filter Toggles

Filter Description
Hide offline nodes Show only nodes heard within the last 2 hours
Only show direct nodes Show only nodes your radio heard directly, with no relay in between
Include unknown Show nodes that haven’t sent user info yet. On by default, so a node heard before its info arrives stays visible; these carry a badge marking them incomplete, and cannot be direct messaged until their user info brings a public key
Exclude infrastructure Hide infrastructure-role nodes (Router, Router Late, Client Base, and legacy Repeater nodes) and any node that cannot be messaged, whatever its role
Exclude MQTT Hide nodes heard only via MQTT internet bridge
Only show ignored Nodes Replace the list with the nodes you have ignored. Every other node is hidden while this is on, and a banner appears at the top of the list to take you back

Sort Options

Sort Description
Last heard Most recently heard nodes first
A-Z Sorted by node long name
Distance Nearest nodes first (requires position sharing)
Hops away Fewest relay hops first
Channel Grouped by channel index
via MQTT Grouped by MQTT vs. radio-heard
via Favorite (default) Favorited nodes first, then the rest

Nodes per Hop

Tap the hop-histogram icon in the node list’s app bar to open a bar chart of how many nodes sit at each hop distance (0 = direct, 1 = one relay away, and so on). Filter the chart to a last heard window — All time, 1 hour, 8 hours, or 24 hours — to see how the mesh looks right now versus over a longer period. It’s a quick way to gauge how busy and spread out your local mesh is.

Node Detail

Tapping a node opens the detail view with comprehensive information. See Node Metrics for full details on metrics and telemetry.

Signal quality is rated against your modem preset. The same SNR can be good on a long-range preset and poor on a faster one. Traceroute and neighbor-info SNR colors use that preset too. RSSI text has its own strength colors; it affects the quality rating only when a noise-floor reading is also available.

The Details card carries the node’s short name, role, IDs, last heard time, hops away, uptime, and its SNR and RSSI:

Node detail section

Inline status indicators show key metrics at a glance:

Indicator Screenshot
Signal quality Signal
Battery level Battery
Hop count Hops
Last heard Last heard
Distance Distance

When a node’s hardware is recognized, the detail view shows a collapsible “I want one” section linking to places to buy or learn more about that device: the vendor’s product page, product variants, and regional marketplace listings (such as AliExpress, Amazon, and supported retailers), filtered to your country. Each link opens through the msh.to redirect service. Devices with no matching links don’t show the section.

A full, browsable directory of every link is also available at Settings → Device Links. The item is hidden while you have Settings open for a remote node.

Some of these are affiliate links. Both places say so above the links: product links may be affiliate links, and purchases may earn Meshtastic a commission.

When No Nodes Appear

The list stays empty until your radio hears another node.

  • No device connected — the app is not connected to a radio. See Connections.
  • Searching for nodes — the radio is connected and listening, but nothing has arrived yet. Check that its region and modem preset match the mesh around you, and leave Include unknown on so a node that has not yet sent its name still appears. See Settings — Radio & User.
  • A node you expect is missing — check the filter toggles. Only show direct nodes, Exclude MQTT, and Exclude infrastructure each hide a whole category of node.

+ Nodes | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Nodes

The Nodes screen lists every node visible on your mesh.

Node List

The node list shows every node your radio has heard, including:

  • Node name — user-configured long name
  • Short name — 4-character identifier
  • Signal quality — SNR, RSSI, and a quality word, shown only for nodes your radio heard directly. In the Complete layout a node reached through a relay shows its hop count here instead; a node heard only over MQTT shows neither
  • Last heard — time since last communication
  • Distance — estimated distance (if positions are shared)
  • Battery — remote node battery level (if telemetry is enabled)

Choosing What the List Shows

The list has two densities, set at Settings → Node Layout. Complete shows every field a node has reported and hides the ones it hasn’t. Compact fits more nodes on screen and lets you pick the fields yourself — Power, Last Heard Time, Relative Last Heard Time, Distance and Bearing, Hops Away, Signal (Direct Only), Channel, and Device & Role. The Environment Metrics toggle applies to both densities. A preview above the toggles shows the effect before you leave the screen.

Node Status Indicators

Indicator Meaning
Green last-heard time Node heard within the last 2 hours
Plain last-heard time Node not heard for over 2 hours
⭐ Favorite Node you marked as a favorite.

There is no separate “away” tier.

Node Roles

Nodes can be configured with different roles that affect their mesh behavior:

Role Description
Client Standard end-user node
Client Base Treats favorited-node traffic as Router Late priority; all other traffic as Client
Client Mute Receives but doesn’t retransmit
Client Hidden Like Client Mute, plus hides from node list
Router Prioritizes message forwarding; stays awake to relay
Router Late Infrastructure node that rebroadcasts once, but only after all other modes (provides supplemental coverage)
Router Client ⚠️ Deprecated (removed in firmware 2.3.15) — no longer selectable; use Router or Client instead
Repeater ⚠️ Deprecated (removed in firmware 2.7.11) — no longer selectable; use Router instead
Tracker Optimized for position reporting at regular intervals
Sensor Optimized for telemetry reporting
TAK Interoperates with TAK systems (sends/receives CoT)
TAK Tracker TAK position reporting only
Lost and Found Sends its position to the default channel as a text message at regular intervals, to help recover a lost radio

Choosing a Role

Most users should keep the default Client role. Consider a different role when:

  • Router — You have a node in a fixed, elevated location with reliable power (rooftop, hilltop). Routers stay awake continuously to relay messages for others and are essential for extending mesh coverage. Don’t use Router on battery-powered handheld radios.
  • Router Late — An infrastructure node that always rebroadcasts packets once but only after all other routing modes have had their turn. Provides supplemental coverage for local clusters without competing with primary routers.
  • Client Base — Treats traffic from/to your favorited nodes with Router Late priority (ensuring those messages get extra relay coverage) while handling everything else as a normal Client.
  • Client Mute — You want to receive mesh traffic but not contribute to relaying. Useful for monitoring-only radios or to reduce congestion in dense areas.
  • Tracker — An unattended radio whose sole purpose is broadcasting its GPS position (e.g., a vehicle, pet, or asset). Sleeps between broadcasts to conserve battery.
  • Sensor — An unattended radio reporting environmental telemetry (temperature, humidity, air quality). Similar power profile to Tracker.
  • TAK / TAK Tracker — Only needed if interoperating with ATAK/WinTAK systems. See TAK Integration for details.

💡 Tip: The mesh works best when most nodes are Client or Router. Too many Client Mute nodes reduce mesh resilience; too many Routers in a dense area can cause congestion. A good rule of thumb: one Router per 5–10 Clients in your area.

Security indicators

Each node carries one security icon beside its name in the node list. Tap it to read what it means, and choose Show All Meanings in that dialog for the full legend. The detail screen shows the same state in words, as a Security row that opens the same dialog.

Icon Meaning Shown for
Person with a shield check (green) Verified contact — you verified this node’s key in person by exchanging contact QR codes, so its identity is confirmed. The strongest trust the list shows. Your own connected node carries it too Any firmware version
Nodes icon with a shield check (green) Signed node — this node signs its broadcasts with its identity key, so its identity is consistent over time, but you have not verified it in person. On firmware 2.8 the icon appears from the version alone, before any signed broadcast has been heard Firmware 2.8 or newer, and any node whose signed broadcast your node has verified
🔒 Closed lock A public key is on file and matches, so direct messages to this node are encrypted Firmware before 2.8, or no reported version
🔓 Open lock No public key has been received for this node, so it cannot be direct messaged — use Request User Info on the node detail page to ask for one Firmware before 2.8, or no reported version
⚠️ Mismatch Public key mismatch — a different key arrived for this node after one was stored. Investigate before trusting Any firmware version

Every node on firmware 2.8 or newer signs its broadcasts, so on that firmware the signed state is the baseline and the locks are not shown.

Direct messages always use public-key encryption, so your node needs the other node’s public key before it can send one. It refuses the send rather than falling back to channel encryption. Keys arrive inside node info, which is why an open lock usually clears itself once that node is heard from properly.

A mismatch never replaces the key you already hold. The app keeps the first key it recorded and refuses the new one, as the firmware does, so a stray or hostile node info cannot silently break encrypted messaging to a contact. To clear a mismatch, first confirm through another trusted channel that the key change was intentional — a factory reset causes one. Then touch & hold the node, choose Remove, and let the two nodes exchange keys again the next time yours hears it.

Quick Actions

From the node list, you can:

  • Tap a node to view its detail page
  • Touch & hold for quick actions:
    • Mark/remove favorite
    • Mute/unmute notifications
    • Send a direct message
    • Trace route
    • Ignore/unignore
    • Remove

Touch & hold your own node instead and you get one action, Update status, which opens the User settings screen with the cursor already in the Status Message field. It only appears while the radio is connected and running firmware 2.8 or newer — see Settings — Radio & User for the field itself.

Sharing a Contact

On a node’s detail screen, tap Share Contact to produce a link and a QR code for that node. From the same dialog, Share link opens the Android share sheet (on desktop it copies the link instead), Write to NFC tag saves it to a writable NFC tag, and Copy puts it on the clipboard. While that dialog is open and in front of you, the phone also offers the same link to any NFC reader, so someone can take the contact by tapping their phone against yours with no tag involved.

Sharing your own contact this way marks it as verified in person, so whoever imports it sees the Verified contact icon rather than the signed one. Relaying someone else’s contact passes on only what your app had already recorded about them.

To add someone else’s contact, use the import button on the node list and choose Scan Shared Contact QR Code, Scan Shared Contact NFC, or Input Shared Contact URL. The app asks you to confirm with Import Shared Contact?, and warns you when the contact is one you already have.

Filtering & Sorting

Type in the search field to filter nodes by name or short name. The filter updates in real time as you type.

Filter Toggles

Filter Description
Hide offline nodes Show only nodes heard within the last 2 hours
Only show direct nodes Show only nodes your radio heard directly, with no relay in between
Include unknown Show nodes that haven’t sent user info yet. On by default, so a node heard before its info arrives stays visible; these carry a badge marking them incomplete, and cannot be direct messaged until their user info brings a public key
Exclude infrastructure Hide infrastructure-role nodes (Router, Router Late, Client Base, and legacy Repeater nodes) and any node that cannot be messaged, whatever its role
Exclude MQTT Hide nodes heard only via MQTT internet bridge
Signed only Show only nodes whose signed broadcasts your node has actually heard and verified. Stricter than the icon: a node on 2.8 shows as signed by its firmware version before any signed broadcast arrives, and a contact verified in person on older firmware is not signed at all
Encrypted only Show nodes with a matching public key on file, the key an encrypted direct message needs. A node with a key mismatch is excluded
Only show ignored Nodes Replace the list with the nodes you have ignored. Every other node is hidden while this is on, and a banner appears at the top of the list to take you back

Sort Options

Sort Description
Last heard Most recently heard nodes first
A-Z Sorted by node long name
Distance Nearest nodes first (requires position sharing)
Hops away Fewest relay hops first
Channel Grouped by channel index
via MQTT Grouped by MQTT vs. radio-heard
via Favorite (default) Favorited nodes first, then the rest

Nodes per Hop

Tap the hop-histogram icon in the node list’s app bar to open a bar chart of how many nodes sit at each hop distance (0 = direct, 1 = one relay away, and so on). Filter the chart to a last heard window — All time, 1 hour, 8 hours, or 24 hours — to see how the mesh looks right now versus over a longer period. It’s a quick way to gauge how busy and spread out your local mesh is.

Node Detail

Tapping a node opens the detail view with comprehensive information. See Node Metrics for full details on metrics and telemetry.

Signal quality is rated against your modem preset. The same SNR can be good on a long-range preset and poor on a faster one. Traceroute and neighbor-info SNR colors use that preset too. RSSI text has its own strength colors; it affects the quality rating only when a noise-floor reading is also available.

The Details card carries the node’s short name, role, IDs, last heard time, hops away, uptime, and its SNR and RSSI:

Node detail section

Inline status indicators show key metrics at a glance:

Indicator Screenshot
Signal quality Signal
Battery level Battery
Hop count Hops
Last heard Last heard
Distance Distance

When a node’s hardware is recognized, the detail view shows a collapsible “I want one” section linking to places to buy or learn more about that device: the vendor’s product page, product variants, and regional marketplace listings (such as AliExpress, Amazon, and supported retailers), filtered to your country. Each link opens through the msh.to redirect service. Devices with no matching links don’t show the section.

A full, browsable directory of every link is also available at Settings → Device Links. The item is hidden while you have Settings open for a remote node.

Some of these are affiliate links. Both places say so above the links: product links may be affiliate links, and purchases may earn Meshtastic a commission.

When No Nodes Appear

The list stays empty until your radio hears another node.

  • No device connected — the app is not connected to a radio. See Connections.
  • Searching for nodes — the radio is connected and listening, but nothing has arrived yet. Check that its region and modem preset match the mesh around you, and leave Include unknown on so a node that has not yet sent its name still appears. See Settings — Radio & User.
  • A node you expect is missing — check the filter toggles. Only show direct nodes, Exclude MQTT, and Exclude infrastructure each hide a whole category of node.

diff --git a/main/en/user/settings-radio-user.html b/main/en/user/settings-radio-user.html index 2c3c02e3ea..c1c4da8eeb 100644 --- a/main/en/user/settings-radio-user.html +++ b/main/en/user/settings-radio-user.html @@ -1 +1 @@ - Settings — Radio & User | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Settings — Radio & User

Configure your radio’s user identity, region and LoRa parameters, position and power behavior, network and Bluetooth connectivity, and security settings.

How These Screens Work

Everything here is on the Settings screen. User, LoRa, Channels and Security are listed there directly. Device, Position, Power, Network, Display and Bluetooth are one level down, under Settings → Device configuration. Network appears only on radios with Wi-Fi or Ethernet, and Bluetooth only on radios with Bluetooth.

Settings use standard preference controls — dropdowns, toggles, and sliders:

Control Screenshot
Dropdown A dropdown setting, expanded to show its list of options
Toggle A toggle setting in the on position
Slider A slider setting with its current numeric value shown

User Settings

User Profile

On Settings → User.

Setting Description
Long Name Your display name (up to 39 characters)
Short Name 4-character abbreviated name
Status Message A short, public free-text status other nodes display alongside your node — up to 80 bytes, cleared with the in the field. The radio broadcasts it to the mesh when you change it and again every 12 hours. Needs firmware 2.8 or newer, and is absent otherwise
Unmessageable Marks the node as one nobody should try to message — for an unmonitored or infrastructure node. Other clients hide it from the contact list. Needs supporting firmware
Licensed amateur radio (Ham) Enable if you hold an amateur radio license (permits higher power). Turning it on is staged behind a confirmation dialog. On your own radio it then relabels Long Name as Call sign and adds a separate Long Name field; over remote admin the field stays Long Name

Applying Changes

The footer appears as soon as you change something. Discard throws the change away, and the other button writes it to the radio: it reads Save & restart on the screens the firmware applies with a reboot — Position, Network, Bluetooth, Security, and most module screens — and Save everywhere else.

The status message is saved with the same Save, but it never reboots the node — and, like the rest of this screen, it can be edited on a remote node you administer. For your own radio there is a shortcut while it is connected: touch & hold your node in the node list and choose Update status. Older firmware and a disconnected radio have no shortcut — the field above is still the way in.

Configuration

Device Config

On Settings → Device configuration → Device.

Setting Description Default
Device Role Node behavior. The picker lists the firmware names (CLIENT, ROUTER, ROUTER_LATE, TAK, and so on), and the description of whichever role is selected appears under the field. Choosing ROUTER or ROUTER_LATE asks you to confirm you have read the device-role guidance first CLIENT
Rebroadcast Mode How the node retransmits messages. As with the role, the picker lists the firmware names and describes only the selected one ALL
Node Info Broadcast Interval How often the node re-announces itself. A dropdown of fixed intervals — Unset, then 3 to 72 hours — not a value you type in seconds 3 hours
Double Tap as Button Treat a double tap as a button press Disabled
Triple Click Ad Hoc Ping Send an ad-hoc position ping on a triple click Disabled
LED Heartbeat Blink the status LED periodically Enabled
Time Zone POSIX time-zone string for the device clock, with buttons to copy your phone’s zone or clear it
Button / Buzzer GPIO Advanced: which pins the button and buzzer are wired to

LoRa Config

On Settings → LoRa.

Setting Description Default
Region Regulatory region for frequency bands. You must set this before transmitting Unset (must configure)
Presets Speed/range tradeoff LongFast
Number of Hops Maximum retransmit hops 3
Transmit Power Transmission power (dBm); 0 = max allowed for region 0 (region max)
Frequency Override Overrides the computed operating frequency outright (MHz). It does not offset the calculated value — leave at 0 unless you know you need a specific frequency 0 (use calculated)
Use Preset On by default. Turn it off to set Spread Factor, Coding Rate and Bandwidth by hand instead of taking them from the modem preset On
Spread Factor Manual mode only: 7–12. Higher spreads further but slower From preset
Coding Rate Manual mode only: 5–8. More redundancy costs airtime From preset
Bandwidth Manual mode only: the channel bandwidth in kHz, typed in directly. On the 2.4 GHz region the app offers a list of the bandwidths your radio supports instead, and a stored value that is not on that list shows as Unsupported and blocks saving until you pick a supported one From preset
Frequency Slot Which slot within the region’s band to use. 0 derives it from the primary channel name 0 (automatic)
Transmit Enabled Turning this off makes the node receive-only On
Override Duty Cycle Ignores the region’s duty-cycle limit. Illegal in most regions; turn it on only where your license permits Off
Ignore MQTT Drop packets that arrived from MQTT rather than over the air. The firmware turns this on for you whenever you set a region that has a duty-cycle limit — the EU bands, Thailand, and Ukraine 433 Off, until you set a duty-cycle-limited region
Ok to MQTT Allow your packets to be forwarded to MQTT by gateways Off
RX Boosted Gain Extra receive gain on SX126x radios; costs a little current Off
PA fan disabled Turn off the power-amplifier fan on hardware that has one Off

Some regions are amateur-radio allocations whose presets only licensed operators may use. On firmware 2.8 or newer the app knows which regions those are and grays the whole Presets list out until Licensed amateur radio (Ham) is turned on for the node you are configuring; the text under the field says so while it is grayed out.

⚠️ Important: Operating without the correct region may violate local radio regulations. See the region configuration guide on meshtastic.org for details.

Modem Presets

The Lite, Narrow, Medium Turbo, and Tiny presets need firmware 2.8 or newer — the app hides them on older radios.

💡 Tip: The SNR Limit values are negative on purpose. LoRa can decode signals below the noise floor, so a more-negative limit means the preset tolerates a weaker, noisier signal (more range). See How the Signal Meter Works for the full explanation.

Preset Range Speed SNR Limit Best For
Short Turbo ~1 km 21.9 kbps −7.5 dB Dense urban with line-of-sight; data-heavy applications
Short Fast ~3 km 10.9 kbps −7.5 dB Urban neighborhoods; buildings within a few blocks
Short Slow ~5 km 6.25 kbps −10 dB Suburban short-range; moderate building density
Medium Fast ~5 km 3.52 kbps −12.5 dB Suburban areas; moderate building density
Medium Slow ~8 km 1.95 kbps −15 dB Suburban/rural; moderate range with slower speed
Long Turbo ~10 km 1.34 kbps −17.5 dB Similar range to Long Fast but with 500 kHz bandwidth; faster throughput
Long Fast ~10 km 1.1 kbps −17.5 dB General use (default) — balanced range and speed
Long Moderate ~20 km 0.34 kbps −17.5 dB Rural with some terrain; occasional use
Lite Fast ~5 km 1.76 kbps −12.5 dB EU 866 MHz SRD band (125 kHz BW); comparable to Medium Fast
Lite Slow ~10 km 0.98 kbps −15 dB EU 866 MHz SRD band (125 kHz BW); comparable to Long Fast
Narrow Fast ~5 km 2.28 kbps −7.5 dB EU 868 MHz band (62.5 kHz BW); avoids interference with other devices
Narrow Slow ~10 km 1.30 kbps −10 dB EU 868 MHz band (62.5 kHz BW); comparable to Long Fast
Medium Turbo ~5 km 7.0 kbps −12.5 dB Like Medium Fast but with 500 kHz bandwidth; not legal in every region. Needs firmware 2.8 or newer
Tiny Fast ~10 km 0.68 kbps −7.5 dB Amateur bands that cap occupied bandwidth; these presets use 15.6 kHz. Needs firmware 2.8 or newer, an SX126x or SX127x radio, and a TCXO of ±5 ppm or better
Tiny Slow ~20 km 0.33 kbps −10 dB Same band restrictions as Tiny Fast, longer range. Same firmware, radio, and TCXO requirements
Long Slow ~30 km 0.18 kbps −20 dB ⚠️ Deprecated — still selectable but may be removed in a future firmware release
Very Long Slow ~40+ km 0.09 kbps −20 dB ⚠️ Deprecated — still selectable but may be removed in a future firmware release

ℹ️ Note: This table uses the common short names. The app’s Presets dropdown lists the raw firmware names instead — SHORT_FAST, LONG_FAST, LITE_FAST, NARROW_FAST, and so on. Local Mesh Discovery shows the same presets as Long Fast and Short Turbo.

Choosing a Modem Preset

The modem preset controls the fundamental tradeoff between range and data rate:

  • Slower presets use more spreading, making signals decodable at weaker signal levels (lower SNR limit). This means longer range but fewer bytes per second.
  • Faster presets pack more data per transmission but require a stronger signal to decode.

Practical guidance:

  • Urban mesh (many nodes, short distances): Use Long Fast (default) or Short Fast. Higher speed means less airtime congestion when many nodes share the channel.
  • Rural/sparse mesh (few nodes, long distances): Use Long Moderate. Range matters more than speed when nodes are far apart.
  • EU 866/868 MHz regulatory compliance: Use Lite Fast, Lite Slow, Narrow Fast, or Narrow Slow — these are optimized for the EU SRD/868 MHz bands with narrower bandwidths.
  • Fixed infrastructure links: Use Short Turbo or Long Turbo for dedicated point-to-point links with good antennas and line-of-sight.
  • Mixed environments: Stick with Long Fast — it’s the community default and ensures compatibility with others in your area.

All nodes on the same channel must use the same modem preset. Nodes with mismatched presets cannot communicate even if they share the same frequency and encryption key.

The range estimates in the Modem Presets table assume flat terrain and modest antennas. Elevation advantage (hilltop, rooftop) dramatically increases effective range. A well-placed Router with Long Fast can often outperform a ground-level node with Long Slow.

Display Config

On Settings → Device configuration → Display. These control the radio’s own screen, not the app’s.

Setting Description
Screen on for How long the display stays lit before sleeping
Carousel interval How often the radio cycles between screens on its own
Display mode Screen layout/density used by the firmware
Display units Metric or Imperial on the radio’s screen
Use 12h clock format Show the radio’s clock as 12-hour rather than 24-hour
Bold Heading Draw the screen’s heading text in bold
Flip screen Rotate the display 180° for an inverted mounting
OLED type Auto, SSD1306, SH1106, SH1107
Wake on tap or motion Light the screen when the radio is tapped or moved
Compass orientation Rotation offset for the compass rose (0°, 90°, 180°, 270°)
Always point north Locks the compass rose north-up instead of rotating it with your heading. Independent of Compass orientation — neither replaces the other

Position Config

On Settings → Device configuration → Position.

⚠️ Important: Saving this screen always reboots the radio.

Setting Description
GPS Mode (Physical Hardware) Three-state: GPS enabled, disabled, or not present. Not a simple on/off
GPS Polling Interval How often the radio asks its GPS for a fix
Broadcast Interval How often the position is shared with the mesh
Smart Position Broadcast based on movement rather than purely on the clock
Smart Interval With Smart Position on, the shortest gap between broadcasts
Smart Distance With Smart Position on, how far you must move before broadcasting
Fixed Position Use a manually entered latitude, longitude and altitude instead of the GPS
Position Flags A group of toggles choosing which fields ride along with a position — altitude, its reference and precision, satellites in view, timestamp, and so on
GPS EN / Receive / Transmit GPIO Advanced: the pins the GPS module is wired to

Power Config

On Settings → Device configuration → Power.

Setting Description
Enable power saving mode Let the radio sleep aggressively between activity
Shutdown on power loss Power the device down after external power disappears
Super deep sleep duration How long the deepest sleep state lasts
Minimum wake time The shortest time the radio stays awake once woken
Wait for Bluetooth duration How long to wait for a phone to connect before sleeping
ADC multiplier override Turn on a manual correction for battery-voltage readings
ADC multiplier override ratio The correction factor itself, used only when the override is on
Battery INA_2XX I2C address Address of an external INA-series power sensor, if fitted

Network Config

On Settings → Device configuration → Network, on radios with Wi-Fi or Ethernet.

⚠️ Warning: Turning on Wi-Fi enabled or Ethernet enabled ends the Bluetooth connection between your phone and the radio. Reconnect over the network afterwards from the Connections screen, or turn Wi-Fi off again from the radio’s own screen or over USB. Saving this screen also always reboots the radio.

Setting Description
Wi-Fi enabled Enable the Wi-Fi radio (ESP32 radios)
SSID Network name to connect to. Appears only once Wi-Fi enabled is on, along with Password. Scan Wi-Fi QR code fills both from a standard Wi-Fi QR code; on Android, holding the phone against a Wi-Fi NFC tag while this screen is open fills them the same way, and the app offers to open system settings if NFC is turned off
Password Network password
Ethernet enabled Use a wired connection on hardware that has one
IPv4 mode DHCP, or a static address configured with the four fields that follow
Wi-Fi IP / Subnet / Gateway / DNS The static address, only used when IPv4 mode is static
UDP broadcasting Share mesh traffic with other nodes over the local network
NTP server Time synchronization server
rsyslog server Remote logging server

Network Config with a static IPv4 address entered

Bluetooth Config

On Settings → Device configuration → Bluetooth, on radios with Bluetooth.

⚠️ Important: Saving this screen always reboots the radio.

Setting Description
Bluetooth enabled Enable/disable BLE radio
Pairing mode Fixed PIN, Random PIN, or No PIN
Fixed PIN PIN code for pairing. Must be exactly six digits — the field rejects anything else

Security Config

On Settings → Security. The screen is grouped into cards: Packet authenticity, Direct Message Key (your node’s key pair), Admin Keys, Logs, and Administration.

⚠️ Important: Saving this screen always reboots the radio.

Setting Description
Public Key Your node’s public key (read-only)
Admin Key Keys permitted to administer this node remotely — up to three
Private Key Your node’s private key (handle securely). Shown redacted when you are viewing another node over remote admin — the firmware does not send it
Regenerate Private Key Issues a new keypair for this node, behind a confirmation. Every peer that knew your old key must learn the new one
Admin Channel Enabled ⚠️ Removed — now configured automatically when an admin key is set
Serial console Serial console over the Stream API
Debug log API enabled Output live debug logging over serial, and view and export position-redacted radio logs over Bluetooth
Managed Mode Restrict non-admin channel changes. Only selectable once an Admin Key is set
Backup Keys Save an encrypted backup of the node’s keys on this phone (Android only, and only for your own node)
Restore Keys Write the backed-up keys back to the node (available once a backup exists)
Delete Key Backup Remove the stored key backup from this phone
Protection level How unsigned or relayed packets are treated: Strict — Require authentication, Balanced — Prefer authenticated, or Compatible — Accept unsigned (requires supporting firmware; Strict asks for confirmation)

Lockdown Mode

Lockdown encrypts the device’s storage and requires a passphrase for each connection. It needs supporting firmware; the row does not appear otherwise.

Enabling it asks you to set and confirm a passphrase, and to acknowledge that it locks the debug (SWD) port on hardware that supports locking. You can turn lockdown off again at any time with the passphrase, and a full device erase restores the hardware regardless.

Alongside the passphrase you set the limits that end a session automatically:

Field What it does
Boots remaining How many device boots the unlocked state survives
Hours until expiry Wall-clock lifetime of the unlocked state
Session cap (minutes) A per-boot uptime cap on the unlocked state. 0, the default, means no cap

Once active, the row reads Active — storage encrypted, this connection authenticated when unlocked, or Active — enter your passphrase to unlock this connection when not. Lock Now ends the current session immediately. Repeated wrong passphrases are rate-limited with a back-off before you can try again.

⚠️ Warning: There is no passphrase recovery. Losing it means erasing the device to get it back, which destroys its keys, channels and settings.


+ Settings — Radio & User | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Settings — Radio & User

Configure your radio’s user identity, region and LoRa parameters, position and power behavior, network and Bluetooth connectivity, and security settings.

How These Screens Work

Everything here is on the Settings screen. User, LoRa, Channels and Security are listed there directly. Device, Position, Power, Network, Display and Bluetooth are one level down, under Settings → Device configuration. Network appears only on radios with Wi-Fi or Ethernet, and Bluetooth only on radios with Bluetooth.

Settings use standard preference controls — dropdowns, toggles, and sliders:

Control Screenshot
Dropdown A dropdown setting, expanded to show its list of options
Toggle A toggle setting in the on position
Slider A slider setting with its current numeric value shown

User Settings

User Profile

On Settings → User.

Setting Description
Long Name Your display name (up to 39 characters)
Short Name 4-character abbreviated name
Status Message A short, public free-text status other nodes display alongside your node — up to 80 bytes, cleared with the in the field. The radio broadcasts it to the mesh when you change it and again every 12 hours. Needs firmware 2.8 or newer, and is absent otherwise
Unmessageable Marks the node as one nobody should try to message — for an unmonitored or infrastructure node. Other clients hide it from the contact list. Needs supporting firmware
Licensed amateur radio (Ham) Enable if you hold an amateur radio license (permits higher power). Turning it on is staged behind a confirmation dialog. On your own radio it then relabels Long Name as Call sign and adds a separate Long Name field; over remote admin the field stays Long Name

Applying Changes

The footer appears as soon as you change something. Discard throws the change away, and the other button writes it to the radio: it reads Save & restart on the screens the firmware applies with a reboot — Position, Network, Bluetooth, Security, and most module screens — and Save everywhere else.

The status message is saved with the same Save, but it never reboots the node — and, like the rest of this screen, it can be edited on a remote node you administer. For your own radio there is a shortcut while it is connected: touch & hold your node in the node list and choose Update status. Older firmware and a disconnected node have no shortcut — the field itself is still the way in.

Configuration

Device Config

On Settings → Device configuration → Device.

Setting Description Default
Device Role Node behavior. The picker lists the firmware names (CLIENT, ROUTER, ROUTER_LATE, TAK, and so on), and the description of whichever role is selected appears under the field. Choosing ROUTER or ROUTER_LATE asks you to confirm you have read the device-role guidance first CLIENT
Rebroadcast Mode How the node retransmits messages. As with the role, the picker lists the firmware names and describes only the selected one ALL
Node Info Broadcast Interval How often the node re-announces itself. A dropdown of fixed intervals — Unset, then 3 to 72 hours — not a value you type in seconds 3 hours
Double Tap as Button Treat a double tap as a button press Disabled
Triple Click Ad Hoc Ping Send an ad-hoc position ping on a triple click Disabled
LED Heartbeat Blink the status LED periodically Enabled
Time Zone POSIX time-zone string for the device clock, with buttons to copy your phone’s zone or clear it
Button / Buzzer GPIO Advanced: which pins the button and buzzer are wired to

LoRa Config

On Settings → LoRa.

Setting Description Default
Region Regulatory region for frequency bands. You must set this before transmitting. On firmware 2.8 or newer, the first region set also creates the node’s identity key and gives it a new node number Unset (must configure)
Presets Speed/range tradeoff LongFast
Number of Hops Maximum retransmit hops 3
Transmit Power Transmission power (dBm); 0 = max allowed for region 0 (region max)
Frequency Override Overrides the computed operating frequency outright (MHz). It does not offset the calculated value — leave at 0 unless you know you need a specific frequency 0 (use calculated)
Use Preset On by default. Turn it off to set Spread Factor, Coding Rate and Bandwidth by hand instead of taking them from the modem preset On
Spread Factor Manual mode only: 5–12. Higher spreads further but slower. On SX127x (RF95) radios the firmware does not accept 5 or 6 and uses 11 instead From preset
Coding Rate Manual mode only: 5–8. More redundancy costs airtime From preset
Bandwidth Manual mode only: the channel bandwidth in kHz, typed in directly. On the 2.4 GHz region the app offers a list of the bandwidths your radio supports instead, and a stored value that is not on that list shows as Unsupported and blocks saving until you pick a supported one From preset
Frequency Slot Which slot within the region’s band to use. 0 derives it from the primary channel name 0 (automatic)
Transmit Enabled Turning this off makes the node receive-only On
Override Duty Cycle Ignores the region’s duty-cycle limit. Illegal in most regions; turn it on only where your license permits Off
Ignore MQTT Drop packets that arrived from MQTT rather than over the air. The firmware turns this on for you whenever you set a region that has a duty-cycle limit — the EU bands, Thailand, and Ukraine 433 Off, until you set a duty-cycle-limited region
Ok to MQTT Allow your packets to be forwarded to MQTT by gateways Off
RX Boosted Gain Extra receive gain on SX126x radios; costs a little current Off
PA fan disabled Turn off the power-amplifier fan on hardware that has one Off

Some regions are amateur-radio allocations whose presets only licensed operators may use. On firmware 2.8 or newer the app knows which regions those are and grays the whole Presets list out until Licensed amateur radio (Ham) is turned on for the node you are configuring; the text under the field says so while it is grayed out.

⚠️ Important: Operating without the correct region may violate local radio regulations. See the region configuration guide on meshtastic.org for details.

Modem Presets

The Lite, Narrow, Medium Turbo, and Tiny presets need firmware 2.8 or newer — the app hides them on older radios.

💡 Tip: The SNR Limit values are negative on purpose. LoRa can decode signals below the noise floor, so a more-negative limit means the preset tolerates a weaker, noisier signal (more range). See How the Signal Meter Works for the full explanation.

Preset Range Speed SNR Limit Best For
Short Turbo ~1 km 21.9 kbps −7.5 dB Dense urban with line-of-sight; data-heavy applications
Short Fast ~3 km 10.9 kbps −7.5 dB Urban neighborhoods; buildings within a few blocks
Short Slow ~5 km 6.25 kbps −10 dB Suburban short-range; moderate building density
Medium Fast ~5 km 3.52 kbps −12.5 dB Suburban areas; moderate building density
Medium Slow ~8 km 1.95 kbps −15 dB Suburban/rural; moderate range with slower speed
Long Turbo ~10 km 1.34 kbps −17.5 dB Similar range to Long Fast but with 500 kHz bandwidth; faster throughput
Long Fast ~10 km 1.1 kbps −17.5 dB General use (default) — balanced range and speed
Long Moderate ~20 km 0.34 kbps −17.5 dB Rural with some terrain; occasional use
Lite Fast ~5 km 1.76 kbps −12.5 dB EU 866 MHz SRD band (125 kHz BW); comparable to Medium Fast
Lite Slow ~10 km 0.98 kbps −15 dB EU 866 MHz SRD band (125 kHz BW); comparable to Long Fast
Narrow Fast ~5 km 2.28 kbps −7.5 dB EU 868 MHz band (62.5 kHz BW); avoids interference with other devices
Narrow Slow ~10 km 1.30 kbps −10 dB EU 868 MHz band (62.5 kHz BW); comparable to Long Fast
Medium Turbo ~5 km 7.0 kbps −12.5 dB Like Medium Fast but with 500 kHz bandwidth; not legal in every region. Needs firmware 2.8 or newer
Tiny Fast ~10 km 0.68 kbps −7.5 dB Amateur bands that cap occupied bandwidth; these presets use 15.6 kHz. Needs firmware 2.8 or newer, an SX126x or SX127x radio, and a TCXO of ±5 ppm or better
Tiny Slow ~20 km 0.33 kbps −10 dB Same band restrictions as Tiny Fast, longer range. Same firmware, radio, and TCXO requirements
Long Slow ~30 km 0.18 kbps −20 dB ⚠️ Deprecated — still selectable but may be removed in a future firmware release
Very Long Slow ~40+ km 0.09 kbps −20 dB ⚠️ Deprecated — still selectable but may be removed in a future firmware release

ℹ️ Note: This table uses the common short names. The app’s Presets dropdown lists the raw firmware names instead — SHORT_FAST, LONG_FAST, LITE_FAST, NARROW_FAST, and so on. Local Mesh Discovery shows the same presets as Long Fast and Short Turbo.

Choosing a Modem Preset

The modem preset controls the fundamental tradeoff between range and data rate:

  • Slower presets use more spreading, making signals decodable at weaker signal levels (lower SNR limit). This means longer range but fewer bytes per second.
  • Faster presets pack more data per transmission but require a stronger signal to decode.

Practical guidance:

  • Urban mesh (many nodes, short distances): Use Long Fast (default) or Short Fast. Higher speed means less airtime congestion when many nodes share the channel.
  • Rural/sparse mesh (few nodes, long distances): Use Long Moderate. Range matters more than speed when nodes are far apart.
  • EU 866/868 MHz regulatory compliance: Use Lite Fast, Lite Slow, Narrow Fast, or Narrow Slow — these are optimized for the EU SRD/868 MHz bands with narrower bandwidths.
  • Fixed infrastructure links: Use Short Turbo or Long Turbo for dedicated point-to-point links with good antennas and line-of-sight.
  • Mixed environments: Stick with Long Fast — it’s the community default and ensures compatibility with others in your area.

All nodes on the same channel must use the same modem preset. Nodes with mismatched presets cannot communicate even if they share the same frequency and encryption key.

The range estimates in the Modem Presets table assume flat terrain and modest antennas. Elevation advantage (hilltop, rooftop) dramatically increases effective range. A well-placed Router with Long Fast can often outperform a ground-level node with Long Slow.

Display Config

On Settings → Device configuration → Display. These control the radio’s own screen, not the app’s.

Setting Description
Screen on for How long the display stays lit before sleeping
Carousel interval How often the radio cycles between screens on its own
Display mode Screen layout/density used by the firmware
Display units Metric or Imperial on the radio’s screen
Use 12h clock format Show the radio’s clock as 12-hour rather than 24-hour
Bold Heading Draw the screen’s heading text in bold
Flip screen Rotate the display 180° for an inverted mounting
OLED type Auto, SSD1306, SH1106, SH1107
Wake on tap or motion Light the screen when the radio is tapped or moved
Compass orientation Rotation offset for the compass rose (0°, 90°, 180°, 270°)
Always point north Locks the compass rose north-up instead of rotating it with your heading. Independent of Compass orientation — neither replaces the other

Position Config

On Settings → Device configuration → Position.

⚠️ Important: Saving this screen always reboots the radio.

Setting Description
GPS Mode (Physical Hardware) Three-state: GPS enabled, disabled, or not present. Not a simple on/off
GPS Polling Interval How often the radio asks its GPS for a fix
Broadcast Interval How often the position is shared with the mesh
Smart Position Broadcast based on movement rather than purely on the clock
Smart Interval With Smart Position on, the shortest gap between broadcasts
Smart Distance With Smart Position on, how far you must move before broadcasting
Fixed Position Use a manually entered latitude, longitude and altitude instead of the GPS
Position Flags A group of toggles choosing which fields ride along with a position — altitude, its reference and precision, satellites in view, timestamp, and so on
GPS EN / Receive / Transmit GPIO Advanced: the pins the GPS module is wired to

Power Config

On Settings → Device configuration → Power.

Setting Description
Enable power saving mode Let the radio sleep aggressively between activity
Shutdown on power loss Power the device down after external power disappears
Super deep sleep duration How long the deepest sleep state lasts
Minimum wake time The shortest time the radio stays awake once woken
Wait for Bluetooth duration How long to wait for a phone to connect before sleeping
ADC multiplier override Turn on a manual correction for battery-voltage readings
ADC multiplier override ratio The correction factor itself, used only when the override is on
Battery INA_2XX I2C address Address of an external INA-series power sensor, if fitted

Network Config

On Settings → Device configuration → Network, on radios with Wi-Fi or Ethernet.

⚠️ Warning: Turning on Wi-Fi enabled or Ethernet enabled ends the Bluetooth connection between your phone and the radio. Reconnect over the network afterwards from the Connections screen, or turn Wi-Fi off again from the radio’s own screen or over USB. Saving this screen also always reboots the radio.

Setting Description
Wi-Fi enabled Enable the Wi-Fi radio (ESP32 radios)
SSID Network name to connect to. Appears only once Wi-Fi enabled is on, along with Password. Scan Wi-Fi QR code fills both from a standard Wi-Fi QR code; on Android, holding the phone against a Wi-Fi NFC tag while this screen is open fills them the same way, and the app offers to open system settings if NFC is turned off
Password Network password
Ethernet enabled Use a wired connection on hardware that has one
IPv4 mode DHCP, or a static address configured with the four fields that follow
Wi-Fi IP / Subnet / Gateway / DNS The static address, only used when IPv4 mode is static
UDP broadcasting Share mesh traffic with other nodes over the local network
NTP server Time synchronization server
rsyslog server Remote logging server

Network Config with a static IPv4 address entered

Bluetooth Config

On Settings → Device configuration → Bluetooth, on radios with Bluetooth.

⚠️ Important: Saving this screen always reboots the radio.

Setting Description
Bluetooth enabled Enable/disable BLE radio
Pairing mode Fixed PIN, Random PIN, or No PIN
Fixed PIN PIN code for pairing. Must be exactly six digits — the field rejects anything else

Security Config

On Settings → Security. The screen is grouped into cards: Packet authenticity, Direct Message Key (your node’s key pair), Admin Keys, Logs, and Administration.

⚠️ Important: Saving this screen always reboots the radio.

Setting Description
Public Key Your node’s public key (read-only)
Admin Key Keys permitted to administer this node remotely — up to three
Private Key Your node’s private key (handle securely). Shown redacted when you are viewing another node over remote admin — the firmware does not send it
Regenerate Private Key Issues a new keypair for this node, behind a confirmation. Every peer that knew your old key must learn the new one
Admin Channel Enabled ⚠️ Removed — now configured automatically when an admin key is set
Serial console Serial console over the Stream API
Debug log API enabled Output live debug logging over serial, and view and export position-redacted radio logs over Bluetooth
Managed Mode Restrict non-admin channel changes. Only selectable once an Admin Key is set
Backup Keys Save an encrypted backup of the node’s keys on this phone (Android only, and only for your own node)
Restore Keys Write the backed-up keys back to the node (available once a backup exists)
Delete Key Backup Remove the stored key backup from this phone
Protection level How unsigned or relayed packets are treated: Strict — Require authentication, Balanced — Prefer authenticated, or Compatible — Accept unsigned (requires supporting firmware; Strict asks for confirmation)

Lockdown Mode

Lockdown encrypts the device’s storage and requires a passphrase for each connection. It needs supporting firmware; the row does not appear otherwise.

Enabling it asks you to set and confirm a passphrase, and to acknowledge that it locks the debug (SWD) port on hardware that supports locking. You can turn lockdown off again at any time with the passphrase, and a full device erase restores the hardware regardless.

Alongside the passphrase you set the limits that end a session automatically:

Field What it does
Boots remaining How many device boots the unlocked state survives
Hours until expiry Wall-clock lifetime of the unlocked state
Session cap (minutes) A per-boot uptime cap on the unlocked state. 0, the default, means no cap

Once active, the row reads Active — storage encrypted, this connection authenticated when unlocked, or Active — enter your passphrase to unlock this connection when not. Lock Now ends the current session immediately. Repeated wrong passphrases are rate-limited with a back-off before you can try again.

⚠️ Warning: There is no passphrase recovery. Losing it means erasing the device to get it back, which destroys its keys, channels and settings.


diff --git a/main/en/user/tak.html b/main/en/user/tak.html index 60b58f65a8..1a89b39996 100644 --- a/main/en/user/tak.html +++ b/main/en/user/tak.html @@ -1 +1 @@ - TAK Integration | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

TAK Integration

Meshtastic integrates with the Team Awareness Kit (TAK) ecosystem, enabling interoperability between Meshtastic radios and TAK applications like ATAK and WinTAK.

Overview

The TAK module allows Meshtastic nodes to:

  • Share position data in TAK-compatible CoT (Cursor on Target) format
  • Appear as team members on TAK map displays
  • Receive TAK PLI (Position Location Information) messages

Setup

Prerequisites

  • ATAK (Android Team Awareness Kit), iTAK, or WinTAK installed
  • Your node’s Device Role (Device configuration) set to TAK or TAK Tracker — this is what makes the TAK module appear in Module configuration at all
  • Firmware 2.8.0 or newer on the radio. Earlier firmware accepts a TAK config write and never stores it, so the app hides the TAK module entry below that version even when the role is set correctly. See Firmware Updates

⚠️ Warning: The old Meshtastic ATAK Plugin is no longer part of this path and cannot work. It bridged through the cross-process AIDL API, which was removed in app 2.8.0; the mesh service is now in-process only. Do not install it. Interop today runs over the app’s own local TAK server plus the Mesh to CoT Converter, both described below, with stock ATAK/iTAK/WinTAK.

Configuration

Navigate to Settings → Module configuration → TAK. The module’s own settings are your TAK identity — there is no separate enable switch here, because the Device Role setting in Device configuration is what turns TAK on. Your node broadcasts this identity, which appears on TAK maps.

Setting Description
Team Color Your team color on the TAK map (e.g., Blue, Red, Cyan, Green)
Member Role Your operational role within that team (Team Member, Team Lead, HQ, Medic, RTO, etc.)

Your TAK callsign isn’t a separate setting — it’s derived automatically from your Meshtastic node name.

💡 Tip: Team/role colors are the standard TAK affiliation colors. Coordinate with your TAK team to use consistent team assignments.

Local TAK Server

The app can also run a local TAK server so ATAK/iTAK on the same phone can connect directly, without a remote TAK server. The server binds to localhost only (127.0.0.1:8089) and uses TLS with mutual certificate authentication (mTLS), so it is not reachable from other devices on the network.

Open Settings → Advanced → TAK Server. These are app settings stored on this phone, which is why they sit next to Firmware Update and Debug Panel rather than under the TAK module config — and why they need neither a TAK role nor firmware 2.8.0:

Local TAK Server settings with enable toggle and export option

  • Enable Local TAK Server — starts the loopback-only mTLS server on port 8089 for ATAK/iTAK connections from the same phone.
  • TAK Mesh Channel — selects which Meshtastic channel outgoing TAK traffic is sent on (default: the primary channel, index 0). Incoming TAK traffic is accepted from any channel. Matches the equivalent setting on iOS and in the legacy ATAK plugin.
  • Mesh to CoT Converter — off by default, and shown under the server toggle. With the server running, this synthesizes a CoT contact for every node in your node database, so ordinary Meshtastic nodes appear on the ATAK map as contacts. This is what replaced the old plugin’s node visibility — without it, only TAK-role nodes show up.
  • Export TAK Data Package — generates a .zip data package that ATAK/iTAK can import to connect to this server.

TAK Roles

Nodes configured with TAK-related roles behave differently from standard clients:

Role Description
TAK Full TAK interoperability — sends and receives CoT data, chat messages, and PLI updates. Functions as a standard client plus TAK bridge.
TAK Tracker Position-only TAK output — automatically broadcasts PLI at regular intervals without user interaction. Optimized for unattended position beacons (vehicles, equipment, waypoints). Does not relay chat messages.

💡 Tip: Use TAK Tracker for devices that only need to report position (e.g., a radio mounted in a vehicle). Use TAK for devices where users actively participate in TAK operations.

CoT (Cursor on Target) Format

TAK messages use the Cursor on Target XML format — a military standard for sharing situational awareness data. Meshtastic converts its internal protobuf messages to CoT format when bridging to TAK systems, so no manual format conversion is needed.

Wire Format (V1 / V2)

Meshtastic supports two TAK wire formats, chosen automatically based on the connected radio’s firmware — no manual configuration needed:

Format Compatibility Features
V1 (Legacy) Firmware 2.7.x and older Bare protobuf encoding on port 72. Supports position sharing (PLI) and chat (GeoChat) only — shapes, markers, routes, and other typed CoT events are dropped
V2 (Current) Firmware 2.8.0+ Compact, zstd-compressed encoding on port 78. Adds shapes, markers, routes, aircraft, casevac, emergency, and task CoT types on top of everything V1 supports

A node still relays legacy V1 packets from older nodes even while running V2 itself, so mixed-firmware meshes keep working.

Usage with ATAK

Once configured:

  • Meshtastic nodes appear as markers on the ATAK map with callsign labels
  • Chat messages can bridge between mesh and TAK networks
  • Position updates flow bidirectionally between Meshtastic and TAK
  • TAK Tracker nodes broadcast PLI automatically — their positions appear on ATAK maps without any ATAK-side configuration

ℹ️ Note: TAK integration requires specific node roles. Standard client nodes don’t automatically participate in TAK operations — though with Mesh to CoT Converter enabled they still appear on the ATAK map as contacts.

Troubleshooting

Problem Cause Solution
Node doesn’t appear on ATAK map Wrong Device Role setting, or Mesh to CoT Converter off Set the node’s Device Role to TAK or TAK Tracker. For ordinary (non-TAK-role) nodes to appear, also enable Mesh to CoT Converter under Settings → Advanced → TAK Server
Position updates are stale GPS fix lost or interval too long Check GPS status; reduce position broadcast interval in Position Config
ATAK shows “disconnected” The local TAK server is off, or ATAK is pointed elsewhere Check Enable Local TAK Server is on, and that ATAK is connecting to 127.0.0.1:8089 — re-import the exported data package if unsure
Shapes, markers, or routes not bridging Sending node is on legacy V1 (firmware 2.7.x or older) Update the sending node’s firmware to 2.8.0+ for V2 wire format
CoT data not flowing Channel mismatch All TAK nodes must be on the same channel with matching encryption

Security Considerations

🔒 Privacy: TAK data shares your position and callsign information. The TAK module respects the same channel encryption as other Meshtastic messages — in sensitive environments, use a channel with a non-default key.


+ TAK Integration | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

TAK Integration

Meshtastic integrates with the Team Awareness Kit (TAK) ecosystem, enabling interoperability between Meshtastic radios and TAK applications like ATAK and WinTAK.

Overview

The TAK module allows Meshtastic nodes to:

  • Share position data in TAK-compatible CoT (Cursor on Target) format
  • Appear as team members on TAK map displays
  • Receive TAK PLI (Position Location Information) messages

Setup

Prerequisites

  • ATAK (Android Team Awareness Kit), iTAK, or WinTAK installed
  • Your node’s Device Role (Device configuration) set to TAK or TAK Tracker — this is what makes the TAK module appear in Module configuration at all
  • Firmware 2.8.0 or newer on the radio. Earlier firmware accepts a TAK config write and never stores it, so the app hides the TAK module entry below that version even when the role is set correctly. See Firmware Updates

⚠️ Warning: The old Meshtastic ATAK Plugin is no longer part of this path and cannot work. It bridged through the cross-process AIDL API, which was removed in app 2.8.0; the mesh service is now in-process only. Do not install it. Interop today runs over the app’s own local TAK server plus the Mesh to CoT Converter, both described in the following sections, with stock ATAK/iTAK/WinTAK.

Configuration

Navigate to Settings → Module configuration → TAK. The module’s own settings are your TAK identity — there is no separate enable switch here, because the Device Role setting in Device configuration is what turns TAK on. Your node broadcasts this identity, which appears on TAK maps.

Setting Description
Team Color Your team color on the TAK map (e.g., Blue, Red, Cyan, Green)
Member Role Your operational role within that team (Team Member, Team Lead, HQ, Medic, RTO, etc.)

Your TAK callsign isn’t a separate setting — it’s derived automatically from your Meshtastic node name.

💡 Tip: Team/role colors are the standard TAK affiliation colors. Coordinate with your TAK team to use consistent team assignments.

Local TAK Server

The app can also run a local TAK server so ATAK/iTAK on the same phone can connect directly, without a remote TAK server. The server binds to localhost only (127.0.0.1:8089) and uses TLS with mutual certificate authentication (mTLS), so it is not reachable from other devices on the network.

Open Settings → Advanced → TAK Server. These are app settings stored on this phone, which is why they sit next to Firmware Update and Debug Panel rather than under the TAK module config — and why they need neither a TAK role nor firmware 2.8.0:

Local TAK Server settings with enable toggle and export option

  • Enable Local TAK Server — starts the loopback-only mTLS server on port 8089 for ATAK/iTAK connections from the same phone.
  • TAK Mesh Channel — selects which Meshtastic channel outgoing TAK traffic is sent on (default: the primary channel, index 0). Incoming TAK traffic is accepted from any channel. Matches the equivalent setting on iOS and in the legacy ATAK plugin.
  • Mesh to CoT Converter — off by default, and shown under the server toggle. With the server running, this synthesizes a CoT contact for every node in your node database, so ordinary Meshtastic nodes appear on the ATAK map as contacts. This is what replaced the old plugin’s node visibility — without it, only TAK-role nodes show up.
  • Export TAK Data Package — generates a .zip data package that ATAK/iTAK can import to connect to this server.

TAK Roles

Nodes configured with TAK-related roles behave differently from standard clients:

Role Description
TAK Full TAK interoperability — sends and receives CoT data, chat messages, and PLI updates. Functions as a standard client plus TAK bridge.
TAK Tracker Position-only TAK output — automatically broadcasts PLI at regular intervals without user interaction. Optimized for unattended position beacons (vehicles, equipment, waypoints). Does not relay chat messages.

💡 Tip: Use TAK Tracker for devices that only need to report position (e.g., a radio mounted in a vehicle). Use TAK for devices where users actively participate in TAK operations.

CoT (Cursor on Target) Format

TAK messages use the Cursor on Target XML format — a military standard for sharing situational awareness data. Meshtastic converts its internal protobuf messages to CoT format when bridging to TAK systems, so no manual format conversion is needed.

Wire Format (V1 / V2)

Meshtastic supports two TAK wire formats, chosen automatically based on the connected radio’s firmware — no manual configuration needed:

Format Compatibility Features
V1 (Legacy) Firmware 2.7.x and older Bare protobuf encoding on port 72. Supports position sharing (PLI) and chat (GeoChat) only — shapes, markers, routes, and other typed CoT events are dropped
V2 (Current) Firmware 2.8.0+ Compact, zstd-compressed encoding on port 78. Adds shapes, markers, routes, aircraft, casevac, emergency, and task CoT types on top of everything V1 supports

A node still relays legacy V1 packets from older nodes even while running V2 itself, so mixed-firmware meshes keep working.

Usage with ATAK

Once configured:

  • Meshtastic nodes appear as markers on the ATAK map with callsign labels
  • Chat messages can bridge between mesh and TAK networks
  • Position updates flow bidirectionally between Meshtastic and TAK
  • TAK Tracker nodes broadcast PLI automatically — their positions appear on ATAK maps without any ATAK-side configuration

ℹ️ Note: TAK integration requires specific node roles. Standard client nodes don’t automatically participate in TAK operations — though with Mesh to CoT Converter enabled they still appear on the ATAK map as contacts.

Troubleshooting

Problem Cause Solution
Node doesn’t appear on ATAK map Wrong Device Role setting, or Mesh to CoT Converter off Set the node’s Device Role to TAK or TAK Tracker. For ordinary (non-TAK-role) nodes to appear, also enable Mesh to CoT Converter under Settings → Advanced → TAK Server
Position updates are stale GPS fix lost or interval too long Check GPS status; reduce position broadcast interval in Position Config
ATAK shows “disconnected” The local TAK server is off, or ATAK is pointed elsewhere Check Enable Local TAK Server is on, and that ATAK is connecting to 127.0.0.1:8089 — re-import the exported data package if unsure
Shapes, markers, or routes not bridging Sending node is on legacy V1 (firmware 2.7.x or older) Update the sending node’s firmware to 2.8.0+ for V2 wire format
CoT data not flowing Channel mismatch All TAK nodes must be on the same channel with matching encryption

Security Considerations

🔒 Privacy: TAK data shares your position and callsign information. The TAK module respects the same channel encryption as other Meshtastic messages — in sensitive environments, use a channel with a non-default key.


diff --git a/main/en/user/translate.html b/main/en/user/translate.html index b4757451ea..1ac24da6f1 100644 --- a/main/en/user/translate.html +++ b/main/en/user/translate.html @@ -1,4 +1,4 @@ - Translate the App | Meshtastic Android Skip to main content Link Menu Expand (external link) Document Search Copy Copied
🌐 English
Meshtastic Docs ↗

Translate the App

The app and its in-app docs are translated on Crowdin — this page shows how to contribute. The app uses Crowdin to manage community translations for both the user interface and in-app documentation.

What Gets Translated

Resource Source Location Notes
UI strings core/resources/src/commonMain/composeResources/values/strings.xml Buttons, labels, messages, and all user-visible text
User Guide pages docs/en/user/*.md In-app documentation shown in Help & Documentation
Fastlane metadata fastlane/metadata/android/en-US/ Google Play listing title, description, and changelogs

ℹ️ Note: Developer Guide pages are English-only. Code-focused documentation targeting contributors is not translated.

How to Contribute

  1. Visit the Crowdin project. Open the Meshtastic Android Crowdin project and sign in or create a free account.
  2. Choose your language. Select an existing language or request a new one by opening a GitHub issue.
  3. Translate strings. Crowdin shows the English source on the left and your translation on the right. Translate each string and save.
  4. Review context. Many strings include screenshots or context comments — check these to understand where the text appears in the app. A scheduled job pulls approved translations from Crowdin and opens a pull request; they ship once a maintainer merges it and a new build goes out.

💡 Tip: Keep translations short. UI strings often appear in buttons, chips, or narrow columns. If a translation is significantly longer than the English original, consider abbreviating where the meaning stays clear.

Adding a New Language

If your language is not yet listed on Crowdin:

  1. Open an issue on GitHub requesting the new locale.
  2. A maintainer will add the language to Crowdin and configure crowdin.yml.
  3. Once added, you can begin translating immediately.

How Translations Are Organized

The Android app uses Compose Multiplatform resources for all user-visible strings:

core/resources/src/commonMain/composeResources/
+            Translate the App | Meshtastic Android                      Skip to main content   Link      Menu      Expand       (external link)    Document      Search       Copy       Copied        
🌐 English
Meshtastic Docs ↗

Translate the App

The app and its in-app docs are translated on Crowdin — this page shows how to contribute. The app uses Crowdin to manage community translations for both the user interface and in-app documentation.

What Gets Translated

Resource Source Location Notes
UI strings core/resources/src/commonMain/composeResources/values/strings.xml Buttons, labels, messages, and all user-visible text
User Guide pages docs/en/user/*.md In-app documentation shown in Help & Documentation
Fastlane metadata fastlane/metadata/android/en-US/ Google Play listing title, description, and changelogs

ℹ️ Note: Developer Guide pages are English-only. Code-focused documentation targeting contributors is not translated.

How to Contribute

  1. Visit the Crowdin project. Open the Meshtastic Android Crowdin project and sign in or create a free account.
  2. Choose your language. Select an existing language or request a new one by opening a GitHub issue.
  3. Translate strings. Crowdin shows the English source on the left and your translation on the right. Translate each string and save.
  4. Review context. Many strings include screenshots or context comments — check these to understand where the text appears in the app. A scheduled job pulls approved translations from Crowdin and opens a pull request; they ship once a maintainer merges it and a new build goes out.

💡 Tip: Keep translations short. UI strings often appear in buttons, chips, or narrow columns. If a translation is significantly longer than the English original, consider abbreviating where the meaning stays clear.

Adding a New Language

If your language is not yet listed on Crowdin:

  1. Open an issue on GitHub requesting the new locale.
  2. A maintainer will add the language to Crowdin and configure crowdin.yml.
  3. Once added, you can begin translating immediately.

How Translations Are Organized

The Android app uses Compose Multiplatform resources for all user-visible strings:

core/resources/src/commonMain/composeResources/
 ├── values/              ← English (default)
 │   └── strings.xml
 ├── values-de/           ← German
@@ -6,7 +6,7 @@
 ├── values-fr/           ← French
 │   └── strings.xml
 └── ...
-

In-app documentation follows a similar pattern under docs/:

docs/
+

In-app documentation follows a similar pattern under docs/:

docs/
 ├── en/user/             ← English source (default)
 │   ├── onboarding.md
 │   └── ...
diff --git a/main/index.json b/main/index.json
index 7af59af697..35c99ce14b 100644
--- a/main/index.json
+++ b/main/index.json
@@ -2,34 +2,34 @@
   {"id":"app-functions","title":"App Functions","section":"user","locale":"en","resourcePath":"docs/user/app-functions.html","navOrder":19,"keywords":["app", "functions", "enabling", "write", "read", "privacy", "related", "topics"],"aliases":["app-functions", "system-ai", "gemini", "assistant"],"charCount":3548},
   {"id":"connections","title":"Connections","section":"user","locale":"en","resourcePath":"docs/user/connections.html","navOrder":2,"keywords":["connections", "bluetooth", "ble", "pairing", "radio", "connection", "status", "troubleshooting", "usb", "serial", "setup", "tcp", "network", "connecting", "over", "the", "when", "use", "provisioning", "for", "mpwrd", "after", "your", "first", "reconnection", "behavior", "desktop", "related", "topics"],"aliases":["bluetooth", "usb", "tcp", "pairing"],"charCount":9994},
   {"id":"debug-logs","title":"Debug Logs","section":"user","locale":"en","resourcePath":"docs/user/debug-logs.html","navOrder":22,"keywords":["debug", "logs", "the", "two", "tabs", "viewing", "app", "exporting", "desktop", "related", "topics"],"aliases":["debug-logs", "logcat", "app-logs", "bug-report"],"charCount":3119},
-  {"id":"desktop","title":"Desktop App","section":"user","locale":"en","resourcePath":"docs/user/desktop.html","navOrder":14,"keywords":["desktop", "app", "installation", "linux", "macos", "windows", "connecting", "your", "radio", "usb", "serial", "primary", "tcp", "bluetooth", "ble", "feature", "parity", "differences", "keyboard", "shortcuts", "window", "system", "tray", "notification", "preferences", "built", "documentation", "browser", "building", "from"],"aliases":["desktop", "linux", "macos", "windows", "jvm"],"charCount":6509},
-  {"id":"discovery","title":"Local Mesh Discovery","section":"user","locale":"en","resourcePath":"docs/user/discovery.html","navOrder":12,"keywords":["local", "mesh", "discovery", "scanner", "setting", "scan", "live", "progress", "reading", "the", "results", "beacon", "manual", "exploration", "traceroute", "neighbor", "info", "node", "list", "tool", "tips", "for", "related", "topics"],"aliases":["discovery", "local-mesh-discovery", "mesh-discovery", "local-discovery", "network-scan", "traceroute", "neighbor-info"],"charCount":14660},
+  {"id":"desktop","title":"Desktop App","section":"user","locale":"en","resourcePath":"docs/user/desktop.html","navOrder":14,"keywords":["desktop", "app", "installation", "linux", "macos", "windows", "connecting", "your", "radio", "usb", "serial", "primary", "tcp", "bluetooth", "ble", "feature", "parity", "differences", "keyboard", "shortcuts", "window", "system", "tray", "notification", "preferences", "built", "documentation", "browser", "building", "from"],"aliases":["desktop", "linux", "macos", "windows", "jvm"],"charCount":6647},
+  {"id":"discovery","title":"Local Mesh Discovery","section":"user","locale":"en","resourcePath":"docs/user/discovery.html","navOrder":12,"keywords":["local", "mesh", "discovery", "scanner", "setting", "scan", "live", "progress", "reading", "the", "results", "beacon", "manual", "exploration", "traceroute", "neighbor", "info", "node", "list", "tool", "tips", "for", "related", "topics"],"aliases":["discovery", "local-mesh-discovery", "mesh-discovery", "local-discovery", "network-scan", "traceroute", "neighbor-info"],"charCount":14722},
   {"id":"firmware","title":"Firmware Updates","section":"user","locale":"en","resourcePath":"docs/user/firmware.html","navOrder":13,"keywords":["firmware", "updates", "checking", "for", "update", "methods", "ota", "over", "the", "air", "via", "bluetooth", "network", "connected", "esp32", "app", "usb", "factory", "erase", "and", "bootloader", "upgrade", "other", "flashing", "options", "version", "channels", "pre", "checklist", "post"],"aliases":["firmware", "update", "ota", "flash"],"charCount":9771},
-  {"id":"help-and-docs","title":"Help & In-App Docs","section":"user","locale":"en","resourcePath":"docs/user/help-and-docs.html","navOrder":21,"keywords":["help", "app", "docs", "browsing", "search", "chirpy", "the", "assistant", "related", "topics"],"aliases":["help", "docs-browser", "chirpy", "assistant"],"charCount":2155},
-  {"id":"map-and-waypoints","title":"Map & Waypoints","section":"user","locale":"en","resourcePath":"docs/user/map-and-waypoints.html","navOrder":6,"keywords":["map", "waypoints", "view", "node", "markers", "controls", "filtering", "the", "creating", "waypoint", "properties", "expiration", "geofences", "managing", "layers", "site", "planner", "position", "sharing", "enabling", "privacy", "considerations", "sources", "adding", "your", "own", "tile", "source", "going", "offline"],"aliases":["map", "waypoints", "gps", "location", "site-planner", "map-layers", "geojson", "kml"],"charCount":12651},
+  {"id":"help-and-docs","title":"Help & In-App Docs","section":"user","locale":"en","resourcePath":"docs/user/help-and-docs.html","navOrder":21,"keywords":["help", "app", "docs", "browsing", "search", "chirpy", "the", "assistant", "related", "topics"],"aliases":["help", "docs-browser", "chirpy", "assistant"],"charCount":2306},
+  {"id":"map-and-waypoints","title":"Map & Waypoints","section":"user","locale":"en","resourcePath":"docs/user/map-and-waypoints.html","navOrder":6,"keywords":["map", "waypoints", "view", "node", "markers", "controls", "filtering", "the", "creating", "waypoint", "properties", "expiration", "geofences", "managing", "layers", "site", "planner", "position", "sharing", "enabling", "privacy", "considerations", "sources", "adding", "your", "own", "tile", "source", "offline", "terrain"],"aliases":["map", "waypoints", "gps", "location", "site-planner", "map-layers", "geojson", "kml"],"charCount":13670},
   {"id":"messages-and-channels","title":"Messages & Channels","section":"user","locale":"en","resourcePath":"docs/user/messages-and-channels.html","navOrder":3,"keywords":["messages", "channels", "default", "channel", "security", "adding", "direct", "sending", "message", "managing", "the", "conversation", "list", "bubbles", "states", "delivery", "errors", "features", "quick", "chat", "searching", "text", "formatting", "mentions", "reactions", "replying", "day", "separators", "jump", "latest"],"aliases":["channels", "direct-messages", "messaging", "conversations"],"charCount":16966},
-  {"id":"mqtt","title":"MQTT","section":"user","locale":"en","resourcePath":"docs/user/mqtt.html","navOrder":11,"keywords":["mqtt", "overview", "how", "works", "configuration", "enabling", "connection", "status", "and", "test", "proxy", "this", "phone", "default", "meshtastic", "broker", "private", "map", "reporting", "uplink", "downlink", "message", "formats", "encryption", "privacy", "best", "practices", "troubleshooting", "not", "connecting"],"aliases":["mqtt", "internet-bridge", "broker"],"charCount":9781},
+  {"id":"mqtt","title":"MQTT","section":"user","locale":"en","resourcePath":"docs/user/mqtt.html","navOrder":11,"keywords":["mqtt", "overview", "how", "works", "configuration", "enabling", "connection", "status", "and", "test", "proxy", "this", "phone", "default", "meshtastic", "broker", "private", "map", "reporting", "uplink", "downlink", "message", "formats", "encryption", "privacy", "best", "practices", "troubleshooting", "not", "connecting"],"aliases":["mqtt", "internet-bridge", "broker"],"charCount":9785},
   {"id":"node-metrics","title":"Node Metrics","section":"user","locale":"en","resourcePath":"docs/user/node-metrics.html","navOrder":5,"keywords":["node", "metrics", "viewing", "device", "environment", "air", "quality", "signal", "reference", "power", "traceroute", "reading", "results", "position", "log", "neighbor", "info", "host", "pax", "related", "topics"],"aliases":["metrics", "telemetry", "device-metrics", "signal"],"charCount":9949},
-  {"id":"nodes","title":"Nodes","section":"user","locale":"en","resourcePath":"docs/user/nodes.html","navOrder":4,"keywords":["nodes", "node", "list", "choosing", "what", "the", "shows", "status", "indicators", "roles", "role", "encryption", "quick", "actions", "sharing", "contact", "filtering", "sorting", "text", "search", "filter", "toggles", "sort", "options", "per", "hop", "detail", "device", "links", "want"],"aliases":["node-list", "mesh-nodes", "peers", "hop-histogram"],"charCount":12024},
+  {"id":"nodes","title":"Nodes","section":"user","locale":"en","resourcePath":"docs/user/nodes.html","navOrder":4,"keywords":["nodes", "node", "list", "choosing", "what", "the", "shows", "status", "indicators", "roles", "role", "security", "quick", "actions", "sharing", "contact", "filtering", "sorting", "text", "search", "filter", "toggles", "sort", "options", "per", "hop", "detail", "device", "links", "want"],"aliases":["node-list", "mesh-nodes", "peers", "hop-histogram"],"charCount":14010},
   {"id":"onboarding","title":"Getting Started","section":"user","locale":"en","resourcePath":"docs/user/onboarding.html","navOrder":1,"keywords":["getting", "started", "first", "launch", "welcome", "screen", "permissions", "bluetooth", "permission", "location", "notifications", "critical", "alerts", "reviewing", "later", "after", "setup", "related", "topics"],"aliases":["first-launch", "setup", "intro"],"charCount":7656},
   {"id":"settings-module-admin","title":"Settings — Modules & Admin","section":"user","locale":"en","resourcePath":"docs/user/settings-module-admin.html","navOrder":8,"keywords":["settings", "modules", "admin", "module", "configuration", "mqtt", "serial", "external", "notification", "store", "forward", "range", "test", "telemetry", "canned", "message", "audio", "remote", "hardware", "neighbor", "info", "ambient", "lighting", "detection", "sensor", "paxcounter", "status", "mesh", "beacon", "tak"],"aliases":["modules", "module-config", "administration"],"charCount":19778},
-  {"id":"settings-radio-user","title":"Settings — Radio & User","section":"user","locale":"en","resourcePath":"docs/user/settings-radio-user.html","navOrder":7,"keywords":["settings", "radio", "user", "how", "these", "screens", "work", "profile", "applying", "changes", "configuration", "device", "config", "lora", "modem", "presets", "display", "position", "power", "network", "bluetooth", "security", "related", "topics"],"aliases":["settings", "radio-config", "user-config", "lora"],"charCount":19503},
+  {"id":"settings-radio-user","title":"Settings — Radio & User","section":"user","locale":"en","resourcePath":"docs/user/settings-radio-user.html","navOrder":7,"keywords":["settings", "radio", "user", "how", "these", "screens", "work", "profile", "applying", "changes", "configuration", "device", "config", "lora", "modem", "presets", "display", "position", "power", "network", "bluetooth", "security", "related", "topics"],"aliases":["settings", "radio-config", "user-config", "lora"],"charCount":19700},
   {"id":"signal-meter","title":"How the Meshtastic Signal Meter Works","section":"user","locale":"en","resourcePath":"docs/user/signal-meter.html","navOrder":15,"keywords":["how", "the", "meshtastic", "signal", "meter", "works", "rssi", "and", "snr", "decoding", "below", "noise", "floor", "rating", "quality", "diagnosing", "local", "interference", "where", "information", "appears", "related", "topics"],"aliases":["signal", "signal-meter", "snr", "rssi"],"charCount":4745},
-  {"id":"tak","title":"TAK Integration","section":"user","locale":"en","resourcePath":"docs/user/tak.html","navOrder":10,"keywords":["tak", "integration", "overview", "setup", "prerequisites", "configuration", "local", "server", "roles", "cot", "cursor", "target", "format", "wire", "usage", "with", "atak", "troubleshooting", "security", "considerations", "related", "topics"],"aliases":["tak", "atak", "team-awareness-kit"],"charCount":7718},
+  {"id":"tak","title":"TAK Integration","section":"user","locale":"en","resourcePath":"docs/user/tak.html","navOrder":10,"keywords":["tak", "integration", "overview", "setup", "prerequisites", "configuration", "local", "server", "roles", "cot", "cursor", "target", "format", "wire", "usage", "with", "atak", "troubleshooting", "security", "considerations", "related", "topics"],"aliases":["tak", "atak", "team-awareness-kit"],"charCount":7738},
   {"id":"telemetry-and-sensors","title":"Telemetry & Sensors","section":"user","locale":"en","resourcePath":"docs/user/telemetry-and-sensors.html","navOrder":9,"keywords":["telemetry", "sensors", "device", "environment", "temperature", "humidity", "air", "quality", "soil", "light", "weather", "and", "other", "readings", "power", "metrics", "configuring", "choosing", "interval", "viewing", "troubleshooting", "related", "topics"],"aliases":["sensors", "environment", "weather", "power-metrics"],"charCount":7327},
-  {"id":"translate","title":"Translate the App","section":"user","locale":"en","resourcePath":"docs/user/translate.html","navOrder":17,"keywords":["translate", "the", "app", "what", "gets", "translated", "how", "contribute", "adding", "new", "language", "translations", "are", "organized", "translation", "guidelines", "questions", "related", "topics"],"aliases":["translate", "crowdin", "localization"],"charCount":5027},
+  {"id":"translate","title":"Translate the App","section":"user","locale":"en","resourcePath":"docs/user/translate.html","navOrder":17,"keywords":["translate", "the", "app", "what", "gets", "translated", "how", "contribute", "adding", "new", "language", "translations", "are", "organized", "translation", "guidelines", "questions", "related", "topics"],"aliases":["translate", "crowdin", "localization"],"charCount":5035},
   {"id":"units-and-locale","title":"Units, Measurement & Locale","section":"user","locale":"en","resourcePath":"docs/user/units-and-locale.html","navOrder":16,"keywords":["units", "measurement", "locale", "how", "works", "the", "radio", "own", "screen", "separate", "temperature", "distance", "altitude", "where", "these", "appear", "speed", "wind", "weight", "rainfall", "that", "never", "change", "date", "time", "changing", "your", "system", "overriding", "app"],"aliases":["measurement", "units", "locale", "metric", "imperial"],"charCount":8716},
   {"id":"widget","title":"Home Screen Widget","section":"user","locale":"en","resourcePath":"docs/user/widget.html","navOrder":20,"keywords":["home", "screen", "widget", "what", "shows", "adding", "the", "related", "topics"],"aliases":["widget", "home-screen-widget", "local-stats-widget"],"charCount":2630},
-  {"id":"adding-a-feature-module","title":"Adding a Feature Module","section":"developer","locale":"en","resourcePath":"docs/developer/adding-a-feature-module.html","navOrder":3,"keywords":["adding", "feature", "module", "create", "the", "directory", "build", "gradle", "kts", "register", "settings", "app", "desktop", "add", "navigation", "routes", "entries", "source", "set", "guidelines", "testing", "expectations", "checklist"],"aliases":["new-module", "feature-module", "module-guide"],"charCount":4647},
-  {"id":"architecture","title":"Architecture","section":"developer","locale":"en","resourcePath":"docs/developer/architecture.html","navOrder":1,"keywords":["architecture", "layer", "overview", "module", "categories", "androidapp", "android", "application", "desktopapp", "desktop", "jvm", "feature", "modules", "core", "kmp", "source", "sets", "dependency", "injection", "radio", "control", "service", "repository", "navigation"],"aliases":["layers", "module-architecture", "kmp", "radio-control"],"charCount":7725},
-  {"id":"codebase","title":"Codebase","section":"developer","locale":"en","resourcePath":"docs/developer/codebase.html","navOrder":2,"keywords":["codebase", "repository", "structure", "namespacing", "convention", "build", "system", "gradle", "kotlin", "dsl", "plugins", "variants", "android", "key", "tasks", "compile", "check", "across", "all", "kmp", "targets", "run", "tests", "code", "quality", "desktop", "native", "installers", "for", "the"],"aliases":["repository-layout", "project-structure", "source-code"],"charCount":4876},
-  {"id":"contributing","title":"Contributing","section":"developer","locale":"en","resourcePath":"docs/developer/contributing.html","navOrder":8,"keywords":["contributing", "branch", "naming", "development", "workflow", "commit", "messages", "pull", "request", "checklist", "code", "style", "architecture", "rules", "verification", "getting", "help"],"aliases":["contributing", "pull-request", "branch-naming"],"charCount":3640},
+  {"id":"adding-a-feature-module","title":"Adding a Feature Module","section":"developer","locale":"en","resourcePath":"docs/developer/adding-a-feature-module.html","navOrder":3,"keywords":["adding", "feature", "module", "create", "the", "directory", "build", "gradle", "kts", "register", "settings", "app", "desktop", "add", "navigation", "routes", "entries", "source", "set", "guidelines", "testing", "expectations", "checklist"],"aliases":["new-module", "feature-module", "module-guide"],"charCount":4648},
+  {"id":"architecture","title":"Architecture","section":"developer","locale":"en","resourcePath":"docs/developer/architecture.html","navOrder":1,"keywords":["architecture", "layer", "overview", "module", "categories", "androidapp", "android", "application", "desktopapp", "desktop", "jvm", "feature", "modules", "core", "kmp", "source", "sets", "dependency", "injection", "radio", "control", "service", "repository", "navigation"],"aliases":["layers", "module-architecture", "kmp", "radio-control"],"charCount":7733},
+  {"id":"codebase","title":"Codebase","section":"developer","locale":"en","resourcePath":"docs/developer/codebase.html","navOrder":2,"keywords":["codebase", "repository", "structure", "namespacing", "convention", "build", "system", "gradle", "kotlin", "dsl", "plugins", "variants", "android", "key", "tasks", "compile", "check", "across", "all", "kmp", "targets", "run", "tests", "code", "quality", "desktop", "native", "installers", "for", "the"],"aliases":["repository-layout", "project-structure", "source-code"],"charCount":4885},
+  {"id":"contributing","title":"Contributing","section":"developer","locale":"en","resourcePath":"docs/developer/contributing.html","navOrder":8,"keywords":["contributing", "branch", "naming", "development", "workflow", "commit", "messages", "pull", "request", "checklist", "code", "style", "architecture", "rules", "verification", "getting", "help"],"aliases":["contributing", "pull-request", "branch-naming"],"charCount":3647},
   {"id":"documentation-style","title":"Documentation Style","section":"developer","locale":"en","resourcePath":"docs/developer/documentation-style.html","navOrder":11,"keywords":["documentation", "style", "transition", "repository", "mechanics", "local", "forms", "prose", "rules", "section", "leaves", "open", "word", "list", "new", "page", "checklist", "related", "topics"],"aliases":["style", "style-guide", "docs-style", "writing"],"charCount":9809},
   {"id":"measurement","title":"Measurement & Formatting","section":"developer","locale":"en","resourcePath":"docs/developer/measurement.html","navOrder":9,"keywords":["measurement", "formatting", "overview", "metricformatter", "api", "usage", "numberformatter", "unit", "conversion", "adding", "new", "type", "dateformatter", "design", "decisions", "related"],"aliases":["measurement", "metric-formatter", "number-formatter"],"charCount":8029},
-  {"id":"navigation-and-deep-links","title":"Navigation & Deep Links","section":"developer","locale":"en","resourcePath":"docs/developer/navigation-and-deep-links.html","navOrder":4,"keywords":["navigation", "deep", "links", "route", "architecture", "hierarchy", "conventions", "link", "router", "uri", "format", "supported", "backstack", "synthesis", "adding", "entry", "registration", "testing"],"aliases":["deeplinks", "navigation-3", "routes"],"charCount":7230},
+  {"id":"navigation-and-deep-links","title":"Navigation & Deep Links","section":"developer","locale":"en","resourcePath":"docs/developer/navigation-and-deep-links.html","navOrder":4,"keywords":["navigation", "deep", "links", "route", "architecture", "hierarchy", "conventions", "link", "router", "uri", "format", "supported", "backstack", "synthesis", "adding", "entry", "registration", "testing"],"aliases":["deeplinks", "navigation-3", "routes"],"charCount":7234},
   {"id":"persistence","title":"Persistence","section":"developer","locale":"en","resourcePath":"docs/developer/persistence.html","navOrder":6,"keywords":["persistence", "room", "kmp", "database", "key", "points", "what", "stored", "datastore", "preferences", "core", "prefs", "docs", "intentionally", "skip", "best", "practices"],"aliases":["room", "database", "datastore", "prefs"],"charCount":3670},
   {"id":"test-builds","title":"Test Builds & Obtainium","section":"developer","locale":"en","resourcePath":"docs/developer/test-builds.html","navOrder":10,"keywords":["test", "builds", "obtainium", "which", "channels", "can", "reach", "one", "tap", "setup", "how", "many", "entries", "you", "have", "once", "manual", "stable", "open", "beta", "closed", "bleeding", "edge", "newest", "promoted", "build", "any", "channel", "snapshot", "latest"],"aliases":["test-builds", "obtainium", "beta", "snapshot"],"charCount":20778},
-  {"id":"testing","title":"Testing","section":"developer","locale":"en","resourcePath":"docs/developer/testing.html","navOrder":7,"keywords":["testing", "test", "categories", "kmp", "unit", "tests", "commontest", "android", "host", "compose", "screenshot", "baseline", "profile", "startup", "performance", "organization", "guidelines", "don", "running", "all", "specific", "module", "code", "quality", "full", "verification", "integration"],"aliases":["tests", "unit-tests", "screenshot-tests"],"charCount":4980},
+  {"id":"testing","title":"Testing","section":"developer","locale":"en","resourcePath":"docs/developer/testing.html","navOrder":7,"keywords":["testing", "test", "categories", "kmp", "unit", "tests", "commontest", "android", "host", "compose", "screenshot", "baseline", "profile", "startup", "performance", "organization", "guidelines", "don", "running", "all", "specific", "module", "code", "quality", "full", "verification", "integration"],"aliases":["tests", "unit-tests", "screenshot-tests"],"charCount":4989},
   {"id":"transport","title":"Transport","section":"developer","locale":"en","resourcePath":"docs/developer/transport.html","navOrder":5,"keywords":["transport", "abstraction", "bluetooth", "low", "energy", "ble", "where", "the", "code", "lives", "usb", "serial", "tcp", "factory", "connection", "lifecycle", "adding", "new"],"aliases":["ble", "serial", "tcp", "radio-transport"],"charCount":4902},
   {"id":"app-functions","title":"App Functions","section":"user","locale":"ar-rSA","resourcePath":"docs/ar-rSA/user/app-functions.html","navOrder":19,"keywords":["app", "functions", "enabling", "write", "read", "privacy", "related", "topics"],"aliases":["app-functions", "system-ai", "gemini", "assistant"],"charCount":4364},
   {"id":"connections","title":"Connections","section":"user","locale":"ar-rSA","resourcePath":"docs/ar-rSA/user/connections.html","navOrder":2,"keywords":["connections", "bluetooth", "ble", "pairing", "radio", "connection", "status", "troubleshooting", "usb", "serial", "setup", "tcp", "network", "connecting", "over", "the", "when", "use", "provisioning", "for", "mpwrd", "after", "your", "first", "reconnection", "behavior", "desktop", "related", "topics"],"aliases":["bluetooth", "usb", "tcp", "pairing"],"charCount":11132},