a zip code crypto-currency system good for red ONLY

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  1. @import "ionic.functions";
  2. // Appearance
  3. // --------------------------------------------------
  4. @mixin appearance($val) {
  5. -moz-appearance: $val;
  6. -ms-appearance: $val;
  7. -webkit-appearance: $val;
  8. appearance: $val;
  9. }
  10. // Input Placeholder
  11. // --------------------------------------------------
  12. @mixin placeholder($color: #999, $text-indent: 0) {
  13. &::-moz-placeholder { // Firefox 19+
  14. color: $color;
  15. }
  16. &:-ms-input-placeholder {
  17. color: $color;
  18. }
  19. &::-webkit-input-placeholder {
  20. // Safari placeholder margin issue
  21. text-indent: $text-indent;
  22. color: $color;
  23. }
  24. }
  25. // Check that the given map values are in ascending order
  26. // ---------------------------------------------------------------------------------
  27. @mixin assert-ascending($map, $map-name) {
  28. $prev-key: null;
  29. $prev-num: null;
  30. @each $key, $num in $map {
  31. @if $prev-num == null {
  32. // Do nothing
  33. } @else if not comparable($prev-num, $num) {
  34. @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
  35. } @else if $prev-num >= $num {
  36. @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
  37. }
  38. $prev-key: $key;
  39. $prev-num: $num;
  40. }
  41. }
  42. // Check that the first value in the given map starts at 0
  43. // ---------------------------------------------------------------------------------
  44. @mixin assert-starts-at-zero($map, $map-name) {
  45. $values: map-values($map);
  46. $first-value: nth($values, 1);
  47. @if $first-value != 0 {
  48. @warn "First value in `#{$map-name}` must start at 0, but starts at #{$first-value}.";
  49. }
  50. }
  51. // Breakpoint Mixins
  52. // ---------------------------------------------------------------------------------
  53. // Breakpoint viewport sizes and media queries.
  54. //
  55. // Breakpoints are defined as a map of (name: minimum width), order from small to large:
  56. //
  57. // (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)
  58. //
  59. // The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
  60. // ---------------------------------------------------------------------------------
  61. // Minimum breakpoint width. Null for the smallest (first) breakpoint.
  62. //
  63. // >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
  64. // 576px
  65. @function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
  66. $min: map-get($breakpoints, $name);
  67. @return if($min != 0, $min, null);
  68. }
  69. // Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.
  70. // Useful for making responsive utilities.
  71. //
  72. // >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
  73. // "" (Returns a blank string)
  74. // >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
  75. // "-sm"
  76. @function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
  77. @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
  78. }
  79. // Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
  80. // Makes the @content apply to the given breakpoint and wider.
  81. @mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
  82. $min: breakpoint-min($name, $breakpoints);
  83. @if $min {
  84. @media (min-width: $min) {
  85. @content;
  86. }
  87. } @else {
  88. @content;
  89. }
  90. }
  91. // Name of the next breakpoint, or null for the last breakpoint.
  92. //
  93. // >> breakpoint-next(sm)
  94. // md
  95. // >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
  96. // md
  97. // >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))
  98. // md
  99. @function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
  100. $n: index($breakpoint-names, $name);
  101. @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
  102. }
  103. // Maximum breakpoint width. Null for the largest (last) breakpoint.
  104. // The maximum value is calculated as the minimum of the next one less 0.1.
  105. //
  106. // >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
  107. // 767px
  108. @function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
  109. $next: breakpoint-next($name, $breakpoints);
  110. @return if($next, breakpoint-min($next, $breakpoints) - 1px, null);
  111. }
  112. // Media of at most the maximum breakpoint width. No query for the largest breakpoint.
  113. // Makes the @content apply to the given breakpoint and narrower.
  114. @mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
  115. $max: breakpoint-max($name, $breakpoints);
  116. @if $max {
  117. @media (max-width: $max) {
  118. @content;
  119. }
  120. } @else {
  121. @content;
  122. }
  123. }
  124. @mixin multi-dir() {
  125. @if $app-direction == multi {
  126. $root: #{&};
  127. @at-root [dir="ltr"], [dir="rtl"] {
  128. #{$root} {
  129. @content;
  130. }
  131. }
  132. } @else {
  133. @content;
  134. }
  135. }
  136. @mixin rtl() {
  137. @if $app-direction == multi {
  138. $root: #{&};
  139. @at-root [dir="rtl"] {
  140. #{$root} {
  141. @content;
  142. }
  143. }
  144. } @else if $app-direction == rtl {
  145. @content;
  146. }
  147. }
  148. @mixin ltr() {
  149. @if $app-direction == multi {
  150. $root: #{&};
  151. @at-root [dir="ltr"] {
  152. #{$root} {
  153. @content;
  154. }
  155. }
  156. } @else if $app-direction == ltr {
  157. @content;
  158. }
  159. }
  160. // If deprecated variable exists, use it, otherwise, use alternative
  161. // @param {string} $property - property to default
  162. // @param {string} $variable - the deprecated variable
  163. // ----------------------------------------------------------
  164. @mixin deprecated-variable($property, $variable) {
  165. @if $variable == null {
  166. @content;
  167. } @else {
  168. // TODO find variable name
  169. @warn "you are using a deprecated variable";
  170. #{$property}: $variable;
  171. }
  172. }
  173. // SVG Background Image Mixin
  174. // @param {string} $svg
  175. // ----------------------------------------------------------
  176. @mixin svg-background-image($svg, $flip-rtl: false) {
  177. $url: url-encode($svg);
  178. $viewBox: str-split(str-extract($svg, "viewBox='", "'"), " ");
  179. @if $flip-rtl != true or $viewBox == null {
  180. @include multi-dir() {
  181. background-image: url("data:image/svg+xml;charset=utf-8,#{$url}");
  182. }
  183. } @else {
  184. $transform: "transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'";
  185. $flipped-url: $svg;
  186. $flipped-url: str-replace($flipped-url, "<path", "<path #{$transform}");
  187. $flipped-url: str-replace($flipped-url, "<line", "<line #{$transform}");
  188. $flipped-url: str-replace($flipped-url, "<polygon", "<polygon #{$transform}");
  189. $flipped-url: url-encode($flipped-url);
  190. @include ltr () {
  191. background-image: url("data:image/svg+xml;charset=utf-8,#{$url}");
  192. }
  193. @include rtl() {
  194. background-image: url("data:image/svg+xml;charset=utf-8,#{$flipped-url}");
  195. }
  196. }
  197. }
  198. // Add property horizontal
  199. // @param {string} $start
  200. // @param {string} $end
  201. // ----------------------------------------------------------
  202. @mixin property-horizontal($prop, $start, $end: $start) {
  203. @if $start == $end {
  204. @include multi-dir() {
  205. #{$prop}-left: $start;
  206. #{$prop}-right: $end;
  207. }
  208. } @else {
  209. @include ltr() {
  210. #{$prop}-left: $start;
  211. #{$prop}-right: $end;
  212. }
  213. @include rtl() {
  214. #{$prop}-left: $end;
  215. #{$prop}-right: $start;
  216. }
  217. }
  218. }
  219. // Add property for all directions
  220. // @param {string} $prop
  221. // @param {string} $top
  222. // @param {string} $end
  223. // @param {string} $bottom
  224. // @param {string} $start
  225. // @param {boolean} $content include content or use default
  226. // ----------------------------------------------------------
  227. @mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {
  228. @if $top == $end and $top == $bottom and $top == $start {
  229. @include multi-dir() {
  230. #{$prop}: $top;
  231. }
  232. } @else if $top == $bottom and $end == $start and $top != null and $end != null {
  233. @include multi-dir() {
  234. #{$prop}: $top $end;
  235. }
  236. } @else if $end == $start and $top != null and $end != null and $bottom != null {
  237. @include multi-dir() {
  238. #{$prop}: $top $end $bottom;
  239. }
  240. } @else if $top != null and $end != null and $bottom != null and $start != null {
  241. @include ltr() {
  242. #{$prop}: $top $end $bottom $start;
  243. }
  244. @include rtl() {
  245. #{$prop}: $top $start $bottom $end;
  246. }
  247. } @else {
  248. @include property-horizontal($prop, $start, $end);
  249. @include multi-dir() {
  250. #{$prop}-top: $top;
  251. #{$prop}-bottom: $bottom;
  252. }
  253. }
  254. }
  255. // Add padding horizontal
  256. // @param {string} $start
  257. // @param {string} $end
  258. // ----------------------------------------------------------
  259. @mixin padding-horizontal($start, $end: $start) {
  260. @include property-horizontal(padding, $start, $end);
  261. }
  262. // Add padding for all directions
  263. // @param {string} $top
  264. // @param {string} $end
  265. // @param {string} $bottom
  266. // @param {string} $start
  267. // ----------------------------------------------------------
  268. @mixin padding($top, $end: $top, $bottom: $top, $start: $end) {
  269. @include property(padding, $top, $end, $bottom, $start);
  270. }
  271. // Add margin horizontal
  272. // @param {string} $start
  273. // @param {string} $end
  274. // ----------------------------------------------------------
  275. @mixin margin-horizontal($start, $end: $start) {
  276. @include property-horizontal(margin, $start, $end);
  277. }
  278. // Add margin for all directions
  279. // @param {string} $top
  280. // @param {string} $end
  281. // @param {string} $bottom
  282. // @param {string} $start
  283. // ----------------------------------------------------------
  284. @mixin margin($top, $end: $top, $bottom: $top, $start: $end) {
  285. @include property(margin, $top, $end, $bottom, $start);
  286. }
  287. // Add position horizontal
  288. // @param {string} $start - amount to position start
  289. // @param {string} $end - amount to left: 0; end
  290. // ----------------------------------------------------------
  291. @mixin position-horizontal($start: null, $end: null) {
  292. @if $start == $end {
  293. @include multi-dir() {
  294. left: $start;
  295. right: $end;
  296. }
  297. } @else {
  298. @include ltr() {
  299. left: $start;
  300. right: $end;
  301. }
  302. @include rtl() {
  303. left: $end;
  304. right: $start;
  305. }
  306. }
  307. }
  308. // Add position for all directions
  309. // @param {string} $top
  310. // @param {string} $end
  311. // @param {string} $bottom
  312. // @param {string} $start
  313. // ----------------------------------------------------------
  314. @mixin position($top: null, $end: null, $bottom: null, $start: null) {
  315. @include position-horizontal($start, $end);
  316. top: $top;
  317. bottom: $bottom;
  318. }
  319. // Add border radius for all directions
  320. // @param {string} $top-start
  321. // @param {string} $top-end
  322. // @param {string} $bottom-end
  323. // @param {string} $bottom-start
  324. // ----------------------------------------------------------
  325. @mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {
  326. @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {
  327. @include multi-dir() {
  328. border-radius: $top-start;
  329. }
  330. } @else {
  331. @include ltr() {
  332. border-top-left-radius: $top-start;
  333. border-top-right-radius: $top-end;
  334. border-bottom-right-radius: $bottom-end;
  335. border-bottom-left-radius: $bottom-start;
  336. }
  337. @include rtl() {
  338. border-top-left-radius: $top-end;
  339. border-top-right-radius: $top-start;
  340. border-bottom-right-radius: $bottom-start;
  341. border-bottom-left-radius: $bottom-end;
  342. }
  343. }
  344. }
  345. // Sets correct text align with support for old browsers
  346. // @param {string} $direction - text direction
  347. // @param {string} $decorator - !important
  348. // ----------------------------------------------------------
  349. @mixin text-align($direction, $decorator: null) {
  350. @if $direction == start {
  351. text-align: left;
  352. text-align: start $decorator;
  353. } @else if $direction == end {
  354. text-align: right;
  355. text-align: end $decorator;
  356. } @else {
  357. text-align: $direction $decorator;
  358. }
  359. }
  360. // Add direction for all directions
  361. // @param {string} $dir - Direction on LTR
  362. @mixin direction($dir) {
  363. $other-dir: null;
  364. @if $dir == ltr {
  365. $other-dir: rtl;
  366. } @else {
  367. $other-dir: ltr;
  368. }
  369. @include ltr() {
  370. direction: $dir;
  371. }
  372. @include rtl() {
  373. direction: $other-dir;
  374. }
  375. }
  376. // Add float for all directions
  377. // @param {string} $side
  378. // @param {string} $decorator - !important
  379. @mixin float($side, $decorator: null) {
  380. @if $side == start {
  381. @include ltr() {
  382. float: left $decorator;
  383. }
  384. @include rtl() {
  385. float: right $decorator;
  386. }
  387. } @else if $side == end {
  388. @include ltr() {
  389. float: right $decorator;
  390. }
  391. @include rtl() {
  392. float: left $decorator;
  393. }
  394. } @else {
  395. @include multi-dir() {
  396. float: $side $decorator;
  397. }
  398. }
  399. }
  400. @mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {
  401. @if $horizontal == start or $horizontal == end {
  402. $horizontal-ltr: null;
  403. $horizontal-rtl: null;
  404. @if $horizontal == start {
  405. $horizontal-ltr: left;
  406. $horizontal-rtl: right;
  407. } @else {
  408. $horizontal-ltr: right;
  409. $horizontal-rtl: left;
  410. }
  411. @include ltr() {
  412. background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;
  413. }
  414. @include rtl() {
  415. background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;
  416. }
  417. } @else {
  418. @include multi-dir() {
  419. background-position: $horizontal $horizontal-amount $vertical $vertical-amount;
  420. }
  421. }
  422. }
  423. @mixin transform-origin($x-axis, $y-axis: null) {
  424. @if $x-axis == start {
  425. @include ltr() {
  426. transform-origin: left $y-axis;
  427. }
  428. @include rtl() {
  429. transform-origin: right $y-axis;
  430. }
  431. } @else if $x-axis == end {
  432. @include ltr() {
  433. transform-origin: right $y-axis;
  434. }
  435. @include rtl() {
  436. transform-origin: left $y-axis;
  437. }
  438. } @else if $x-axis == left or $x-axis == right {
  439. @include multi-dir() {
  440. transform-origin: $x-axis $y-axis;
  441. }
  442. } @else {
  443. @include ltr() {
  444. transform-origin: $x-axis $y-axis;
  445. }
  446. @include rtl() {
  447. transform-origin: calc(100% - #{$x-axis}) $y-axis;
  448. }
  449. }
  450. }
  451. // Add transform for all directions
  452. // @param {string} $transforms - comma separated list of transforms
  453. @mixin transform($transforms...) {
  454. $extra: null;
  455. $x: null;
  456. $ltr-translate: null;
  457. $rtl-translate: null;
  458. @each $transform in $transforms {
  459. @if (str-index($transform, translate3d)) {
  460. $transform: str-replace($transform, 'translate3d(');
  461. $transform: str-replace($transform, ')');
  462. $coordinates: str-split($transform, ',');
  463. $x: nth($coordinates, 1);
  464. $y: nth($coordinates, 2);
  465. $z: nth($coordinates, 3);
  466. $ltr-translate: translate3d($x, $y, $z);
  467. $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);
  468. } @else {
  469. @if $extra == null {
  470. $extra: $transform;
  471. } @else {
  472. $extra: $extra $transform;
  473. }
  474. }
  475. }
  476. @if $x == '0' or $x == null {
  477. @include multi-dir() {
  478. transform: $ltr-translate $extra;
  479. }
  480. } @else {
  481. @include ltr() {
  482. transform: $ltr-translate $extra;
  483. }
  484. @include rtl() {
  485. transform: $rtl-translate $extra;
  486. }
  487. }
  488. }
  489. // Add safe-area transform for all directions
  490. // Used by item-reorder
  491. // @param {string} $transforms - comma separated list of transforms
  492. @mixin reorder-safe-translate($transforms...) {
  493. $extra: null;
  494. $x: null;
  495. $ltr-translate: null;
  496. $rtl-translate: null;
  497. @each $transform in $transforms {
  498. @if (str-index($transform, translate3d)) {
  499. $transform: str-replace($transform, 'translate3d(');
  500. $transform: str-replace($transform, ')');
  501. $coordinates: str-split($transform, ',');
  502. $x: nth($coordinates, 1);
  503. $y: nth($coordinates, 2);
  504. $z: nth($coordinates, 3);
  505. $ltr-translate: translate3d(calc(-1 * constant(safe-area-inset-right)), 0, 0);
  506. $rtl-translate: translate3d(constant(safe-area-inset-left), $y, $z);
  507. $ltr-env-translate: translate3d(calc(-1 * env(safe-area-inset-right)), 0, 0);
  508. $rtl-env-translate: translate3d(env(safe-area-inset-left), $y, $z);
  509. } @else {
  510. @if $extra == null {
  511. $extra: $transform;
  512. } @else {
  513. $extra: $extra $transform;
  514. }
  515. }
  516. }
  517. @if $x == '0' or $x == null {
  518. @include multi-dir() {
  519. transform: $ltr-translate $extra;
  520. transform: $ltr-env-translate $extra;
  521. }
  522. } @else {
  523. @include ltr() {
  524. transform: $ltr-translate $extra;
  525. transform: $ltr-env-translate $extra;
  526. }
  527. @include rtl() {
  528. transform: $rtl-translate $extra;
  529. transform: $rtl-env-translate $extra;
  530. }
  531. }
  532. }
  533. // Add safe-area-padding for all directions
  534. // @param {string} $top
  535. // @param {string} $end
  536. // @param {string} $bottom
  537. // @param {string} $start
  538. // ----------------------------------------------------------
  539. @mixin safe-area-padding($top, $end: $top, $bottom: $top, $start: $end) {
  540. $safe-area-start: null;
  541. $safe-area-end: null;
  542. $safe-area-start-env: null;
  543. $safe-area-end-env: null;
  544. @if ($start) {
  545. $safe-area-start: calc(constant(safe-area-inset-left) + #{$start});
  546. $safe-area-start-env: calc(env(safe-area-inset-left) + #{$start});
  547. }
  548. @if ($end) {
  549. $safe-area-end-env: calc(constant(safe-area-inset-right) + #{$end});
  550. $safe-area-end-env: calc(env(safe-area-inset-right) + #{$end});
  551. }
  552. @include padding($top, $end, $bottom, $start);
  553. @media screen and (orientation: landscape) {
  554. @include padding($top, $safe-area-end, $bottom, $safe-area-start);
  555. @include padding($top, $safe-area-end-env, $bottom, $safe-area-start-env);
  556. }
  557. }
  558. // Add safe area padding horizontal
  559. // @param {string} $start
  560. // @param {string} $end
  561. // ----------------------------------------------------------
  562. @mixin safe-area-padding-horizontal($start, $end: $start) {
  563. $safe-area-end: null;
  564. $safe-area-start: null;
  565. $safe-area-start-env: null;
  566. $safe-area-end-env: null;
  567. @if ($end) {
  568. $safe-area-end: calc(constant(safe-area-inset-right) + #{$end});
  569. $safe-area-end-env: calc(env(safe-area-inset-right) + #{$end});
  570. }
  571. @if ($start) {
  572. $safe-area-start: calc(constant(safe-area-inset-left) + #{$start});
  573. $safe-area-start-env: calc(env(safe-area-inset-left) + #{$start});
  574. }
  575. @include padding-horizontal($start, $end);
  576. @media screen and (orientation: landscape) {
  577. @include padding-horizontal($safe-area-start, $safe-area-end);
  578. @include padding-horizontal($safe-area-start-env, $safe-area-end-env);
  579. }
  580. }
  581. // Add safe position horizontal
  582. // @param {string} $start - amount to position start
  583. // @param {string} $end - amount to left: 0; end
  584. // ----------------------------------------------------------
  585. @mixin safe-position-horizontal($start: null, $end: null){
  586. $safe-area-start: null;
  587. $safe-area-end: null;
  588. $safe-area-start-env: null;
  589. $safe-area-end-env: null;
  590. @if ($start) {
  591. $safe-area-start: calc(constant(safe-area-inset-left) + #{$start});
  592. $safe-area-start-env: calc(env(safe-area-inset-left) + #{$start});
  593. }
  594. @if ($end) {
  595. $safe-area-end: calc(constant(safe-area-inset-right) + #{$end});
  596. $safe-area-end-env: calc(env(safe-area-inset-right) + #{$end});
  597. }
  598. @if $safe-area-start == $safe-area-end {
  599. @include multi-dir() {
  600. left: $safe-area-start;
  601. right: $safe-area-end;
  602. }
  603. @include multi-dir() {
  604. left: $safe-area-start-env;
  605. right: $safe-area-end-env;
  606. }
  607. } @else {
  608. @include ltr() {
  609. left: $safe-area-start;
  610. right: $safe-area-end;
  611. }
  612. @include ltr() {
  613. left: $safe-area-start-env;
  614. right: $safe-area-end-env;
  615. }
  616. @include rtl() {
  617. left: $safe-area-end;
  618. right: $safe-area-start;
  619. }
  620. @include rtl() {
  621. left: $safe-area-end-env;
  622. right: $safe-area-start-env;
  623. }
  624. }
  625. }