Repository: escueladigital/EDgrid Branch: master Commit: d287bd622887 Files: 168 Total size: 994.3 KB Directory structure: gitextract_bfb6tb_w/ ├── .babelrc ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── docs/ │ ├── CNAME │ ├── assets/ │ │ └── img/ │ │ └── edgrid-poster_tmp23195 │ ├── casos-de-exito/ │ │ └── index.html │ ├── changelog/ │ │ └── index.html │ ├── creditos/ │ │ └── index.html │ ├── css/ │ │ └── styles.css │ ├── documentacion/ │ │ ├── alineacion.1.html │ │ ├── alineacion.html │ │ ├── banner.html │ │ ├── base.1.html │ │ ├── base.html │ │ ├── botones.html │ │ ├── breakpoints.html │ │ ├── cards.html │ │ ├── css.html │ │ ├── distribucion.html │ │ ├── estructura.html │ │ ├── flexbox-helpers.html │ │ ├── funciones.html │ │ ├── grids.html │ │ ├── helpers.html │ │ ├── imagenes.html │ │ ├── index.html │ │ ├── instalacion.html │ │ ├── layout-css-grid.html │ │ ├── layout-flexbox.html │ │ ├── layout.html │ │ ├── mediaqueries.html │ │ ├── menu-responsive.html │ │ ├── menus.html │ │ ├── modo-dev.html │ │ ├── offset.html │ │ ├── personalizar.html │ │ ├── prototipado-avanzado.html │ │ ├── prototipado.html │ │ ├── ratios.html │ │ ├── sass.html │ │ ├── skeleton.html │ │ ├── videos.html │ │ └── visibilidad.html │ ├── index.html │ ├── js/ │ │ ├── scripts-min.js │ │ └── scripts.js │ ├── sitemap.xml │ └── test.html ├── ed-grid.scss ├── gulpfile.babel.js ├── index.js ├── package.json ├── poster.psd ├── src/ │ ├── css/ │ │ └── ed-grid.css │ ├── data/ │ │ └── casos-de-exito.json │ ├── js/ │ │ ├── index.js │ │ └── modules/ │ │ ├── activeMenu.js │ │ ├── menu.js │ │ └── scrollBarWIdth.js │ ├── md/ │ │ ├── alineacion.md │ │ ├── base.md │ │ ├── breakpoints.md │ │ ├── cards.md │ │ ├── distribucion.md │ │ ├── docs/ │ │ │ ├── botones.md │ │ │ ├── flexbox.md │ │ │ ├── menu.md │ │ │ ├── offset.md │ │ │ └── videos.md │ │ ├── estructura.md │ │ ├── funciones.md │ │ ├── grids.md │ │ ├── helpers.md │ │ ├── layout-css-grid.md │ │ ├── layout-flexbox.md │ │ ├── layout.md │ │ ├── mediaqueries.md │ │ ├── menu-responsive.md │ │ ├── modo-dev.md │ │ ├── personalizar.md │ │ ├── prototipado-avanzado.md │ │ ├── prototipado.md │ │ ├── ratios.md │ │ ├── skeleton.md │ │ └── visibilidad.md │ ├── pug/ │ │ ├── config/ │ │ │ ├── config.pug │ │ │ └── template.pug │ │ ├── includes/ │ │ │ ├── banner.pug │ │ │ ├── cards.pug │ │ │ ├── collaborator.pug │ │ │ ├── docs-menu.pug │ │ │ ├── feature-item.pug │ │ │ ├── footer.pug │ │ │ ├── header.pug │ │ │ ├── main-banner.pug │ │ │ └── main-menu.pug │ │ └── pages/ │ │ ├── casos-de-exito/ │ │ │ └── index.pug │ │ ├── changelog/ │ │ │ └── index.pug │ │ ├── creditos/ │ │ │ └── index.pug │ │ ├── documentacion/ │ │ │ ├── alineacion.pug │ │ │ ├── banner.pug │ │ │ ├── base.pug │ │ │ ├── breakpoints.pug │ │ │ ├── cards.pug │ │ │ ├── distribucion.pug │ │ │ ├── estructura.pug │ │ │ ├── flexbox-helpers.pug │ │ │ ├── funciones.pug │ │ │ ├── grids.pug │ │ │ ├── helpers.pug │ │ │ ├── index.pug │ │ │ ├── instalacion.pug │ │ │ ├── layout-css-grid.pug │ │ │ ├── layout-flexbox.pug │ │ │ ├── layout.pug │ │ │ ├── mediaqueries.pug │ │ │ ├── menu-responsive.pug │ │ │ ├── menus.pug │ │ │ ├── modo-dev.pug │ │ │ ├── offset.pug │ │ │ ├── personalizar.pug │ │ │ ├── prototipado-avanzado.pug │ │ │ ├── prototipado.pug │ │ │ ├── ratios.pug │ │ │ ├── sass.pug │ │ │ ├── skeleton.pug │ │ │ ├── videos.pug │ │ │ └── visibilidad.pug │ │ └── index.pug │ └── scss/ │ ├── ed-grid/ │ │ ├── components/ │ │ │ ├── _alignment.scss │ │ │ ├── _base.scss │ │ │ ├── _core-flexbox.scss │ │ │ ├── _core-grid.scss │ │ │ ├── _dev.scss │ │ │ ├── _layout.scss │ │ │ ├── _media-queries.scss │ │ │ ├── _prototype.scss │ │ │ ├── _video.scss │ │ │ └── _visibility.scss │ │ ├── helpers/ │ │ │ ├── _functions.scss │ │ │ └── _mixins.scss │ │ └── legacy/ │ │ ├── _ed-menu.scss │ │ ├── _grid.scss │ │ ├── _legacy.scss │ │ └── _offset.scss │ ├── ed-grid-css.scss │ ├── ed-grid.scss │ ├── styles.scss │ └── web-styles/ │ ├── base/ │ │ └── base.scss │ ├── components/ │ │ ├── _buttons.scss │ │ ├── _demo.scss │ │ ├── _main-features.scss │ │ ├── _menu-responsive.scss │ │ └── _menus.scss │ ├── config/ │ │ ├── _functions.scss │ │ └── _variables.scss │ ├── hacks/ │ │ └── _hacks.scss │ ├── layout/ │ │ └── _layout.scss │ ├── libraries/ │ │ └── _prism.scss │ └── theme/ │ ├── _banner.scss │ ├── _footer.scss │ ├── _icons.scss │ └── _typography.scss └── test.html ================================================ FILE CONTENTS ================================================ ================================================ FILE: .babelrc ================================================ { "presets": ["env"], "plugins": ["add-module-exports"] } ================================================ FILE: .editorconfig ================================================ # EditorConfig helps developers define and maintain consistent # coding styles between different editors and IDEs # http://editorconfig.org root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.md] indent_size = 4 trim_trailing_whitespace = false [node_modules/**.js] codepaint = false ================================================ FILE: .gitattributes ================================================ # Auto detect text files and perform LF normalization * text=auto # Custom for Visual Studio *.cs diff=csharp # Standard to msysgit *.doc diff=astextplain *.DOC diff=astextplain *.docx diff=astextplain *.DOCX diff=astextplain *.dot diff=astextplain *.DOT diff=astextplain *.pdf diff=astextplain *.PDF diff=astextplain *.rtf diff=astextplain *.RTF diff=astextplain ================================================ FILE: .gitignore ================================================ # Windows image file caches Thumbs.db ehthumbs.db # Folder config file Desktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msm *.msp # Windows shortcuts *.lnk # ========================= # Operating System Files # ========================= # OSX # ========================= .DS_Store .AppleDouble .LSOverride # Thumbnails ._* # Files that might appear on external disk .Spotlight-V100 .Trashes # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk prepros.cfg .idea .vscode node_modules/ npm-debug.log test/styles.css js/ed-grid.js.map js/babel/.tern-port public ================================================ FILE: .npmignore ================================================ node_modules npm-debug.log .DS_Store .idea .gitignore .gitattributes ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {description} Copyright (C) {year} {fullname} This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. {signature of Ty Coon}, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ================================================ FILE: README.md ================================================ # EDgrid ![Logo de EDgrid](https://ed-grid.com/assets/img/logo/EDgrid-logo.svg) EDgrid implementa un sistema de diseño flexible y personalizable para construir layouts y componentes responsive a la velocidad de la luz ⚡ Documentación oficial: https://ed-grid.com/documentacion/instalacion.html Colaboradores: https://ed-grid.com/creditos/ ================================================ FILE: docs/CNAME ================================================ ed-grid.com ================================================ FILE: docs/assets/img/edgrid-poster_tmp23195 ================================================ ================================================ FILE: docs/casos-de-exito/index.html ================================================ Casos de éxito
Casos de éxito

¿Tienes un sitio en producción que use EDgrid?

EDteam

Web oficial de EDteam

Plataforma dedicada a la enseñanza de programación, diseño web y todo lo referente al mundo de desarrollo web.

Las Canastas

Restaurant

Restaurant de parrilldas y pollos ubicada en Perú con diversas sucursales al rededor de todo el país.

Caexco

Tienda en línea

Empresa dedicada a la comercialización de equipo agrícola, repuestos y accesorios.

Importmercado

Venta de maquinaría metalmecánica

Empresa dedicada a la importación y comercialización de maquinaria metalmecánica y accesorios.

Capilla de Cochabamba

Centro educativo cristiano bilingüe

Unidad Educativa fundamentada en sólidos principios bíblicos con una alta calidad en la formación académica bilingüe.

Aremisse Lima

Transporte corporativo, turístico y personal

Empresa peruana dedicada al transporte de personal, transporte ejecutivo o corporativo y transporte turístico.

Wizardgva

Agencia de soluciones TI

Wizardgva nace del sueño de un joven por brindar soluciones de hardware rápidas y accesibles

Alkila

Empresa de reta de autos

Alkila es una empresa Peruana dedicada al rubro de alquiler de vehículos.

Agencia Gema

Agencia de eventos

En Gema, son especialistas en el servicio de banquetes y renta de equipo para todo tipo de eventos

Portafolio - Robert

Portafolio

Esta web es el portfolio de Robert Huamán Cáceres, estudiante en Ingeniería informática y sistemas de la Universidad Nacional Micaela Bastidas de Apurímac - Perú

Militaria

Empresa

Empresa peruana dedicada a la exportación de indumentaria y accesorios para uso militar.

¿Quieres que tu sitio sea parte de esta página?

⚡ Envíanos tu caso
================================================ FILE: docs/changelog/index.html ================================================ EDgrid | Changelog
Changelog

Lanzamientos importantes de EDgrid

  • Actual (v 3.0)
    • - CSS Grid para crear layouts
    • - Versión desarrollo para CSS grid
    • - Modo dev en hover para CSS grid y flexbox
    • - Correcciones en clases de alineación
    • - Se eliminó el componente Menu (pasó a ser legacy)
    • - Corrige error en los .ed-container con la clase .full
    • - Prototipado y prototipado avanzado
    • - Sección de componentes creados con EDgrid
    • - CDN para a versión CSS
    • - Modifica estructura de archivos del core principal
    • - Mejoras en código en general
  • v2.1.6 (Mayo 2017)
    Agrega CSS grid y resuelve varios bugs menores.

  • v2.0 (3 dic 2016)
    Cambia su enfoque al de librería (pretendía ser un framework) en versión Sass y CSS. Permite usar mixins que compilano solo el código necesario, además de activar y desactivar componentes.

  • v1.2 (26 sep 2015)
    Se cambia floats por flexbox. Se usan las clases .ed-container y .ed-item en remplazo de .grupo y .caja

  • v1.0 (19 abr 2015)
    Uso de floats, clases .grupo y .caja

================================================ FILE: docs/creditos/index.html ================================================ EDgrid | Créditos
Créditos

Gente que ha ayudado a construir la librería.

¿Quieres ser uno de ellos?

Álvaro Felipe

CEO de EDteam

Alexis Mora Angulo

UX Designer

Carlos Cuatin

Frontend Developer

Camilo Rodríguez

Web Developer

Daniel Romero

Backend Developer

Franco Correa

Web Developer

Ernesto Graterol

UI Designer

Jose Daniel Posso Garcia

Developer

Alex Andrei

Frontend Developer

Johelyn Cordovao

Web Designer

¿Quieres ser parte de esta página?

😼 Colabora en EDgrid
================================================ FILE: docs/css/styles.css ================================================ @import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&family=Raleway:wght@700;800&display=swap");*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:sans-serif}img{max-width:100%;height:auto}a{text-decoration:none}a:hover{text-decoration:underline}body.dev:before,body.desarrollo:before,body.dev .ed-container:before,body.dev .ed-grid:before,body.desarrollo .ed-container:before,body.desarrollo .ed-grid:before,body.dev .ed-item:before,body.dev .ed-grid>*:before,body.desarrollo .ed-item:before,body.desarrollo .ed-grid>*:before,body.dev-hover .ed-container:hover:before,body.dev-hover .ed-grid:hover:before,body.desarrollo-hover .ed-container:hover:before,body.desarrollo-hover .ed-grid:hover:before,body.dev-hover .ed-item:hover:before,body.dev-hover .ed-grid>*:hover:before,body.desarrollo-hover .ed-item:hover:before,body.desarrollo-hover .ed-grid>*:hover:before,.dev-demo:before,.dev-demo-hover:before,.dev-demo .ed-container:before,.dev-demo .ed-grid:before,.dev-demo .ed-item:before,.dev-demo .ed-grid>*:before,.dev-demo-hover .ed-container:hover:before,.dev-demo-hover .ed-grid:hover:before,.dev-demo-hover .ed-item:hover:before,.dev-demo-hover .ed-grid>*:hover:before{content:attr(class);font-style:italic;font-size:.75rem;font-weight:normal;z-index:1;right:0;position:absolute;display:table;width:100%;padding:0 .3125em;height:1.25rem;line-height:1.25rem}body.dev,body.desarrollo{margin:0 !important;position:relative;top:66px}body.dev:before,body.desarrollo:before{position:fixed;background:steelblue;color:#FFF;font-size:.875rem;text-align:center;line-height:36px;height:36px;top:0}body.dev:before,body.desarrollo:before{content:"ed-grid: size s, from 0 (ed-containers: red, ed-items: blue, yellow)"}@media screen and (min-width: 640px){body.dev:before,body.desarrollo:before{content:"ed-grid: size m, from 640px (ed-containers: red, ed-items: blue, yellow)"}}@media screen and (min-width: 1024px){body.dev:before,body.desarrollo:before{content:"ed-grid: size l, from 1024px (ed-containers: red, ed-items: blue, yellow)"}}@media screen and (min-width: 1024px){body.dev:before,body.desarrollo:before{content:"ed-grid: size lg, from 1024px (ed-containers: red, ed-items: blue, yellow)"}}@media screen and (min-width: 1440px){body.dev:before,body.desarrollo:before{content:"ed-grid: size xl, from 1440px (ed-containers: red, ed-items: blue, yellow)"}}body.dev .ed-container,body.dev .ed-grid,body.desarrollo .ed-container,body.desarrollo .ed-grid{padding-top:1.25rem;margin-bottom:10px;outline:1px solid tomato;position:relative}body.dev .ed-container .ed-container,body.dev .ed-container .ed-grid,body.dev .ed-grid .ed-container,body.dev .ed-grid .ed-grid,body.desarrollo .ed-container .ed-container,body.desarrollo .ed-container .ed-grid,body.desarrollo .ed-grid .ed-container,body.desarrollo .ed-grid .ed-grid{margin-bottom:0}body.dev .ed-container:before,body.dev .ed-grid:before,body.desarrollo .ed-container:before,body.desarrollo .ed-grid:before{top:0;background:rgba(255,99,71,0.3);color:tomato}body.dev .ed-item,body.dev .ed-grid>*,body.desarrollo .ed-item,body.desarrollo .ed-grid>*{position:relative;padding-bottom:1.25rem;background-color:rgba(70,130,180,0.1);outline:1px solid #4682b4;background-clip:content-box}body.dev .ed-item:before,body.dev .ed-grid>*:before,body.desarrollo .ed-item:before,body.desarrollo .ed-grid>*:before{background:rgba(70,130,180,0.8);color:#FFF;bottom:0}body.dev-hover .ed-container:hover,body.dev-hover .ed-grid:hover,body.desarrollo-hover .ed-container:hover,body.desarrollo-hover .ed-grid:hover{padding-top:1.25rem;margin-bottom:10px;outline:1px solid tomato;position:relative}body.dev-hover .ed-container:hover .ed-container,body.dev-hover .ed-container:hover .ed-grid,body.dev-hover .ed-grid:hover .ed-container,body.dev-hover .ed-grid:hover .ed-grid,body.desarrollo-hover .ed-container:hover .ed-container,body.desarrollo-hover .ed-container:hover .ed-grid,body.desarrollo-hover .ed-grid:hover .ed-container,body.desarrollo-hover .ed-grid:hover .ed-grid{margin-bottom:0}body.dev-hover .ed-container:hover:before,body.dev-hover .ed-grid:hover:before,body.desarrollo-hover .ed-container:hover:before,body.desarrollo-hover .ed-grid:hover:before{top:0;background:rgba(255,99,71,0.3);color:tomato}body.dev-hover .ed-item:hover,body.dev-hover .ed-grid>*:hover,body.desarrollo-hover .ed-item:hover,body.desarrollo-hover .ed-grid>*:hover{position:relative;padding-bottom:1.25rem;background-color:rgba(70,130,180,0.1);outline:1px solid #4682b4;background-clip:content-box}body.dev-hover .ed-item:hover:before,body.dev-hover .ed-grid>*:hover:before,body.desarrollo-hover .ed-item:hover:before,body.desarrollo-hover .ed-grid>*:hover:before{background:rgba(70,130,180,0.8);color:#FFF;bottom:0}.ed-container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:var(--max-width);margin-left:auto;margin-right:auto;width:100%}.ed-item{margin:0;padding-left:1rem;padding-right:1rem}.ed-container.full{max-width:100%}.ed-item{width:100%}.ed-item.ed-container{padding-left:0;padding-right:0}.s-5,.ed-item.s-5{width:5%}.s-10,.ed-item.s-10{width:10%}.s-15,.ed-item.s-15{width:15%}.s-20,.ed-item.s-20{width:20%}.s-25,.ed-item.s-25{width:25%}.s-30,.ed-item.s-30{width:30%}.s-35,.ed-item.s-35{width:35%}.s-40,.ed-item.s-40{width:40%}.s-45,.ed-item.s-45{width:45%}.s-50,.ed-item.s-50{width:50%}.s-55,.ed-item.s-55{width:55%}.s-60,.ed-item.s-60{width:60%}.s-65,.ed-item.s-65{width:65%}.s-70,.ed-item.s-70{width:70%}.s-75,.ed-item.s-75{width:75%}.s-80,.ed-item.s-80{width:80%}.s-85,.ed-item.s-85{width:85%}.s-90,.ed-item.s-90{width:90%}.s-95,.ed-item.s-95{width:95%}.s-100,.ed-item.s-100{width:100%}.s-1-3,.ed-item.s-1-3{width:33.33333%}.s-2-3,.ed-item.s-2-3{width:66.66667%}.s-3-3,.ed-item.s-3-3{width:100%}.s-1-6,.ed-item.s-1-6{width:16.66667%}.s-2-6,.ed-item.s-2-6{width:33.33333%}.s-3-6,.ed-item.s-3-6{width:50%}.s-4-6,.ed-item.s-4-6{width:66.66667%}.s-5-6,.ed-item.s-5-6{width:83.33333%}.s-6-6,.ed-item.s-6-6{width:100%}@media screen and (min-width: 640px){.m-5,.ed-item.m-5{width:5%}.m-10,.ed-item.m-10{width:10%}.m-15,.ed-item.m-15{width:15%}.m-20,.ed-item.m-20{width:20%}.m-25,.ed-item.m-25{width:25%}.m-30,.ed-item.m-30{width:30%}.m-35,.ed-item.m-35{width:35%}.m-40,.ed-item.m-40{width:40%}.m-45,.ed-item.m-45{width:45%}.m-50,.ed-item.m-50{width:50%}.m-55,.ed-item.m-55{width:55%}.m-60,.ed-item.m-60{width:60%}.m-65,.ed-item.m-65{width:65%}.m-70,.ed-item.m-70{width:70%}.m-75,.ed-item.m-75{width:75%}.m-80,.ed-item.m-80{width:80%}.m-85,.ed-item.m-85{width:85%}.m-90,.ed-item.m-90{width:90%}.m-95,.ed-item.m-95{width:95%}.m-100,.ed-item.m-100{width:100%}.m-1-3,.ed-item.m-1-3{width:33.33333%}.m-2-3,.ed-item.m-2-3{width:66.66667%}.m-3-3,.ed-item.m-3-3{width:100%}.m-1-6,.ed-item.m-1-6{width:16.66667%}.m-2-6,.ed-item.m-2-6{width:33.33333%}.m-3-6,.ed-item.m-3-6{width:50%}.m-4-6,.ed-item.m-4-6{width:66.66667%}.m-5-6,.ed-item.m-5-6{width:83.33333%}.m-6-6,.ed-item.m-6-6{width:100%}}@media screen and (min-width: 1024px){.l-5,.ed-item.l-5{width:5%}.l-10,.ed-item.l-10{width:10%}.l-15,.ed-item.l-15{width:15%}.l-20,.ed-item.l-20{width:20%}.l-25,.ed-item.l-25{width:25%}.l-30,.ed-item.l-30{width:30%}.l-35,.ed-item.l-35{width:35%}.l-40,.ed-item.l-40{width:40%}.l-45,.ed-item.l-45{width:45%}.l-50,.ed-item.l-50{width:50%}.l-55,.ed-item.l-55{width:55%}.l-60,.ed-item.l-60{width:60%}.l-65,.ed-item.l-65{width:65%}.l-70,.ed-item.l-70{width:70%}.l-75,.ed-item.l-75{width:75%}.l-80,.ed-item.l-80{width:80%}.l-85,.ed-item.l-85{width:85%}.l-90,.ed-item.l-90{width:90%}.l-95,.ed-item.l-95{width:95%}.l-100,.ed-item.l-100{width:100%}.l-1-3,.ed-item.l-1-3{width:33.33333%}.l-2-3,.ed-item.l-2-3{width:66.66667%}.l-3-3,.ed-item.l-3-3{width:100%}.l-1-6,.ed-item.l-1-6{width:16.66667%}.l-2-6,.ed-item.l-2-6{width:33.33333%}.l-3-6,.ed-item.l-3-6{width:50%}.l-4-6,.ed-item.l-4-6{width:66.66667%}.l-5-6,.ed-item.l-5-6{width:83.33333%}.l-6-6,.ed-item.l-6-6{width:100%}}@media screen and (min-width: 1024px){.lg-5,.ed-item.lg-5{width:5%}.lg-10,.ed-item.lg-10{width:10%}.lg-15,.ed-item.lg-15{width:15%}.lg-20,.ed-item.lg-20{width:20%}.lg-25,.ed-item.lg-25{width:25%}.lg-30,.ed-item.lg-30{width:30%}.lg-35,.ed-item.lg-35{width:35%}.lg-40,.ed-item.lg-40{width:40%}.lg-45,.ed-item.lg-45{width:45%}.lg-50,.ed-item.lg-50{width:50%}.lg-55,.ed-item.lg-55{width:55%}.lg-60,.ed-item.lg-60{width:60%}.lg-65,.ed-item.lg-65{width:65%}.lg-70,.ed-item.lg-70{width:70%}.lg-75,.ed-item.lg-75{width:75%}.lg-80,.ed-item.lg-80{width:80%}.lg-85,.ed-item.lg-85{width:85%}.lg-90,.ed-item.lg-90{width:90%}.lg-95,.ed-item.lg-95{width:95%}.lg-100,.ed-item.lg-100{width:100%}.lg-1-3,.ed-item.lg-1-3{width:33.33333%}.lg-2-3,.ed-item.lg-2-3{width:66.66667%}.lg-3-3,.ed-item.lg-3-3{width:100%}.lg-1-6,.ed-item.lg-1-6{width:16.66667%}.lg-2-6,.ed-item.lg-2-6{width:33.33333%}.lg-3-6,.ed-item.lg-3-6{width:50%}.lg-4-6,.ed-item.lg-4-6{width:66.66667%}.lg-5-6,.ed-item.lg-5-6{width:83.33333%}.lg-6-6,.ed-item.lg-6-6{width:100%}}@media screen and (min-width: 1440px){.xl-5,.ed-item.xl-5{width:5%}.xl-10,.ed-item.xl-10{width:10%}.xl-15,.ed-item.xl-15{width:15%}.xl-20,.ed-item.xl-20{width:20%}.xl-25,.ed-item.xl-25{width:25%}.xl-30,.ed-item.xl-30{width:30%}.xl-35,.ed-item.xl-35{width:35%}.xl-40,.ed-item.xl-40{width:40%}.xl-45,.ed-item.xl-45{width:45%}.xl-50,.ed-item.xl-50{width:50%}.xl-55,.ed-item.xl-55{width:55%}.xl-60,.ed-item.xl-60{width:60%}.xl-65,.ed-item.xl-65{width:65%}.xl-70,.ed-item.xl-70{width:70%}.xl-75,.ed-item.xl-75{width:75%}.xl-80,.ed-item.xl-80{width:80%}.xl-85,.ed-item.xl-85{width:85%}.xl-90,.ed-item.xl-90{width:90%}.xl-95,.ed-item.xl-95{width:95%}.xl-100,.ed-item.xl-100{width:100%}.xl-1-3,.ed-item.xl-1-3{width:33.33333%}.xl-2-3,.ed-item.xl-2-3{width:66.66667%}.xl-3-3,.ed-item.xl-3-3{width:100%}.xl-1-6,.ed-item.xl-1-6{width:16.66667%}.xl-2-6,.ed-item.xl-2-6{width:33.33333%}.xl-3-6,.ed-item.xl-3-6{width:50%}.xl-4-6,.ed-item.xl-4-6{width:66.66667%}.xl-5-6,.ed-item.xl-5-6{width:83.33333%}.xl-6-6,.ed-item.xl-6-6{width:100%}}.ed-grid.s-gap-0{--gap:0rem}@media screen and (min-width: 640px){.ed-grid.m-gap-0{--gap:0rem}}@media screen and (min-width: 1024px){.ed-grid.l-gap-0{--gap:0rem}}@media screen and (min-width: 1024px){.ed-grid.lg-gap-0{--gap:0rem}}@media screen and (min-width: 1440px){.ed-grid.xl-gap-0{--gap:0rem}}.ed-grid.s-gap-1{--gap:.5rem}@media screen and (min-width: 640px){.ed-grid.m-gap-1{--gap:.5rem}}@media screen and (min-width: 1024px){.ed-grid.l-gap-1{--gap:.5rem}}@media screen and (min-width: 1024px){.ed-grid.lg-gap-1{--gap:.5rem}}@media screen and (min-width: 1440px){.ed-grid.xl-gap-1{--gap:.5rem}}.ed-grid.s-gap-2{--gap:1rem}@media screen and (min-width: 640px){.ed-grid.m-gap-2{--gap:1rem}}@media screen and (min-width: 1024px){.ed-grid.l-gap-2{--gap:1rem}}@media screen and (min-width: 1024px){.ed-grid.lg-gap-2{--gap:1rem}}@media screen and (min-width: 1440px){.ed-grid.xl-gap-2{--gap:1rem}}.ed-grid.s-gap-3{--gap:1.5rem}@media screen and (min-width: 640px){.ed-grid.m-gap-3{--gap:1.5rem}}@media screen and (min-width: 1024px){.ed-grid.l-gap-3{--gap:1.5rem}}@media screen and (min-width: 1024px){.ed-grid.lg-gap-3{--gap:1.5rem}}@media screen and (min-width: 1440px){.ed-grid.xl-gap-3{--gap:1.5rem}}.ed-grid.s-gap-4{--gap:2rem}@media screen and (min-width: 640px){.ed-grid.m-gap-4{--gap:2rem}}@media screen and (min-width: 1024px){.ed-grid.l-gap-4{--gap:2rem}}@media screen and (min-width: 1024px){.ed-grid.lg-gap-4{--gap:2rem}}@media screen and (min-width: 1440px){.ed-grid.xl-gap-4{--gap:2rem}}.ed-grid{display:-ms-grid;display:grid;-ms-grid-columns:100%;grid-template-columns:100%;column-gap:var(--gap);width:calc(100% - 2rem);margin-left:1rem;margin-right:1rem;max-width:var(--max-width)}.ed-grid.gap-0{--gap: 0rem}.ed-grid.gap-1{--gap: .5rem}.ed-grid.gap-2{--gap: 1rem}.ed-grid.gap-3{--gap: 1.5rem}.ed-grid.gap-4{--gap: 2rem}@media screen and (min-width: 1200px){.ed-grid{width:100%;margin-left:auto;margin-right:auto}}.ed-grid.row-gap,.ed-grid.rows-gap{row-gap:var(--gap)}.ed-grid .ed-grid,.ed-grid.full{width:100%;max-width:100%;margin-right:0;margin-left:0}.ed-grid .ed-grid.s-5,.ed-grid .ed-grid .ed-grid.s-5{width:5%}.ed-grid .ed-grid.s-10,.ed-grid .ed-grid .ed-grid.s-10{width:10%}.ed-grid .ed-grid.s-15,.ed-grid .ed-grid .ed-grid.s-15{width:15%}.ed-grid .ed-grid.s-20,.ed-grid .ed-grid .ed-grid.s-20{width:20%}.ed-grid .ed-grid.s-25,.ed-grid .ed-grid .ed-grid.s-25{width:25%}.ed-grid .ed-grid.s-30,.ed-grid .ed-grid .ed-grid.s-30{width:30%}.ed-grid .ed-grid.s-35,.ed-grid .ed-grid .ed-grid.s-35{width:35%}.ed-grid .ed-grid.s-40,.ed-grid .ed-grid .ed-grid.s-40{width:40%}.ed-grid .ed-grid.s-45,.ed-grid .ed-grid .ed-grid.s-45{width:45%}.ed-grid .ed-grid.s-50,.ed-grid .ed-grid .ed-grid.s-50{width:50%}.ed-grid .ed-grid.s-55,.ed-grid .ed-grid .ed-grid.s-55{width:55%}.ed-grid .ed-grid.s-60,.ed-grid .ed-grid .ed-grid.s-60{width:60%}.ed-grid .ed-grid.s-65,.ed-grid .ed-grid .ed-grid.s-65{width:65%}.ed-grid .ed-grid.s-70,.ed-grid .ed-grid .ed-grid.s-70{width:70%}.ed-grid .ed-grid.s-75,.ed-grid .ed-grid .ed-grid.s-75{width:75%}.ed-grid .ed-grid.s-80,.ed-grid .ed-grid .ed-grid.s-80{width:80%}.ed-grid .ed-grid.s-85,.ed-grid .ed-grid .ed-grid.s-85{width:85%}.ed-grid .ed-grid.s-90,.ed-grid .ed-grid .ed-grid.s-90{width:90%}.ed-grid .ed-grid.s-95,.ed-grid .ed-grid .ed-grid.s-95{width:95%}.ed-grid .ed-grid.s-100,.ed-grid .ed-grid .ed-grid.s-100{width:100%}.ed-grid .ed-grid.s-to-center,.ed-grid .ed-grid .ed-grid.s-to-center{margin-left:auto;margin-right:auto}.ed-grid .ed-grid.s-to-right,.ed-grid .ed-grid .ed-grid.s-to-right{margin-left:auto;margin-right:0}.ed-grid .ed-grid.s-to-left,.ed-grid .ed-grid .ed-grid.s-to-left{margin-left:0;margin-right:auto}@media screen and (min-width: 640px){.ed-grid .ed-grid.m-5,.ed-grid .ed-grid .ed-grid.m-5{width:5%}.ed-grid .ed-grid.m-10,.ed-grid .ed-grid .ed-grid.m-10{width:10%}.ed-grid .ed-grid.m-15,.ed-grid .ed-grid .ed-grid.m-15{width:15%}.ed-grid .ed-grid.m-20,.ed-grid .ed-grid .ed-grid.m-20{width:20%}.ed-grid .ed-grid.m-25,.ed-grid .ed-grid .ed-grid.m-25{width:25%}.ed-grid .ed-grid.m-30,.ed-grid .ed-grid .ed-grid.m-30{width:30%}.ed-grid .ed-grid.m-35,.ed-grid .ed-grid .ed-grid.m-35{width:35%}.ed-grid .ed-grid.m-40,.ed-grid .ed-grid .ed-grid.m-40{width:40%}.ed-grid .ed-grid.m-45,.ed-grid .ed-grid .ed-grid.m-45{width:45%}.ed-grid .ed-grid.m-50,.ed-grid .ed-grid .ed-grid.m-50{width:50%}.ed-grid .ed-grid.m-55,.ed-grid .ed-grid .ed-grid.m-55{width:55%}.ed-grid .ed-grid.m-60,.ed-grid .ed-grid .ed-grid.m-60{width:60%}.ed-grid .ed-grid.m-65,.ed-grid .ed-grid .ed-grid.m-65{width:65%}.ed-grid .ed-grid.m-70,.ed-grid .ed-grid .ed-grid.m-70{width:70%}.ed-grid .ed-grid.m-75,.ed-grid .ed-grid .ed-grid.m-75{width:75%}.ed-grid .ed-grid.m-80,.ed-grid .ed-grid .ed-grid.m-80{width:80%}.ed-grid .ed-grid.m-85,.ed-grid .ed-grid .ed-grid.m-85{width:85%}.ed-grid .ed-grid.m-90,.ed-grid .ed-grid .ed-grid.m-90{width:90%}.ed-grid .ed-grid.m-95,.ed-grid .ed-grid .ed-grid.m-95{width:95%}.ed-grid .ed-grid.m-100,.ed-grid .ed-grid .ed-grid.m-100{width:100%}.ed-grid .ed-grid.m-to-center,.ed-grid .ed-grid .ed-grid.m-to-center{margin-left:auto;margin-right:auto}.ed-grid .ed-grid.m-to-right,.ed-grid .ed-grid .ed-grid.m-to-right{margin-left:auto;margin-right:0}.ed-grid .ed-grid.m-to-left,.ed-grid .ed-grid .ed-grid.m-to-left{margin-left:0;margin-right:auto}}@media screen and (min-width: 1024px){.ed-grid .ed-grid.l-5,.ed-grid .ed-grid .ed-grid.l-5{width:5%}.ed-grid .ed-grid.l-10,.ed-grid .ed-grid .ed-grid.l-10{width:10%}.ed-grid .ed-grid.l-15,.ed-grid .ed-grid .ed-grid.l-15{width:15%}.ed-grid .ed-grid.l-20,.ed-grid .ed-grid .ed-grid.l-20{width:20%}.ed-grid .ed-grid.l-25,.ed-grid .ed-grid .ed-grid.l-25{width:25%}.ed-grid .ed-grid.l-30,.ed-grid .ed-grid .ed-grid.l-30{width:30%}.ed-grid .ed-grid.l-35,.ed-grid .ed-grid .ed-grid.l-35{width:35%}.ed-grid .ed-grid.l-40,.ed-grid .ed-grid .ed-grid.l-40{width:40%}.ed-grid .ed-grid.l-45,.ed-grid .ed-grid .ed-grid.l-45{width:45%}.ed-grid .ed-grid.l-50,.ed-grid .ed-grid .ed-grid.l-50{width:50%}.ed-grid .ed-grid.l-55,.ed-grid .ed-grid .ed-grid.l-55{width:55%}.ed-grid .ed-grid.l-60,.ed-grid .ed-grid .ed-grid.l-60{width:60%}.ed-grid .ed-grid.l-65,.ed-grid .ed-grid .ed-grid.l-65{width:65%}.ed-grid .ed-grid.l-70,.ed-grid .ed-grid .ed-grid.l-70{width:70%}.ed-grid .ed-grid.l-75,.ed-grid .ed-grid .ed-grid.l-75{width:75%}.ed-grid .ed-grid.l-80,.ed-grid .ed-grid .ed-grid.l-80{width:80%}.ed-grid .ed-grid.l-85,.ed-grid .ed-grid .ed-grid.l-85{width:85%}.ed-grid .ed-grid.l-90,.ed-grid .ed-grid .ed-grid.l-90{width:90%}.ed-grid .ed-grid.l-95,.ed-grid .ed-grid .ed-grid.l-95{width:95%}.ed-grid .ed-grid.l-100,.ed-grid .ed-grid .ed-grid.l-100{width:100%}.ed-grid .ed-grid.l-to-center,.ed-grid .ed-grid .ed-grid.l-to-center{margin-left:auto;margin-right:auto}.ed-grid .ed-grid.l-to-right,.ed-grid .ed-grid .ed-grid.l-to-right{margin-left:auto;margin-right:0}.ed-grid .ed-grid.l-to-left,.ed-grid .ed-grid .ed-grid.l-to-left{margin-left:0;margin-right:auto}}@media screen and (min-width: 1024px){.ed-grid .ed-grid.lg-5,.ed-grid .ed-grid .ed-grid.lg-5{width:5%}.ed-grid .ed-grid.lg-10,.ed-grid .ed-grid .ed-grid.lg-10{width:10%}.ed-grid .ed-grid.lg-15,.ed-grid .ed-grid .ed-grid.lg-15{width:15%}.ed-grid .ed-grid.lg-20,.ed-grid .ed-grid .ed-grid.lg-20{width:20%}.ed-grid .ed-grid.lg-25,.ed-grid .ed-grid .ed-grid.lg-25{width:25%}.ed-grid .ed-grid.lg-30,.ed-grid .ed-grid .ed-grid.lg-30{width:30%}.ed-grid .ed-grid.lg-35,.ed-grid .ed-grid .ed-grid.lg-35{width:35%}.ed-grid .ed-grid.lg-40,.ed-grid .ed-grid .ed-grid.lg-40{width:40%}.ed-grid .ed-grid.lg-45,.ed-grid .ed-grid .ed-grid.lg-45{width:45%}.ed-grid .ed-grid.lg-50,.ed-grid .ed-grid .ed-grid.lg-50{width:50%}.ed-grid .ed-grid.lg-55,.ed-grid .ed-grid .ed-grid.lg-55{width:55%}.ed-grid .ed-grid.lg-60,.ed-grid .ed-grid .ed-grid.lg-60{width:60%}.ed-grid .ed-grid.lg-65,.ed-grid .ed-grid .ed-grid.lg-65{width:65%}.ed-grid .ed-grid.lg-70,.ed-grid .ed-grid .ed-grid.lg-70{width:70%}.ed-grid .ed-grid.lg-75,.ed-grid .ed-grid .ed-grid.lg-75{width:75%}.ed-grid .ed-grid.lg-80,.ed-grid .ed-grid .ed-grid.lg-80{width:80%}.ed-grid .ed-grid.lg-85,.ed-grid .ed-grid .ed-grid.lg-85{width:85%}.ed-grid .ed-grid.lg-90,.ed-grid .ed-grid .ed-grid.lg-90{width:90%}.ed-grid .ed-grid.lg-95,.ed-grid .ed-grid .ed-grid.lg-95{width:95%}.ed-grid .ed-grid.lg-100,.ed-grid .ed-grid .ed-grid.lg-100{width:100%}.ed-grid .ed-grid.lg-to-center,.ed-grid .ed-grid .ed-grid.lg-to-center{margin-left:auto;margin-right:auto}.ed-grid .ed-grid.lg-to-right,.ed-grid .ed-grid .ed-grid.lg-to-right{margin-left:auto;margin-right:0}.ed-grid .ed-grid.lg-to-left,.ed-grid .ed-grid .ed-grid.lg-to-left{margin-left:0;margin-right:auto}}@media screen and (min-width: 1440px){.ed-grid .ed-grid.xl-5,.ed-grid .ed-grid .ed-grid.xl-5{width:5%}.ed-grid .ed-grid.xl-10,.ed-grid .ed-grid .ed-grid.xl-10{width:10%}.ed-grid .ed-grid.xl-15,.ed-grid .ed-grid .ed-grid.xl-15{width:15%}.ed-grid .ed-grid.xl-20,.ed-grid .ed-grid .ed-grid.xl-20{width:20%}.ed-grid .ed-grid.xl-25,.ed-grid .ed-grid .ed-grid.xl-25{width:25%}.ed-grid .ed-grid.xl-30,.ed-grid .ed-grid .ed-grid.xl-30{width:30%}.ed-grid .ed-grid.xl-35,.ed-grid .ed-grid .ed-grid.xl-35{width:35%}.ed-grid .ed-grid.xl-40,.ed-grid .ed-grid .ed-grid.xl-40{width:40%}.ed-grid .ed-grid.xl-45,.ed-grid .ed-grid .ed-grid.xl-45{width:45%}.ed-grid .ed-grid.xl-50,.ed-grid .ed-grid .ed-grid.xl-50{width:50%}.ed-grid .ed-grid.xl-55,.ed-grid .ed-grid .ed-grid.xl-55{width:55%}.ed-grid .ed-grid.xl-60,.ed-grid .ed-grid .ed-grid.xl-60{width:60%}.ed-grid .ed-grid.xl-65,.ed-grid .ed-grid .ed-grid.xl-65{width:65%}.ed-grid .ed-grid.xl-70,.ed-grid .ed-grid .ed-grid.xl-70{width:70%}.ed-grid .ed-grid.xl-75,.ed-grid .ed-grid .ed-grid.xl-75{width:75%}.ed-grid .ed-grid.xl-80,.ed-grid .ed-grid .ed-grid.xl-80{width:80%}.ed-grid .ed-grid.xl-85,.ed-grid .ed-grid .ed-grid.xl-85{width:85%}.ed-grid .ed-grid.xl-90,.ed-grid .ed-grid .ed-grid.xl-90{width:90%}.ed-grid .ed-grid.xl-95,.ed-grid .ed-grid .ed-grid.xl-95{width:95%}.ed-grid .ed-grid.xl-100,.ed-grid .ed-grid .ed-grid.xl-100{width:100%}.ed-grid .ed-grid.xl-to-center,.ed-grid .ed-grid .ed-grid.xl-to-center{margin-left:auto;margin-right:auto}.ed-grid .ed-grid.xl-to-right,.ed-grid .ed-grid .ed-grid.xl-to-right{margin-left:auto;margin-right:0}.ed-grid .ed-grid.xl-to-left,.ed-grid .ed-grid .ed-grid.xl-to-left{margin-left:0;margin-right:auto}}.ed-grid.cols-s-1,.ed-grid.s-grid-1{-ms-grid-columns:100%;grid-template-columns:100%}.ed-grid>.span-s-1,.ed-grid>.s-cols-1{-ms-grid-column-span:1;grid-column-end:span 1}.ed-grid>.s-rows-1{-ms-grid-row-span:1;grid-row-end:span 1}.ed-grid>.s-x-1{-ms-grid-column:1;grid-column-start:1}.ed-grid>.s-y-1{-ms-grid-row:1;grid-row-start:1}.ed-grid.cols-s-2,.ed-grid.s-grid-2{-ms-grid-columns:(calc((100% - var(--gap) * 1) / 2))[2];grid-template-columns:repeat(2, calc((100% - var(--gap) * 1) / 2))}.ed-grid>.span-s-2,.ed-grid>.s-cols-2{-ms-grid-column-span:2;grid-column-end:span 2}.ed-grid>.s-rows-2{-ms-grid-row-span:2;grid-row-end:span 2}.ed-grid>.s-x-2{-ms-grid-column:2;grid-column-start:2}.ed-grid>.s-y-2{-ms-grid-row:2;grid-row-start:2}.ed-grid.cols-s-3,.ed-grid.s-grid-3{-ms-grid-columns:(calc((100% - var(--gap) * 2) / 3))[3];grid-template-columns:repeat(3, calc((100% - var(--gap) * 2) / 3))}.ed-grid>.span-s-3,.ed-grid>.s-cols-3{-ms-grid-column-span:3;grid-column-end:span 3}.ed-grid>.s-rows-3{-ms-grid-row-span:3;grid-row-end:span 3}.ed-grid>.s-x-3{-ms-grid-column:3;grid-column-start:3}.ed-grid>.s-y-3{-ms-grid-row:3;grid-row-start:3}.ed-grid.cols-s-4,.ed-grid.s-grid-4{-ms-grid-columns:(calc((100% - var(--gap) * 3) / 4))[4];grid-template-columns:repeat(4, calc((100% - var(--gap) * 3) / 4))}.ed-grid>.span-s-4,.ed-grid>.s-cols-4{-ms-grid-column-span:4;grid-column-end:span 4}.ed-grid>.s-rows-4{-ms-grid-row-span:4;grid-row-end:span 4}.ed-grid>.s-x-4{-ms-grid-column:4;grid-column-start:4}.ed-grid>.s-y-4{-ms-grid-row:4;grid-row-start:4}.ed-grid.cols-s-5,.ed-grid.s-grid-5{-ms-grid-columns:(calc((100% - var(--gap) * 4) / 5))[5];grid-template-columns:repeat(5, calc((100% - var(--gap) * 4) / 5))}.ed-grid>.span-s-5,.ed-grid>.s-cols-5{-ms-grid-column-span:5;grid-column-end:span 5}.ed-grid>.s-rows-5{-ms-grid-row-span:5;grid-row-end:span 5}.ed-grid>.s-x-5{-ms-grid-column:5;grid-column-start:5}.ed-grid>.s-y-5{-ms-grid-row:5;grid-row-start:5}.ed-grid.cols-s-6,.ed-grid.s-grid-6{-ms-grid-columns:(calc((100% - var(--gap) * 5) / 6))[6];grid-template-columns:repeat(6, calc((100% - var(--gap) * 5) / 6))}.ed-grid>.span-s-6,.ed-grid>.s-cols-6{-ms-grid-column-span:6;grid-column-end:span 6}.ed-grid>.s-rows-6{-ms-grid-row-span:6;grid-row-end:span 6}.ed-grid>.s-x-6{-ms-grid-column:6;grid-column-start:6}.ed-grid>.s-y-6{-ms-grid-row:6;grid-row-start:6}.ed-grid.cols-s-7,.ed-grid.s-grid-7{-ms-grid-columns:(calc((100% - var(--gap) * 6) / 7))[7];grid-template-columns:repeat(7, calc((100% - var(--gap) * 6) / 7))}.ed-grid>.span-s-7,.ed-grid>.s-cols-7{-ms-grid-column-span:7;grid-column-end:span 7}.ed-grid>.s-rows-7{-ms-grid-row-span:7;grid-row-end:span 7}.ed-grid>.s-x-7{-ms-grid-column:7;grid-column-start:7}.ed-grid>.s-y-7{-ms-grid-row:7;grid-row-start:7}.ed-grid.cols-s-8,.ed-grid.s-grid-8{-ms-grid-columns:(calc((100% - var(--gap) * 7) / 8))[8];grid-template-columns:repeat(8, calc((100% - var(--gap) * 7) / 8))}.ed-grid>.span-s-8,.ed-grid>.s-cols-8{-ms-grid-column-span:8;grid-column-end:span 8}.ed-grid>.s-rows-8{-ms-grid-row-span:8;grid-row-end:span 8}.ed-grid>.s-x-8{-ms-grid-column:8;grid-column-start:8}.ed-grid>.s-y-8{-ms-grid-row:8;grid-row-start:8}.ed-grid.cols-s-9,.ed-grid.s-grid-9{-ms-grid-columns:(calc((100% - var(--gap) * 8) / 9))[9];grid-template-columns:repeat(9, calc((100% - var(--gap) * 8) / 9))}.ed-grid>.span-s-9,.ed-grid>.s-cols-9{-ms-grid-column-span:9;grid-column-end:span 9}.ed-grid>.s-rows-9{-ms-grid-row-span:9;grid-row-end:span 9}.ed-grid>.s-x-9{-ms-grid-column:9;grid-column-start:9}.ed-grid>.s-y-9{-ms-grid-row:9;grid-row-start:9}.ed-grid.cols-s-10,.ed-grid.s-grid-10{-ms-grid-columns:(calc((100% - var(--gap) * 9) / 10))[10];grid-template-columns:repeat(10, calc((100% - var(--gap) * 9) / 10))}.ed-grid>.span-s-10,.ed-grid>.s-cols-10{-ms-grid-column-span:10;grid-column-end:span 10}.ed-grid>.s-rows-10{-ms-grid-row-span:10;grid-row-end:span 10}.ed-grid>.s-x-10{-ms-grid-column:10;grid-column-start:10}.ed-grid>.s-y-10{-ms-grid-row:10;grid-row-start:10}.ed-grid.cols-s-11,.ed-grid.s-grid-11{-ms-grid-columns:(calc((100% - var(--gap) * 10) / 11))[11];grid-template-columns:repeat(11, calc((100% - var(--gap) * 10) / 11))}.ed-grid>.span-s-11,.ed-grid>.s-cols-11{-ms-grid-column-span:11;grid-column-end:span 11}.ed-grid>.s-rows-11{-ms-grid-row-span:11;grid-row-end:span 11}.ed-grid>.s-x-11{-ms-grid-column:11;grid-column-start:11}.ed-grid>.s-y-11{-ms-grid-row:11;grid-row-start:11}.ed-grid.cols-s-12,.ed-grid.s-grid-12{-ms-grid-columns:(calc((100% - var(--gap) * 11) / 12))[12];grid-template-columns:repeat(12, calc((100% - var(--gap) * 11) / 12))}.ed-grid>.span-s-12,.ed-grid>.s-cols-12{-ms-grid-column-span:12;grid-column-end:span 12}.ed-grid>.s-rows-12{-ms-grid-row-span:12;grid-row-end:span 12}.ed-grid>.s-x-12{-ms-grid-column:12;grid-column-start:12}.ed-grid>.s-y-12{-ms-grid-row:12;grid-row-start:12}@media screen and (min-width: 640px){.ed-grid.cols-m-1,.ed-grid.m-grid-1{-ms-grid-columns:100%;grid-template-columns:100%}.ed-grid>.span-m-1,.ed-grid>.m-cols-1{-ms-grid-column-span:1;grid-column-end:span 1}.ed-grid>.m-rows-1{-ms-grid-row-span:1;grid-row-end:span 1}.ed-grid>.m-x-1{-ms-grid-column:1;grid-column-start:1}.ed-grid>.m-y-1{-ms-grid-row:1;grid-row-start:1}.ed-grid.cols-m-2,.ed-grid.m-grid-2{-ms-grid-columns:(calc((100% - var(--gap) * 1) / 2))[2];grid-template-columns:repeat(2, calc((100% - var(--gap) * 1) / 2))}.ed-grid>.span-m-2,.ed-grid>.m-cols-2{-ms-grid-column-span:2;grid-column-end:span 2}.ed-grid>.m-rows-2{-ms-grid-row-span:2;grid-row-end:span 2}.ed-grid>.m-x-2{-ms-grid-column:2;grid-column-start:2}.ed-grid>.m-y-2{-ms-grid-row:2;grid-row-start:2}.ed-grid.cols-m-3,.ed-grid.m-grid-3{-ms-grid-columns:(calc((100% - var(--gap) * 2) / 3))[3];grid-template-columns:repeat(3, calc((100% - var(--gap) * 2) / 3))}.ed-grid>.span-m-3,.ed-grid>.m-cols-3{-ms-grid-column-span:3;grid-column-end:span 3}.ed-grid>.m-rows-3{-ms-grid-row-span:3;grid-row-end:span 3}.ed-grid>.m-x-3{-ms-grid-column:3;grid-column-start:3}.ed-grid>.m-y-3{-ms-grid-row:3;grid-row-start:3}.ed-grid.cols-m-4,.ed-grid.m-grid-4{-ms-grid-columns:(calc((100% - var(--gap) * 3) / 4))[4];grid-template-columns:repeat(4, calc((100% - var(--gap) * 3) / 4))}.ed-grid>.span-m-4,.ed-grid>.m-cols-4{-ms-grid-column-span:4;grid-column-end:span 4}.ed-grid>.m-rows-4{-ms-grid-row-span:4;grid-row-end:span 4}.ed-grid>.m-x-4{-ms-grid-column:4;grid-column-start:4}.ed-grid>.m-y-4{-ms-grid-row:4;grid-row-start:4}.ed-grid.cols-m-5,.ed-grid.m-grid-5{-ms-grid-columns:(calc((100% - var(--gap) * 4) / 5))[5];grid-template-columns:repeat(5, calc((100% - var(--gap) * 4) / 5))}.ed-grid>.span-m-5,.ed-grid>.m-cols-5{-ms-grid-column-span:5;grid-column-end:span 5}.ed-grid>.m-rows-5{-ms-grid-row-span:5;grid-row-end:span 5}.ed-grid>.m-x-5{-ms-grid-column:5;grid-column-start:5}.ed-grid>.m-y-5{-ms-grid-row:5;grid-row-start:5}.ed-grid.cols-m-6,.ed-grid.m-grid-6{-ms-grid-columns:(calc((100% - var(--gap) * 5) / 6))[6];grid-template-columns:repeat(6, calc((100% - var(--gap) * 5) / 6))}.ed-grid>.span-m-6,.ed-grid>.m-cols-6{-ms-grid-column-span:6;grid-column-end:span 6}.ed-grid>.m-rows-6{-ms-grid-row-span:6;grid-row-end:span 6}.ed-grid>.m-x-6{-ms-grid-column:6;grid-column-start:6}.ed-grid>.m-y-6{-ms-grid-row:6;grid-row-start:6}.ed-grid.cols-m-7,.ed-grid.m-grid-7{-ms-grid-columns:(calc((100% - var(--gap) * 6) / 7))[7];grid-template-columns:repeat(7, calc((100% - var(--gap) * 6) / 7))}.ed-grid>.span-m-7,.ed-grid>.m-cols-7{-ms-grid-column-span:7;grid-column-end:span 7}.ed-grid>.m-rows-7{-ms-grid-row-span:7;grid-row-end:span 7}.ed-grid>.m-x-7{-ms-grid-column:7;grid-column-start:7}.ed-grid>.m-y-7{-ms-grid-row:7;grid-row-start:7}.ed-grid.cols-m-8,.ed-grid.m-grid-8{-ms-grid-columns:(calc((100% - var(--gap) * 7) / 8))[8];grid-template-columns:repeat(8, calc((100% - var(--gap) * 7) / 8))}.ed-grid>.span-m-8,.ed-grid>.m-cols-8{-ms-grid-column-span:8;grid-column-end:span 8}.ed-grid>.m-rows-8{-ms-grid-row-span:8;grid-row-end:span 8}.ed-grid>.m-x-8{-ms-grid-column:8;grid-column-start:8}.ed-grid>.m-y-8{-ms-grid-row:8;grid-row-start:8}.ed-grid.cols-m-9,.ed-grid.m-grid-9{-ms-grid-columns:(calc((100% - var(--gap) * 8) / 9))[9];grid-template-columns:repeat(9, calc((100% - var(--gap) * 8) / 9))}.ed-grid>.span-m-9,.ed-grid>.m-cols-9{-ms-grid-column-span:9;grid-column-end:span 9}.ed-grid>.m-rows-9{-ms-grid-row-span:9;grid-row-end:span 9}.ed-grid>.m-x-9{-ms-grid-column:9;grid-column-start:9}.ed-grid>.m-y-9{-ms-grid-row:9;grid-row-start:9}.ed-grid.cols-m-10,.ed-grid.m-grid-10{-ms-grid-columns:(calc((100% - var(--gap) * 9) / 10))[10];grid-template-columns:repeat(10, calc((100% - var(--gap) * 9) / 10))}.ed-grid>.span-m-10,.ed-grid>.m-cols-10{-ms-grid-column-span:10;grid-column-end:span 10}.ed-grid>.m-rows-10{-ms-grid-row-span:10;grid-row-end:span 10}.ed-grid>.m-x-10{-ms-grid-column:10;grid-column-start:10}.ed-grid>.m-y-10{-ms-grid-row:10;grid-row-start:10}.ed-grid.cols-m-11,.ed-grid.m-grid-11{-ms-grid-columns:(calc((100% - var(--gap) * 10) / 11))[11];grid-template-columns:repeat(11, calc((100% - var(--gap) * 10) / 11))}.ed-grid>.span-m-11,.ed-grid>.m-cols-11{-ms-grid-column-span:11;grid-column-end:span 11}.ed-grid>.m-rows-11{-ms-grid-row-span:11;grid-row-end:span 11}.ed-grid>.m-x-11{-ms-grid-column:11;grid-column-start:11}.ed-grid>.m-y-11{-ms-grid-row:11;grid-row-start:11}.ed-grid.cols-m-12,.ed-grid.m-grid-12{-ms-grid-columns:(calc((100% - var(--gap) * 11) / 12))[12];grid-template-columns:repeat(12, calc((100% - var(--gap) * 11) / 12))}.ed-grid>.span-m-12,.ed-grid>.m-cols-12{-ms-grid-column-span:12;grid-column-end:span 12}.ed-grid>.m-rows-12{-ms-grid-row-span:12;grid-row-end:span 12}.ed-grid>.m-x-12{-ms-grid-column:12;grid-column-start:12}.ed-grid>.m-y-12{-ms-grid-row:12;grid-row-start:12}}@media screen and (min-width: 1024px){.ed-grid.cols-l-1,.ed-grid.l-grid-1{-ms-grid-columns:100%;grid-template-columns:100%}.ed-grid>.span-l-1,.ed-grid>.l-cols-1{-ms-grid-column-span:1;grid-column-end:span 1}.ed-grid>.l-rows-1{-ms-grid-row-span:1;grid-row-end:span 1}.ed-grid>.l-x-1{-ms-grid-column:1;grid-column-start:1}.ed-grid>.l-y-1{-ms-grid-row:1;grid-row-start:1}.ed-grid.cols-l-2,.ed-grid.l-grid-2{-ms-grid-columns:(calc((100% - var(--gap) * 1) / 2))[2];grid-template-columns:repeat(2, calc((100% - var(--gap) * 1) / 2))}.ed-grid>.span-l-2,.ed-grid>.l-cols-2{-ms-grid-column-span:2;grid-column-end:span 2}.ed-grid>.l-rows-2{-ms-grid-row-span:2;grid-row-end:span 2}.ed-grid>.l-x-2{-ms-grid-column:2;grid-column-start:2}.ed-grid>.l-y-2{-ms-grid-row:2;grid-row-start:2}.ed-grid.cols-l-3,.ed-grid.l-grid-3{-ms-grid-columns:(calc((100% - var(--gap) * 2) / 3))[3];grid-template-columns:repeat(3, calc((100% - var(--gap) * 2) / 3))}.ed-grid>.span-l-3,.ed-grid>.l-cols-3{-ms-grid-column-span:3;grid-column-end:span 3}.ed-grid>.l-rows-3{-ms-grid-row-span:3;grid-row-end:span 3}.ed-grid>.l-x-3{-ms-grid-column:3;grid-column-start:3}.ed-grid>.l-y-3{-ms-grid-row:3;grid-row-start:3}.ed-grid.cols-l-4,.ed-grid.l-grid-4{-ms-grid-columns:(calc((100% - var(--gap) * 3) / 4))[4];grid-template-columns:repeat(4, calc((100% - var(--gap) * 3) / 4))}.ed-grid>.span-l-4,.ed-grid>.l-cols-4{-ms-grid-column-span:4;grid-column-end:span 4}.ed-grid>.l-rows-4{-ms-grid-row-span:4;grid-row-end:span 4}.ed-grid>.l-x-4{-ms-grid-column:4;grid-column-start:4}.ed-grid>.l-y-4{-ms-grid-row:4;grid-row-start:4}.ed-grid.cols-l-5,.ed-grid.l-grid-5{-ms-grid-columns:(calc((100% - var(--gap) * 4) / 5))[5];grid-template-columns:repeat(5, calc((100% - var(--gap) * 4) / 5))}.ed-grid>.span-l-5,.ed-grid>.l-cols-5{-ms-grid-column-span:5;grid-column-end:span 5}.ed-grid>.l-rows-5{-ms-grid-row-span:5;grid-row-end:span 5}.ed-grid>.l-x-5{-ms-grid-column:5;grid-column-start:5}.ed-grid>.l-y-5{-ms-grid-row:5;grid-row-start:5}.ed-grid.cols-l-6,.ed-grid.l-grid-6{-ms-grid-columns:(calc((100% - var(--gap) * 5) / 6))[6];grid-template-columns:repeat(6, calc((100% - var(--gap) * 5) / 6))}.ed-grid>.span-l-6,.ed-grid>.l-cols-6{-ms-grid-column-span:6;grid-column-end:span 6}.ed-grid>.l-rows-6{-ms-grid-row-span:6;grid-row-end:span 6}.ed-grid>.l-x-6{-ms-grid-column:6;grid-column-start:6}.ed-grid>.l-y-6{-ms-grid-row:6;grid-row-start:6}.ed-grid.cols-l-7,.ed-grid.l-grid-7{-ms-grid-columns:(calc((100% - var(--gap) * 6) / 7))[7];grid-template-columns:repeat(7, calc((100% - var(--gap) * 6) / 7))}.ed-grid>.span-l-7,.ed-grid>.l-cols-7{-ms-grid-column-span:7;grid-column-end:span 7}.ed-grid>.l-rows-7{-ms-grid-row-span:7;grid-row-end:span 7}.ed-grid>.l-x-7{-ms-grid-column:7;grid-column-start:7}.ed-grid>.l-y-7{-ms-grid-row:7;grid-row-start:7}.ed-grid.cols-l-8,.ed-grid.l-grid-8{-ms-grid-columns:(calc((100% - var(--gap) * 7) / 8))[8];grid-template-columns:repeat(8, calc((100% - var(--gap) * 7) / 8))}.ed-grid>.span-l-8,.ed-grid>.l-cols-8{-ms-grid-column-span:8;grid-column-end:span 8}.ed-grid>.l-rows-8{-ms-grid-row-span:8;grid-row-end:span 8}.ed-grid>.l-x-8{-ms-grid-column:8;grid-column-start:8}.ed-grid>.l-y-8{-ms-grid-row:8;grid-row-start:8}.ed-grid.cols-l-9,.ed-grid.l-grid-9{-ms-grid-columns:(calc((100% - var(--gap) * 8) / 9))[9];grid-template-columns:repeat(9, calc((100% - var(--gap) * 8) / 9))}.ed-grid>.span-l-9,.ed-grid>.l-cols-9{-ms-grid-column-span:9;grid-column-end:span 9}.ed-grid>.l-rows-9{-ms-grid-row-span:9;grid-row-end:span 9}.ed-grid>.l-x-9{-ms-grid-column:9;grid-column-start:9}.ed-grid>.l-y-9{-ms-grid-row:9;grid-row-start:9}.ed-grid.cols-l-10,.ed-grid.l-grid-10{-ms-grid-columns:(calc((100% - var(--gap) * 9) / 10))[10];grid-template-columns:repeat(10, calc((100% - var(--gap) * 9) / 10))}.ed-grid>.span-l-10,.ed-grid>.l-cols-10{-ms-grid-column-span:10;grid-column-end:span 10}.ed-grid>.l-rows-10{-ms-grid-row-span:10;grid-row-end:span 10}.ed-grid>.l-x-10{-ms-grid-column:10;grid-column-start:10}.ed-grid>.l-y-10{-ms-grid-row:10;grid-row-start:10}.ed-grid.cols-l-11,.ed-grid.l-grid-11{-ms-grid-columns:(calc((100% - var(--gap) * 10) / 11))[11];grid-template-columns:repeat(11, calc((100% - var(--gap) * 10) / 11))}.ed-grid>.span-l-11,.ed-grid>.l-cols-11{-ms-grid-column-span:11;grid-column-end:span 11}.ed-grid>.l-rows-11{-ms-grid-row-span:11;grid-row-end:span 11}.ed-grid>.l-x-11{-ms-grid-column:11;grid-column-start:11}.ed-grid>.l-y-11{-ms-grid-row:11;grid-row-start:11}.ed-grid.cols-l-12,.ed-grid.l-grid-12{-ms-grid-columns:(calc((100% - var(--gap) * 11) / 12))[12];grid-template-columns:repeat(12, calc((100% - var(--gap) * 11) / 12))}.ed-grid>.span-l-12,.ed-grid>.l-cols-12{-ms-grid-column-span:12;grid-column-end:span 12}.ed-grid>.l-rows-12{-ms-grid-row-span:12;grid-row-end:span 12}.ed-grid>.l-x-12{-ms-grid-column:12;grid-column-start:12}.ed-grid>.l-y-12{-ms-grid-row:12;grid-row-start:12}}@media screen and (min-width: 1024px){.ed-grid.cols-lg-1,.ed-grid.lg-grid-1{-ms-grid-columns:100%;grid-template-columns:100%}.ed-grid>.span-lg-1,.ed-grid>.lg-cols-1{-ms-grid-column-span:1;grid-column-end:span 1}.ed-grid>.lg-rows-1{-ms-grid-row-span:1;grid-row-end:span 1}.ed-grid>.lg-x-1{-ms-grid-column:1;grid-column-start:1}.ed-grid>.lg-y-1{-ms-grid-row:1;grid-row-start:1}.ed-grid.cols-lg-2,.ed-grid.lg-grid-2{-ms-grid-columns:(calc((100% - var(--gap) * 1) / 2))[2];grid-template-columns:repeat(2, calc((100% - var(--gap) * 1) / 2))}.ed-grid>.span-lg-2,.ed-grid>.lg-cols-2{-ms-grid-column-span:2;grid-column-end:span 2}.ed-grid>.lg-rows-2{-ms-grid-row-span:2;grid-row-end:span 2}.ed-grid>.lg-x-2{-ms-grid-column:2;grid-column-start:2}.ed-grid>.lg-y-2{-ms-grid-row:2;grid-row-start:2}.ed-grid.cols-lg-3,.ed-grid.lg-grid-3{-ms-grid-columns:(calc((100% - var(--gap) * 2) / 3))[3];grid-template-columns:repeat(3, calc((100% - var(--gap) * 2) / 3))}.ed-grid>.span-lg-3,.ed-grid>.lg-cols-3{-ms-grid-column-span:3;grid-column-end:span 3}.ed-grid>.lg-rows-3{-ms-grid-row-span:3;grid-row-end:span 3}.ed-grid>.lg-x-3{-ms-grid-column:3;grid-column-start:3}.ed-grid>.lg-y-3{-ms-grid-row:3;grid-row-start:3}.ed-grid.cols-lg-4,.ed-grid.lg-grid-4{-ms-grid-columns:(calc((100% - var(--gap) * 3) / 4))[4];grid-template-columns:repeat(4, calc((100% - var(--gap) * 3) / 4))}.ed-grid>.span-lg-4,.ed-grid>.lg-cols-4{-ms-grid-column-span:4;grid-column-end:span 4}.ed-grid>.lg-rows-4{-ms-grid-row-span:4;grid-row-end:span 4}.ed-grid>.lg-x-4{-ms-grid-column:4;grid-column-start:4}.ed-grid>.lg-y-4{-ms-grid-row:4;grid-row-start:4}.ed-grid.cols-lg-5,.ed-grid.lg-grid-5{-ms-grid-columns:(calc((100% - var(--gap) * 4) / 5))[5];grid-template-columns:repeat(5, calc((100% - var(--gap) * 4) / 5))}.ed-grid>.span-lg-5,.ed-grid>.lg-cols-5{-ms-grid-column-span:5;grid-column-end:span 5}.ed-grid>.lg-rows-5{-ms-grid-row-span:5;grid-row-end:span 5}.ed-grid>.lg-x-5{-ms-grid-column:5;grid-column-start:5}.ed-grid>.lg-y-5{-ms-grid-row:5;grid-row-start:5}.ed-grid.cols-lg-6,.ed-grid.lg-grid-6{-ms-grid-columns:(calc((100% - var(--gap) * 5) / 6))[6];grid-template-columns:repeat(6, calc((100% - var(--gap) * 5) / 6))}.ed-grid>.span-lg-6,.ed-grid>.lg-cols-6{-ms-grid-column-span:6;grid-column-end:span 6}.ed-grid>.lg-rows-6{-ms-grid-row-span:6;grid-row-end:span 6}.ed-grid>.lg-x-6{-ms-grid-column:6;grid-column-start:6}.ed-grid>.lg-y-6{-ms-grid-row:6;grid-row-start:6}.ed-grid.cols-lg-7,.ed-grid.lg-grid-7{-ms-grid-columns:(calc((100% - var(--gap) * 6) / 7))[7];grid-template-columns:repeat(7, calc((100% - var(--gap) * 6) / 7))}.ed-grid>.span-lg-7,.ed-grid>.lg-cols-7{-ms-grid-column-span:7;grid-column-end:span 7}.ed-grid>.lg-rows-7{-ms-grid-row-span:7;grid-row-end:span 7}.ed-grid>.lg-x-7{-ms-grid-column:7;grid-column-start:7}.ed-grid>.lg-y-7{-ms-grid-row:7;grid-row-start:7}.ed-grid.cols-lg-8,.ed-grid.lg-grid-8{-ms-grid-columns:(calc((100% - var(--gap) * 7) / 8))[8];grid-template-columns:repeat(8, calc((100% - var(--gap) * 7) / 8))}.ed-grid>.span-lg-8,.ed-grid>.lg-cols-8{-ms-grid-column-span:8;grid-column-end:span 8}.ed-grid>.lg-rows-8{-ms-grid-row-span:8;grid-row-end:span 8}.ed-grid>.lg-x-8{-ms-grid-column:8;grid-column-start:8}.ed-grid>.lg-y-8{-ms-grid-row:8;grid-row-start:8}.ed-grid.cols-lg-9,.ed-grid.lg-grid-9{-ms-grid-columns:(calc((100% - var(--gap) * 8) / 9))[9];grid-template-columns:repeat(9, calc((100% - var(--gap) * 8) / 9))}.ed-grid>.span-lg-9,.ed-grid>.lg-cols-9{-ms-grid-column-span:9;grid-column-end:span 9}.ed-grid>.lg-rows-9{-ms-grid-row-span:9;grid-row-end:span 9}.ed-grid>.lg-x-9{-ms-grid-column:9;grid-column-start:9}.ed-grid>.lg-y-9{-ms-grid-row:9;grid-row-start:9}.ed-grid.cols-lg-10,.ed-grid.lg-grid-10{-ms-grid-columns:(calc((100% - var(--gap) * 9) / 10))[10];grid-template-columns:repeat(10, calc((100% - var(--gap) * 9) / 10))}.ed-grid>.span-lg-10,.ed-grid>.lg-cols-10{-ms-grid-column-span:10;grid-column-end:span 10}.ed-grid>.lg-rows-10{-ms-grid-row-span:10;grid-row-end:span 10}.ed-grid>.lg-x-10{-ms-grid-column:10;grid-column-start:10}.ed-grid>.lg-y-10{-ms-grid-row:10;grid-row-start:10}.ed-grid.cols-lg-11,.ed-grid.lg-grid-11{-ms-grid-columns:(calc((100% - var(--gap) * 10) / 11))[11];grid-template-columns:repeat(11, calc((100% - var(--gap) * 10) / 11))}.ed-grid>.span-lg-11,.ed-grid>.lg-cols-11{-ms-grid-column-span:11;grid-column-end:span 11}.ed-grid>.lg-rows-11{-ms-grid-row-span:11;grid-row-end:span 11}.ed-grid>.lg-x-11{-ms-grid-column:11;grid-column-start:11}.ed-grid>.lg-y-11{-ms-grid-row:11;grid-row-start:11}.ed-grid.cols-lg-12,.ed-grid.lg-grid-12{-ms-grid-columns:(calc((100% - var(--gap) * 11) / 12))[12];grid-template-columns:repeat(12, calc((100% - var(--gap) * 11) / 12))}.ed-grid>.span-lg-12,.ed-grid>.lg-cols-12{-ms-grid-column-span:12;grid-column-end:span 12}.ed-grid>.lg-rows-12{-ms-grid-row-span:12;grid-row-end:span 12}.ed-grid>.lg-x-12{-ms-grid-column:12;grid-column-start:12}.ed-grid>.lg-y-12{-ms-grid-row:12;grid-row-start:12}}@media screen and (min-width: 1440px){.ed-grid.cols-xl-1,.ed-grid.xl-grid-1{-ms-grid-columns:100%;grid-template-columns:100%}.ed-grid>.span-xl-1,.ed-grid>.xl-cols-1{-ms-grid-column-span:1;grid-column-end:span 1}.ed-grid>.xl-rows-1{-ms-grid-row-span:1;grid-row-end:span 1}.ed-grid>.xl-x-1{-ms-grid-column:1;grid-column-start:1}.ed-grid>.xl-y-1{-ms-grid-row:1;grid-row-start:1}.ed-grid.cols-xl-2,.ed-grid.xl-grid-2{-ms-grid-columns:(calc((100% - var(--gap) * 1) / 2))[2];grid-template-columns:repeat(2, calc((100% - var(--gap) * 1) / 2))}.ed-grid>.span-xl-2,.ed-grid>.xl-cols-2{-ms-grid-column-span:2;grid-column-end:span 2}.ed-grid>.xl-rows-2{-ms-grid-row-span:2;grid-row-end:span 2}.ed-grid>.xl-x-2{-ms-grid-column:2;grid-column-start:2}.ed-grid>.xl-y-2{-ms-grid-row:2;grid-row-start:2}.ed-grid.cols-xl-3,.ed-grid.xl-grid-3{-ms-grid-columns:(calc((100% - var(--gap) * 2) / 3))[3];grid-template-columns:repeat(3, calc((100% - var(--gap) * 2) / 3))}.ed-grid>.span-xl-3,.ed-grid>.xl-cols-3{-ms-grid-column-span:3;grid-column-end:span 3}.ed-grid>.xl-rows-3{-ms-grid-row-span:3;grid-row-end:span 3}.ed-grid>.xl-x-3{-ms-grid-column:3;grid-column-start:3}.ed-grid>.xl-y-3{-ms-grid-row:3;grid-row-start:3}.ed-grid.cols-xl-4,.ed-grid.xl-grid-4{-ms-grid-columns:(calc((100% - var(--gap) * 3) / 4))[4];grid-template-columns:repeat(4, calc((100% - var(--gap) * 3) / 4))}.ed-grid>.span-xl-4,.ed-grid>.xl-cols-4{-ms-grid-column-span:4;grid-column-end:span 4}.ed-grid>.xl-rows-4{-ms-grid-row-span:4;grid-row-end:span 4}.ed-grid>.xl-x-4{-ms-grid-column:4;grid-column-start:4}.ed-grid>.xl-y-4{-ms-grid-row:4;grid-row-start:4}.ed-grid.cols-xl-5,.ed-grid.xl-grid-5{-ms-grid-columns:(calc((100% - var(--gap) * 4) / 5))[5];grid-template-columns:repeat(5, calc((100% - var(--gap) * 4) / 5))}.ed-grid>.span-xl-5,.ed-grid>.xl-cols-5{-ms-grid-column-span:5;grid-column-end:span 5}.ed-grid>.xl-rows-5{-ms-grid-row-span:5;grid-row-end:span 5}.ed-grid>.xl-x-5{-ms-grid-column:5;grid-column-start:5}.ed-grid>.xl-y-5{-ms-grid-row:5;grid-row-start:5}.ed-grid.cols-xl-6,.ed-grid.xl-grid-6{-ms-grid-columns:(calc((100% - var(--gap) * 5) / 6))[6];grid-template-columns:repeat(6, calc((100% - var(--gap) * 5) / 6))}.ed-grid>.span-xl-6,.ed-grid>.xl-cols-6{-ms-grid-column-span:6;grid-column-end:span 6}.ed-grid>.xl-rows-6{-ms-grid-row-span:6;grid-row-end:span 6}.ed-grid>.xl-x-6{-ms-grid-column:6;grid-column-start:6}.ed-grid>.xl-y-6{-ms-grid-row:6;grid-row-start:6}.ed-grid.cols-xl-7,.ed-grid.xl-grid-7{-ms-grid-columns:(calc((100% - var(--gap) * 6) / 7))[7];grid-template-columns:repeat(7, calc((100% - var(--gap) * 6) / 7))}.ed-grid>.span-xl-7,.ed-grid>.xl-cols-7{-ms-grid-column-span:7;grid-column-end:span 7}.ed-grid>.xl-rows-7{-ms-grid-row-span:7;grid-row-end:span 7}.ed-grid>.xl-x-7{-ms-grid-column:7;grid-column-start:7}.ed-grid>.xl-y-7{-ms-grid-row:7;grid-row-start:7}.ed-grid.cols-xl-8,.ed-grid.xl-grid-8{-ms-grid-columns:(calc((100% - var(--gap) * 7) / 8))[8];grid-template-columns:repeat(8, calc((100% - var(--gap) * 7) / 8))}.ed-grid>.span-xl-8,.ed-grid>.xl-cols-8{-ms-grid-column-span:8;grid-column-end:span 8}.ed-grid>.xl-rows-8{-ms-grid-row-span:8;grid-row-end:span 8}.ed-grid>.xl-x-8{-ms-grid-column:8;grid-column-start:8}.ed-grid>.xl-y-8{-ms-grid-row:8;grid-row-start:8}.ed-grid.cols-xl-9,.ed-grid.xl-grid-9{-ms-grid-columns:(calc((100% - var(--gap) * 8) / 9))[9];grid-template-columns:repeat(9, calc((100% - var(--gap) * 8) / 9))}.ed-grid>.span-xl-9,.ed-grid>.xl-cols-9{-ms-grid-column-span:9;grid-column-end:span 9}.ed-grid>.xl-rows-9{-ms-grid-row-span:9;grid-row-end:span 9}.ed-grid>.xl-x-9{-ms-grid-column:9;grid-column-start:9}.ed-grid>.xl-y-9{-ms-grid-row:9;grid-row-start:9}.ed-grid.cols-xl-10,.ed-grid.xl-grid-10{-ms-grid-columns:(calc((100% - var(--gap) * 9) / 10))[10];grid-template-columns:repeat(10, calc((100% - var(--gap) * 9) / 10))}.ed-grid>.span-xl-10,.ed-grid>.xl-cols-10{-ms-grid-column-span:10;grid-column-end:span 10}.ed-grid>.xl-rows-10{-ms-grid-row-span:10;grid-row-end:span 10}.ed-grid>.xl-x-10{-ms-grid-column:10;grid-column-start:10}.ed-grid>.xl-y-10{-ms-grid-row:10;grid-row-start:10}.ed-grid.cols-xl-11,.ed-grid.xl-grid-11{-ms-grid-columns:(calc((100% - var(--gap) * 10) / 11))[11];grid-template-columns:repeat(11, calc((100% - var(--gap) * 10) / 11))}.ed-grid>.span-xl-11,.ed-grid>.xl-cols-11{-ms-grid-column-span:11;grid-column-end:span 11}.ed-grid>.xl-rows-11{-ms-grid-row-span:11;grid-row-end:span 11}.ed-grid>.xl-x-11{-ms-grid-column:11;grid-column-start:11}.ed-grid>.xl-y-11{-ms-grid-row:11;grid-row-start:11}.ed-grid.cols-xl-12,.ed-grid.xl-grid-12{-ms-grid-columns:(calc((100% - var(--gap) * 11) / 12))[12];grid-template-columns:repeat(12, calc((100% - var(--gap) * 11) / 12))}.ed-grid>.span-xl-12,.ed-grid>.xl-cols-12{-ms-grid-column-span:12;grid-column-end:span 12}.ed-grid>.xl-rows-12{-ms-grid-row-span:12;grid-row-end:span 12}.ed-grid>.xl-x-12{-ms-grid-column:12;grid-column-start:12}.ed-grid>.xl-y-12{-ms-grid-row:12;grid-row-start:12}}.ed-grid[class*="-main-"],.ed-grid[class*="-cross-"]{display:-ms-grid;display:grid}.l-block,.cancel-l-block,.l-section,.cancel-l-section,.l-big-section,.cancel-l-big-section{margin-top:0}.l-block{margin-bottom:var(--vertical-block-space)}.cancel-l-block{margin-top:calc(var(--vertical-block-space) * -1)}.l-section{margin-bottom:calc(var(--vertical-block-space) * 2)}.cancel-l-section{margin-top:calc(var(--vertical-block-space) * -2)}.l-big-section{margin-bottom:calc(var(--vertical-block-space) * 4)}.cancel-l-big-section{margin-top:calc(var(--vertical-block-space) * -4)}body{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main-footer{margin-top:auto}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--vertical-content-space)}h1{margin-bottom:calc(var(--vertical-content-space) * 1.5)}p,video,blockquote,article,section,form,figure,iframe,ul,ol,pre,hr,dl,address,table{margin-top:0;margin-bottom:calc(var(--vertical-content-space) * 1.5)}p+h2,video+h2,blockquote+h2,article+h2,section+h2,form+h2,figure+h2,iframe+h2,ul+h2,ol+h2,pre+h2,hr+h2,dl+h2,address+h2,table+h2{padding-top:calc(var(--vertical-content-space) * 1.5)}p+h3,video+h3,blockquote+h3,article+h3,section+h3,form+h3,figure+h3,iframe+h3,ul+h3,ol+h3,pre+h3,hr+h3,dl+h3,address+h3,table+h3{padding-top:var(--vertical-content-space)}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}.s-pt-0{padding-top:0}.s-pl-0{padding-left:0}.s-pb-0{padding-bottom:0}.s-pr-0{padding-right:0}.s-py-0{padding-top:0;padding-bottom:0}.s-px-0{padding-left:0;padding-right:0}.s-pxy-0{padding:0}.s-mr-0{margin-right:0}.s-mb-0{margin-bottom:0}.s-mt-0{margin-top:0}.s-ml-0{margin-left:0}.s-sticky-0{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 0)}.s-pt-1{padding-top:.5rem}.s-pl-1{padding-left:.5rem}.s-pb-1{padding-bottom:.5rem}.s-pr-1{padding-right:.5rem}.s-py-1{padding-top:.5rem;padding-bottom:.5rem}.s-px-1,.card__teachers span{padding-left:.5rem;padding-right:.5rem}.s-pxy-1{padding:.5rem}.s-mr-1{margin-right:.5rem}.s-mb-1{margin-bottom:.5rem}.s-mt-1{margin-top:-.5rem}.s-ml-1{margin-left:-.5rem}.s-sticky-1{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .5rem)}.s-pt-2{padding-top:1rem}.s-pl-2{padding-left:1rem}.s-pb-2{padding-bottom:1rem}.s-pr-2{padding-right:1rem}.s-py-2{padding-top:1rem;padding-bottom:1rem}.s-px-2{padding-left:1rem;padding-right:1rem}.s-pxy-2{padding:1rem}.s-mr-2{margin-right:1rem}.s-mb-2{margin-bottom:1rem}.s-mt-2{margin-top:-1rem}.s-ml-2{margin-left:-1rem}.s-sticky-2{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1rem)}.s-pt-3{padding-top:1.5rem}.s-pl-3{padding-left:1.5rem}.s-pb-3{padding-bottom:1.5rem}.s-pr-3{padding-right:1.5rem}.s-py-3{padding-top:1.5rem;padding-bottom:1.5rem}.s-px-3{padding-left:1.5rem;padding-right:1.5rem}.s-pxy-3{padding:1.5rem}.s-mr-3{margin-right:1.5rem}.s-mb-3{margin-bottom:1.5rem}.s-mt-3{margin-top:-1.5rem}.s-ml-3{margin-left:-1.5rem}.s-sticky-3{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1.5rem)}.s-pt-4{padding-top:2rem}.s-pl-4{padding-left:2rem}.s-pb-4{padding-bottom:2rem}.s-pr-4{padding-right:2rem}.s-py-4{padding-top:2rem;padding-bottom:2rem}.s-px-4{padding-left:2rem;padding-right:2rem}.s-pxy-4{padding:2rem}.s-mr-4{margin-right:2rem}.s-mb-4{margin-bottom:2rem}.s-mt-4{margin-top:-2rem}.s-ml-4{margin-left:-2rem}.s-sticky-4{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 2rem)}.s-pt-05{padding-top:.25rem}.s-pl-05{padding-left:.25rem}.s-pb-05{padding-bottom:.25rem}.s-pr-05{padding-right:.25rem}.s-py-05,.card__teachers span{padding-top:.25rem;padding-bottom:.25rem}.s-px-05{padding-left:.25rem;padding-right:.25rem}.s-pxy-05{padding:.25rem}.s-mr-05{margin-right:.25rem}.s-mb-05{margin-bottom:.25rem}.s-mt-05{margin-top:-.25rem}.s-ml-05{margin-left:-.25rem}.s-sticky-05{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .25rem)}.s-sticky-none{position:static}@media screen and (min-width: 640px){.m-pt-0{padding-top:0}.m-pl-0{padding-left:0}.m-pb-0{padding-bottom:0}.m-pr-0{padding-right:0}.m-py-0{padding-top:0;padding-bottom:0}.m-px-0{padding-left:0;padding-right:0}.m-pxy-0{padding:0}.m-mr-0{margin-right:0}.m-mb-0{margin-bottom:0}.m-mt-0{margin-top:0}.m-ml-0{margin-left:0}.m-sticky-0{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 0)}.m-pt-1{padding-top:.5rem}.m-pl-1{padding-left:.5rem}.m-pb-1{padding-bottom:.5rem}.m-pr-1{padding-right:.5rem}.m-py-1{padding-top:.5rem;padding-bottom:.5rem}.m-px-1{padding-left:.5rem;padding-right:.5rem}.m-pxy-1{padding:.5rem}.m-mr-1{margin-right:.5rem}.m-mb-1{margin-bottom:.5rem}.m-mt-1{margin-top:-.5rem}.m-ml-1{margin-left:-.5rem}.m-sticky-1{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .5rem)}.m-pt-2{padding-top:1rem}.m-pl-2{padding-left:1rem}.m-pb-2{padding-bottom:1rem}.m-pr-2{padding-right:1rem}.m-py-2{padding-top:1rem;padding-bottom:1rem}.m-px-2{padding-left:1rem;padding-right:1rem}.m-pxy-2{padding:1rem}.m-mr-2{margin-right:1rem}.m-mb-2{margin-bottom:1rem}.m-mt-2{margin-top:-1rem}.m-ml-2{margin-left:-1rem}.m-sticky-2{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1rem)}.m-pt-3{padding-top:1.5rem}.m-pl-3{padding-left:1.5rem}.m-pb-3{padding-bottom:1.5rem}.m-pr-3{padding-right:1.5rem}.m-py-3{padding-top:1.5rem;padding-bottom:1.5rem}.m-px-3{padding-left:1.5rem;padding-right:1.5rem}.m-pxy-3{padding:1.5rem}.m-mr-3{margin-right:1.5rem}.m-mb-3{margin-bottom:1.5rem}.m-mt-3{margin-top:-1.5rem}.m-ml-3{margin-left:-1.5rem}.m-sticky-3{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1.5rem)}.m-pt-4{padding-top:2rem}.m-pl-4{padding-left:2rem}.m-pb-4{padding-bottom:2rem}.m-pr-4{padding-right:2rem}.m-py-4{padding-top:2rem;padding-bottom:2rem}.m-px-4{padding-left:2rem;padding-right:2rem}.m-pxy-4{padding:2rem}.m-mr-4{margin-right:2rem}.m-mb-4{margin-bottom:2rem}.m-mt-4{margin-top:-2rem}.m-ml-4{margin-left:-2rem}.m-sticky-4{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 2rem)}.m-pt-05{padding-top:.25rem}.m-pl-05{padding-left:.25rem}.m-pb-05{padding-bottom:.25rem}.m-pr-05{padding-right:.25rem}.m-py-05{padding-top:.25rem;padding-bottom:.25rem}.m-px-05{padding-left:.25rem;padding-right:.25rem}.m-pxy-05{padding:.25rem}.m-mr-05{margin-right:.25rem}.m-mb-05{margin-bottom:.25rem}.m-mt-05{margin-top:-.25rem}.m-ml-05{margin-left:-.25rem}.m-sticky-05{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .25rem)}.m-sticky-none{position:static}}@media screen and (min-width: 1024px){.l-pt-0{padding-top:0}.l-pl-0{padding-left:0}.l-pb-0{padding-bottom:0}.l-pr-0{padding-right:0}.l-py-0{padding-top:0;padding-bottom:0}.l-px-0{padding-left:0;padding-right:0}.l-pxy-0{padding:0}.l-mr-0{margin-right:0}.l-mb-0{margin-bottom:0}.l-mt-0{margin-top:0}.l-ml-0{margin-left:0}.l-sticky-0{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 0)}.l-pt-1{padding-top:.5rem}.l-pl-1{padding-left:.5rem}.l-pb-1{padding-bottom:.5rem}.l-pr-1{padding-right:.5rem}.l-py-1{padding-top:.5rem;padding-bottom:.5rem}.l-px-1{padding-left:.5rem;padding-right:.5rem}.l-pxy-1{padding:.5rem}.l-mr-1{margin-right:.5rem}.l-mb-1{margin-bottom:.5rem}.l-mt-1{margin-top:-.5rem}.l-ml-1{margin-left:-.5rem}.l-sticky-1{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .5rem)}.l-pt-2{padding-top:1rem}.l-pl-2{padding-left:1rem}.l-pb-2{padding-bottom:1rem}.l-pr-2{padding-right:1rem}.l-py-2{padding-top:1rem;padding-bottom:1rem}.l-px-2{padding-left:1rem;padding-right:1rem}.l-pxy-2{padding:1rem}.l-mr-2{margin-right:1rem}.l-mb-2{margin-bottom:1rem}.l-mt-2{margin-top:-1rem}.l-ml-2{margin-left:-1rem}.l-sticky-2{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1rem)}.l-pt-3{padding-top:1.5rem}.l-pl-3{padding-left:1.5rem}.l-pb-3{padding-bottom:1.5rem}.l-pr-3{padding-right:1.5rem}.l-py-3{padding-top:1.5rem;padding-bottom:1.5rem}.l-px-3{padding-left:1.5rem;padding-right:1.5rem}.l-pxy-3{padding:1.5rem}.l-mr-3{margin-right:1.5rem}.l-mb-3{margin-bottom:1.5rem}.l-mt-3{margin-top:-1.5rem}.l-ml-3{margin-left:-1.5rem}.l-sticky-3{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1.5rem)}.l-pt-4{padding-top:2rem}.l-pl-4{padding-left:2rem}.l-pb-4{padding-bottom:2rem}.l-pr-4{padding-right:2rem}.l-py-4{padding-top:2rem;padding-bottom:2rem}.l-px-4{padding-left:2rem;padding-right:2rem}.l-pxy-4{padding:2rem}.l-mr-4{margin-right:2rem}.l-mb-4{margin-bottom:2rem}.l-mt-4{margin-top:-2rem}.l-ml-4{margin-left:-2rem}.l-sticky-4{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 2rem)}.l-pt-05{padding-top:.25rem}.l-pl-05{padding-left:.25rem}.l-pb-05{padding-bottom:.25rem}.l-pr-05{padding-right:.25rem}.l-py-05{padding-top:.25rem;padding-bottom:.25rem}.l-px-05{padding-left:.25rem;padding-right:.25rem}.l-pxy-05{padding:.25rem}.l-mr-05{margin-right:.25rem}.l-mb-05{margin-bottom:.25rem}.l-mt-05{margin-top:-.25rem}.l-ml-05{margin-left:-.25rem}.l-sticky-05{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .25rem)}.l-sticky-none{position:static}}@media screen and (min-width: 1024px){.lg-pt-0{padding-top:0}.lg-pl-0{padding-left:0}.lg-pb-0{padding-bottom:0}.lg-pr-0{padding-right:0}.lg-py-0{padding-top:0;padding-bottom:0}.lg-px-0{padding-left:0;padding-right:0}.lg-pxy-0{padding:0}.lg-mr-0{margin-right:0}.lg-mb-0{margin-bottom:0}.lg-mt-0{margin-top:0}.lg-ml-0{margin-left:0}.lg-sticky-0{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 0)}.lg-pt-1{padding-top:.5rem}.lg-pl-1{padding-left:.5rem}.lg-pb-1{padding-bottom:.5rem}.lg-pr-1{padding-right:.5rem}.lg-py-1{padding-top:.5rem;padding-bottom:.5rem}.lg-px-1{padding-left:.5rem;padding-right:.5rem}.lg-pxy-1{padding:.5rem}.lg-mr-1{margin-right:.5rem}.lg-mb-1{margin-bottom:.5rem}.lg-mt-1{margin-top:-.5rem}.lg-ml-1{margin-left:-.5rem}.lg-sticky-1{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .5rem)}.lg-pt-2{padding-top:1rem}.lg-pl-2{padding-left:1rem}.lg-pb-2{padding-bottom:1rem}.lg-pr-2{padding-right:1rem}.lg-py-2{padding-top:1rem;padding-bottom:1rem}.lg-px-2{padding-left:1rem;padding-right:1rem}.lg-pxy-2{padding:1rem}.lg-mr-2{margin-right:1rem}.lg-mb-2{margin-bottom:1rem}.lg-mt-2{margin-top:-1rem}.lg-ml-2{margin-left:-1rem}.lg-sticky-2{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1rem)}.lg-pt-3{padding-top:1.5rem}.lg-pl-3{padding-left:1.5rem}.lg-pb-3{padding-bottom:1.5rem}.lg-pr-3{padding-right:1.5rem}.lg-py-3{padding-top:1.5rem;padding-bottom:1.5rem}.lg-px-3{padding-left:1.5rem;padding-right:1.5rem}.lg-pxy-3{padding:1.5rem}.lg-mr-3{margin-right:1.5rem}.lg-mb-3{margin-bottom:1.5rem}.lg-mt-3{margin-top:-1.5rem}.lg-ml-3{margin-left:-1.5rem}.lg-sticky-3{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1.5rem)}.lg-pt-4{padding-top:2rem}.lg-pl-4{padding-left:2rem}.lg-pb-4{padding-bottom:2rem}.lg-pr-4{padding-right:2rem}.lg-py-4{padding-top:2rem;padding-bottom:2rem}.lg-px-4{padding-left:2rem;padding-right:2rem}.lg-pxy-4{padding:2rem}.lg-mr-4{margin-right:2rem}.lg-mb-4{margin-bottom:2rem}.lg-mt-4{margin-top:-2rem}.lg-ml-4{margin-left:-2rem}.lg-sticky-4{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 2rem)}.lg-pt-05{padding-top:.25rem}.lg-pl-05{padding-left:.25rem}.lg-pb-05{padding-bottom:.25rem}.lg-pr-05{padding-right:.25rem}.lg-py-05{padding-top:.25rem;padding-bottom:.25rem}.lg-px-05{padding-left:.25rem;padding-right:.25rem}.lg-pxy-05{padding:.25rem}.lg-mr-05{margin-right:.25rem}.lg-mb-05{margin-bottom:.25rem}.lg-mt-05{margin-top:-.25rem}.lg-ml-05{margin-left:-.25rem}.lg-sticky-05{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .25rem)}.lg-sticky-none{position:static}}@media screen and (min-width: 1440px){.xl-pt-0{padding-top:0}.xl-pl-0{padding-left:0}.xl-pb-0{padding-bottom:0}.xl-pr-0{padding-right:0}.xl-py-0{padding-top:0;padding-bottom:0}.xl-px-0{padding-left:0;padding-right:0}.xl-pxy-0{padding:0}.xl-mr-0{margin-right:0}.xl-mb-0{margin-bottom:0}.xl-mt-0{margin-top:0}.xl-ml-0{margin-left:0}.xl-sticky-0{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 0)}.xl-pt-1{padding-top:.5rem}.xl-pl-1{padding-left:.5rem}.xl-pb-1{padding-bottom:.5rem}.xl-pr-1{padding-right:.5rem}.xl-py-1{padding-top:.5rem;padding-bottom:.5rem}.xl-px-1{padding-left:.5rem;padding-right:.5rem}.xl-pxy-1{padding:.5rem}.xl-mr-1{margin-right:.5rem}.xl-mb-1{margin-bottom:.5rem}.xl-mt-1{margin-top:-.5rem}.xl-ml-1{margin-left:-.5rem}.xl-sticky-1{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .5rem)}.xl-pt-2{padding-top:1rem}.xl-pl-2{padding-left:1rem}.xl-pb-2{padding-bottom:1rem}.xl-pr-2{padding-right:1rem}.xl-py-2{padding-top:1rem;padding-bottom:1rem}.xl-px-2{padding-left:1rem;padding-right:1rem}.xl-pxy-2{padding:1rem}.xl-mr-2{margin-right:1rem}.xl-mb-2{margin-bottom:1rem}.xl-mt-2{margin-top:-1rem}.xl-ml-2{margin-left:-1rem}.xl-sticky-2{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1rem)}.xl-pt-3{padding-top:1.5rem}.xl-pl-3{padding-left:1.5rem}.xl-pb-3{padding-bottom:1.5rem}.xl-pr-3{padding-right:1.5rem}.xl-py-3{padding-top:1.5rem;padding-bottom:1.5rem}.xl-px-3{padding-left:1.5rem;padding-right:1.5rem}.xl-pxy-3{padding:1.5rem}.xl-mr-3{margin-right:1.5rem}.xl-mb-3{margin-bottom:1.5rem}.xl-mt-3{margin-top:-1.5rem}.xl-ml-3{margin-left:-1.5rem}.xl-sticky-3{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 1.5rem)}.xl-pt-4{padding-top:2rem}.xl-pl-4{padding-left:2rem}.xl-pb-4{padding-bottom:2rem}.xl-pr-4{padding-right:2rem}.xl-py-4{padding-top:2rem;padding-bottom:2rem}.xl-px-4{padding-left:2rem;padding-right:2rem}.xl-pxy-4{padding:2rem}.xl-mr-4{margin-right:2rem}.xl-mb-4{margin-bottom:2rem}.xl-mt-4{margin-top:-2rem}.xl-ml-4{margin-left:-2rem}.xl-sticky-4{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + 2rem)}.xl-pt-05{padding-top:.25rem}.xl-pl-05{padding-left:.25rem}.xl-pb-05{padding-bottom:.25rem}.xl-pr-05{padding-right:.25rem}.xl-py-05{padding-top:.25rem;padding-bottom:.25rem}.xl-px-05{padding-left:.25rem;padding-right:.25rem}.xl-pxy-05{padding:.25rem}.xl-mr-05{margin-right:.25rem}.xl-mb-05{margin-bottom:.25rem}.xl-mt-05{margin-top:-.25rem}.xl-ml-05{margin-left:-.25rem}.xl-sticky-05{position:-webkit-sticky;position:sticky;top:calc(var(--header-height) + .25rem)}.xl-sticky-none{position:static}}.s-left{text-align:left}.s-center{text-align:center}.s-right{text-align:right}.s-to-left{margin-left:0;margin-right:auto}.s-to-left[class*=button]{display:table}.s-to-center{margin-left:auto;margin-right:auto}.s-to-center[class*=button]{display:table}.s-to-right{margin-right:0;margin-left:auto}.s-to-right[class*=button]{display:table}.s-block-left{display:block;margin-left:0;margin-right:auto}.s-block-center{display:block;margin-left:auto;margin-right:auto}.s-block-right{display:block;margin-right:0;margin-left:auto}@media screen and (min-width: 640px){.m-left{text-align:left}.m-center{text-align:center}.m-right{text-align:right}.m-to-left{margin-left:0;margin-right:auto}.m-to-left[class*=button]{display:table}.m-to-center{margin-left:auto;margin-right:auto}.m-to-center[class*=button]{display:table}.m-to-right{margin-right:0;margin-left:auto}.m-to-right[class*=button]{display:table}.m-block-left{display:block;margin-left:0;margin-right:auto}.m-block-center{display:block;margin-left:auto;margin-right:auto}.m-block-right{display:block;margin-right:0;margin-left:auto}}@media screen and (min-width: 1024px){.l-left{text-align:left}.l-center{text-align:center}.l-right{text-align:right}.l-to-left{margin-left:0;margin-right:auto}.l-to-left[class*=button]{display:table}.l-to-center{margin-left:auto;margin-right:auto}.l-to-center[class*=button]{display:table}.l-to-right{margin-right:0;margin-left:auto}.l-to-right[class*=button]{display:table}.l-block-left{display:block;margin-left:0;margin-right:auto}.l-block-center{display:block;margin-left:auto;margin-right:auto}.l-block-right{display:block;margin-right:0;margin-left:auto}}@media screen and (min-width: 1024px){.lg-left{text-align:left}.lg-center{text-align:center}.lg-right{text-align:right}.lg-to-left{margin-left:0;margin-right:auto}.lg-to-left[class*=button]{display:table}.lg-to-center{margin-left:auto;margin-right:auto}.lg-to-center[class*=button]{display:table}.lg-to-right{margin-right:0;margin-left:auto}.lg-to-right[class*=button]{display:table}.lg-block-left{display:block;margin-left:0;margin-right:auto}.lg-block-center{display:block;margin-left:auto;margin-right:auto}.lg-block-right{display:block;margin-right:0;margin-left:auto}}@media screen and (min-width: 1440px){.xl-left{text-align:left}.xl-center{text-align:center}.xl-right{text-align:right}.xl-to-left{margin-left:0;margin-right:auto}.xl-to-left[class*=button]{display:table}.xl-to-center{margin-left:auto;margin-right:auto}.xl-to-center[class*=button]{display:table}.xl-to-right{margin-right:0;margin-left:auto}.xl-to-right[class*=button]{display:table}.xl-block-left{display:block;margin-left:0;margin-right:auto}.xl-block-center{display:block;margin-left:auto;margin-right:auto}.xl-block-right{display:block;margin-right:0;margin-left:auto}}.s-order-1{-ms-flex-order:1;order:1}.s-order-2{-ms-flex-order:2;order:2}.s-order-3{-ms-flex-order:3;order:3}.s-order-4{-ms-flex-order:4;order:4}.s-order-5{-ms-flex-order:5;order:5}.s-order-6{-ms-flex-order:6;order:6}.s-order-7{-ms-flex-order:7;order:7}.s-order-8{-ms-flex-order:8;order:8}.s-order-9{-ms-flex-order:9;order:9}.s-order-10{-ms-flex-order:10;order:10}.s-order-11{-ms-flex-order:11;order:11}.s-order-12{-ms-flex-order:12;order:12}@media screen and (min-width: 640px){.m-order-1{-ms-flex-order:1;order:1}.m-order-2{-ms-flex-order:2;order:2}.m-order-3{-ms-flex-order:3;order:3}.m-order-4{-ms-flex-order:4;order:4}.m-order-5{-ms-flex-order:5;order:5}.m-order-6{-ms-flex-order:6;order:6}.m-order-7{-ms-flex-order:7;order:7}.m-order-8{-ms-flex-order:8;order:8}.m-order-9{-ms-flex-order:9;order:9}.m-order-10{-ms-flex-order:10;order:10}.m-order-11{-ms-flex-order:11;order:11}.m-order-12{-ms-flex-order:12;order:12}}@media screen and (min-width: 1024px){.l-order-1{-ms-flex-order:1;order:1}.l-order-2{-ms-flex-order:2;order:2}.l-order-3{-ms-flex-order:3;order:3}.l-order-4{-ms-flex-order:4;order:4}.l-order-5{-ms-flex-order:5;order:5}.l-order-6{-ms-flex-order:6;order:6}.l-order-7{-ms-flex-order:7;order:7}.l-order-8{-ms-flex-order:8;order:8}.l-order-9{-ms-flex-order:9;order:9}.l-order-10{-ms-flex-order:10;order:10}.l-order-11{-ms-flex-order:11;order:11}.l-order-12{-ms-flex-order:12;order:12}}@media screen and (min-width: 1024px){.lg-order-1{-ms-flex-order:1;order:1}.lg-order-2{-ms-flex-order:2;order:2}.lg-order-3{-ms-flex-order:3;order:3}.lg-order-4{-ms-flex-order:4;order:4}.lg-order-5{-ms-flex-order:5;order:5}.lg-order-6{-ms-flex-order:6;order:6}.lg-order-7{-ms-flex-order:7;order:7}.lg-order-8{-ms-flex-order:8;order:8}.lg-order-9{-ms-flex-order:9;order:9}.lg-order-10{-ms-flex-order:10;order:10}.lg-order-11{-ms-flex-order:11;order:11}.lg-order-12{-ms-flex-order:12;order:12}}@media screen and (min-width: 1440px){.xl-order-1{-ms-flex-order:1;order:1}.xl-order-2{-ms-flex-order:2;order:2}.xl-order-3{-ms-flex-order:3;order:3}.xl-order-4{-ms-flex-order:4;order:4}.xl-order-5{-ms-flex-order:5;order:5}.xl-order-6{-ms-flex-order:6;order:6}.xl-order-7{-ms-flex-order:7;order:7}.xl-order-8{-ms-flex-order:8;order:8}.xl-order-9{-ms-flex-order:9;order:9}.xl-order-10{-ms-flex-order:10;order:10}.xl-order-11{-ms-flex-order:11;order:11}.xl-order-12{-ms-flex-order:12;order:12}}.flex,.s-row,.s-row-reverse,.s-column,.s-column-reverse,.s-main-start,.s-main-center,.s-main-end,.s-main-justify,.s-main-distribute,.s-cross-baseline,.s-cross-start,.s-cross-center,.s-cross-end{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}@media screen and (min-width: 640px){.flex,.m-row,.m-row-reverse,.m-column,.m-column-reverse,.m-main-start,.m-main-center,.m-main-end,.m-main-justify,.m-main-distribute,.m-cross-baseline,.m-cross-start,.m-cross-center,.m-cross-end{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}}@media screen and (min-width: 1024px){.flex,.l-row,.l-row-reverse,.l-column,.l-column-reverse,.l-main-start,.l-main-center,.l-main-end,.l-main-justify,.l-main-distribute,.l-cross-baseline,.l-cross-start,.l-cross-center,.l-cross-end{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}}@media screen and (min-width: 1024px){.flex,.lg-row,.lg-row-reverse,.lg-column,.lg-column-reverse,.lg-main-start,.lg-main-center,.lg-main-end,.lg-main-justify,.lg-main-distribute,.lg-cross-baseline,.lg-cross-start,.lg-cross-center,.lg-cross-end{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}}@media screen and (min-width: 1440px){.flex,.xl-row,.xl-row-reverse,.xl-column,.xl-column-reverse,.xl-main-start,.xl-main-center,.xl-main-end,.xl-main-justify,.xl-main-distribute,.xl-cross-baseline,.xl-cross-start,.xl-cross-center,.xl-cross-end{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}}.s-row{-ms-flex-direction:row;flex-direction:row}.s-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.s-column{-ms-flex-direction:column;flex-direction:column}.s-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}.s-main-start{-ms-flex-pack:start;justify-content:flex-start}.s-main-center{-ms-flex-pack:center;justify-content:center}.s-main-end{-ms-flex-pack:end;justify-content:flex-end}.s-main-justify{-ms-flex-pack:justify;justify-content:space-between}.s-main-distribute{-ms-flex-pack:space-evenly;justify-content:space-evenly}.s-cross-baseline{-ms-flex-align:baseline;align-items:baseline;-ms-flex-line-pack:baseline;align-content:baseline}.s-cross-start{-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.s-cross-center{-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.s-cross-end{-ms-flex-align:end;align-items:flex-end;-ms-flex-line-pack:end;align-content:flex-end}@media screen and (min-width: 640px){.m-row{-ms-flex-direction:row;flex-direction:row}.m-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.m-column{-ms-flex-direction:column;flex-direction:column}.m-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}.m-main-start{-ms-flex-pack:start;justify-content:flex-start}.m-main-center{-ms-flex-pack:center;justify-content:center}.m-main-end{-ms-flex-pack:end;justify-content:flex-end}.m-main-justify{-ms-flex-pack:justify;justify-content:space-between}.m-main-distribute{-ms-flex-pack:space-evenly;justify-content:space-evenly}.m-cross-baseline{-ms-flex-align:baseline;align-items:baseline;-ms-flex-line-pack:baseline;align-content:baseline}.m-cross-start{-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.m-cross-center{-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.m-cross-end{-ms-flex-align:end;align-items:flex-end;-ms-flex-line-pack:end;align-content:flex-end}}@media screen and (min-width: 1024px){.l-row{-ms-flex-direction:row;flex-direction:row}.l-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.l-column{-ms-flex-direction:column;flex-direction:column}.l-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}.l-main-start{-ms-flex-pack:start;justify-content:flex-start}.l-main-center{-ms-flex-pack:center;justify-content:center}.l-main-end{-ms-flex-pack:end;justify-content:flex-end}.l-main-justify{-ms-flex-pack:justify;justify-content:space-between}.l-main-distribute{-ms-flex-pack:space-evenly;justify-content:space-evenly}.l-cross-baseline{-ms-flex-align:baseline;align-items:baseline;-ms-flex-line-pack:baseline;align-content:baseline}.l-cross-start{-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.l-cross-center{-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.l-cross-end{-ms-flex-align:end;align-items:flex-end;-ms-flex-line-pack:end;align-content:flex-end}}@media screen and (min-width: 1024px){.lg-row{-ms-flex-direction:row;flex-direction:row}.lg-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.lg-column{-ms-flex-direction:column;flex-direction:column}.lg-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}.lg-main-start{-ms-flex-pack:start;justify-content:flex-start}.lg-main-center{-ms-flex-pack:center;justify-content:center}.lg-main-end{-ms-flex-pack:end;justify-content:flex-end}.lg-main-justify{-ms-flex-pack:justify;justify-content:space-between}.lg-main-distribute{-ms-flex-pack:space-evenly;justify-content:space-evenly}.lg-cross-baseline{-ms-flex-align:baseline;align-items:baseline;-ms-flex-line-pack:baseline;align-content:baseline}.lg-cross-start{-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.lg-cross-center{-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.lg-cross-end{-ms-flex-align:end;align-items:flex-end;-ms-flex-line-pack:end;align-content:flex-end}}@media screen and (min-width: 1440px){.xl-row{-ms-flex-direction:row;flex-direction:row}.xl-row-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.xl-column{-ms-flex-direction:column;flex-direction:column}.xl-column-reverse{-ms-flex-direction:column-reverse;flex-direction:column-reverse}.xl-main-start{-ms-flex-pack:start;justify-content:flex-start}.xl-main-center{-ms-flex-pack:center;justify-content:center}.xl-main-end{-ms-flex-pack:end;justify-content:flex-end}.xl-main-justify{-ms-flex-pack:justify;justify-content:space-between}.xl-main-distribute{-ms-flex-pack:space-evenly;justify-content:space-evenly}.xl-cross-baseline{-ms-flex-align:baseline;align-items:baseline;-ms-flex-line-pack:baseline;align-content:baseline}.xl-cross-start{-ms-flex-align:start;align-items:flex-start;-ms-flex-line-pack:start;align-content:flex-start}.xl-cross-center{-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}.xl-cross-end{-ms-flex-align:end;align-items:flex-end;-ms-flex-line-pack:end;align-content:flex-end}}.from-s{display:none}.to-s{display:none}@media screen and (max-width: 639px){.from-m{display:none}}@media screen and (min-width: 640px){.to-m{display:none}}@media screen and (max-width: 1023px){.from-l{display:none}}@media screen and (min-width: 1024px){.to-l{display:none}}@media screen and (max-width: 1023px){.from-lg{display:none}}@media screen and (min-width: 1024px){.to-lg{display:none}}@media screen and (max-width: 1439px){.from-xl{display:none}}@media screen and (min-width: 1440px){.to-xl{display:none}}.button{display:inline-block;padding:.5em 1em;color:#FFF;background:var(--color);cursor:pointer;text-decoration:none;line-height:inherit;border-radius:.25rem;transition:transform .05s;border:none}.button:hover{background:var(--color-alt)}.z-back{z-index:var(--z-back)}.z-normal{z-index:var(--z-normal)}.z-tooltip{z-index:var(--z-tooltip)}.z-fixed{z-index:var(--z-fixed)}.z-modal{z-index:var(--z-modal)}.s-border,.card__teachers span{border:1px solid var(--border-color)}.s-border-none{border:none}.s-radius,.card__teachers span{border-radius:var(--border-radius)}.s-border-top{border-top:1px solid var(--border-color)}.s-border-none{border-top:none}.s-border-right{border-right:1px solid var(--border-color)}.s-border-none{border-right:none}.s-border-bottom{border-bottom:1px solid var(--border-color)}.s-border-none{border-bottom:none}.s-border-left{border-left:1px solid var(--border-color)}.s-border-none{border-left:none}.s-radius-tl{border-top-left-radius:var(--border-radius)}.s-radius-tr{border-top-right-radius:var(--border-radius)}.s-radius-bl{border-bottom-left-radius:var(--border-radius)}.s-radius-br{border-bottom-right-radius:var(--border-radius)}.s-radius-0{border-radius:0}.s-radius-1{border-radius:.5rem}.s-radius-2{border-radius:1rem}.s-radius-3{border-radius:1.5rem}.s-radius-4{border-radius:2rem}.s-radius-05{border-radius:.25rem}.s-radius-tl-0{border-top-left-radius:0}.s-radius-tl-1{border-top-left-radius:.5rem}.s-radius-tl-2{border-top-left-radius:1rem}.s-radius-tl-3{border-top-left-radius:1.5rem}.s-radius-tl-4{border-top-left-radius:2rem}.s-radius-tl-05{border-top-left-radius:.25rem}.s-radius-tr-0{border-top-right-radius:0}.s-radius-tr-1{border-top-right-radius:.5rem}.s-radius-tr-2{border-top-right-radius:1rem}.s-radius-tr-3{border-top-right-radius:1.5rem}.s-radius-tr-4{border-top-right-radius:2rem}.s-radius-tr-05{border-top-right-radius:.25rem}.s-radius-bl-0{border-bottom-left-radius:0}.s-radius-bl-1{border-bottom-left-radius:.5rem}.s-radius-bl-2{border-bottom-left-radius:1rem}.s-radius-bl-3{border-bottom-left-radius:1.5rem}.s-radius-bl-4{border-bottom-left-radius:2rem}.s-radius-bl-05{border-bottom-left-radius:.25rem}.s-radius-br-0{border-bottom-right-radius:0}.s-radius-br-1{border-bottom-right-radius:.5rem}.s-radius-br-2{border-bottom-right-radius:1rem}.s-radius-br-3{border-bottom-right-radius:1.5rem}.s-radius-br-4{border-bottom-right-radius:2rem}.s-radius-br-05{border-bottom-right-radius:.25rem}.s-radius-tl-none{border-top-left-radius:0}.s-radius-tr-none{border-top-right-radius:0}.s-radius-bl-none{border-bottom-left-radius:0}.s-radius-br-none{border-bottom-right-radius:0}.s-radius-none{border-radius:none}.s-bg-blue{background-color:var(--color)}.s-bg-white{background-color:#FFF}.s-bg-grey{background-color:var(--light-bg)}.s-bg-none{background-color:transparent}.s-ratio-1-1{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.s-ratio-1-2{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.s-ratio-1-3{width:100%;height:0;overflow:hidden;padding-bottom:300%;position:relative}.s-ratio-1-4{width:100%;height:0;overflow:hidden;padding-bottom:400%;position:relative}.s-ratio-2-1{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.s-ratio-2-2{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.s-ratio-2-3{width:100%;height:0;overflow:hidden;padding-bottom:150%;position:relative}.s-ratio-2-4{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.s-ratio-3-1{width:100%;height:0;overflow:hidden;padding-bottom:33.33333%;position:relative}.s-ratio-3-2{width:100%;height:0;overflow:hidden;padding-bottom:66.66667%;position:relative}.s-ratio-3-3{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.s-ratio-3-4{width:100%;height:0;overflow:hidden;padding-bottom:133.33333%;position:relative}.s-ratio-4-1{width:100%;height:0;overflow:hidden;padding-bottom:25%;position:relative}.s-ratio-4-2{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.s-ratio-4-3{width:100%;height:0;overflow:hidden;padding-bottom:75%;position:relative}.s-ratio-4-4{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.s-ratio-16-9{width:100%;height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.s-ratio-9-16{width:100%;height:0;overflow:hidden;padding-bottom:177.77778%;position:relative}.s-ratio-21-9{width:100%;height:0;overflow:hidden;padding-bottom:42.85714%;position:relative}.s-shadow{box-shadow:0 0 1rem #CCC}.s-shadow-bottom,.card:hover{box-shadow:0 0.5rem 1rem -0.5rem #CCC}.s-shadow-top{box-shadow:0 -0.5rem 1rem -0.5rem #CCC}.s-shadow-right{box-shadow:0.5rem 0 1rem -0.5rem #CCC}.s-shadow-left{box-shadow:-0.5rem 0 1rem -0.5rem #CCC}.s-shadow-none{box-shadow:none}.s-fxn{-ms-flex:none;flex:none}.s-fxw{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.s-fxg{-ms-flex-positive:1;flex-grow:1}.s-opacity-1{opacity:.1}.s-opacity-2{opacity:.2}.s-opacity-3{opacity:.3}.s-opacity-4{opacity:.4}.s-opacity-5{opacity:.5}.s-opacity-6{opacity:.6}.s-opacity-7{opacity:.7}.s-opacity-8{opacity:.8}.s-opacity-9{opacity:.9}.s-opacity-10{opacity:1}@media screen and (min-width: 640px){.m-border{border:1px solid var(--border-color)}.m-border-none{border:none}.m-radius{border-radius:var(--border-radius)}.m-border-top{border-top:1px solid var(--border-color)}.m-border-none{border-top:none}.m-border-right{border-right:1px solid var(--border-color)}.m-border-none{border-right:none}.m-border-bottom{border-bottom:1px solid var(--border-color)}.m-border-none{border-bottom:none}.m-border-left{border-left:1px solid var(--border-color)}.m-border-none{border-left:none}.m-radius-tl{border-top-left-radius:var(--border-radius)}.m-radius-tr{border-top-right-radius:var(--border-radius)}.m-radius-bl{border-bottom-left-radius:var(--border-radius)}.m-radius-br{border-bottom-right-radius:var(--border-radius)}.m-radius-0{border-radius:0}.m-radius-1{border-radius:.5rem}.m-radius-2{border-radius:1rem}.m-radius-3{border-radius:1.5rem}.m-radius-4{border-radius:2rem}.m-radius-05{border-radius:.25rem}.m-radius-tl-0{border-top-left-radius:0}.m-radius-tl-1{border-top-left-radius:.5rem}.m-radius-tl-2{border-top-left-radius:1rem}.m-radius-tl-3{border-top-left-radius:1.5rem}.m-radius-tl-4{border-top-left-radius:2rem}.m-radius-tl-05{border-top-left-radius:.25rem}.m-radius-tr-0{border-top-right-radius:0}.m-radius-tr-1{border-top-right-radius:.5rem}.m-radius-tr-2{border-top-right-radius:1rem}.m-radius-tr-3{border-top-right-radius:1.5rem}.m-radius-tr-4{border-top-right-radius:2rem}.m-radius-tr-05{border-top-right-radius:.25rem}.m-radius-bl-0{border-bottom-left-radius:0}.m-radius-bl-1{border-bottom-left-radius:.5rem}.m-radius-bl-2{border-bottom-left-radius:1rem}.m-radius-bl-3{border-bottom-left-radius:1.5rem}.m-radius-bl-4{border-bottom-left-radius:2rem}.m-radius-bl-05{border-bottom-left-radius:.25rem}.m-radius-br-0{border-bottom-right-radius:0}.m-radius-br-1{border-bottom-right-radius:.5rem}.m-radius-br-2{border-bottom-right-radius:1rem}.m-radius-br-3{border-bottom-right-radius:1.5rem}.m-radius-br-4{border-bottom-right-radius:2rem}.m-radius-br-05{border-bottom-right-radius:.25rem}.m-radius-tl-none{border-top-left-radius:0}.m-radius-tr-none{border-top-right-radius:0}.m-radius-bl-none{border-bottom-left-radius:0}.m-radius-br-none{border-bottom-right-radius:0}.m-radius-none{border-radius:none}.m-bg-blue{background-color:var(--color)}.m-bg-white{background-color:#FFF}.m-bg-grey{background-color:var(--light-bg)}.m-bg-none{background-color:transparent}.m-ratio-1-1{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.m-ratio-1-2{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.m-ratio-1-3{width:100%;height:0;overflow:hidden;padding-bottom:300%;position:relative}.m-ratio-1-4{width:100%;height:0;overflow:hidden;padding-bottom:400%;position:relative}.m-ratio-2-1{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.m-ratio-2-2{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.m-ratio-2-3{width:100%;height:0;overflow:hidden;padding-bottom:150%;position:relative}.m-ratio-2-4{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.m-ratio-3-1{width:100%;height:0;overflow:hidden;padding-bottom:33.33333%;position:relative}.m-ratio-3-2{width:100%;height:0;overflow:hidden;padding-bottom:66.66667%;position:relative}.m-ratio-3-3{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.m-ratio-3-4{width:100%;height:0;overflow:hidden;padding-bottom:133.33333%;position:relative}.m-ratio-4-1{width:100%;height:0;overflow:hidden;padding-bottom:25%;position:relative}.m-ratio-4-2{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.m-ratio-4-3{width:100%;height:0;overflow:hidden;padding-bottom:75%;position:relative}.m-ratio-4-4{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.m-ratio-16-9{width:100%;height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.m-ratio-9-16{width:100%;height:0;overflow:hidden;padding-bottom:177.77778%;position:relative}.m-ratio-21-9{width:100%;height:0;overflow:hidden;padding-bottom:42.85714%;position:relative}.m-shadow{box-shadow:0 0 1rem #CCC}.m-shadow-bottom{box-shadow:0 0.5rem 1rem -0.5rem #CCC}.m-shadow-top{box-shadow:0 -0.5rem 1rem -0.5rem #CCC}.m-shadow-right{box-shadow:0.5rem 0 1rem -0.5rem #CCC}.m-shadow-left{box-shadow:-0.5rem 0 1rem -0.5rem #CCC}.m-shadow-none{box-shadow:none}.m-fxn{-ms-flex:none;flex:none}.m-fxw{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.m-fxg{-ms-flex-positive:1;flex-grow:1}.m-opacity-1{opacity:.1}.m-opacity-2{opacity:.2}.m-opacity-3{opacity:.3}.m-opacity-4{opacity:.4}.m-opacity-5{opacity:.5}.m-opacity-6{opacity:.6}.m-opacity-7{opacity:.7}.m-opacity-8{opacity:.8}.m-opacity-9{opacity:.9}.m-opacity-10{opacity:1}}@media screen and (min-width: 1024px){.l-border{border:1px solid var(--border-color)}.l-border-none{border:none}.l-radius{border-radius:var(--border-radius)}.l-border-top{border-top:1px solid var(--border-color)}.l-border-none{border-top:none}.l-border-right{border-right:1px solid var(--border-color)}.l-border-none{border-right:none}.l-border-bottom{border-bottom:1px solid var(--border-color)}.l-border-none{border-bottom:none}.l-border-left{border-left:1px solid var(--border-color)}.l-border-none{border-left:none}.l-radius-tl{border-top-left-radius:var(--border-radius)}.l-radius-tr{border-top-right-radius:var(--border-radius)}.l-radius-bl{border-bottom-left-radius:var(--border-radius)}.l-radius-br{border-bottom-right-radius:var(--border-radius)}.l-radius-0{border-radius:0}.l-radius-1{border-radius:.5rem}.l-radius-2{border-radius:1rem}.l-radius-3{border-radius:1.5rem}.l-radius-4{border-radius:2rem}.l-radius-05{border-radius:.25rem}.l-radius-tl-0{border-top-left-radius:0}.l-radius-tl-1{border-top-left-radius:.5rem}.l-radius-tl-2{border-top-left-radius:1rem}.l-radius-tl-3{border-top-left-radius:1.5rem}.l-radius-tl-4{border-top-left-radius:2rem}.l-radius-tl-05{border-top-left-radius:.25rem}.l-radius-tr-0{border-top-right-radius:0}.l-radius-tr-1{border-top-right-radius:.5rem}.l-radius-tr-2{border-top-right-radius:1rem}.l-radius-tr-3{border-top-right-radius:1.5rem}.l-radius-tr-4{border-top-right-radius:2rem}.l-radius-tr-05{border-top-right-radius:.25rem}.l-radius-bl-0{border-bottom-left-radius:0}.l-radius-bl-1{border-bottom-left-radius:.5rem}.l-radius-bl-2{border-bottom-left-radius:1rem}.l-radius-bl-3{border-bottom-left-radius:1.5rem}.l-radius-bl-4{border-bottom-left-radius:2rem}.l-radius-bl-05{border-bottom-left-radius:.25rem}.l-radius-br-0{border-bottom-right-radius:0}.l-radius-br-1{border-bottom-right-radius:.5rem}.l-radius-br-2{border-bottom-right-radius:1rem}.l-radius-br-3{border-bottom-right-radius:1.5rem}.l-radius-br-4{border-bottom-right-radius:2rem}.l-radius-br-05{border-bottom-right-radius:.25rem}.l-radius-tl-none{border-top-left-radius:0}.l-radius-tr-none{border-top-right-radius:0}.l-radius-bl-none{border-bottom-left-radius:0}.l-radius-br-none{border-bottom-right-radius:0}.l-radius-none{border-radius:none}.l-bg-blue{background-color:var(--color)}.l-bg-white{background-color:#FFF}.l-bg-grey{background-color:var(--light-bg)}.l-bg-none{background-color:transparent}.l-ratio-1-1{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.l-ratio-1-2{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.l-ratio-1-3{width:100%;height:0;overflow:hidden;padding-bottom:300%;position:relative}.l-ratio-1-4{width:100%;height:0;overflow:hidden;padding-bottom:400%;position:relative}.l-ratio-2-1{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.l-ratio-2-2{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.l-ratio-2-3{width:100%;height:0;overflow:hidden;padding-bottom:150%;position:relative}.l-ratio-2-4{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.l-ratio-3-1{width:100%;height:0;overflow:hidden;padding-bottom:33.33333%;position:relative}.l-ratio-3-2{width:100%;height:0;overflow:hidden;padding-bottom:66.66667%;position:relative}.l-ratio-3-3{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.l-ratio-3-4{width:100%;height:0;overflow:hidden;padding-bottom:133.33333%;position:relative}.l-ratio-4-1{width:100%;height:0;overflow:hidden;padding-bottom:25%;position:relative}.l-ratio-4-2{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.l-ratio-4-3{width:100%;height:0;overflow:hidden;padding-bottom:75%;position:relative}.l-ratio-4-4{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.l-ratio-16-9{width:100%;height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.l-ratio-9-16{width:100%;height:0;overflow:hidden;padding-bottom:177.77778%;position:relative}.l-ratio-21-9{width:100%;height:0;overflow:hidden;padding-bottom:42.85714%;position:relative}.l-shadow{box-shadow:0 0 1rem #CCC}.l-shadow-bottom{box-shadow:0 0.5rem 1rem -0.5rem #CCC}.l-shadow-top{box-shadow:0 -0.5rem 1rem -0.5rem #CCC}.l-shadow-right{box-shadow:0.5rem 0 1rem -0.5rem #CCC}.l-shadow-left{box-shadow:-0.5rem 0 1rem -0.5rem #CCC}.l-shadow-none{box-shadow:none}.l-fxn{-ms-flex:none;flex:none}.l-fxw{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.l-fxg{-ms-flex-positive:1;flex-grow:1}.l-opacity-1{opacity:.1}.l-opacity-2{opacity:.2}.l-opacity-3{opacity:.3}.l-opacity-4{opacity:.4}.l-opacity-5{opacity:.5}.l-opacity-6{opacity:.6}.l-opacity-7{opacity:.7}.l-opacity-8{opacity:.8}.l-opacity-9{opacity:.9}.l-opacity-10{opacity:1}}@media screen and (min-width: 1024px){.lg-border{border:1px solid var(--border-color)}.lg-border-none{border:none}.lg-radius{border-radius:var(--border-radius)}.lg-border-top{border-top:1px solid var(--border-color)}.lg-border-none{border-top:none}.lg-border-right{border-right:1px solid var(--border-color)}.lg-border-none{border-right:none}.lg-border-bottom{border-bottom:1px solid var(--border-color)}.lg-border-none{border-bottom:none}.lg-border-left{border-left:1px solid var(--border-color)}.lg-border-none{border-left:none}.lg-radius-tl{border-top-left-radius:var(--border-radius)}.lg-radius-tr{border-top-right-radius:var(--border-radius)}.lg-radius-bl{border-bottom-left-radius:var(--border-radius)}.lg-radius-br{border-bottom-right-radius:var(--border-radius)}.lg-radius-0{border-radius:0}.lg-radius-1{border-radius:.5rem}.lg-radius-2{border-radius:1rem}.lg-radius-3{border-radius:1.5rem}.lg-radius-4{border-radius:2rem}.lg-radius-05{border-radius:.25rem}.lg-radius-tl-0{border-top-left-radius:0}.lg-radius-tl-1{border-top-left-radius:.5rem}.lg-radius-tl-2{border-top-left-radius:1rem}.lg-radius-tl-3{border-top-left-radius:1.5rem}.lg-radius-tl-4{border-top-left-radius:2rem}.lg-radius-tl-05{border-top-left-radius:.25rem}.lg-radius-tr-0{border-top-right-radius:0}.lg-radius-tr-1{border-top-right-radius:.5rem}.lg-radius-tr-2{border-top-right-radius:1rem}.lg-radius-tr-3{border-top-right-radius:1.5rem}.lg-radius-tr-4{border-top-right-radius:2rem}.lg-radius-tr-05{border-top-right-radius:.25rem}.lg-radius-bl-0{border-bottom-left-radius:0}.lg-radius-bl-1{border-bottom-left-radius:.5rem}.lg-radius-bl-2{border-bottom-left-radius:1rem}.lg-radius-bl-3{border-bottom-left-radius:1.5rem}.lg-radius-bl-4{border-bottom-left-radius:2rem}.lg-radius-bl-05{border-bottom-left-radius:.25rem}.lg-radius-br-0{border-bottom-right-radius:0}.lg-radius-br-1{border-bottom-right-radius:.5rem}.lg-radius-br-2{border-bottom-right-radius:1rem}.lg-radius-br-3{border-bottom-right-radius:1.5rem}.lg-radius-br-4{border-bottom-right-radius:2rem}.lg-radius-br-05{border-bottom-right-radius:.25rem}.lg-radius-tl-none{border-top-left-radius:0}.lg-radius-tr-none{border-top-right-radius:0}.lg-radius-bl-none{border-bottom-left-radius:0}.lg-radius-br-none{border-bottom-right-radius:0}.lg-radius-none{border-radius:none}.lg-bg-blue{background-color:var(--color)}.lg-bg-white{background-color:#FFF}.lg-bg-grey{background-color:var(--light-bg)}.lg-bg-none{background-color:transparent}.lg-ratio-1-1{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.lg-ratio-1-2{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.lg-ratio-1-3{width:100%;height:0;overflow:hidden;padding-bottom:300%;position:relative}.lg-ratio-1-4{width:100%;height:0;overflow:hidden;padding-bottom:400%;position:relative}.lg-ratio-2-1{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.lg-ratio-2-2{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.lg-ratio-2-3{width:100%;height:0;overflow:hidden;padding-bottom:150%;position:relative}.lg-ratio-2-4{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.lg-ratio-3-1{width:100%;height:0;overflow:hidden;padding-bottom:33.33333%;position:relative}.lg-ratio-3-2{width:100%;height:0;overflow:hidden;padding-bottom:66.66667%;position:relative}.lg-ratio-3-3{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.lg-ratio-3-4{width:100%;height:0;overflow:hidden;padding-bottom:133.33333%;position:relative}.lg-ratio-4-1{width:100%;height:0;overflow:hidden;padding-bottom:25%;position:relative}.lg-ratio-4-2{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.lg-ratio-4-3{width:100%;height:0;overflow:hidden;padding-bottom:75%;position:relative}.lg-ratio-4-4{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.lg-ratio-16-9{width:100%;height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.lg-ratio-9-16{width:100%;height:0;overflow:hidden;padding-bottom:177.77778%;position:relative}.lg-ratio-21-9{width:100%;height:0;overflow:hidden;padding-bottom:42.85714%;position:relative}.lg-shadow{box-shadow:0 0 1rem #CCC}.lg-shadow-bottom{box-shadow:0 0.5rem 1rem -0.5rem #CCC}.lg-shadow-top{box-shadow:0 -0.5rem 1rem -0.5rem #CCC}.lg-shadow-right{box-shadow:0.5rem 0 1rem -0.5rem #CCC}.lg-shadow-left{box-shadow:-0.5rem 0 1rem -0.5rem #CCC}.lg-shadow-none{box-shadow:none}.lg-fxn{-ms-flex:none;flex:none}.lg-fxw{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.lg-fxg{-ms-flex-positive:1;flex-grow:1}.lg-opacity-1{opacity:.1}.lg-opacity-2{opacity:.2}.lg-opacity-3{opacity:.3}.lg-opacity-4{opacity:.4}.lg-opacity-5{opacity:.5}.lg-opacity-6{opacity:.6}.lg-opacity-7{opacity:.7}.lg-opacity-8{opacity:.8}.lg-opacity-9{opacity:.9}.lg-opacity-10{opacity:1}}@media screen and (min-width: 1440px){.xl-border{border:1px solid var(--border-color)}.xl-border-none{border:none}.xl-radius{border-radius:var(--border-radius)}.xl-border-top{border-top:1px solid var(--border-color)}.xl-border-none{border-top:none}.xl-border-right{border-right:1px solid var(--border-color)}.xl-border-none{border-right:none}.xl-border-bottom{border-bottom:1px solid var(--border-color)}.xl-border-none{border-bottom:none}.xl-border-left{border-left:1px solid var(--border-color)}.xl-border-none{border-left:none}.xl-radius-tl{border-top-left-radius:var(--border-radius)}.xl-radius-tr{border-top-right-radius:var(--border-radius)}.xl-radius-bl{border-bottom-left-radius:var(--border-radius)}.xl-radius-br{border-bottom-right-radius:var(--border-radius)}.xl-radius-0{border-radius:0}.xl-radius-1{border-radius:.5rem}.xl-radius-2{border-radius:1rem}.xl-radius-3{border-radius:1.5rem}.xl-radius-4{border-radius:2rem}.xl-radius-05{border-radius:.25rem}.xl-radius-tl-0{border-top-left-radius:0}.xl-radius-tl-1{border-top-left-radius:.5rem}.xl-radius-tl-2{border-top-left-radius:1rem}.xl-radius-tl-3{border-top-left-radius:1.5rem}.xl-radius-tl-4{border-top-left-radius:2rem}.xl-radius-tl-05{border-top-left-radius:.25rem}.xl-radius-tr-0{border-top-right-radius:0}.xl-radius-tr-1{border-top-right-radius:.5rem}.xl-radius-tr-2{border-top-right-radius:1rem}.xl-radius-tr-3{border-top-right-radius:1.5rem}.xl-radius-tr-4{border-top-right-radius:2rem}.xl-radius-tr-05{border-top-right-radius:.25rem}.xl-radius-bl-0{border-bottom-left-radius:0}.xl-radius-bl-1{border-bottom-left-radius:.5rem}.xl-radius-bl-2{border-bottom-left-radius:1rem}.xl-radius-bl-3{border-bottom-left-radius:1.5rem}.xl-radius-bl-4{border-bottom-left-radius:2rem}.xl-radius-bl-05{border-bottom-left-radius:.25rem}.xl-radius-br-0{border-bottom-right-radius:0}.xl-radius-br-1{border-bottom-right-radius:.5rem}.xl-radius-br-2{border-bottom-right-radius:1rem}.xl-radius-br-3{border-bottom-right-radius:1.5rem}.xl-radius-br-4{border-bottom-right-radius:2rem}.xl-radius-br-05{border-bottom-right-radius:.25rem}.xl-radius-tl-none{border-top-left-radius:0}.xl-radius-tr-none{border-top-right-radius:0}.xl-radius-bl-none{border-bottom-left-radius:0}.xl-radius-br-none{border-bottom-right-radius:0}.xl-radius-none{border-radius:none}.xl-bg-blue{background-color:var(--color)}.xl-bg-white{background-color:#FFF}.xl-bg-grey{background-color:var(--light-bg)}.xl-bg-none{background-color:transparent}.xl-ratio-1-1{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.xl-ratio-1-2{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.xl-ratio-1-3{width:100%;height:0;overflow:hidden;padding-bottom:300%;position:relative}.xl-ratio-1-4{width:100%;height:0;overflow:hidden;padding-bottom:400%;position:relative}.xl-ratio-2-1{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.xl-ratio-2-2{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.xl-ratio-2-3{width:100%;height:0;overflow:hidden;padding-bottom:150%;position:relative}.xl-ratio-2-4{width:100%;height:0;overflow:hidden;padding-bottom:200%;position:relative}.xl-ratio-3-1{width:100%;height:0;overflow:hidden;padding-bottom:33.33333%;position:relative}.xl-ratio-3-2{width:100%;height:0;overflow:hidden;padding-bottom:66.66667%;position:relative}.xl-ratio-3-3{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.xl-ratio-3-4{width:100%;height:0;overflow:hidden;padding-bottom:133.33333%;position:relative}.xl-ratio-4-1{width:100%;height:0;overflow:hidden;padding-bottom:25%;position:relative}.xl-ratio-4-2{width:100%;height:0;overflow:hidden;padding-bottom:50%;position:relative}.xl-ratio-4-3{width:100%;height:0;overflow:hidden;padding-bottom:75%;position:relative}.xl-ratio-4-4{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.xl-ratio-16-9{width:100%;height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.xl-ratio-9-16{width:100%;height:0;overflow:hidden;padding-bottom:177.77778%;position:relative}.xl-ratio-21-9{width:100%;height:0;overflow:hidden;padding-bottom:42.85714%;position:relative}.xl-shadow{box-shadow:0 0 1rem #CCC}.xl-shadow-bottom{box-shadow:0 0.5rem 1rem -0.5rem #CCC}.xl-shadow-top{box-shadow:0 -0.5rem 1rem -0.5rem #CCC}.xl-shadow-right{box-shadow:0.5rem 0 1rem -0.5rem #CCC}.xl-shadow-left{box-shadow:-0.5rem 0 1rem -0.5rem #CCC}.xl-shadow-none{box-shadow:none}.xl-fxn{-ms-flex:none;flex:none}.xl-fxw{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.xl-fxg{-ms-flex-positive:1;flex-grow:1}.xl-opacity-1{opacity:.1}.xl-opacity-2{opacity:.2}.xl-opacity-3{opacity:.3}.xl-opacity-4{opacity:.4}.xl-opacity-5{opacity:.5}.xl-opacity-6{opacity:.6}.xl-opacity-7{opacity:.7}.xl-opacity-8{opacity:.8}.xl-opacity-9{opacity:.9}.xl-opacity-10{opacity:1}}.circle,.square{width:100%;height:0;overflow:hidden;padding-bottom:100%;position:relative}.circle{border-radius:50%}.img-container{position:relative}.img-container img{width:100%;height:100%;position:absolute;top:0;left:0;-o-object-fit:cover;object-fit:cover}.ed-video{height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.ed-video>iframe,.ed-video>video,.ed-video>.video{position:absolute;top:0;left:0;width:100%;height:100%}:root{--color: #007BDF;--color-alt: #006DC6;--border-color: #DFE0E0;--light-bg: #F0F0F0;--border-radius: .25rem;--vertical-block-space: 1rem;--vertical-content-space: 1rem;--gap: 1rem;--max-width: 1200px}@media screen and (min-width: 1024px){:root{--vertical-block-space: 2rem;--gap: 2rem}}:root{--header-height: 3rem}@media screen and (min-width: 1024px){:root{--header-height: 4rem}}:root{--z-back: -10;--z-normal: 1;--z-tooltip: 10;--z-fixed: 100;--z-modal: 1000}:root{--heading-font: 'Raleway', sans-serif;--body-font: 'Open Sans', sans-serif;--bigger-font-size: 1.75rem;--h1-font-size: 1.5rem;--h2-font-size: 1.25rem;--h3-font-size: 1rem;--normal-font-size: .9375rem;--small-font-size: .8125rem;--smaller-font-size: .75rem;--heading-line-height: 1.3;--body-line-height: 1.6}@media screen and (min-width: 1024px){:root{--bigger-font-size: 2.25rem;--h1-font-size: 2rem;--h2-font-size: 1.5rem;--h3-font-size: 1.25rem;--normal-font-size: 1rem;--small-font-size: .875rem;--smaller-font-size: .8125rem}}.bigger-title{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:800;letter-spacing:0.015em;color:var(--title-color);font-size:var(--bigger-font-size)}.main-banner .bigger-title{color:var(--white-color)}h1,.t1{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:800;letter-spacing:0.015em;color:var(--title-color);font-size:var(--h1-font-size)}.main-banner h1,.main-banner .t1{color:var(--white-color)}h2,.t2{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:800;letter-spacing:0.015em;color:var(--title-color);font-size:var(--h2-font-size)}.main-banner h2,.main-banner .t2{color:var(--white-color)}h3,.t3{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:700;letter-spacing:0.015em;color:var(--title-color);font-size:var(--h3-font-size)}.main-banner h3,.main-banner .t3{color:var(--white-color)}h4,.t4{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:700;letter-spacing:0.015em;color:var(--title-color);font-size:var(--normal-font-size)}.main-banner h4,.main-banner .t4{color:var(--white-color)}h5,.t5{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:700;letter-spacing:0.015em;color:var(--title-color);font-size:var(--small-font-size)}.main-banner h5,.main-banner .t5{color:var(--white-color)}h6,.t6{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:700;letter-spacing:0.015em;color:var(--title-color);font-size:var(--smaller-font-size)}.main-banner h6,.main-banner .t6{color:var(--white-color)}.biggest{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--h1-font-size)}.bigger{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--h2-font-size)}.big{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--h3-font-size)}.normal{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--normal-font-size)}.small{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--small-font-size)}.smaller{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--smaller-font-size)}body{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--normal-font-size);color:var(--text-color)}.body-font{font-family:var(--body-font)}.heading-font{font-family:var(--heading-font)}blockquote{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--h3-font-size);font-style:italic;letter-spacing:.01em;margin-left:2rem;position:relative;opacity:.9}@media screen and (min-width: 1024px){blockquote{margin-left:4rem}}blockquote::before{content:'\201C';font-family:Georgia, serif;font-size:3em;position:absolute;top:.5em;left:-.6em;line-height:0;letter-spacing:-0.5em}a{color:var(--second-color)}main a{text-decoration:none}main a:hover{text-decoration:underline}::-moz-selection{background:var(--second-color);color:#FFF}::selection{background:var(--second-color);color:#FFF}*,*::before,*::after{box-sizing:border-box}body{margin:0;background:var(--body-bg)}a{color:var(--blue-400)}strong{font-weight:700}body{margin:var(--header-height) 0 0 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:calc(100vh - var(--header-height))}.foro-title{position:relative;padding-left:0.75rem}@media screen and (min-width: 1024px){.foro-title{padding-left:1rem}}.foro-title::before{content:'';position:absolute;left:0;height:100%;width:0.35rem;border-radius:0.25rem;background-color:#007BDF}@media screen and (min-width: 1024px){.foro-title::before{width:0.5rem}}.section-comments,.section-answer{display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;grid-gap:2rem}.section-comments{-ms-grid-column:span 2;grid-column:span 2;margin-bottom:0}@media screen and (min-width: 640px){.section-comments{-ms-grid-column:2;grid-column:2}}.section-answer{padding:2rem 0 0 2rem}code[class*="language-"],pre[class*="language-"]{color:#F8F8F2;background:none;text-shadow:0 1px rgba(0,0,0,0.3);font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;border:none;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;overflow:auto;border-radius:0.3em}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#272822}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray}.token.punctuation{color:#F8F8F2}.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#F92672}.token.boolean,.token.number{color:#AE81FF}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#A6E22E}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#F8F8F2}.token.atrule,.token.attr-value,.token.function{color:#E6DB74}.token.keyword{color:#66D9EF}.token.regex,.token.important{color:#FD971F}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre.line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}pre.code-toolbar{position:relative}pre.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}pre.code-toolbar:hover>.toolbar{opacity:1}pre.code-toolbar>.toolbar .toolbar-item{display:inline-block}pre.code-toolbar>.toolbar a{cursor:pointer}pre.code-toolbar>.toolbar button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}pre.code-toolbar>.toolbar a,pre.code-toolbar>.toolbar button,pre.code-toolbar>.toolbar span{color:#BBB;font-size:.8em;padding:0 .5em;background:#F5F2F0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}pre.code-toolbar>.toolbar a:hover,pre.code-toolbar>.toolbar a:focus,pre.code-toolbar>.toolbar button:hover,pre.code-toolbar>.toolbar button:focus,pre.code-toolbar>.toolbar span:hover,pre.code-toolbar>.toolbar span:focus{color:inherit;text-decoration:none}.svg-icon{height:1em;width:1em;display:inline-block;fill:currentcolor}.svg-icon.before{margin-right:.3em}.svg-stroke{fill:none;stroke:currentColor}.button{display:inline-block;padding:0.5rem 1rem;background-color:var(--color);color:#FFF;font-weight:600;cursor:pointer;text-decoration:none;line-height:inherit;border-radius:0.25rem;transition:transform 0.05s;border:1px solid var(--color);text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.button:hover{background-color:var(--color-alt);text-decoration:inherit}.button:active{transform:scale(0.99)}.button--tiny{padding:.25rem .5rem;font-size:var(--small-font-size)}.button.full{margin-right:0;margin-left:0;width:100%}.button--secondary,.button--second{--color-button: var(--second-color);--color-button-alt: var(--second-color-alt)}.button--alert{--color-button: var(--third-color);--color-button-alt: var(--third-color-alt)}.button--cta{--color-button: var(--accent-color);--color-button-alt: var(--accent-color-alt) }.button--dark{--color-button: var(--dark-color);--color-button-alt: var(--dark-color-alt)}.button--light{--color-button: #FFF;--color-button-alt: var(--color-light);color:var(--color-text)}[class*=button--ghost]{color:var(--color-button);background:none;border:1px solid}[class*=button--ghost]:hover{background:var(--color-button);color:#FFF;border-color:transparent}.button--ghost-alert,.button--ghost--alert{--color-button: var(--third-color)}.button--ghost-secondary,.button--ghost--secondary,.button--ghost-second,.button--ghost--second,.buttton--ghost.second-color{--color-button: var(--second-color)}.button--ghost-cta,.button--ghost--cta,.button-ghost.accent-color{--color-button: var(--accent-color)}.button--ghost-dark,.button--ghost--dark,.button--ghost.dark-color{--color-button: var(--dark-color)}.button--ghost-light,.button--ghost--light{--color-button: #FFF}.button--ghost-light:hover,.button--ghost--light:hover{color:var(--text-color)}.button--cancel{color:var(--color-button);background:none;border:1px solid;--color-button: var(--text-color)}.button--cancel:hover{background:var(--color-button);color:#FFF;border-color:transparent}.button.light-color{color:var(--text-color)}.disabled,.disabled:hover{--color: var(--light-color);background:var(--color);cursor:default;color:#888}.disabled:active,.disabled:hover:active{transform:none}.ghost{color:var(--color);background:none}.ghost:hover{background:var(--color);color:#fff}.ghost.color-light,.ghost.light-color{--color: var(--body-bg);color:var(--color)}.ghost.color-light:hover,.ghost.light-color:hover{color:var(--color-text)}.button.big{font-size:var(--normal-font-size);padding:0.75rem 1.5rem}.button.tiny{font-size:var(--small-font-size);padding:.25rem .5rem}.button.micro{font-size:var(--small-font-size);padding:0 .25rem}.main-menu a:hover{text-decoration:none}@media screen and (min-width: 1024px){.main-menu .active{font-weight:400;color:var(--third-color)}.main-menu .active::before{display:none}}body{position:relative;right:0;transition:right .5s}@media screen and (max-width: 1023px){body.main-menu-visible{right:80%;overflow-y:hidden}}.main-menu-toggle{position:relative;z-index:300;width:30px;height:20px;box-shadow:0 4px var(--text-color) inset;cursor:pointer}.main-menu-toggle::after,.main-menu-toggle::before{content:"";position:absolute;width:100%;height:4px;background-color:var(--text-color);bottom:0}.main-menu-toggle::after{bottom:8px}.main-menu{font-size:var(--small-font-size)}@media screen and (max-width: 1023px){.main-menu{position:fixed;top:var(--header-height);background:var(--dark-color);width:80%;right:-80%;padding:1em 1em 2em;height:calc(100vh - 64px);transition:right .5s;overflow-y:auto}.main-menu.show{right:0}}.main-menu ul{list-style:none;margin-top:0;margin-bottom:0;padding-left:0;margin-left:0}@media screen and (min-width: 1024px){.main-menu ul{display:-ms-flexbox;display:flex}}.main-menu li{color:#FFF;border-bottom:1px solid rgba(255,255,255,0.2);padding:1em 0;margin:0}@media screen and (min-width: 1024px){.main-menu li{color:var(--text-color);padding:0;margin-left:2rem}}.main-menu a{color:inherit}@media screen and (max-width: 1023px){.vertical-menu{max-height:0;transition:max-height .5s;overflow:hidden}.vertical-menu.show{max-height:1000px;margin-bottom:1em}.vertical-menu .active::before{display:none}}.vertical-menu ul{list-style:none;margin-top:0;margin-bottom:0;padding-left:0;margin-left:0}.vertical-menu li{padding:.4em 0;border-bottom:none;font-size:var(--small-font-size);color:var(--text-color)}.vertical-menu a{color:inherit;display:block}.vertical-menu a.active{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;color:var(--third-color)}.vertical-menu a.active::after{content:'';display:block;width:1rem;height:1rem;background:url(https://ux.ed.team/img/icon-right.svg) center right/contain no-repeat}.vertical-menu a.active:hover{text-decoration:none}.vertical-menu .active{border-bottom:1px solid var(--border-color);border-top:1px solid var(--border-color);margin-right:-1px;padding:.5em 0;border-right:1px solid var(--body-bg)}.vertical-menu .active::after{background:url(https://ux.ed.team/img/icon-right.svg) 100%/contain no-repeat !important;margin-right:1rem}.vertical-menu-toggle{--size: 3rem;width:var(--size);height:var(--size);background:var(--first-color);border-radius:50%;position:fixed;bottom:1rem;right:1rem;z-index:var(--z-fixed);transition:transform .3s;box-shadow:2px 2px 12px rgba(0,0,0,0.3)}.vertical-menu-toggle::before,.vertical-menu-toggle::after{content:"";width:calc(var(--size) * 0.6);height:calc(var(--size) * 0.1);background:#FFF;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);border-radius:calc(var(--size) * 0.05)}.vertical-menu-toggle::after{transform:translate(-50%, -50%) rotate(90deg)}.vertical-menu-toggle.active{transform:rotate(-45deg)}.section-title{margin-top:0}.main-banner{position:relative !important}@media screen and (max-width: 1023px){.vertical-menu{position:fixed;top:4rem;background:var(--dark-color);width:calc(100vw - 2rem);border:none;padding:0 1rem;height:calc(100vh - 12rem);overflow-y:auto;border-radius:.25rem;box-shadow:0 5px 5px -2px rgba(0,0,0,0.3);z-index:var(--z-fixed)}.vertical-menu::before{content:'Documentación';display:block;font-size:var(--h2-font-size);margin-bottom:1rem}.vertical-menu li{padding:.75em 0;border-bottom:1px solid rgba(83,87,90,0.2)}.vertical-menu li:last-child{border-bottom:none}.vertical-menu a{color:var(--border-color);padding-left:.5rem}.vertical-menu .active{border:none;-ms-flex-pack:start !important;justify-content:flex-start !important}.vertical-menu .active::after{-ms-flex-order:-1;order:-1;width:.5rem}.vertical-menu.show{padding:.5rem 1rem}}.main-logo{height:2rem;width:auto;display:block}ul,ol{padding-left:2rem;margin-left:0}.data-list,.feature-list{list-style:none;margin-top:0;margin-bottom:0;padding-left:0;margin-left:0;margin-bottom:2em}.data-list li,.feature-list li{border-bottom:1px solid var(--border-color);padding-top:1rem;padding-bottom:1rem;margin:0}.data-list li{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.data-list li>:first-child{margin-bottom:.5rem;max-width:75%}@media screen and (min-width: 1024px){.data-list li>:first-child{margin-bottom:0}}@media screen and (max-width: 1023px){.data-list li [class*="button"]{font-size:var(--small-font-size)}}.data-list li li div:last-child p{text-align:right}.data-list h1,.data-list h2,.data-list h3,.data-list h4,.data-list h5,.data-list h6,.data-list p,.data-list [class*="button"]{margin:0}.feature-list{padding-left:0}.feature-list li{padding-left:1.5rem;list-style:none;position:relative}.feature-list li::before{content:'';width:1rem;height:1rem;display:block;position:absolute;top:1.25em;left:0;color:var(--first-color);background:url(https://ux.ed.team/img/icon-check.svg)}:not(pre) code{font-family:var(--body-font);font-weight:400;line-height:var(--body-line-height);font-size:var(--small-font-size);font-family:Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace;background:var(--color-light);border:1px solid var(--color-border);color:var(--third-color);padding:0 .25em;margin:0 .1em;word-break:break-all}.center{text-align:center}.strong{font-weight:700}table{table-layout:fixed;border-collapse:collapse;font-size:var(--small-font-size);background:#FFF;min-width:100%}table th{background:#007BDF}table tr{border-bottom:1px solid rgba(0,123,223,0.3)}table tr:hover{background:rgba(0,123,223,0.1)}table.first-column td:first-child{background:rgba(0,123,223,0.75);color:#fff}table.center-content{text-align:center}table.center-content th{text-align:inherit}table th{font-family:'Open Sans', sans-serif;text-align:left;color:#FFF;font-weight:700;border-right:1px solid rgba(255,255,255,0.2)}table td{min-width:100px}table td:nth-child(even){background:rgba(238,238,243,0.2)}table td,table th{padding:1em 1.5em}.table-container{overflow-x:auto;border:1px solid var(--border-color);margin-bottom:2em;min-width:100%;position:relative;table-layout:fixed}.table--secondary th{background:#00CBFF}.table--secondary tr{border-bottom:1px solid rgba(0,203,255,0.3)}.table--secondary tr:hover{background:rgba(0,203,255,0.1)}.table--secondary.first-column td:first-child{background:rgba(0,203,255,0.75);color:#fff}.table--secondary.center-content{text-align:center}.table--secondary.center-content th{text-align:inherit}.table--tertiary th{background:#FF3C32}.table--tertiary tr{border-bottom:1px solid rgba(255,60,50,0.3)}.table--tertiary tr:hover{background:rgba(255,60,50,0.1)}.table--tertiary.first-column td:first-child{background:rgba(255,60,50,0.75);color:#fff}.table--tertiary.center-content{text-align:center}.table--tertiary.center-content th{text-align:inherit}.table--accent th{background:#FBA905}.table--accent tr{border-bottom:1px solid rgba(251,169,5,0.3)}.table--accent tr:hover{background:rgba(251,169,5,0.1)}.table--accent.first-column td:first-child{background:rgba(251,169,5,0.75);color:#fff}.table--accent.center-content{text-align:center}.table--accent.center-content th{text-align:inherit}.table--dark th{background:#282D31}.table--dark tr{border-bottom:1px solid rgba(40,45,49,0.3)}.table--dark tr:hover{background:rgba(40,45,49,0.1)}.table--dark.first-column td:first-child{background:rgba(40,45,49,0.75);color:#fff}.table--dark.center-content{text-align:center}.table--dark.center-content th{text-align:inherit}.form__item{margin-bottom:2rem}.form__item:last-child{margin-bottom:0}[type="text"],[type="email"],[type="password"],[type="number"],[type="date"],[type="time"],[type="datetime-local"],[type="search"],[type="tel"],[type="url"],select,textarea{display:block;border:1px solid var(--border-color);background:#fff;width:100%;line-height:1.6;font-family:"Open Sans",sans-serif;font-size:var(--small-font-size);color:var(--text-color);border-radius:.25rem;padding:.5rem 1rem}[type="text"]:-ms-input-placeholder,[type="email"]:-ms-input-placeholder,[type="password"]:-ms-input-placeholder,[type="number"]:-ms-input-placeholder,[type="date"]:-ms-input-placeholder,[type="time"]:-ms-input-placeholder,[type="datetime-local"]:-ms-input-placeholder,[type="search"]:-ms-input-placeholder,[type="tel"]:-ms-input-placeholder,[type="url"]:-ms-input-placeholder,select:-ms-input-placeholder,textarea:-ms-input-placeholder{color:rgba(83,87,90,0.75)}[type="text"]::placeholder,[type="email"]::placeholder,[type="password"]::placeholder,[type="number"]::placeholder,[type="date"]::placeholder,[type="time"]::placeholder,[type="datetime-local"]::placeholder,[type="search"]::placeholder,[type="tel"]::placeholder,[type="url"]::placeholder,select::placeholder,textarea::placeholder{color:rgba(83,87,90,0.75)}[type="text"]:disabled,[type="email"]:disabled,[type="password"]:disabled,[type="number"]:disabled,[type="date"]:disabled,[type="time"]:disabled,[type="datetime-local"]:disabled,[type="search"]:disabled,[type="tel"]:disabled,[type="url"]:disabled,select:disabled,textarea:disabled{background:var(--border-color);cursor:default}[type="search"]{background:#fff url(https://ux.ed.team/img/icon-search.svg) center right 1rem/1rem no-repeat !important}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff url(https://ux.ed.team/img/arrow.svg) center right 1rem/1rem no-repeat !important}textarea{min-height:6em;max-height:6em;min-width:100%;max-width:100%}label{position:relative;display:block;font-size:var(--small-font-size);margin-bottom:.2em}label+input:-ms-input-placeholder{display:none}label+input::placeholder{display:none}[type="submit"]{margin:0 !important}.card__avatar{width:2rem}.card__teachers .card__teacher{position:relative}.card__teachers .card__teacher:hover span{transform:scaleY(1)}.card__teachers span{position:absolute;top:calc(100% + .5rem);left:0;background:#fff;white-space:nowrap;transform:scaleY(0);transform-origin:top;transition:transform .2s}.card__teachers span::before{content:"";display:block;position:absolute;border:1px solid var(--border-color);width:.5rem;height:.5rem;background:#fff;top:calc( -0.35rem + 1.5px);left:0.65rem;transform:rotate(45deg);border-color:var(--border-color) transparent transparent var(--border-color)}.post-header{position:relative;margin-bottom:2em}.post-header img{display:block}.post-header::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(40,45,49,0.8)}.post-header h1{position:absolute;top:50%;text-align:center;width:90%;left:5%;transform:translateY(-50%);color:#fff}.post .author{display:table;margin:-5em auto 2em;position:relative}.post .author img{border:4px solid #fff}.main-banner{--color: var(--first-color);--color-alt: var(--accent-color);--padding: 2rem;background:var(--color);color:#FFF;padding-top:var(--padding);padding-bottom:calc(var(--padding) * 1.25)}.main-banner.diagonal{-webkit-clip-path:polygon(0 0, 100% 0, 100% 100%, 0 94%);clip-path:polygon(0 0, 100% 0, 100% 100%, 0 94%)}@media screen and (min-width: 1024px){.main-banner{--padding: 4rem}}.main-banner .button{--color-button: var(--color-alt)}.main-banner__img{opacity:.1}.main-banner__data{position:relative}.main-header{height:var(--header-height);border-bottom:1px solid var(--border-color);background:#FFF;position:fixed;top:0;width:100%;left:0;z-index:100}.main-header>.ed-grid{height:100%}.main-header--dark{background:var(--dark-color-alt);border-bottom:none}@media screen and (min-width: 1024px){.main-header--dark li{border-bottom:none}}.main-header--dark a{color:rgba(238,238,243,0.5)}.main-footer{background:var(--dark-color);color:#FFF;padding:2rem 0;font-size:var(--small-font-size);margin-top:auto}.topbar{background:var(--color);color:#fff;padding:.5rem 0}@media screen and (min-width: 1024px){.topbar{height:var(--header-height)}}.topbar .ed-grid{height:100%;-ms-flex-align:center;align-items:center}.topbar form{-ms-flex:auto;flex:auto}@media screen and (max-width: 1023px){.topbar form{display:none}}.topbar input{border:none}.ed-modal-container{position:fixed;width:100%;height:100%;left:0;top:0;background:rgba(252,252,254,0.9);display:-ms-flexbox;display:flex;z-index:1000}.ed-modal-container::before{content:"";width:3rem;height:3rem;background:url(https://ux.ed.team/img/icon-close.svg);position:absolute;top:2rem;right:2rem;cursor:pointer}.ed-modal-content{box-shadow:0 2px 16px -2px rgba(0,0,0,0.15);border:none;background:#fff;width:90%;max-width:1000px;max-height:90vh;margin:auto;padding:2rem;border-radius:.25rem;overflow-y:auto}.video{width:100%;position:relative;height:0;padding-bottom:56.25%;overflow:hidden}.video iframe{width:100%;position:absolute;top:0;left:0;height:100%}@media screen and (max-width: 1023px){.edui-tabs--class{margin-left:-1rem;margin-right:-1rem;border:none;margin-top:-2rem}}.edui-tabs .tabs{display:-ms-flexbox;display:flex;position:relative;left:1rem;top:1px}.edui-tabs .tab{border:1px solid var(--border-color);padding:1rem;border-radius:.25rem .25rem 0 0;margin-right:.5rem;background:#fff;cursor:pointer;opacity:.5}.edui-tabs .tab.active{border-bottom:1px solid #fff;opacity:1}.edui-tabs .tab img{width:2.25rem;display:block}.edui-tabs .tab .tab{border:none;padding:0;border-radius:0;margin:0;opacity:1}.edui-tabs .panel{box-shadow:0 2px 16px -2px rgba(0,0,0,0.15);border:none;background:#fff;display:none;border-radius:.25rem;padding:2rem}.edui-tabs .panel.active{display:block}.edui-tabs .tabs--class{left:0;border-radius:.25rem .25rem 0 0;overflow:hidden}.edui-tabs .tabs--class::before{content:"";display:block;width:25%;height:4px;background:var(--second-color);position:absolute;bottom:0;left:0;transition:transform .25s ease-in}.edui-tabs .tabs--class[data-tab="2"]::before{transform:translateX(100%)}.edui-tabs .tabs--class[data-tab="3"]::before{transform:translateX(200%)}.edui-tabs .tabs--class[data-tab="4"]::before{transform:translateX(300%)}.edui-tabs .tab--class{width:25%;text-align:center;margin:0;border-radius:0;border:none;background:var(--dark-color);color:var(--border-color);opacity:1;height:3rem;padding:.6rem 0 0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;line-height:1.6;box-shadow:0 -4px rgba(255,255,255,0.5) inset}.edui-tabs .tab--class.active{color:var(--second-color);border:none;background:var(--dark-color-alt)}.edui-tabs .panels--class{height:calc(100vh - 10rem);overflow:auto;border:1px solid var(--border-color);background:#fff;border-radius:0 0 .25rem .25rem;box-shadow:0 2px 16px -2px rgba(0,0,0,0.15);border:none;background:#fff}.edui-tabs .panel--class{padding:2rem 1rem 1rem;background:none;border:none;box-shadow:none}.payment-method__name{padding-bottom:.5rem;border-bottom:1px solid var(--border-color);margin-bottom:.5rem}.payment-method__notes{margin-top:-1.5rem}.payment-method__account{color:var(--third-color)}.video-class{background:var(--dark-color)}@media screen and (min-aspect-ratio: 8 / 5){.video-class{height:calc(100vh - 3rem)}}.video-class--container{position:fixed;top:var(--header-height);width:100%;z-index:100}@media screen and (min-width: 960px){.video-class--container{position:static}}@media screen and (min-width: 1024px) and (min-aspect-ratio: 8 / 5){.video-class--container{height:calc(100vh - 9rem);padding:1rem}}.video-class--element{margin:auto}.video-class--element iframe{width:100%;height:100%}.video-class--footer{background:var(--dark-color-alt);color:#fff;padding:1rem 0}@media screen and (min-aspect-ratio: 8 / 5){.video-class--footer{height:6rem;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0}}.video-class--title{line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:700;letter-spacing:0.015em;color:var(--title-color);font-size:var(--h3-font-size)}.main-banner .video-class--title{color:var(--white-color)}.video-class--course{color:var(--accent-color);font-size:var(--small-font-size);margin:-.5rem 0 0 0;opacity:.75}.video-class--next,.video-class--prev{width:2rem;margin-left:1rem;cursor:pointer}.video-live{background:var(--dark-color)}@media screen and (min-width: 1024px){.video-live__container{display:-ms-grid;display:grid;padding:1rem;grid-gap:1rem;-ms-grid-columns:1fr minmax(320px, 360px);grid-template-columns:1fr minmax(320px, 360px)}}.video-live__video.video-fixed{position:fixed;z-index:var(--z-fixed);top:var(--header-height);left:0}.video-live__data{color:var(--border-color);padding:1rem 0}.video-live__data [class*="button"]{margin-right:0}@media screen and (min-width: 1024px){.video-live__data{-ms-grid-column-span:2;-ms-grid-column:1;grid-column:1 / span 2;-ms-grid-row:2;grid-row:2}.video-live__data [class*="button"]{margin-right:6rem}}.video-live__title-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-bottom:1rem}.video-live__title-container [class*="button"]{margin-right:1rem}.video-live__title{margin:0;line-height:var(--heading-line-height);font-family:var(--heading-font);font-weight:700;letter-spacing:0.015em;color:var(--title-color);font-size:var(--h3-font-size)}.main-banner .video-live__title{color:var(--white-color)}.video-live__footer{background:var(--dark-color-alt)}.class-temary{padding-top:2rem;counter-reset:subjects}.class-subject__title{counter-increment:subjects;margin-bottom:0}.class-subject__title::before{content:counter(subjects) ".";display:inline-block;margin-right:.25rem}.class-fragment__title{position:relative}.class-fragment__title a{color:var(--text-color);position:relative;left:1.5em}.class-fragment__title img{width:1em;height:1em;position:absolute;top:.25em}.class-fragment [class*="button"]{margin-left:1em;font-size:12px}.class-fragment [class*="button"]:hover{text-decoration:none}.chat{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:100%;color:var(--border-color)}@media screen and (max-width: 1023px){.chat{padding:0 1rem;max-height:500px}}.chat__send{position:relative;margin-bottom:1rem}.chat__send-message{width:100%;display:block;padding:.75em 2.5em .75em .75em;line-height:1.6;border-radius:.25rem;border:1px solid var(--border-color)}.chat__send-submit{width:1.5em;position:absolute;right:.75em;top:50%;transform:translateY(-50%)}.chat__info{color:var(--text-color);margin-top:-.5rem;opacity:.5;font-style:italic;margin-bottom:1rem}.chat__messages{padding-top:1rem}.chat__message{display:-ms-flexbox;display:flex;border-bottom:1px solid var(--border-color);padding-bottom:.75rem;margin-bottom:1rem;color:var(--text-color)}.chat__message-avatar{width:2rem;height:2rem;margin-right:1rem}.chat__message-avatar img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:.25rem}.chat__message-user,.chat__message-date{vertical-align:super;margin-right:.5rem;opacity:.8}.chat__message-user{font-weight:bold}.chat__message-comment{margin:-.4em 0 0}@media screen and (min-width: 1024px){.video-live__chat .chat{-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}}.video-live__chat .chat__send-message{background:var(--dark-color-alt);color:var(--border-color);border:1px solid rgba(251,169,5,0.3)}.video-live__chat .chat__messages{background:var(--dark-color-alt);padding:1rem;border-radius:.25rem;overflow-y:auto}.video-live__chat .chat__message{border-bottom:1px solid rgba(255,60,50,0.3);color:inherit}.video-live__chat .chat-user,.video-live__chat .chat-date{opacity:.5}.add-note textarea{margin-bottom:.5rem}.add-note__info{opacity:.5;font-style:italic;margin-bottom:.5rem}.notes{padding-top:2rem}.note{border:1px solid var(--border-color);font-size:var(--small-font-size);border-radius:.25rem}.note--edit{background:rgba(251,169,5,0.075)}.note--delete{position:relative}.note--delete__alert{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255,255,255,0.95);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;border:1px solid rgba(251,169,5,0.5)}.note__header{background:var(--text-color);color:var(--border-color);padding:.5rem 1rem;border-radius:.25rem .25rem 0 0;font-size:12px}.note__header p{margin:0}.note__content{padding:1rem 1rem .5rem}.note__content p,.note__content blockquote,.note__content pre{margin-bottom:1rem}.note__footer{padding:0 1rem 1rem}.note__footer img{width:1rem;height:1rem;margin-right:1rem}.resources li{padding-left:.5em}.resources li::before{background:none}.resources img{width:1em;height:1em;margin-right:.5em}.resources a{color:var(--text-color)}.course-header{position:relative;margin-bottom:2rem;width:100%;overflow:hidden}.course-header::before{content:"";position:absolute;top:-10%;left:-10vw;width:120vw;height:120%;filter:blur(10px);background:linear-gradient(rgba(40,45,49,0.9), rgba(40,45,49,0.9)),url(https://ed.team/sites/default/files/styles/large/public/courses/images/css-animaciones-poster-1280.jpg) no-repeat center/cover}.course-data{color:#fff;position:relative;padding:2rem 0}@media screen and (min-width: 1440px){.course-data{padding:4rem 0}}.course-data__subtitle{margin-top:-1rem}.course-data__description,.course-data__stars-info,.course-data__live-or-record span{opacity:0.8}.course-data__more-info{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}@media screen and (min-width: 400px){.course-data__more-info{-ms-flex-direction:row;flex-direction:row}}.course-data__calification{display:-ms-flexbox;display:flex;margin-right:2rem}.course-data__stars{margin-right:1rem}.course-data__live-or-record span{margin-left:0.25em}.course-info{border-radius:0.25rem;position:relative;margin-bottom:2rem;padding:1rem;border:1px solid var(--border-color);box-shadow:0 2px 6px rgba(0,0,0,0.1)}@media screen and (max-width: 639px){.course-info__item:nth-child(2){margin:1rem 0}}.course-info__title{border-bottom:1px solid var(--border-color);font-family:"Raleway",sans-serif}.course-info__list{padding:0;margin-left:0.5rem;margin-bottom:0;list-style:none}.course-info__list-item{position:relative;margin-bottom:0.5rem;padding-left:1.5rem}.course-info__list-item::before{content:"";display:block;position:absolute;left:0;top:0.20rem;width:1rem;height:1rem;background:url("https://ed.team/themes/custom/escueladigital/img/active-check.svg") no-repeat 50%/contain}@media screen and (max-width: 1023px){.course-main .span-l-1{-ms-flex-order:1;order:1}.course-main .span-l-3{-ms-flex-order:2;order:2}.card--sidebar{margin-bottom:2rem}}.course-main{margin-bottom:2rem}@media screen and (min-width: 1024px){.course-main{margin-bottom:4rem}}.temary-accordion{margin-bottom:2rem;padding:1rem;background-color:#fff;border:1px solid var(--border-color);border-radius:0.25rem}@media screen and (min-width: 1024px){.temary-accordion:last-of-type{margin-bottom:0}}.temary-accordion__main-title{font-family:"Raleway",sans-serif;outline:none}.temary-accordion__list{padding:1rem 1rem 0;margin-bottom:0}.temary-accordion__item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;color:var(--text-color)}.temary-accordion__title{position:relative;margin-bottom:0.25rem;padding-left:1.5rem;color:inherit}.temary-accordion__title::before{content:"";display:block;position:absolute;left:0;top:0.2rem;width:12px;height:12px;opacity:0.5;background:url("https://ed.team/themes/custom/escueladigital/img/padlock.svg") no-repeat 50%/contain}.temary-accordion__title.free-class{color:var(--accent-color)}.temary-accordion__title.free-class::before{opacity:1;background:url("https://ed.team/themes/custom/escueladigital/img/active-check.svg") no-repeat 50%/contain}.method-payment__container{box-shadow:0 2px 16px -2px rgba(0,0,0,0.15);border:none;background:#fff;padding:0 2rem}.method-payment__row{display:-ms-grid;display:grid;-ms-grid-columns:(1fr)[4];grid-template-columns:repeat(4, 1fr);grid-column-gap:1rem;padding:2rem 0}.method-payment__row:not(:last-child){border-bottom:1px solid #EEEEF3}@media screen and (max-width: 639px){.method-payment__row{-ms-grid-columns:1fr;grid-template-columns:1fr}}.method-payment__column{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media screen and (max-width: 639px){.method-payment__column{-ms-flex-pack:center;justify-content:center}.method-payment__column:not(:last-child){margin-bottom:1rem}}.method-payment__image{height:2rem}.method-payment__span{color:#FF3C32}.method-payment p{margin-bottom:0}.playlist{box-shadow:0 2px 16px -2px rgba(0,0,0,0.15);border:none;background:#fff;border-radius:0.25rem}.playlist__header{position:relative}.playlist__header-meatballs{position:absolute;top:1rem;right:1rem;width:25px;height:5px;cursor:pointer;z-index:10}.playlist__header-meatballs::before{content:'';display:block;height:5px;width:5px;background:#fff;border-radius:50%;box-shadow:10px 0 #fff,20px 0 #fff}.playlist__header-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:end;justify-content:flex-end;position:absolute;padding:1rem;width:100%;height:100%;background-image:linear-gradient(to top, rgba(40,45,49,0.9), transparent 80%);color:#fff;z-index:1}.playlist__header-fragment{margin-bottom:0.5rem;font-size:var(--h3-font-size)}.playlist__header-cover{display:block}.playlist__content{position:relative;padding:1.5rem 1rem 0}.playlist__button-add{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;position:absolute;top:-20px;right:1rem;width:40px;height:40px;background-color:#FBA905;border-radius:50%;color:#fff;font-size:2rem;z-index:10}.playlist__button-add:hover{text-decoration:none;background-color:#F1A000}.playlist__button-add::before{content:'+'}.playlist__search{margin-bottom:1rem}.playlist__list{height:300px;overflow-y:auto}@media screen and (min-width: 1024px){.playlist__list{margin-right:-1rem;padding-right:1rem}}.playlist__item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;padding:0.5rem 0;border-bottom:1px solid #EEEEF3;color:#53575A;font-size:var(--small-font-size)}.playlist__item:hover{color:#FF3C32;text-decoration:none}.playlist__item-data{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline}.playlist__item-index{margin-right:0.5rem;color:#FBA905;font-family:"Open Sans",sans-serif}.playlist__item-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.playlist__item-fragment{font-family:"Raleway",sans-serif;font-weight:bold}.playlist__item-action{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.playlist__item-button-delete{margin-left:0.5rem;width:1rem;height:1rem}.pricing-table{border:1px solid var(--border-color);border-radius:.25rem;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.pricing-table__header{background:var(--color);color:#FFF;padding:1rem;border-radius:.25rem .25rem 0 0;margin:-1px -1px -1px 0}.pricing-table__title{padding-left:1.5rem;background:url(https://ux.ed.team/img/plans/plan-2.svg) no-repeat center left}.pricing-table__price{padding:1rem}.pricing-table__description{border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);padding:1rem;margin-bottom:1.5rem}.pricing-table__features{margin-bottom:0;list-style:none;padding:0 1rem}.pricing-table__feature{margin-bottom:.75rem;display:-ms-grid;display:grid;-ms-grid-columns:1rem auto;grid-template-columns:1rem auto;grid-gap:.5rem;-ms-flex-align:baseline;align-items:baseline}.pricing-table__feature svg{height:.8em}.pricing-table__footer{padding:1rem;margin-top:auto}.pricing-table [class*=button]{--color: var(--current-color);margin:0}.pricing-table.color-second .pricing-table__title{background-image:url(https://ux.ed.team/img/plans/plan-1.svg)}.pricing-table.color-accent .pricing-table__title{background-image:url(https://ux.ed.team/img/plans/plan-3.svg)}.pricing-table.color-dark .pricing-table__title{background-image:url(https://ux.ed.team/img/plans/plan-4.svg)}.alt-banner{--image: url('https://drupal.ed.team/sites/default/files/2018-10/joan-serna.jpg');--radius: 1200px;--size: 100%;padding-top:2rem;padding-bottom:2rem;background:linear-gradient(rgba(40,45,49,0.9), rgba(40,45,49,0.9)),var(--image) no-repeat center center/cover}@media screen and (max-width: 1023px){.alt-banner{-webkit-clip-path:polygon(0 0, 100% 0, 100% 100%, 0 95%);clip-path:polygon(0 0, 100% 0, 100% 100%, 0 95%)}}@media screen and (min-width: 1024px){.alt-banner{background:radial-gradient(circle var(--radius) at 100% 100%, transparent 50%, #F6F6F6 50%),var(--image) no-repeat center right/auto var(--size);padding-bottom:6rem;padding-top:6rem;border-bottom:1px solid var(--border-color)}}@media screen and (min-width: 1200px){.alt-banner{--radius: 1300px}}@media screen and (min-width: 1440px){.alt-banner{--radius: 1600px;--size: 120%}}.alt-banner .ed-grid{position:relative}@media screen and (max-width: 1023px){.alt-banner h2{color:var(--color-second)}}.alt-banner__data{position:relative;color:#FFF;text-align:center;font-size:var(--small-font-size)}@media screen and (min-width: 1024px){.alt-banner__data{padding:1rem 1rem 1rem 2rem;text-align:left;color:var(--text-color)}.alt-banner__data::before{position:absolute;border-radius:4px;content:"";width:8px;height:100%;top:0;left:0;background:var(--color)}}.alt-banner__caption{position:absolute;bottom:-5rem;right:0;z-index:var(--z-tooltip);background:rgba(20,22,24,0.9);color:#FFF;padding:.5rem;font-size:var(--smaller-font-size)}@media screen and (max-width: 1023px){.alt-banner__caption{display:none}}.alt-banner__caption span{color:var(--color-second)}.landing-section{--current-color: var(--color-first);--color: var(--current-color);--color-button: var(--current-color);margin-bottom:2rem}@media screen and (min-width: 1024px){.landing-section{margin-bottom:8rem}}.landing-section article{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:start;align-items:flex-start}@media screen and (min-width: 1024px){.landing-section article{padding-right:2rem}.landing-section article::before{content:"";display:block;position:absolute;width:.5rem;border-radius:.25rem;height:100%;right:0;background:var(--color)}}.landing-section img{border-radius:.25rem;margin-bottom:1rem}@media screen and (min-width: 1024px){.landing-section img{margin-bottom:0;-webkit-clip-path:polygon(10% 0, 100% 0, 90% 100%, 0 100%);clip-path:polygon(10% 0, 100% 0, 90% 100%, 0 100%)}}.landing-section h2{color:var(--color)}.landing-section [class*=button]{margin-bottom:0}@media screen and (min-width: 1024px){.landing-section:first-of-type{padding-top:4rem}}.landing-section:nth-of-type(even){--current-color: var(--color-third);--color: var(--current-color);--color-button: var(--current-color)}@media screen and (min-width: 1024px){.landing-section:nth-of-type(even) img{-webkit-clip-path:polygon(0 0, 90% 0, 100% 100%, 10% 100%);clip-path:polygon(0 0, 90% 0, 100% 100%, 10% 100%)}.landing-section:nth-of-type(even) article{-ms-flex-order:-1;order:-1;padding-right:0;padding-left:2rem}.landing-section:nth-of-type(even) article::before{left:0}}summary{cursor:pointer;outline:none;font-weight:bold}summary+*{margin-top:1rem}details{margin-bottom:.5rem;background:#FFF;padding:.5rem 1rem;border:1px solid #DFE0E0;border-radius:.25rem}@media screen and (min-width: 1024px){details{margin-bottom:1rem;padding:1rem}}.vote{margin-bottom:0.25rem;color:#53575A}.vote:hover{text-decoration:none}.vote:hover svg{transform:scale(1.15)}.vote--positive svg{stroke:#007BDF}.vote--positive.active svg{fill:#007BDF}.vote--negative svg{stroke:#FF3C32}.vote--negative.active svg{fill:#FF3C32}.answer{color:#53575A}.foro-sidebar{background-color:#fff}.foro-sidebar:not(:last-of-type){margin-bottom:2rem}.foro-sidebar--category .foro-sidebar__link{display:-ms-grid;display:grid;-ms-grid-columns:max-content 1fr;grid-template-columns:max-content 1fr;color:#53575A}.foro-sidebar--category .foro-sidebar__link img{width:1rem;height:1rem;-o-object-fit:contain;object-fit:contain}.foro-sidebar__list{list-style:none}.top-user{--user-size: 2.5rem;-ms-grid-columns:(var(--user-size))[10];grid-template-columns:repeat(10, var(--user-size));-ms-grid-rows:var(--user-size);grid-template-rows:var(--user-size);padding:0.25rem;overflow-x:auto}@media screen and (min-width: 640px){.top-user{--user-size: 3rem}}.top-user__item{position:relative;width:100%;height:100%;box-shadow:0 0 0 2px #FCFCFE,0 0 0 4px #007BDF}.top-user__item:hover .top-user__score{transform:scale(1)}.top-user__score{border-radius:1.5rem;position:absolute;height:100%;width:100%;background-color:rgba(0,123,223,0.5);color:#fff;font-weight:bold;line-height:initial;transform:scale(0);transition:0.25s;z-index:1}.user-foro{display:-ms-flexbox;display:flex;margin-bottom:0.5rem}.user-foro__image{border-radius:0.25rem;-ms-flex:none;flex:none;height:2rem;width:2rem;-o-object-fit:cover;object-fit:cover;margin-right:0.75rem}.user-foro__info{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;line-height:initial}.user-foro__name{color:#53575A;font-weight:bold}.user-foro__date{color:#BABDBF}.featured-publication{overflow-x:scroll}.featured-publication__container{display:-ms-grid;display:grid;-ms-grid-columns:(1fr)[12];grid-template-columns:repeat(12, 1fr);grid-gap:1rem;width:1200%}@media screen and (min-width: 640px){.featured-publication__container{width:600%}}@media screen and (min-width: 1024px){.featured-publication__container{width:300%}}.featured-publication__item{background-color:#fff}.featured-publication__content{display:-ms-flexbox;display:flex}.featured-publication__user-photo{border-radius:0.25rem;-ms-flex:none;flex:none;height:2rem;width:2rem;-o-object-fit:cover;object-fit:cover}.featured-publication__title{color:#53575A}.featured-publication__footer{display:-ms-flexbox;display:flex}.featured-publication__footer .vote{margin:0 1rem 0 0}.foro-sidebar__list .featured-publication__item{padding:0 0 1rem 0;border:none;border-radius:0;font-family:"Open Sans",sans-serif;font-weight:normal}.scroll--dark{--thumb-color: #3f474d;--track-color: #566169;--thumb-color-hover: #333a3f}.scroll--dark-alt{--thumb-color: #2b3034;--track-color: #424950;--thumb-color-hover: #202326}.scroll.no-background{--track-color: transparent}.scroll.hidden{--display: none}.scroll.hover{--display: none}.scroll.hover:hover{--display: block}.scroll.mobile{--display: none}@media screen and (min-width: 1024px){.scroll.mobile{--display: block}}@media screen and (min-width: 1024px){[class*=scroll],.scroll,body{--thumb-color: #dfdfe8;--thumb-color-hover: #c1c1d3;--track-color: #fdfdfe;--scroll-size: 10px;--scroll-radius: calc(var(--scroll-size) / 2);--display: block}[class*=scroll]::-webkit-scrollbar,.scroll::-webkit-scrollbar,body::-webkit-scrollbar{display:var(--display);width:var(--scroll-size);height:var(--scroll-size)}[class*=scroll]::-webkit-scrollbar-thumb,.scroll::-webkit-scrollbar-thumb,body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:var(--scroll-radius)}[class*=scroll]::-webkit-scrollbar-thumb:hover,[class*=scroll]::-webkit-scrollbar-thumb:active,.scroll::-webkit-scrollbar-thumb:hover,.scroll::-webkit-scrollbar-thumb:active,body::-webkit-scrollbar-thumb:hover,body::-webkit-scrollbar-thumb:active{background:var(--thumb-color-hover)}[class*=scroll]::-webkit-scrollbar-track,.scroll::-webkit-scrollbar-track,body::-webkit-scrollbar-track{background:var(--track-color);border-radius:var(--scroll-radius)}}.meatballs-menu{display:inline-block;position:relative}.meatballs-menu__button{--button-color: #53575A;height:1rem;width:1rem;border:none;outline:none;background:none;cursor:pointer}.meatballs-menu--white .meatballs-menu__button{--button-color: #EEEEF3}.meatballs-menu__button::before{border-radius:1.5rem;content:'';display:block;width:.25rem;height:.25rem;background:var(--button-color);box-shadow:0 .375rem var(--button-color),0 -.375rem var(--button-color)}.meatballs-menu--horizontal .meatballs-menu__button::before{box-shadow:.375rem 0 var(--button-color),-.375rem 0 var(--button-color)}.meatballs-menu__nav{box-shadow:0 2px 16px -2px rgba(0,0,0,0.15);border:none;background:#fff;border-radius:0.25rem;display:none;position:absolute;top:0;padding:0.75rem;z-index:var(--z-fixed);white-space:nowrap;right:35%}.meatballs-menu__nav.active{display:block}.meatballs-menu--right .meatballs-menu__nav{left:35%;right:auto}.meatballs-menu__list{list-style:none;margin-top:0;margin-bottom:0;padding-left:0;margin-left:0;display:-ms-grid;display:grid;-ms-grid-columns:1fr;grid-template-columns:1fr;grid-gap:0.5rem;font-size:var(--smaller-font-size)}.meatballs-menu__link{margin:0;padding:0;background:none;border:none;outline:none;color:#53575A;cursor:pointer}.meatballs-menu__link:hover{text-decoration:none}.meatballs-menu--foro .meatballs-menu__link{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.meatballs-menu--foro .meatballs-menu__link .svg-stroke{fill:currentColor;margin-right:0.25rem}.meatballs-menu--foro .meatballs-menu__link--delete{color:#FF3C32}.pagination__menu{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;list-style:none}.pagination__item:not(:last-of-type){margin-right:0.5rem}.pagination__link{display:block;line-height:1;color:#53575A}.pagination__link:hover{color:#fff;background-color:#007BDF;border:1px solid #007BDF;text-decoration:none}.pagination__link.current,.pagination__link--right,.pagination__link--left{color:#fff;border:1px solid #007BDF;background-color:#007BDF}.pagination__link.current:hover,.pagination__link--right:hover,.pagination__link--left:hover{border:1px solid #006DC6;background-color:#006DC6}.pagination__link--right::before{content:'▶'}.pagination__link--left::before{content:'◀'}.form-editor{background-color:#fff}.form-editor__textarea{height:200px;max-height:200px;outline:none}@media screen and (min-width: 640px){.form-editor__toolbar{-ms-grid-columns:1fr max-content;grid-template-columns:1fr max-content}}.form-editor__action{display:-ms-grid;display:grid;-ms-grid-columns:(max-content)[3];grid-template-columns:repeat(3, max-content);grid-gap:1rem}.form-editor__button{border:none;outline:none;color:#53575A;background:none;cursor:pointer}.form-editor__button:hover{color:#FBA905;transform:scale(1.2)}.form-editor__icon{fill:currentColor;height:1rem;width:1rem}.form-editor__button-post{margin-bottom:0}.section-answer .form-editor:focus-within .form-editor__toolbar{display:-ms-grid;display:grid}.section-answer .form-editor:focus-within .form-editor__textarea{height:100px;max-height:100px}.section-answer .form-editor__textarea{min-height:1.35rem;height:1.35rem}.section-answer .form-editor__toolbar{display:none}.blue-100{--color: #e7f4fd;--color-alt: #b7defa}:root{--blue-100: #e7f4fd}.blue-200{--color: #b7defa;--color-alt: #88c8f7}:root{--blue-200: #b7defa}.blue-300{--color: #88c8f7;--color-alt: #58b3f3}:root{--blue-300: #88c8f7}.blue-400{--color: #58b3f3;--color-alt: #1192ee}:root{--blue-400: #58b3f3}.blue-500{--color: #1192ee;--color-alt: #1083d5}:root{--blue-500: #1192ee}.blue-600{--color: #1083d5;--color-alt: #0c66a6}:root{--blue-600: #1083d5}.blue-700{--color: #0c66a6;--color-alt: #094977}:root{--blue-700: #0c66a6}.blue-800{--color: #094977;--color-alt: #052c48}:root{--blue-800: #094977}.blue-900{--color: #052c48;--color-alt: #052c48}:root{--blue-900: #052c48}.primary-100{--color: #e7f4fd;--color-alt: #b7defa}:root{--primary-100: #e7f4fd}.primary-200{--color: #b7defa;--color-alt: #88c8f7}:root{--primary-200: #b7defa}.primary-300{--color: #88c8f7;--color-alt: #58b3f3}:root{--primary-300: #88c8f7}.primary-400{--color: #58b3f3;--color-alt: #1192ee}:root{--primary-400: #58b3f3}.primary-500{--color: #1192ee;--color-alt: #1083d5}:root{--primary-500: #1192ee}.primary-600{--color: #1083d5;--color-alt: #0c66a6}:root{--primary-600: #1083d5}.primary-700{--color: #0c66a6;--color-alt: #094977}:root{--primary-700: #0c66a6}.primary-800{--color: #094977;--color-alt: #052c48}:root{--primary-800: #094977}.primary-900{--color: #052c48;--color-alt: #052c48}:root{--primary-900: #052c48}.green-100{--color: #eafbf2;--color-alt: #c0f2d9}:root{--green-100: #eafbf2}.green-200{--color: #c0f2d9;--color-alt: #96e9bf}:root{--green-200: #c0f2d9}.green-300{--color: #96e9bf;--color-alt: #6ce0a6}:root{--green-300: #96e9bf}.green-400{--color: #6ce0a6;--color-alt: #2dd280}:root{--green-400: #6ce0a6}.green-500{--color: #2dd280;--color-alt: #28bd73}:root{--green-500: #2dd280}.green-600{--color: #28bd73;--color-alt: #1f9359}:root{--green-600: #28bd73}.green-700{--color: #1f9359;--color-alt: #166a40}:root{--green-700: #1f9359}.green-800{--color: #166a40;--color-alt: #0d3f26}:root{--green-800: #166a40}.green-900{--color: #0d3f26;--color-alt: #0d3f26}:root{--green-900: #0d3f26}.accent-100{--color: #fff8eb;--color-alt: #ffeac7}:root{--accent-100: #fff8eb}.accent-200{--color: #ffeac7;--color-alt: #ffdb9e}:root{--accent-200: #ffeac7}.accent-300{--color: #ffdb9e;--color-alt: #ffce7a}:root{--accent-300: #ffdb9e}.accent-400{--color: #ffce7a;--color-alt: #ffba42}:root{--accent-400: #ffce7a}.accent-500{--color: #ffba42;--color-alt: #e5a638}:root{--accent-500: #ffba42}.accent-600{--color: #e5a638;--color-alt: #b4822d}:root{--accent-600: #e5a638}.accent-700{--color: #b4822d;--color-alt: #7e5c20}:root{--accent-700: #b4822d}.accent-800{--color: #7e5c20;--color-alt: #4e3813}:root{--accent-800: #7e5c20}.accent-900{--color: #4e3813;--color-alt: #4e3813}:root{--accent-900: #4e3813}.yellow-100{--color: #fff8eb;--color-alt: #ffeac7}:root{--yellow-100: #fff8eb}.yellow-200{--color: #ffeac7;--color-alt: #ffdb9e}:root{--yellow-200: #ffeac7}.yellow-300{--color: #ffdb9e;--color-alt: #ffce7a}:root{--yellow-300: #ffdb9e}.yellow-400{--color: #ffce7a;--color-alt: #ffba42}:root{--yellow-400: #ffce7a}.yellow-500{--color: #ffba42;--color-alt: #e5a638}:root{--yellow-500: #ffba42}.yellow-600{--color: #e5a638;--color-alt: #b4822d}:root{--yellow-600: #e5a638}.yellow-700{--color: #b4822d;--color-alt: #7e5c20}:root{--yellow-700: #b4822d}.yellow-800{--color: #7e5c20;--color-alt: #4e3813}:root{--yellow-800: #7e5c20}.yellow-900{--color: #4e3813;--color-alt: #4e3813}:root{--yellow-900: #4e3813}.red-100{--color: #fdeded;--color-alt: #f9cdcd}:root{--red-100: #fdeded}.red-200{--color: #f9cdcd;--color-alt: #f5adad}:root{--red-200: #f9cdcd}.red-300{--color: #f5adad;--color-alt: #f18888}:root{--red-300: #f5adad}.red-400{--color: #f18888;--color-alt: #eb5656}:root{--red-400: #f18888}.red-500{--color: #eb5656;--color-alt: #d44e4e}:root{--red-500: #eb5656}.red-600{--color: #d44e4e;--color-alt: #a43d3d}:root{--red-600: #d44e4e}.red-700{--color: #a43d3d;--color-alt: #772c2c}:root{--red-700: #a43d3d}.red-800{--color: #772c2c;--color-alt: #471a1a}:root{--red-800: #772c2c}.red-900{--color: #471a1a;--color-alt: #471a1a}:root{--red-900: #471a1a}.grey-100{--color: #fbfbfe;--color-alt: #fcfcfc}:root{--grey-100: #fbfbfe}.grey-200{--color: #fcfcfc;--color-alt: #eff3f5}:root{--grey-200: #fcfcfc}.grey-300{--color: #eff3f5;--color-alt: #c8cdd0}:root{--grey-300: #eff3f5}.grey-400{--color: #c8cdd0;--color-alt: #a0a7ac}:root{--grey-400: #c8cdd0}.grey-500{--color: #a0a7ac;--color-alt: #697477}:root{--grey-500: #a0a7ac}.grey-600{--color: #697477;--color-alt: #2a3b47}:root{--grey-600: #697477}.grey-700{--color: #2a3b47;--color-alt: #22303a}:root{--grey-700: #2a3b47}.grey-800{--color: #22303a;--color-alt: #1a252d}:root{--grey-800: #22303a}.grey-900{--color: #1a252d;--color-alt: #1a252d}:root{--grey-900: #1a252d}:root{--light-color: var(--grey-300);--border-color: var(--grey-300);--title-color: var(--grey-700);--text-color: var(--grey-600);--text-color-light: var(--grey-500);--text-color-lighter: var(--grey-400);--color-light: var(--light-color);--color-border: var(--border-color);--color-title: var(--title-color);--color-text: var(--text-color);--color-text-light: var(--color-text-light);--color-text-lighter: var(--text-color-lighter);--body-bg: var(--grey-100);--color: var(--blue-500);--color-alt: var(--blue-600);--white-color: #fff}.white-color,.color-white{--color: var(--white-color)}.text-color,.color-text{--color: var(--text-color);--color-alt: var(--dark-color)}.text-color-light,.color-text-light{--color: var(--text-color-light);--color-alt: var(--text-color)}.text-color-lighter,.color-text-lighter{--color: var(--text-color-lighter);--color-alt: var(--text-color-light)}.light-color,.color-light{--color: var(--light-color);--color-alt: var(--border-color)}.border-color{--color: var(--border-color)}.body-bg{--color: var(--body-bg)}.color{color:var(--color)}.background{background-color:var(--color)}.fill{fill:var(--color)}.border{--border-color: var(--color)}.hover-bg:hover{background-color:var(--color-alt)}.hover-text:hover{color:var(--color-alt)}.first-color-lighter{--color: #83c6f6;--color-alt: #47b5f5}:root{--first-color-lighter: #83c6f6}.first-color-light{--color: #47b5f5;--color-alt: #1192ee}:root{--first-color-light: #47b5f5}.first-color-normal{--color: #1192ee;--color-alt: #0e7ecd}:root{--first-color-normal: #1192ee}.first-color-dark{--color: #0e7ecd;--color-alt: #0d6fb5}:root{--first-color-dark: #0e7ecd}.first-color-darker{--color: #0d6fb5;--color-alt: #0d6fb5}:root{--first-color-darker: #0d6fb5}.first-color{--color: #1192ee;--color-alt: #0e7ecd}:root{--first-color: #1192ee}.first-color-alt{--color: #0e7ecd;--color-alt: #0d6fb5}:root{--first-color-alt: #0e7ecd}.second-color-lighter{--color: #aae1f8;--color-alt: #8edafa}:root{--second-color-lighter: #aae1f8}.second-color-light{--color: #8edafa;--color-alt: #66d1ff}:root{--second-color-light: #8edafa}.second-color-normal{--color: #66d1ff;--color-alt: #4dbfef}:root{--second-color-normal: #66d1ff}.second-color-dark{--color: #4dbfef;--color-alt: #1c9dd4}:root{--second-color-dark: #4dbfef}.second-color-darker{--color: #1c9dd4;--color-alt: #1c9dd4}:root{--second-color-darker: #1c9dd4}.second-color{--color: #66d1ff;--color-alt: #4dbfef}:root{--second-color: #66d1ff}.second-color-alt{--color: #4dbfef;--color-alt: #1c9dd4}:root{--second-color-alt: #4dbfef}.third-color-lighter{--color: #f39696;--color-alt: #ef7676}:root{--third-color-lighter: #f39696}.third-color-light{--color: #ef7676;--color-alt: #eb5656}:root{--third-color-light: #ef7676}.third-color-normal{--color: #eb5656;--color-alt: #d84646}:root{--third-color-normal: #eb5656}.third-color-dark{--color: #d84646;--color-alt: #c03939}:root{--third-color-dark: #d84646}.third-color-darker{--color: #c03939;--color-alt: #c03939}:root{--third-color-darker: #c03939}.third-color{--color: #eb5656;--color-alt: #d84646}:root{--third-color: #eb5656}.third-color-alt{--color: #d84646;--color-alt: #c03939}:root{--third-color-alt: #d84646}.fourth-color-lighter{--color: #82f7bd;--color-alt: #51e199}:root{--fourth-color-lighter: #82f7bd}.fourth-color-light{--color: #51e199;--color-alt: #2bd480}:root{--fourth-color-light: #51e199}.fourth-color-normal{--color: #2bd480;--color-alt: #2ebd75}:root{--fourth-color-normal: #2bd480}.fourth-color-dark{--color: #2ebd75;--color-alt: #31a069}:root{--fourth-color-dark: #2ebd75}.fourth-color-darker{--color: #31a069;--color-alt: #31a069}:root{--fourth-color-darker: #31a069}.fourth-color{--color: #2bd480;--color-alt: #2ebd75}:root{--fourth-color: #2bd480}.fourth-color-alt{--color: #2ebd75;--color-alt: #31a069}:root{--fourth-color-alt: #2ebd75}.accent-color-lighter{--color: #ffd685;--color-alt: #ffc757}:root{--accent-color-lighter: #ffd685}.accent-color-light{--color: #ffc757;--color-alt: #ffba42}:root{--accent-color-light: #ffc757}.accent-color-normal{--color: #ffba42;--color-alt: #ffa600}:root{--accent-color-normal: #ffba42}.accent-color-dark{--color: #ffa600;--color-alt: #eb9c00}:root{--accent-color-dark: #ffa600}.accent-color-darker{--color: #eb9c00;--color-alt: #eb9c00}:root{--accent-color-darker: #eb9c00}.accent-color{--color: #ffba42;--color-alt: #ffa600}:root{--accent-color: #ffba42}.accent-color-alt{--color: #ffa600;--color-alt: #eb9c00}:root{--accent-color-alt: #ffa600}.dark-color-smoother{--color: #4f7087;--color-alt: #3c5567}:root{--dark-color-smoother: #4f7087}.dark-color-smooth{--color: #3c5567;--color-alt: #2a3b47}:root{--dark-color-smooth: #3c5567}.dark-color-dark{--color: #2a3b47;--color-alt: #22303a}:root{--dark-color-dark: #2a3b47}.dark-color-darker{--color: #22303a;--color-alt: #1a252d}:root{--dark-color-darker: #22303a}.dark-color-darkest{--color: #1a252d;--color-alt: #1a252d}:root{--dark-color-darkest: #1a252d}.dark-color{--color: #2a3b47;--color-alt: #22303a}:root{--dark-color: #2a3b47}.dark-color-alt{--color: #22303a;--color-alt: #1a252d}:root{--dark-color-alt: #22303a}.grey-color-lighter{--color: #f2f2f2;--color-alt: #e0e1e1}:root{--grey-color-lighter: #f2f2f2}.grey-color-light{--color: #e0e1e1;--color-alt: #bdbdbd}:root{--grey-color-light: #e0e1e1}.grey-color-normal{--color: #bdbdbd;--color-alt: #828282}:root{--grey-color-normal: #bdbdbd}.grey-color-dark{--color: #828282;--color-alt: #53575a}:root{--grey-color-dark: #828282}.grey-color-darker{--color: #53575a;--color-alt: #53575a}:root{--grey-color-darker: #53575a}.grey-color{--color: #bdbdbd;--color-alt: #828282}:root{--grey-color: #bdbdbd}.grey-color-alt{--color: #828282;--color-alt: #53575a}:root{--grey-color-alt: #828282}.main-sidebar{border-right:1px solid var(--border-color)}code[class*="language-"],pre[class*="language-"]{color:#f8f8f2;background:none;text-shadow:0 1px rgba(0,0,0,0.3);font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;overflow:auto;border-radius:0.3em}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#272822}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a6e22e}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.regex,.token.important{color:#fd971f}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre.line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}pre.code-toolbar{position:relative}pre.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}pre.code-toolbar:hover>.toolbar{opacity:1}pre.code-toolbar>.toolbar .toolbar-item{display:inline-block}pre.code-toolbar>.toolbar a{cursor:pointer}pre.code-toolbar>.toolbar button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}pre.code-toolbar>.toolbar a,pre.code-toolbar>.toolbar button,pre.code-toolbar>.toolbar span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}pre.code-toolbar>.toolbar a:hover,pre.code-toolbar>.toolbar a:focus,pre.code-toolbar>.toolbar button:hover,pre.code-toolbar>.toolbar button:focus,pre.code-toolbar>.toolbar span:hover,pre.code-toolbar>.toolbar span:focus{color:inherit;text-decoration:none}.main-features .main-features__content .main-features__img{display:block;margin:0 auto .5em;width:200px;height:98px;background:url(../images/ed-grid--features.png);background-size:200px}.ed-grid-demo{margin-bottom:var(--vertical-block-space);background:var(--light-bg);border:1px solid var(--border-color)}.ed-grid-demo .ed-item,.ed-grid-demo .box-demo{min-height:100px;background-clip:content-box;background-color:var(--color);display:-ms-grid;display:grid;-ms-flex-line-pack:center;align-content:center;-ms-flex-pack:center;justify-content:center;font-size:1.5rem;color:#fff}.ed-grid-demo .ed-item.ed-container,.ed-grid-demo .box-demo.ed-container{display:-ms-flexbox;display:flex}.ed-grid-demo .ed-item.ed-container .ed-item,.ed-grid-demo .box-demo.ed-container .ed-item{background-color:rgba(0,0,0,0.25)}.ed-grid-demo .ed-grid{background:var(--border-color)}.ed-grid-demo .ed-grid>*{min-height:100px;background:var(--color);display:-ms-grid;display:grid;-ms-flex-line-pack:center;align-content:center;-ms-flex-pack:center;justify-content:center;font-size:1.5rem;color:#fff}.ed-grid-demo .ed-grid>.ed-grid{background:rgba(0,0,0,0.25)}.dev-demo,.dev-demo-hover{position:static !important;top:initial;border:0;margin:0 !important;position:relative;top:66px}.dev-demo:before,.dev-demo-hover:before{position:fixed;background:steelblue;color:#FFF;font-size:.875rem;text-align:center;line-height:36px;height:36px;top:0}.dev-demo:before,.dev-demo-hover:before{content:"ed-grid: size s, from 0 (ed-containers: red, ed-items: blue, yellow)"}@media screen and (min-width: 640px){.dev-demo:before,.dev-demo-hover:before{content:"ed-grid: size m, from 640px (ed-containers: red, ed-items: blue, yellow)"}}@media screen and (min-width: 1024px){.dev-demo:before,.dev-demo-hover:before{content:"ed-grid: size l, from 1024px (ed-containers: red, ed-items: blue, yellow)"}}@media screen and (min-width: 1024px){.dev-demo:before,.dev-demo-hover:before{content:"ed-grid: size lg, from 1024px (ed-containers: red, ed-items: blue, yellow)"}}@media screen and (min-width: 1440px){.dev-demo:before,.dev-demo-hover:before{content:"ed-grid: size xl, from 1440px (ed-containers: red, ed-items: blue, yellow)"}}.dev-demo .ed-item,.dev-demo .ed-grid>*,.dev-demo-hover .ed-item,.dev-demo-hover .ed-grid>*{color:black}.dev-demo .ed-container,.dev-demo .ed-grid{padding-top:1.25rem;margin-bottom:10px;outline:1px solid tomato;position:relative}.dev-demo .ed-container .ed-container,.dev-demo .ed-container .ed-grid,.dev-demo .ed-grid .ed-container,.dev-demo .ed-grid .ed-grid{margin-bottom:0}.dev-demo .ed-container:before,.dev-demo .ed-grid:before{top:0;background:rgba(255,99,71,0.3);color:tomato}.dev-demo .ed-item,.dev-demo .ed-grid>*{position:relative;padding-bottom:1.25rem;background-color:rgba(70,130,180,0.1);outline:1px solid #4682b4;background-clip:content-box}.dev-demo .ed-item:before,.dev-demo .ed-grid>*:before{background:rgba(70,130,180,0.8);color:#FFF;bottom:0}.dev-demo-hover .ed-container:hover,.dev-demo-hover .ed-grid:hover{padding-top:1.25rem;margin-bottom:10px;outline:1px solid tomato;position:relative}.dev-demo-hover .ed-container:hover .ed-container,.dev-demo-hover .ed-container:hover .ed-grid,.dev-demo-hover .ed-grid:hover .ed-container,.dev-demo-hover .ed-grid:hover .ed-grid{margin-bottom:0}.dev-demo-hover .ed-container:hover:before,.dev-demo-hover .ed-grid:hover:before{top:0;background:rgba(255,99,71,0.3);color:tomato}.dev-demo-hover .ed-item:hover,.dev-demo-hover .ed-grid>*:hover{position:relative;padding-bottom:1.25rem;background-color:rgba(70,130,180,0.1);outline:1px solid #4682b4;background-clip:content-box}.dev-demo-hover .ed-item:hover:before,.dev-demo-hover .ed-grid>*:hover:before{background:rgba(70,130,180,0.8);color:#FFF;bottom:0}.menu-responsive{min-height:500px;position:relative}@media screen and (min-width: 1024px){.menu-responsive{min-height:300px}}.ed-menu{top:var(--header-height);width:100%;z-index:10}@media screen and (min-width: 1024px){.ed-menu{position:-webkit-sticky;position:sticky}}.ed-menu .logo{height:2rem}@media screen and (max-width: 1023px){.ed-menu .nav{position:absolute;left:0;bottom:0;background:black}}.ed-menu .menu{list-style:none}.ed-menu .link{color:lightgrey}.ed-menu .link.active{color:cornflowerblue}@media screen and (min-width: 1024px){.ed-menu .link{color:grey}}.ed-menu .icon{--size: 1.25rem;width:var(--size);height:var(--size);fill:currentColor}.main-features{text-align:center}.main-feature__img{--size: 6rem;width:var(--size);height:var(--size);overflow:hidden;margin:0 auto 1rem}.main-feature__img img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center center;object-position:center center}.main-feature:first-child .main-feature__img{width:calc(var(--size) * 2)}@media screen and (max-width: 1023px){.vertical-menu{background:var(--blue-900)}.vertical-menu::before{color:var(--grey-200);content:'Documentación de EDgrid'}.vertical-menu .t5{color:var(--grey-300)}.vertical-menu a{color:var(--grey-500)}.vertical-menu a.active{color:var(--red-500)}}.vertical-menu li{padding:0}.vertical-menu a,.vertical-menu a.active{padding:0.35rem 0}@media screen and (min-width: 1024px){.vertical-menu a.active{box-shadow:0 1px inset var(--border-color),0 -1px inset var(--border-color)}.vertical-menu a.active{border-top:none;border-bottom:none}}@media screen and (min-width: 1024px){.main-banner{padding-bottom:var(--padding)}}.testimony-card .content{-ms-flex-positive:1;flex-grow:1}.testimony-card .card__footer{-ms-flex-wrap:nowrap;flex-wrap:nowrap;margin-top:auto}.testimony-card .card__footer .button{white-space:nowrap}.user-avatar{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.user-avatar .photo{width:1.75rem;height:1.75rem}.data-list .container.container{width:100%;max-width:100%}.data-list li li{list-style:circle;border-bottom:none;padding-top:0;padding-bottom:0.5rem}.font-semibold{font-weight:600} ================================================ FILE: docs/documentacion/alineacion.1.html ================================================ EDgrid | Base (CSS/Sass)

Alineación


Con EDgrid puede alinear elementos o su contenido en horizontal y vertical según el breakpoint.

Alineación de contenido

Use las clases breakpoint-left, breakpoint-center y breakpoint-right

<h1 class="s-left m-center lg-right">Hola mundo</div>
<h1 class="s-center m-right lg-left">Hola mundo</div>
<h1 class="s-right m-left lg-center">Hola mundo</div>

Redimensione la ventana para ver

Hola mundo
Hola mundo
Hola mundo

Alineación de bloques

Use las clases breakpoint-to-left, breakpoint-to-center, breakpoint-to-right

<p class="s-75 m-50 lg-40 s-to-left m-to-center l-to-right">
    EDgrid es una libreria construida con Sass (y con versión CSS) 
    para Responsive Web Design (RWD). Es muy ligero, personalizable 
    y te permite prototipar y crear layouts en muy poco tiempo sin 
    conflictos con tu proyecto.
</p>

Ejemplo:

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

* Para que las alineaciones de bloque funcionen debe agregar clases de ancho.

Ancho de los bloques

Use las clases breakpoint-numero donde número es un múltiplo de 5 desde 0 hasta 95. Asi que la clase m-85 significa que el elemento tendrá 85% de ancho (de su contenedor) a partir de 640px.

Combine estas clases con las de alineación para crear layouts avanzados.

<p class="s-75 m-50 lg-40 s-to-left m-to-center l-to-right">
    EDgrid es una libreria construida con Sass (y con versión CSS) 
    para Responsive Web Design (RWD). Es muy ligero, personalizable 
    y te permite prototipar y crear layouts en muy poco tiempo sin 
    conflictos con tu proyecto.
</p>

Ejemplo:

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Diferencia entre bloque y contenido

Comprender la diferencia entre estos dos conceptos le ahorrará dolores de cabeza y sufrimiento. Se considera contenido a todo elemento inline y bloque a todo elemento de bloque (en la definición de HTML). Los elementos inline son mostrados por el navegador uno al lado del otro y con saltos de línea (cuando se agota el ancho). Los elementos de bloque fuerzan un salto de línea (salvo que lo modifiques con CSS).

Por ejemplo, un párrafo <p></p> es un bloque, pero el texto dentro de él es contenido. Así que debe preguntarse, ¿quiero todo el bloque de párrafo a la derecha o solo quiero el texto alineado a la derecha?

<p class="s-right">
Este es un párrafo cuyo texto se ha alineado a la derecha
</p>

Ejemplo:

Este es un párrafo cuyo texto se ha alineado a la derecha

<p class="s-75 s-to-right">
Este es un párrafo alineado a la derecha (como bloque)
</p>

Ejemplo:

Este es un párrafo alineado a la derecha (como bloque)

<p class="s-75 s-to-center s-right">
Este es un párrafo alineado al centro como bloque <br> y con el contenido alineado a la derecha.
</p>

Ejemplo:

Este es un párrafo alineado al centro como bloque
y con el contenido alineado a la derecha.

Comprender esta sutil diferencia es crucial para construir layouts. Por ejemplo, si quiere una imagen centrada, agregarle una clase s-to-center no hará nada porque las imágenes son inline (igual que los <span>, <a>, <input>, <label>). Podría maldecir a EDgrid pero así funciona CSS y no podemos hacer nada.

Alineación de imágenes y elementos inline

Para centrar una imágen puede aplicarle la clase breakpoint-center a su contenedor. Por ejemplo:

<div class="s-center">
    <img src="/img/tioalexys.jpg">
</div>

Igual si quiere alinearla a la derecha o izquierda. Y lo mismo para cualquier elemento inline.

Ahora bien, ¿qué sucede si quiero centrar directamente la imagen y no usar su contenedor? Use la clases breakpoint-block-left, breakpoint-block-center y breakpoint-block-right que agregan además un display: block al elemento inlne al que se apliquen y resuelven la alineación.

<img src="/img/tioalexys.jpg" class="s-block-center">

Seguro pensará: si se necesita un display: block agréguenlo a los estilos en lugar de crear nuevas clases. El detalle es que el elemento podría tener display:grid, display:flex, display: table o display: inline-block y no se puede forzar un display: block porque destruiría su layout.

Sobre el ancho de las imágenes

Las imágenes de mapas de bits (jpg, png, gif, webp) poseen las propiedades naturalHeight y naturalWidth (accedes a ellas por JavaScript) que representan su ancho y alto original. La imagen del ejemplo anterior es de 200x200px por eso la podemos centrar. Pero si fuera más grande habría que aplicarle además una clase para definir su ancho.

En el caso de las imágenes svg, estas son vectoriales y carecen de dichas propiedades por lo que siempre ocuparan todo el espacio disponible en su contenedor.

Ejemplo:

Logotipo de EDgrid

La podemos centrar con clases de ancho y de alineación de bloques

<img alt="Logotipo de EDgrid" src="/assets/img/EDgrid-logo.svg" class="s-30 s-block-center">
Logotipo de EDgrid
================================================ FILE: docs/documentacion/alineacion.html ================================================ EDgrid | Base (CSS/Sass)

Alineación


Con EDgrid puede alinear elementos o su contenido en horizontal y vertical según el breakpoint.

Alineación de contenido

Use las clases breakpoint-left, breakpoint-center y breakpoint-right

<h1 class="s-left m-center lg-right">Hola mundo</div>
<h1 class="s-center m-right lg-left">Hola mundo</div>
<h1 class="s-right m-left lg-center">Hola mundo</div>

Redimensione la ventana para ver

Hola mundo
Hola mundo
Hola mundo

Alineación de bloques

Use las clases breakpoint-to-left, breakpoint-to-center, breakpoint-to-right

<p class="s-75 m-50 lg-40 s-to-left m-to-center l-to-right">
    EDgrid es una libreria construida con Sass (y con versión CSS) 
    para Responsive Web Design (RWD). Es muy ligero, personalizable 
    y te permite prototipar y crear layouts en muy poco tiempo sin 
    conflictos con tu proyecto.
</p>

Ejemplo:

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Ancho de los bloques

Use las clases breakpoint-numero donde número es un múltiplo de 5 desde 0 hasta 95. Asi que la clase m-85 significa que el elemento tendrá 85% de ancho (de su contenedor) a partir de 640px.

Combine estas clases con las de alineación para crear layouts avanzados.

<p class="s-75 m-50 lg-40 s-to-left m-to-center l-to-right">
    EDgrid es una libreria construida con Sass (y con versión CSS) 
    para Responsive Web Design (RWD). Es muy ligero, personalizable 
    y te permite prototipar y crear layouts en muy poco tiempo sin 
    conflictos con tu proyecto.
</p>

Ejemplo:

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Diferencia entre bloque y contenido

Comprender la diferencia entre estos dos conceptos le ahorrará dolores de cabeza y sufrimiento. Se considera contenido a todo elemento inline y bloque a todo elemento de bloque (en la definición de HTML). Los elementos inline son mostrados por el navegador uno al lado del otro y con saltos de línea (cuando se agota el ancho). Los elementos de bloque fuerzan un salto de línea (salvo que lo modifiques con CSS).

Por ejemplo, un párrafo <p></p> es un bloque, pero el texto dentro de él es contenido. Así que debe preguntarse, ¿quiero todo el bloque de párrafo a la derecha o solo quiero el texto alineado a la derecha?

<p class="s-right">
Este es un párrafo cuyo texto se ha alineado a la derecha
</p>

Ejemplo:

Este es un párrafo cuyo texto se ha alineado a la derecha

<p class="s-75 s-to-right">
Este es un párrafo alineado a la derecha (como bloque)
</p>

Ejemplo:

Este es un párrafo alineado a la derecha (como bloque)

<p class="s-75 s-to-center s-right">
Este es un párrafo alineado al centro como bloque <br> y con el contenido alineado a la derecha.
</p>

Ejemplo:

Este es un párrafo alineado al centro como bloque
y con el contenido alineado a la derecha.

Comprender esta sutil diferencia es crucial para construir layouts. Por ejemplo, si quiere una imagen centrada, agregarle una clase s-to-center no hará nada porque las imágenes son inline (igual que los <span>, <a>, <input>, <label>). Podría maldecir a EDgrid pero así funciona CSS y no podemos hacer nada.

* Puede usar estas clases también para alinear botones

Alineación de imágenes y elementos inline

Para centrar una imágen puede aplicarle la clase breakpoint-center a su contenedor. Por ejemplo:

<div class="s-center">
    <img src="/img/tioalexys.jpg">
</div>

Igual si quiere alinearla a la derecha o izquierda. Y lo mismo para cualquier elemento inline.

Ahora bien, ¿qué sucede si quiero centrar directamente la imagen y no usar su contenedor? Use la clases breakpoint-block-left, breakpoint-block-center y breakpoint-block-right que agregan además un display: block al elemento inlne al que se apliquen y resuelven la alineación.

<img class="s-block-center" src="/assets/img/EDgrid-isotipo.svg">

Seguro pensará: si se necesita un display: block agréguenlo a los estilos en lugar de crear nuevas clases. El detalle es que el elemento podría tener display:grid, display:flex, display: table o display: inline-block y no se puede forzar un display: block porque destruiría su layout.

Sobre el ancho de las imágenes

Las imágenes de mapas de bits (jpg, png, gif, webp) poseen las propiedades naturalHeight y naturalWidth (accedes a ellas por JavaScript) que representan su ancho y alto original. La imagen del ejemplo anterior es de 200x200px por eso la podemos centrar. Pero si fuera más grande habría que aplicarle además una clase para definir su ancho.

En el caso de las imágenes svg, estas son vectoriales y carecen de dichas propiedades por lo que siempre ocuparan todo el espacio disponible en su contenedor.

Ejemplo:

Logotipo de EDgrid

La podemos centrar con clases de ancho y de alineación de bloques

<img alt="Logotipo de EDgrid" src="/assets/img/EDgrid-logo.svg" class="s-30 s-block-center">
Logotipo de EDgrid
================================================ FILE: docs/documentacion/banner.html ================================================ EDgrid | Banner

Banner principal
de dos columnas
con EDgrid

Creado utilizando los componentes de columnas. Totalmente responsive.

Banner de dos columnas

Al copiar el código del componente banner usted sólo conseguirá la estructura de éste para que coloque el contenido que desee.

Los estilos empleados en la demostración (como el color de fondo o estilos del texto) provienen de la guía de estilos de EDteam.

<section class="l-section s-py-4">
  <!-- Separación del contenido en columnas -->
  <div class="ed-grid lg-grid-2 row-gap s-gap-2 m-gap-4">
    <!-- Contenido de la columna 1 -->
    <div class="s-column s-main-center lg-main-start lg-cross-start s-center lg-left">
      <h1>Banner principal de dos columnas con EDgrid</h1>
      <p>Creado utilizando los componentes de columnas. Totalmente responsive.</p>
      <!-- Botones -->
      <div class="s-main-center">
        <a class="button s-mr-2 s-mb-2 m-mb-0">Botón 1</a>
        <a class="button s-mb-2 m-mb-0">Botón 2</a>
      </div>
    </div>
    <!-- Contenido de la columna 2 -->
    <div>
      <div class="img-container s-ratio-16-9">
        <img class="s-radius-1" src="/assets/img/og-image.jpg">
      </div>
    </div>
  </div>
</section>
================================================ FILE: docs/documentacion/base.1.html ================================================ EDgrid | Base (CSS/Sass)

Estilos base

Los estilos base normalizan los elementos HTML para Responsive Web Design.

*,
*:before,
*:after {
  box-sizing: border-box;
}

body {
  margin      : 0;
  font-family : sans-serif;
}

img {
  max-width : 100%;
  height    : auto;
}

a {
  text-decoration : none;

  &:hover { text-decoration : underline }
}
================================================ FILE: docs/documentacion/base.html ================================================ EDgrid | Base (CSS/Sass)

Estilos base

Los estilos base normalizan los elementos HTML para Responsive Web Design.

*,
*:before,
*:after {
  box-sizing: border-box;
}

body {
  margin      : 0;
  font-family : sans-serif;
}

img {
  max-width : 100%;
  height    : auto;
}

a {
  text-decoration : none;

  &:hover { text-decoration : underline }
}
================================================ FILE: docs/documentacion/botones.html ================================================ EDgrid | Botones (Sass/CSS)

Botones (Sass/CSS)

Aunque ed-grid no pretende incluir elementos de UI (que se incluirán en el futuro proyecto ed-ui), por el momento incluye botones y menu pensando en el prototipado rápido.

Uso con CSS (cssCore)

Use la clase button. Puede añadir las clases round o radius para bordes redondeados.

Para controlar el tamaño del botón, cambie manualmente el font-size por CSS. Si desea cambiar los colores, haga lo mismo en su CSS personalizado.

<!-- version con css -->
<a href="#" class="button">Boton default</a>
<a href="#" class="button round">Boton round</a>
<a href="#" class="button radius">Boton radius</a>

Resultado

Boton default Boton round Boton radius

Uso con Sass

Incluya el mixin button($bg-color,$front-color,$style) Sus parámetros (todos opcionales) son:

  • $bg-color: el color de fondo (#ddd por defecto)
  • $font-color: color del texto (#333 por defecto)
  • $style: estilo del boton (default por defecto, puede usar round o radius).
<a href="#" class="selector1">Boton 1</a>
<a href="#" class="selector2">Boton 2</a>
<a href="#" class="selector3">Boton 3</a>
.selector1 { @include button(teal, white) }
.selector2 { @include button(tomato, white, round) }
.selector3 { @include button(#2e84e6, white, radius) }

Resultado

Boton 1 Boton 2 Boton 3

================================================ FILE: docs/documentacion/breakpoints.html ================================================ EDgrid | CSS

Breakpoints


Los breakpoints son los puntos de quiebre donde el layout cambia. Estan definidos en el siguiente Sass map:

$breakpoints : (
    s  : 0,     // Todos los tamaños
    m  : 40em,  // ~ 640px
    lg : 64em,  // ~ 1024px
    xl : 90em   // ~1440px
) !default;

* En versiones anteriores se usaba el breakpoint l que ahora se ha cambiado a lg para evitar confusión con la nomenclatura de SMACSS en la que l no significa large sino layout. Sin embargo, por compatibilidad hacia atrás, EDgrid reconoce aun el breakpoint l por lo que su proyecto no se verá afectado. Aunque recomendamos dejar de usarlo en el futuro.

Mobile first

EDgrid usa el patrón Mobile first, lo que significa que el estilo definido en un breakpoint será heredado en breakpoints superiores salvo que sea sobreescrito. En el siguiente ejemplo, el elemento medirá 50% de ancho (s-50) en todos los tamaños ya que fue definido en el breakpoint menor y no ha sido sobreescrito.

<article class="s-50">Hola mundo</article>

En cambio, en este ejemplo, medirá 50% en los breakpoints s y m pero en l y xl medirá 75%.

<article class="s-50 lg-75">Hola mundo</article>

Cambiar los breakpoints (Sass)

Si es usuario avanzado puede cambiar los breakpoints por los suyos. Puede cambiar el tamaño, el nombre o la cantidad. Solo debe declarar el Sass map $breakpoints antes de importar EDgrid.

$breakpoints : (
small   : 0,
medium  : 45em,
large   : 80em,
xlarge  : 90em,
xxlarge : 120em
)

@import "~ed-grid/ed-grid";
================================================ FILE: docs/documentacion/cards.html ================================================ EDgrid | Cards (Sass/CSS)

Cards


Recuerde que EDgrid es una librería enfocada al RWD, por lo que no tiene componentes o estilos integrados por defecto, pero puede utilizar el prototipado y el prototipado avanzado para crear sus propios componentes.

Card básico

Ejemplo de tarjeta creada con el prototipado integrado:

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
<article class="s-shadow-bottom">
    <!--Contenedor de la imagen-->
    <div class="s-ratio-16-9 img-container s-radius-tl s-radius-tr">
        <img src="/assets/img/poster-curso.png">
    </div>
    <!--Contenido-->
    <div class="s-bg-white s-pxy-2">
        <h3>Curso Bases de Datos Desde Cero</h3>
        <p class="s-mb-0">Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación</p>
    </div>
    <footer class="s-cross-center s-bg-grey s-pxy-2 s-radius-br s-radius-bl">
        <!--Define el ancho máximo de la imagen-->
        <div class="s-10 s-mr-1">
        <!--Contenedor de la imagen-->
        <div class="circle ">
            <img  src="/assets/img/alexys.jpg">
        </div>
        <!--Profesor-->
        </div>
        <p class="s-mb-0">Prof. Alexys Lozada</p>
        <!--Boton-->
        <div class="button s-to-right">$40USD</div>
    </footer>
</article>

Card horizontal

Este card se mostrará en formato horizontal en desktop y pasará a ser vertical en dispositivos móviles.

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
<article class="s-shadow-bottom">
  <!-- Póster y contenido -->
  <div class="ed-grid m-grid-5 s-gap-2 m-pxy-2 s-bg-white s-radius-tl s-radius-tr">
    <!-- Contenedor de la imagen -->
    <div class="m-cols-2 img-container s-ratio-16-9 s-radius-tl s-radius-tr m-radius">
        <img src="/assets/img/poster-curso.png">
    </div>
    <!-- Contenido -->
    <div class="s-pxy-2 m-pxy-0 m-cols-3">
        <h3>Curso Bases de Datos Desde Cero</h3>
        <p class="s-mb-0">Diseña, estructura y administra 
                          bases de datos SQL y crea un sistema de facturación</p>
    </div>
  </div>
  <footer class="s-bg-grey s-cross-center s-pxy-2 s-radius-br s-radius-bl">
      <!-- Define el ancho máximo de la imagen -->
      <div class="s-10 m-5 s-mr-1">
          <!-- Contenedor de la imagen -->
          <div class="circle ">
              <img  src="/assets/img/alexys.jpg">
          </div>
      </div>
      <!-- Profesor -->
      <p class="s-mb-0">Prof. Alexys Lozada</p>
      <!-- Botón -->
      <div class="button s-to-right">$40USD</div>
  </footer>
</article>
================================================ FILE: docs/documentacion/css.html ================================================ EDgrid | CSS

Comprender EDgrid CSS

En EDgrid puede decidir que código será compilado a CSS.

Si usted desea puede trabajar solo con la versión CSS de EDgrid, y añadir clases a su marcado HTML para construir su layout según el flujo de trabajo recomendado.

El código CSS de EDgrid 2 se clasifica en 2 grupos:

cssCore

Cojunto de clases CSS recomendadas si va a trabajar con la versión CSS. Si va a trabajar con Sass puede saltarse está sección.

  • offset
    Clases para agregar un margen inicial a los elementos
  • flexbox
    Clases para alinear elementos en vertical y horizontal con flexbox.
  • grid
    Clases para crear cuadrículas (p.ej. para galerías de fotos)
  • devMode
    Genera el modo dev para visualizar la construcción del layout
  • botones
    Clases para crear botones
  • ed-menu
    Clases para crear menu de navegacion

cssHelpers

Clases utilitarias de CSS que incluyen la funcionalidad base de EDgrid. Por eso, incluso en la versión Sass vienen activadas por defecto.

  • Breakpoints
    Define los tamaños de viewport en los que se cambia el layout
  • Layout (flexbox)
    Construye layouts con Flexbox
  • Layout (CSS Grid)
    Construye layouts con CSS Grid (beta)
  • Helpers para alineación con flexbox
    Alineación de elementos en horizontal y vertical respecto a su padre
  • Helpers
    Clases para alineación de elementos
  • Visibilidad
    Clases para definir en qué breakpoints será visible u oculto un elemento.
  • Video responsive
    Crea videos responsive 16:9
================================================ FILE: docs/documentacion/distribucion.html ================================================ EDgrid | Distribucion

Distribución


Order

Tanto en flexbox como en grid, la propiedad order permite definir la posición de un elemento en el layout. Por ejemplo, un elemento con order: 1 aparecerá antes que uno con order:2 aunque en el código HTML se encuentre después.

Con EDgrid puede definir esta propiedad con las clases breakpoint-order-numero. Donde número va de 1 hasta la variable max-grid-columns (12 por defecto).

Tenga en cuenta que asignarle 1 al order de un elemento no hará que aparezca en primer lugar ya que el valor predeterminado de todos es 0 (teoría de CSS). Por lo que debe agregarle las clases a todos los que quiera modificar.

<div class="ed-grid s-grid-3">
    <div class="m-order-2 lg-order-3">1</div>
    <div class="m-order-3 lg-order-1">2</div>
    <div class="m-order-1 lg-order-2">3</div>
</div>
1
2
3

Alineación en vertical y horizontal de elementos hijos

Usando la teoría de flexbox, consideramos main como eje horizontal y cross como eje vertical. Con las clases breakpoint-main-[start|center|end|justify|distribute] y breakpoint-cross-[start|center|end|baseline] Puede alinear bloques y elementos hijos.

<div class="s-cross-center">
    <img src="/img/tioalexys.jpg" width="80" class="s-mr-2">
    <span>Alexys Lozada</span>
</div>
Alexys Lozada

Tenga en cuenta que los márgenes de los elementos pueden influir en estas alineaciones. Por ejemplo, el mismo código anterior pero con un párrafo en lugar de span (el párrafo tienen un margin-bottom que impide el centrado vertical).

<div class="s-cross-center">
    <img src="/img/tioalexys.jpg" width="80" class="s-mr-2">
    <p>Alexys Lozada</p>
</div>

Alexys Lozada

Lo resolvemos cambiando la etiqueta o anulando el margen.

<div class="s-cross-center">
    <img src="/img/tioalexys.jpg" width="80" class="s-mr-2">
    <p class="s-mb-0">Alexys Lozada</p>
</div>

Alexys Lozada

Orientación

Use las siguientes clases para definir la orientacion de los hijos de un elemento:

  • breakpoint-row De izquierda a derecha (predeterminado)
  • breakpoint-column De arriba hacia abajo
  • breakpoint-row-reverse De derecha a izquierda
  • breakpoint-column-reverse De abajo hacia arriba
<div class="lg-50 lg-to-center column">
    <div>1</div>
    <div>2</div>
    <div>3</div>
</div>
1
2
3
================================================ FILE: docs/documentacion/estructura.html ================================================ EDgrid | Estructura

Estructura de archivos


La siguiente es la estructura de archivos de EDgrid. Solo se explican los archivos y directorios propios del proyecto y no las herramientas comunes de desarrollo (package.json, .gitignore, etc)

Tenga presente que en el mismo repositorio se encuentra la librería EDgrid y la página web con la documentación. Si desea estudiar como se creó EDgrid busque el archivo src/scss/ed-grid.scss y la carpeta src/scss/ed-grid. Todo lo demás se usa para construir esta página web y no forma parte de la librería.

Etructura general del repositotio

  • src/ Carpeta de desarrollo
    • md/ Contenido de la documentación en markdown
    • data/ Datos JSON para la página web
    • img/ Imágenes para la página web
    • js/ JavaScript para la página web
    • pug/ Archivos pug para generar la página web
    • scss/ Estructura de archivos Sass
    • ed-grid/ 🔥 Componentes de la librería EDgrid.
    • web-styles/ Estilos para la documentación en ed-grid.com (no son parte de EDgrid)
    • styles.scss Archivo principal para la documentacion ed-grid.com (no es parte de EDgrid)
    • ed-grid.scss 🔥 Archivo principal de EDgrid que importa sus componentes y define variables.
  • ed-grid.scss 🔥 Archivo para importar EDgrid desde node_modules.
  • test.html 🔥 Archivo para hacer pruebas con EDgrid

Archivos exclusivos de EDgrid

  • ed-grid.scss 🔥 Archivo para importar EDgrid desde node_modules.
  • src/
    • ed-grid.scss 🔥 Archivo que importa los componentes y define las variables de configuración
    • ed-grid-css.scss Archivo para compilar EDgrid a su versión CSS
    • ed-grid/
      • components/ Componententes principales de la librería
        • _alignment.scss Utilidades para alineación de bloques y contenido
        • _base Estilos base para elementos HTML.
        • _core-flexbox.scss Sistema de columnas con flexbox
        • _core-grid.scss Sistema de filas y columnas con CSS Grid
        • _dev.scss Estilos para debuggin
        • _layouts.scss Estilos para separaciones verticales, margenes y paddings.
        • _media-queries Mixins para crear media queries
        • _prototype.scss Estilos para prototipado rápido
        • _video.scss Estilos para video responsive
        • _visibility.scss Estilos para mostrar y ocultar elementos en cada breakpoint
      • helpers/ Funciones y mixins necesarios para el funcionamiento de diversos componentes
        • _functions.scss Funciones para convertir pixeles a em y rem (necesarios para mixins de EDgrid)
        • _mixins.scss Mixins de apoyo en el desarrollo de componentes
      • legacy/ Componentes y estilos para compatibilidad con versiones anteriores de EDgrid (no necesario en proyectos nuevos).
        • _ed-menu Estilos para crear menus de navegación
        • _grid.scss Estilos para crear cuadriculas (se recomienda usar core-grid)
        • _legacy.scss Estilos varios de versiones antiguas
        • _offset Estilos legacy para offset de columnas (no necesario en proyectos nuevos).
    • css/
      • ed-grid.css Versión CSS de EDgrid con comentarios para desarrollo
      • ed-grid.min.css Versión minificada de EDgrid

Archivos exclusivos de la página de documentación

  • docs/ Página web de documentación y assets compilados
  • src/
    • pug/ Archivos pug para generar páginas HTML
    • md/ Contenido de la documentación en formato markdown
    • img/ Imágenes de la página web
    • data/ Datos en formato JSON para mostrar en la página web
    • js/ Archivos javascript para la documentación
    • scss/
      • styles.scss Importa archivos para estilos de la documentación
      • web-styles/ Partials de Sass para la documentación
================================================ FILE: docs/documentacion/flexbox-helpers.html ================================================ EDgrid | Flexbox (CSS/Sass)

Flexbox (CSS/Sass)

El core de ed-grid está construido con flexbox, cero floats, display:table, inline-blocks u otros hacks extraños. Sin embargo, ed-grid ofrece muchas utilidades extra para aprovechar el poder de flexbox.

Estas utilidades están dentro de los helpers de CSS ($cssHelpers : true) por lo que se recomienda activarlos aunque su flujo de trabajo sea con Sass.

  • Flexbox alinea los elementos respecto a dos ejes: main (horizontal por defecto) y cross (vertical por defecto).
  • En las siguientes instrucciones, la version css indicará la clase que debe añadirse al marcado html del contenedor
  • En la versión Sass se indicará el mixin que debe incluirse al contenedor
  • En la version CSS (cssCore), si desea indicar un breakpoint, inicie la clase con él, así l-main-justify m-flex-reverse xl-cross-center
  • Si no indica el breakpoint (cssHelpers), así cross-end

Alineaciones en el eje principal

Alinear los elementos a la izquierda y derecha

Versión con css

<!-- version con css -->
<div class="main-justify">
<div>1</div>
<div>2</div>
<div>3</div>
</div>

Versión con Sass

// version con Sass *******
.container { @include mainJustify }

Distribuir el espacio disponible alrededor de los elementos

Versión con css

<!-- version con css -->
<div class="main-distribute">
<div>1</div>
<div>2</div>
<div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include mainDistribute }

Alinear los elementos al inicio del eje

Versión con css

<!-- version con css -->
<div class="main-start">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include mainStart }

Alinear los elementos al centro del eje

Versión con css

<!-- version con css -->
<div class="main-center">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

:markdown-it

// version con Sass
.container { @include mainCenter }

Alinea los elementos al final del eje

Versión con css

<!-- version con css -->
<div class="main-end">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include mainEnd }

Alineaciones en el eje secundario

Al inicio del eje secundario

Versión con css

<div class="cross-start">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include crossStart }

Al centro del eje secundario

Versión con css
<!-- version con css -->
<div class="cross-center">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include crossCenter }

Al final del eje secundario

Versión con css
<!-- version con css -->
<div class="cross-end">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include crossEnd }

Combinar alineaciones en ambos ejes

Puede combinar alineaciones para el eje principal y secundario

Versión con css

<!-- version con css -->
<div class="main-center cross-center">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container {
  @include mainCenter;
  @include crossCenter;
}

Orientación de los ejes

Reversa horizontal

Versión con css

<!-- version con css -->
<div class="flex-reverse">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include flexReverse }

En columna (de arriba hacia abajo)

Versión con css

<!-- version con css -->
<div class="flex-column">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

//version con Sass
.container { @include flexReverse }

Columna en reversa (de abajo hacia arriba)

Versión con css

<!-- version con css -->
<div class="flex-column-reverse">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Versión con Sass

// version con Sass
.container { @include flexColumnReverse }

Centrado absoluto

El centrado absoluto se aplica a un container que tiene un solo hijo, el cual puede ser solo texto o un elemento html

Versión con css

<!-- version con css -->
<div class="flex-center">
  <div>1</div>
</div>

Versión con Sass

// version con Sass
.container { @include flexCenter }

Orden de elementos (solo CSS)

A través de clases html con el formato bp-order-n siendo bp un breakpoint válido de ed-grid, y n un número entre 1 y 10 se puede controlar la aparicion de los elementos en el navegador. Recuerde que todos los elementos tienen por defecto el valor 0 para la propiedad order.

Ejemplo

<div class="container">
  <div class="m-order-2">1</div>
  <div class="m-order-1">2</div>
  <div>3</div>
</div>

Esta característica no esta disponible para Sass porque en Sass basta escribir una linea de código en la media query requerida. Escribir los mixins consume más código que tan solo escribir manualmente el orden cuando sea necesario.

================================================ FILE: docs/documentacion/funciones.html ================================================ EDgrid | Funciones (Sass)

Funciones (Sass)

EDgrid incluye dos funciones útiles en el RWD: em($px) y rem($px) Estas funciones convierten un número en px a em o rem respectivamente

.selector {
  font-size: em(15px);
  max-width : rem(1000px);
 }

Compila a

.selector{
  font-size:.9375em;
  max-width:62.5rem;
}

Estas funciones lanzarán un error si le pasa un valor diferente a un número en pixeles

================================================ FILE: docs/documentacion/grids.html ================================================ EDgrid | Grid (CSS/Sass)

Grids (cuadrículas)

Con EDgrid puede crear cuadrículas fácilmente.

Grids con CSS

En CSS EDgrid cuenta con dos grids preconstruidos: 1,2,3,4 y 2,3,4,5 (los números representan las columnas en cada breakpoint de ed-grid).

Para utilizarlos, use la clase grid-container en el contedor, además la clase grid-1234 o grid-2345 para indicar el tipo de grid.

Por último, a cada item de la galeria asignele la clase grid-item

<div class="grid-container grid-1234">
  <div class="grid-item"><!-- Cualquier contenido--></div>
  <div class="grid-item"><!-- Cualquier contenido--></div>
  <div class="grid-item"><!-- Cualquier contenido--></div>
  <div class="grid-item"><!-- Cualquier contenido--></div>
  <div class="grid-item"><!-- Cualquier contenido--></div>
  <div class="grid-item"><!-- Cualquier contenido--></div>
  <div class="grid-item"><!-- Cualquier contenido--></div>
</div>

Grids con Sass

Para Sass, use el mixin grid($item,$s $m $l $xl,$gutter) aplicado al contenedor del grid. Los parámetros son:

  • $item (obligatorio) es el selector css de cada item del grid. Debe pasarse entrecomillado.
  • $s $m $l $xl (solo el primero obligatorio) son el número de columnas en cada breakpoint de EDgrid (separados por espacios)
    • Los breakpoints superiores heredaran el número de columnas del último breakpoint declarado en el mixin
    • $gutter (opcional) es la separación entre los items. Solo se aceptan em, rem o px.

Ejemplo, para el siguiente HTML:

<div class="gallery">
  <div class="image"><!-- Una foto en la galeria--></div>
  <div class="image"><!-- Una foto en la galeria--></div>
  <div class="image"><!-- Una foto en la galeria--></div>
  <div class="image"><!-- Una foto en la galeria--></div>
  <div class="image"><!-- Una foto en la galeria--></div>
  <div class="image"><!-- Una foto en la galeria--></div>
  <div class="image"><!-- Una foto en la galeria--></div>
</div>

Crearemos un grid 1,1,2,3

.gallery {
  @include grid('.image',1 1 2 3);
}

Los grids son creados con CSS Grid y agregan un fallback con flexbox para navegadores que no lo soportem.

================================================ FILE: docs/documentacion/helpers.html ================================================ EDgrid | Helpers (CSS/Sass)

Helpers

Archivo helpers.scss

Los helpers son ayudas al trabajo a través de clases.

Ancho de elementos

Puede usar las mismas clases de los ed-item.

<div class="m-60">
<!--Este elemento mide 60% a partir de 640px-->
</div>
<div class="xl-1-3">
<!-- Este elemento mide 33.33% a partir de 1440px-->
</div>

Alineación de elementos

Se aplica al mismo elemento que se quiere alinear las clases: to-left, to-right, to-center. Para que funcione debe especificar un ancho también.

<div class="to-left s-50"><!-- Se envia a la izquierda 50% de ancho desde small--></div>
<div class="to-right m-80"><!-- Se envia a la derecha 80% de ancho desde medium --></div>
<div class="to-center l-75"><!-- Se envia al centro 75% de ancho desde large--></div>

Alinear contenido

Use las clases left, center, right en el contenedor para que su contenido se centre.

<h2 class="center">
Soy un título centrado
</h2>

Limpiar floats

Versión CSS

<!--Version css-->
<div class="clearfix"><!-- la clase clearfix limpia los floats--></div>

Versión Sass

// Uso con Sass
.selector { @include clearfix }

Forzar ancho total

Hace que un elemento siempre mida el 100% del ancho disponible

Versión CSS

<!-- Version CSS -->
<div class="full"><!-- Este elemento medirá 100% de ancho siempre --></div>

Versión Sass

// Uso con Sass
.selector { @include full }

Hacer un elemento circular

Tenga en cuenta que si el alto y el ancho no son iguales, el elemento no será circular sino oval.

Versión CSS

<!-- Version CSS -->
<div class="circle"><!-- Este elemento será circular --></div>

Versión Sass

// Uso con Sass
.selector { @include circle }

Controlar el padding

Importante: si usa la versión con CSS Grid puede saltarse esta sección.

En EDgrid la separación entre los ed-item se genera a través de padding laterales (la separación entre uno y el siguiente es dos veces el tamaño del padding, por defecto 15px).

Puede ocurrir que en algunos casos complejos para forzar la alineación requiera añadir o quitar los padding por defecto a cualquier elemento (no solo ed-container y ed-item).

Versión CSS

<!-- Version CSS -->
<div class="padding"><!-- Añade un padding si el elemento no lo tenia --></div>
<div class="padding-2"><!-- Añade un padding doble --></div>
<div class="padding-3"><!-- Añade un padding triple --></div>
<div class="ed-container no-padding"><!-- Elimina el padding de todos sus ed-item internos--></div>
<div class="ed-item no-padding"><!-- Elimina el padding de solo este ed-item--></div>

Versión Sass

// Uso con Sass

// el mixin padding() recibe un número como parámetro
// este número puede ser 0 para eliminar el padding
.selector1 { @include padding(3) }

// El mixin noPaddingContainer tiene efecto
// solo aplicado a un .ed-container y elimina
// el padding de sus ed-item hijos
.selector2 { @include noPaddingContainer }
================================================ FILE: docs/documentacion/imagenes.html ================================================ EDgrid | Imágenes (Sass/CSS)
================================================ FILE: docs/documentacion/index.html ================================================ EDgrid | Documentación
Documentación

EDgrid es muy fácil de aprender. En una hora ya lo estará usando en sus proyectos

Comenzar con EDgrid

EDgrid es una libreria CSS/Sass para construir layouts para web fácilmente.

EDgrid es un proyecto de EDteam usado en todos los proyectos de la empresa. Es Open Source (GPL2) y puede usarla y modificarla libremente en todos sus proyectos.

Si encuentra algun error o tiene sugerencias de mejoras, puede escribirlas en Github.

================================================ FILE: docs/documentacion/instalacion.html ================================================ EDgrid | Base (CSS/Sass)

Comenzar con EDgrid

EDgrid es una libreria CSS/Sass para construir layouts para web fácilmente. En una hora ya lo estará usando en sus proyectos.

Creado por EDteam y usado en todos los proyectos de la empresa. Es Open Source (GPL2) y puede usarla y modificarla libremente en todos sus proyectos.

Si encuentra algun error o tiene sugerencias de mejoras, puede escribirlas en Github.

Instalación

Puede usar EDgrid con Sass (recomendado) y CSS.

Instalación de versión Sass

Para instalar la versión Sass puede utilizar npm:

npm install --save-dev ed-grid

También puede usar yarn:

yarn add ed-grid --dev

Posteriormente, impórtelo en su estructura de archivos Sass

@import "~ed-grid/ed-grid"

Instalación de versión CSS

Descargue la última versión CSS de EDgrid e impórtela en su proyecto como cualquier otra hoja de estilos. También puede usar del CDN para importaciones rápidas.

<link href="https://unpkg.com/ed-grid@3.0.0/src/css/ed-grid.min.css" rel="stylesheet">

* Al usar EDgrid en su versión CSS no podrá personalizar la librería, utilizar el prototipado avanzado y compilar sólo el código necesario, entre otras opciones que sólo se pueden hacer con la versión de Sass

================================================ FILE: docs/documentacion/layout-css-grid.html ================================================ EDgrid | Flujo de trabajo (CSS/Sass)

Sistema de filas y columnas con CSS Grid

La versión 3 de EDgrid incluye la creación de layouts con CSS Grid, la que ofrece varias ventajas sobre los layouts con Flexbox.

Esta versión se basa en las siguientes reglas:

  1. El contenedor define la cantidad de columnas en cada breakpoint
  2. Los items definen cuantas columnas de su contedor ocuparán
  3. Solo el contenedor tiene una clase definida ed-grid. Los items pueden ser cualquier elemento hijo directo de ed-grid (a diferencia de la versión con flexbox que exigía tener un ed-item).
  4. CSS Grid utiliza la propiedad gap para definir la separación entre tracks, lo que resuelve el problema de los contenedores anidados y los paddings (propio de layouts con floats y flexbox).

Contenedor ed-grid

En esta versión se usa ed-grid como contenedor y es en él donde debemos definir las columnas (es así como funciona CSS Grid).

Para definir las columnas use la nomenclatura breakpoint-grid-numero.

<div class="ed-grid s-grid-2 lg-grid-4 xl-grid-10">
  <!-- Este contenedor tiene 2 columnas en tamaño s, 4 columnas en tamaño lg y 10 columnas en tamaño xl -->
</div>

Items

Cualquier hijo directo de ed-grid es automáticamente un item del layout. Y automáticamente tomará una columna de su contenedor.

<!-- Layout de tres columnas donde cada card ocupa una columna.
No tiene que hacer nada en los items. Solo definir las columnas en el contenedor -->
<div class="ed-grid s-grid-3">
  <div class="card"></div>
  <div class="card"></div>
  <div class="card"></div>
</div>

Ejemplo:

1
2
3

Definir cantidad de columnas que ocupa el item

Use la siguiente nomenclatura breakpoint-cols-numero Donde número es la cantidad de columnas.

Por ejemplo, para crear un layout de sidebar al 25% y contenido al 75% el marcado sería el siguiente:

<div class="ed-grid s-grid-4">
  <div>1</div>
  <div class="s-cols-3">2</div>
</div>

Ejemplo

1
2

Definir en qué columna inicia un item

Use la nomenclatura: breakpoint-x-numero para indicar en qué columna iniciará un item.

<div class="ed-grid s-grid-4">
  <div class="s-cols-3 s-x-2">
  Comienzo en la columna 2 y ocupo 3 columnas
  </div>
</div>

Ejemplo:

Comienzo en la columna 2 y ocupo 3 columnas

Definir cantidad de filas que ocupa el item

Use la siguiente nomenclatura breakpoint-rows-numero Donde número es la cantidad de filas.

<div class="ed-grid rows-gap s-grid-2">
  <div class="s-rows-2">1</div>
  <div >2</div>
  <div>3</div>
</div>

Ejemplo:

1
2
3

Definir en qué fila inicia un item

Use la nomenclatura: breakpoint-y-numero para indicar en qué columna iniciará un item.

<div class="ed-grid rows-gap s-grid-4">
  <div class="s-rows-2">1</div>
  <div class="">2</div>
  <div class="s-y-2 s-x-2 s-cols-2">3</div>
  <div>4</div>
  <div class="s-rows-2">5</div>
</div>

Ejemplo:

1
2
3
4
5

Anidar contenedores

Puesto que CSS Grid define la separación entre tracks internamente, puede anidar contenedores como desee, sin restricciones.

<div class="ed-grid lg-grid-3">
    <div class="s-cols-2 ed-grid s-grid-3 rows-gap">
        <div class="s-cols-3">1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
    </div>
    <div>5</div>
</div>

Ejemplo:

1
2
3
4
5

Separación entre filas y columnas

De forma predeterminada las columnas tienen una separacion de 1rem en tamaños móviles (s,m) y 2rem en tamaños de escritorio (lg,xl). Si desea agregar una separación entre filas (igual a la de las columnas), agregue la clase rows-gap al contenedor.

<div class="ed-grid rows-gap s-grid-2 m-grid-4 lg-grid-6">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
  <div>11</div>
  <div>12</div>
</div>

Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12

Puede cambiar la separación para todos los ed-grid redefiniendo la variable $gap antes de importar EDgrid.

$gap: 1rem; // En tamaños de escritorio se multiplica por 2
@import "~ed-grid/ed-grid";

O puede cambiar la separación para un ed-grid especifico usando la nomenclatura breakpoint-gap-numero. El número va de 0 a 4 con separaciones de .5rem.

* Puede usar el numero 05 para crear separaciones de .25rem. Ejemplo: s-gap-05.

<div class="ed-grid rows-gap s-gap-05 m-gap-1 s-grid-2 m-grid-4 lg-grid-6">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div class="lg-cols-3">4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
</div>
1
2
3
4
5
6
7
8
9
10
================================================ FILE: docs/documentacion/layout-flexbox.html ================================================ EDgrid | Flujo de trabajo (CSS/Sass)

Sistema de columnas con flexbox


EDgrid es una librería para construir layouts. Puede construirlos con Flexbox o CSS Grid.

ed-container y ed-item

Para construir layouts con Flexbox y EDgrid debe definir contenedores con la clase ed-container e items con la clase ed-item. Con las siguientes reglas:

  1. Un ed-item no puede ser huérfano. Siempre debe ser hijo de un ed-container
  2. Un ed-container debe tener al menos un ed-item como hijo directo.
  3. Los ed-container y ed-item son contenedores para crear layout. No agregue contenido directamente en ellos.
<!-- Bien -->
<div class="ed-container">
    <div class="ed-item">
        <article>
            <p>
                En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
                no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
                adarga antigua, rocín flaco y galgo corredor.
            </p>
        </article>
    </div>
</div>

<!-- Mal -->
<div class="ed-container">
    <article class="ed-item">
        En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
        no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
        adarga antigua, rocín flaco y galgo corredor.
    </article>
</div>

Ancho de los ed-container

Los ed-container tienen un ancho predeterminado de 100% y un ancho máximo de 1200px. Así cuando la pantalla es mayor a esta medida, el ed-container queda fijo y se centra horizontalmente.

Si desea un ed-container que mida siempre el 100% de la pantalla agregue la clase full.

<div class="ed-container full">
    <div class="ed-item"></div>
</div>

Si desea personalizar el ancho máximo del ed-container redefina la variable Sass $max-width antes de importar EDgrid.

$max-width: 1400px;
@import "~ed-grid/ed-grid";

Ancho de los ed-item

Cada ed-item tiene 100% del ancho de su padre a menos que se especifique lo contrario (a través de clases). Las clases para definir el ancho son de dos tipos: porcentajes y fracciones.

1. Porcentajes

La nomenclatura de clase es breakpoint-numero Donde número es cualquier número múltiplo de 5 entre 0 y 100. Así que la clase lg-75 significa que el elemento tendrá 75% del ancho de su padre a partir del breakpoint lg.

<div class="ed-container">
    <div class="ed-container">
      <div class="ed-item s-30 lg-50">1</div>
      <div class="ed-item s-50 lg-25">2</div>
      <div class="ed-item s-20 lg-25">3</div>
    </div>
</div>
1
2
3
  • Como puede ver, las separaciones entre columnas se crean con paddings laterales.
  • Si no desea separaciones con paddings (que dan problemas en layouts complejos) use nuestra versión con CSS Grid
  • Si la suma de los anchos da más de 100, habrá saltos de fila. Así puede crear layouts más complejos sin crear nuevos contenedores.

2. Fracciones

Si quiere dividir el ancho entre 3 o 6 necesitará fracciones. La nomenclatura es breakpoint-numerador-denominador. Por ejemplo: lg-1-3 significa un tercio de ancho (33.33%) a partir del breakpoint lg (1024px). Mientras que xl-2-3 significa dos tercios a partir del breakpoint xl (1440px).

<!-- Layout de tres columnas a partir de 1024px de pantalla -->
<div class="ed-container">
    <div class="ed-item s-1-3">1</div>
    <div class="ed-item s-1-3">2</div>
    <div class="ed-item s-1-3">3</div>
</div>
1
2
3

Anidar contenedores e items

Si necesita anidar elementos para crear layouts más complejos tenga en cuenta las siguientes reglas:

  1. No cree un ed-container como hijo de un ed-item
  2. Para anidar, agregue la clase ed-container a un ed-item entonces ya podrá crear nuevos ed-item nietos.
<!-- Bien -->
<div class="ed-container">
    <div class="ed-item s-60">1</div>
    <div class="ed-item s-40 ed-container">
        <div class="ed-item s-50">2</div>
        <div class="ed-item s-50">3</div>
    </div>
</div>

<!-- Mal -->
<div class="ed-container">
    <div class="ed-item s-1-3"></div>
    <div class="ed-item s-2-3">
        <div class="ed-container">
            <div class="ed-item s-50"></div>
            <div class="ed-item s-50"></div>
        </div>
    </div>
</div>
1
2
3

Avanzado: crea tus propios contenedores e items

Si no desea usar las clases ed-container y ed-item puede definir las suyas. Simplemente redefina las variables $container y $item antes de importar EDgrid.

$container: row;
$item: column;
@import "~ed-grid/ed-grid";

Avanzado: crear contenedores e items con Sass (sin clases HTML)

Si no desea tocar el marcado HTML (o no tiene acceso a el por restricciones del proyecto) puede usar mixins de Sass para definir sus contenedores e items.

  • Para los contenedores, use el mixin ed-container.
  • Para los items, use el mixin ed-item($s,$m,$lg,$xl) Los parámetros definen el ancho en cada breakpoint:
  • Puede omitirlos todos y el ancho será siempre 100%
  • Un ancho declarado se herederá en los breakpoints superiores.
  • Puede usar fracciones como parámetro. Por ejemplo: 1/3
.main-page {
@include ed-container
}

.sidebar {
@include ed-item(100,100,1/3)
}

.content {
@include ed-item(100,100,2/3)
}
================================================ FILE: docs/documentacion/layout.html ================================================ EDgrid | Base (CSS/Sass)

Layout


EDgrid agrega clases para crear separaciones exteriores (margin) e interiores (padding) para crear layouts armoniosos y bien distribuidos.

Para seguir buenas prácticas, considere lo siguiente:

  • Las clases de layout comienzan con l-. *Además todos l
  • Los espacios verticales se crean solamente con margin-bottom.
  • La propiedad margin-top se usa solamente en negativo para cancelar una separación vertical
  • Los espacios horizontales se crean solamente con margin-right
  • La propiedad margin-left se usa solo en negativo para cancelar una separación horizontal.
  • Evite usar css para márgenes y paddings, utilice las clases de EDgrid

Secciones

En EDgrid existen tres tipos de secciones que se indican con las siguientes clases.

  • l-block Bloques pequeños como widgets, cards, separadores.
  • l-section Sección grande de contenido.
  • l-big-section Igual que el anterior pero cuando se quiere dar una separación mayor.

Anular espaciado entre secciones

Si en algun caso desea anular el espaciado de una seccion con la anterior. Use las siguientes clases:

  • cancel-l-block Cancela margin-bottom de hermano anterior l-block
  • cancel-l-section Cancela margin-bottom de hermano anterior l-section
  • cancel-l-big-section Cancela margin-bottom de hermano anterior l-big-section

Valores de los espaciados verticales

EDgrid usa la variable CSS --vertical-block-space cuyo valor cambia según el breakpoint

:root {
  --vertical-block-space   : #{$l-unit * 2};  // 1rem

  @include from(lg) {
    --vertical-block-space : #{$l-unit * 4};  // 2rem
  }
}

El código que crea las separaciones es el siguiente.

// Block
.l-block {
  margin-bottom : var(--vertical-block-space); // 1rem mobile, 2rem desktop
}

.cancel-l-block {
  margin-top : calc(var(--vertical-block-space) * -1);
}

// Section
.l-section {
  margin-bottom : calc(var(--vertical-block-space) * 2); // 2rem mobile, 4rem desktop
}

.cancel-l-section {
  margin-top : calc(var(--vertical-block-space) * -2); 
}

// Big section
.l-big-section {
  margin-bottom : calc(var(--vertical-block-space) * 4); // 4rem mobile, 8rem desktop
}

.cancel-l-big-section {
  margin-top : calc(var(--vertical-block-space) * -4);
}

Espaciado vertical entre contenido

EDgrid incluye espaciado vertical armonioso entre contenido (parrafos, titulos, listas, etc). No tiene que hacer nada. Solo escribir su contenido.

Titulos

:root {
  --vertical-content-space : 1rem;
}
// Encabezados
h1, h2, h3, h4, h5, h6 {
  margin-top    : 0;
  margin-bottom : var(--vertical-content-space);
}

h1 {
  margin-bottom : calc(var(--vertical-content-space) * 1.5) !important;
}

Contenido

La norma recomienda encerrar cada sección en una etiqueta section. Pero en la práctica es dificil conseguirlo siempre así que la presenciad e un titulo indica el cambio de sección y por eso se le agrega una separación vertical mayor con el hermano anterior.

:root {
  --vertical-content-space : 1rem;
}

p,
video,
blockquote,
article,
section,
form,
figure,
iframe,
ul,
ol,
pre,
hr,
dl,
address {
  margin-top    : 0;
  margin-bottom : var(--vertical-content-space);

  + h2 {
    padding-top : calc(var(--vertical-content-space) * 1.5);
  }

  + h3 {
    padding-top : var(--vertical-content-space);
  }
}

Márgenes

Use las clases de márgenes para separar elementos. La nomenclatura es la siguiente breakpoint-mr-numero y breakpoint-mb-numero Donde mr es margin-right y mb es margin-bottom.

El número va de 0 a 4 con separaciones de .5rem Por ejemplo lg-mb-0 significa margin-bottom:0 a partir del breakpoint lg. Y m-br-4 sinifica margin-right: 2rem a partir del breakpoint m.

* Puede usar el numero 05 para crear separaciones de .25rem. Ejemplo: s-mb-05.

<img alt="Logotipo de EDgrid" src="/assets/img/EDgrid-logo.svg" width="200">
<img alt="Logotipo de EDgrid" src="/assets/img/EDgrid-logo.svg" width="200">
Logotipo de EDgrid Logotipo de EDgrid

Usando margenes

<img class="m-mr-2 s-mb-2" alt="Logotipo de EDgrid" src="/assets/img/EDgrid-logo.svg" width="200">
<img alt="Logotipo de EDgrid" src="/assets/img/EDgrid-logo.svg" width="200">
Logotipo de EDgrid Logotipo de EDgrid

Márgenes negativos

Con la misma nomenclatura puede crear márgenes superiores margin-top e izquierdos margin-left pero estos siempre serán negativos y debe usarlos para cancelar una separación con un hermano anterior.

<h1>Bienvenidos a EDteam</h1>
<p>Este es un subtítulo pero aparecerá muy abajo del título</p>

Ejemplo:

Bienvenidos a EDteam

Este es un subtítulo pero aparecerá muy abajo del título

Usando márgenes negativos:

<h1>Bienvenidos a EDteam</h1>
<p class="s-mt-3">Este es un subtítulo con un margen superior negativo</p>

Ejemplo:

Bienvenidos a EDteam

Este es un subtítulo con un margen superior negativo

Paddings

Los paddings agregan una separación interna y tienen la siguiente nomenclatura de clases: breakpoint-p[direction]-numero

Donde direction puede ser t (top), r (right), b (bottom), l (left). Por ejemplo: xl-pb-4. Al igual que en margin, los números van de 0 a 4 indicando separaciones de .5rem.

  • Para paddings verticales (top y bottom a la vez) use breakpoint-py-numero).
  • Para paddings horizontales (left y right a la vez) use breakpoint-px-numero
  • Para paddings en las cuatro direcciones use breakpoint-pxy-numero

* Puede usar el numero 05 para crear paddings de .25rem. Ejemplo: s-py-05.

================================================ FILE: docs/documentacion/mediaqueries.html ================================================ EDgrid | Mediaqueries (Sass)

Mediaqueries (Sass)

EDgrid incluye mixins para crear mediaqueries fácilmente:

  1. from($bp)
    Para tamaños mayores al breakpoint (parámetro)
  2. to($bp)
    Para tamaños menores al breakpoint (parámetro)
  3. fromTo($from,$to)
    Para tamaños comprendidos entre los dos parámetros.

Los tres mixins reciben como parámetros breakpoints válidos que pueden ser del core de ed-grid s,m,lg,xl o números especificados en px, em o rem.

Ejemplos:

// Ejemplo mixin from()
.from {
  color: red;
  
  @include from(m) {
    color: blue;
  }

  @include from(700px) {
    color: red
  }
}

// Ejemplo mixin to()
.to {
  display: flex;
  
  @include to(l) {
    display: block
  }
}

// Ejemplo mixin from-to()
.from-to {
  display: block;
  
  @include from-to(m,800px) {
    display: none
  }
  
}

Compila a:

// From
.from{
  color:red;
}

@media screen and (min-width:40em){
  .from{
    color:blue;
  }
}

@media screen and (min-width:700px){
  .from{
    color:red;
  }
}

// To
.to {
  display:flex;
}

@media screen and (max-width:64em){
  .to {
    display:block;
  }
}

// From to
.from-to {
  display:block;
}

@media screen and (min-width:40em) and (max-width:800px){
  .from-to {
    display:none;
  }
}

Control de errores

Si los parámetros pasados a estos mixins no son válidos EDgrid lanzará un mensaje en terminal indicando el error.

================================================ FILE: docs/documentacion/menu-responsive.html ================================================ EDgrid | Menú responsive (Sass/CSS)

Menú responsive

Un menú responsive es un buen ejemplo de cómo podemos integrar EDgrid con código ajeno a la librería.

Toda la estructura y distribución se harán desde el marcado con la nomenclatura que ya conocemos y a la vez se usarán los mixins que otorga la librería para los estilos en Sass.

HTML

<header class="ed-header s-bg-grey s-py-2">
  <div class="ed-grid lg-grid-5">
    <!-- Logo  -->
    <div class="s-cross-center s-main-center lg-main-start">
        <img class="logo" src="https://ed.team/static/images/logo.svg">
    </div>
    <nav class="nav lg-cols-4 s-cross-center ed-grid full">
      <!--  Menú de navegación    -->
      <ul class="menu s-main-distribute lg-to-right s-mb-0 s-pl-0 s-py-1">
        <!--   Item de menú. Contiene link e ícono     -->
        <li class="lg-mr-3">
          <a class="link s-column s-cross-center active" href="#">
            <!--  El ícono sólo se mostrará en la versión móvil  -->
            <svg class="icon to-lg s-mb-0">
              <use href="#home"></use>
            </svg>
            <span>Inicio</span>
          </a>
        </li>
        <li class="lg-mr-3">
          <a class="link s-column s-cross-center" href="#">
            <svg class="icon to-lg s-mb-0">
              <use href="#studies"></use>
            </svg>
            <span>Estudios</span>
          </a>
        </li>
        <li class="lg-mr-3">
          <a class="link s-column s-cross-center" href="#">
            <svg class="icon to-lg s-mb-0">
              <use href="#courses"></use>
            </svg>
            <span>Cursos</span>
          </a>
        </li>
        <li>
          <a class="link s-column s-cross-center" href="#">
            <svg class="icon to-lg s-mb-0">
              <use href="#notes"></use>
            </svg>
            <span>Notas</span>
          </a>
        </li>
      </ul>
    </nav>
  </div>
</header>

SCSS

La mayoría del siguiente código es para estética del menú.

// Posicionamiento del header
.ed-header {
  position : fixed;
  top      : 0;
  width    : 100%;
  z-index  : 100;

  .logo { height : 2rem }

  // Posicionamiento del nav
  // Utilizamos el mixin to() de EDgrid para que sólo se aplique en móvil
  .nav {
      @include to(lg) { 
        position : fixed;
        left     : 0;
        bottom   : 0;
        background : black;
      }
  }

  .menu { list-style : none }
 
   // Colores de links del menú
  .link {
    color : lightgrey;
    &.active { color : cornflowerblue }
    @include from(lg) { color : grey }
  }

   // Estilos para los íconos
  .icon {
    --size : 1.5rem;
    width  : var(--size);
    height : var(--size);
    fill   : currentColor;
  }

}

SVG

Este componente utiliza íconos para su versión móvil. Puede crear un archivo SVG donde guarde todo el siguiente código o ponerlo al lado de la estructura del header en el HTML.

<svg xmlns="http://www.w3.org/2000/svg">
  <symbol id="notes" viewBox="0 0 24 24">
    <rect fill="none" height="24" width="24"></rect>
    <path d="M19,3H4.99C3.89,3,3,3.9,3,5l0.01,14c0,1.1,0.89,2,1.99,2h10l6-6V5C21,3.9,20.1,3,19,3z M7,8h10v2H7V8z M12,14H7v-2h5V14z M14,19.5V14h5.5L14,19.5z"></path>
  </symbol>
  <symbol id="studies" viewBox="0 0 24 24">
    <path d="M0 0h24v24H0z" fill="none"></path>
    <path d="M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3L1 9l11 6 9-4.91V17h2V9L12 3z"></path>
  </symbol>
  <symbol id="courses" viewBox="0 0 24 24">
    <path d="M0 0h24v24H0V0z" fill="none"></path>
    <path d="M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10z"></path>
  </symbol>
  <symbol id="home" viewBox="0 0 24 24">
    <path d="M0 0h24v24H0z" fill="none"></path>
    <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"></path>
  </symbol>
</svg>
================================================ FILE: docs/documentacion/menus.html ================================================ EDgrid | Uso con CSS (cssCore)

Menus

Con EDgrid puede crear menus responsive fácilmente. Basta con crear una lista ul y los enlaces dentro de cada li.

Uso con clases CSS

Añada la clase ed-menu al ul de nivel superior.

Añada la clase n-horizontal siendo n el breakpoint (s,m,l,xl) desde el cual el menú será horizontal

Añada alguna de las tres clases para cambiar el estilo: default nav-bar button-bar

<ul class="ed-menu l-horizontal button-bar">
  <li><a href="#">Item</a></li>
  <li><a href="#">Item</a></li>
  <li><a href="#">Item</a></li>
  <li><a href="#">Item</a></li>
</ul>

Uso con Sass

Si va a usar Sass, el marcado HTML debe ser el mismo.

Incluya el mixin edMenu($bp,$style) al ul de nivel superior. Los parámetros son:

  • $bp breakpoint a partir del cual el menu será horizontal. Puede ser un breakpoint del core de ed-grid (s,m,l,xl) o un breakpoint válido en px, em o rem.
  • $style (opcional) puede ser default, navBar o buttonBar
.main-menu {
  @include edMenu(l,navBar)
}

Trabajo en desarrollo

Este componente no está terminado y estos son algunos de los pendientes

  • En la version CSS, debería funcionar sin tener que añadir una clase para horizontal (en caso se requiera siempre vertical)
  • Scripts JS para activar y desactivar el menú en tamaños moviles
  • Scripts JS para activar y desactivar subniveles en tamaños moviles
  • Definir la personalizacion de colores para menu, items y links.
================================================ FILE: docs/documentacion/modo-dev.html ================================================ EDgrid | Modo dev

Modo dev

El modo dev es una característica de EDgrid que nos permite saber el breakpoint actual y los componentes del layout (ed-grid, ed-container y ed-item).

Al activarlo el navegador muestra el layout de la siguiente manera:

  1. Los ed-container y ed-grid tienen un borde rojo y en la parte superior una franja roja que imprime sus clases html.
  2. Los ed-item e hijos directos de ed-grid se colorean de azul y a su vez imprimen sus clases html en una franja azul.

Modo dev en Flexbox

1
2
3

Modo dev en Grid

1
2
3

Activar modo dev con clases HTML

Basta con añadirle la clase dev al elemento body

<body class="dev"></body>

Activar el modo dev en Sass

Redefinir la variable $dev a true antes de importar ed-grid

$dev: true;
@import 'path/ed-grid/ed-grid';

Modo dev hover

Si sólo quieres inspeccionar un elemento a la vez y no toda la página, puedes usar el modo desarrollo con hover, donde sólo funcionará con ed-grid, ed-container y ed-item que tengan el estado de hover.

Modo dev con hover

1
2
3

Activar modo dev hover con clases HTML

Basta con añadirle la clase dev-hover al elemento body

<body class="dev-hover"></body>

Activar modo dev hover en Sass

Redefinir la variable $dev-hover a true antes de importar ed-grid (no es necesario redifinir también la variable $dev).

$dev-hover: true;
@import 'path/ed-grid/ed-grid';
================================================ FILE: docs/documentacion/offset.html ================================================ EDgrid | Offset (Sass/CSS)

Offset (Sass/CSS)

Se conoce como offset al movimiento de un elemento respecto a la posición que se supone deberia tener. En ed-grid, offset no es más que un margin-left. La única ventaja de usar offsets con ed-grid es no escribir a mano las media queries.

Uso con CSS (cssCore)

Basta añadir clases del formato bp-offset-n donde bp es un breakpoint válido de ed-grid (s,m,l,xl) y n un múltiplo de 5 o una fracción según lo indicado en el flujo de trabajo recomendado.

<div class="selector s-offset-2-3 m-offset-50 l-offset-10"></div>

Uso con Sass

Incluya el mixin offset($s,$m,$l$xl) donde cada parámetro es el offset en cada breakpoint de ed-grid. No hay restricciones a múltiplos de 5, incluso puede pasar fracciones.

Tenga en cuenta que solo es obligatorio el primer parámetro.

.selector {
  @include offset(2/3,50,10);
}

Compila a:

.selector{
  margin-left:66.66667%;
}

@media screen and (min-width:40em){
  .selector{
    margin-left:50%;
  }
}

@media screen and (min-width:64em){
  .selector{
    margin-left:10%;
  }
}
================================================ FILE: docs/documentacion/personalizar.html ================================================ EDgrid | Configurar (Sass)

Personalizar EDgrid con Sass

EDgrid es altamente personalizable pues sus variables de configuración pueden ser sobreescritas. Para hacerlo, debe redefinirlas antes de importar EDgrid.

// 1. Personalice sus variables
$prototype: false;
$dev: true;
// 2. Importe EDgrid
@import "~ed-grid/ed-grid";

Tenga en cuenta que no siempre querrá personalizar EDgrid y le bastará con solo importar la librería.

Variables que puede personalizar.

A continuación se muestran las variables que puede redefinir, con su valor por defecto y la explicación de su función.

// Breakpoints
$breakpoints : (
  s  : 0,
  m  : 640px,
  lg : 1024px,
  xl : 1440px
);

$prototype        : true;         // Activa los estilos de prototipado
$dev              : false;        // Activa los estilos para debuggin
$dev-hover        : false;        // Estilos de debuggi sólo en hover
$max-width        : 1200px;       // Ancho máximo de los contenedores ed-container y ed-grid
$l-unit           : .5rem;        // Unidad básica de layout (para separaciones verticales, margin y padding)
$gap              : $l-unit * 4;  // Separación entre columnas (2rem)
$fractions        : 3 6;          // Fracciones para crear columnas (core flexbox)
$container        : ed-container; // Clase para el contenedor (core flexbox)
$item             : ed-item;      // Clase para los items (core flexbox)
$grid-container   : ed-grid;      // Clase para el contenedor (core grid)
$max-grid-columns : 12;           // Máximo número de columnas (core css grid)
$legacy           : false;        // Soporte para versiones antiguas

// CSS Variables
:root {
  // Variables para prototipar
  --color                  : #007BDF;          // Color base (azul EDteam)
  --color-alt              : #006DC6;          // Color alterno (azul EDteam alterno)
  --border-color           : #DFE0E0;          // Color para bordes (gris suave)
  --light-bg               : #F0F0F0;          // Color gris para fondos
  --border-radius          : #{$l-unit * 0.5}; // .25rem
  // layout
  --vertical-block-space   : #{$l-unit * 2};   // 1rem
  --vertical-content-space : #{$l-unit * 2};   // 1rem
  --gap                    : #{$l-unit * 2};   // 1rem
  --max-width              : #{$max-width};

  @include from(lg) {
    --vertical-block-space : #{$l-unit * 4};
    --gap                  : #{$l-unit * 4};    // 2rem
  }
}
================================================ FILE: docs/documentacion/prototipado-avanzado.html ================================================ EDgrid | Prototipado avanzado (Sass/CSS)

Prototipado avanzado

Ya vio qué es EDgrid y todo lo que es capaz de hacer, pero tal vez no sea suficiente en ciertos casos. ¿Qué tal si quiere utilizar otras propiedades que no tiene la librería? ¿O no quiere estar escribiendo CSS para cada componente y prefiere usar la numenclaruta de clases de EDgrid? Aquí es donde el prototipado avanzado entra en acción.

Utiliza el core de EDgrid para convetir cualquier propiedad en las nomenclaturas de la librería breakpoint-propiedad. Cabe recalcar que esta función sólo está disponible para la versión de EDgrid Sass.

¿Cómo funciona?

Para esto haremos uso del mixin prototype(), el cual podrá utilizarlo en cualquier lugar de su proyecto siempre y cuando EDgrid se haya importado antes. La sintaxis es la siguiente:

@include prototype($names, $property, $value);
/*
* $names - Lista de nombres que usaremos para nombrar nuestras clases.
*          Recorremos una lista por si queremos múltiples selectores con el mismo valor
*
* $property, $value - Propiedad CSS con su respectivo valor
*/

Ejemplo

@include prototype('cursor-pointer', cursor, pointer);

El resultado en CSS sería:

.s-cursor-pointer {
  cursor: pointer;
}

@media screen and (min-width: 640px)
  .m-cursor-pointer {
    cursor: pointer;
  }
}

@media screen and (min-width: 1024px) {
  .lg-cursor-pointer {
    cursor: pointer;
  }
}

@media screen and (min-width: 1440px) {
  .xl-cursor-pointer {
    cursor: pointer;
  }
}

Si queremos múltiples clases con el mismo valor debemos pasar $names como si fuera una lista.

@include prototype(('color-red', 'red-color'), cursor, pointer);
<!-- Ambas clases funcionan -->
<p class="s-color-red">Este es un párrafo de color rojo</p>
<p class="s-red-color">Y éste también lo está</p>

Especifidad

Si quiere crear selectores más avanzados como juntar una clase con la nomenclatura que está creando o usar selectores como +, >, ~ entre muchos otros, no podrá hacerlo desde $names, si no que deberá pasar un cuarto parámetro. Un ejemplo de esto es el componente breakpoint-gap-numero de EDgrid, el cuál solo funciona si el contenedor tiene la clase ed-grid.

@include prototype($names, $property, $value, $concat);

Ejemplos

// El elemento también tiene la clase .background
// .background.s-red
@include prototype('red', color, red, '.background');

// Algún elemento ancestro tiene la clase .background (nótese el espacio al final)
// .background .s-red
@include prototype('red', color, red, '.background ');

// Hijos directos de un elemento con la clase background
// .background > .s-red
@include prototype('red', color, red, '.background > ');

Debug

El modo debug le permite ver en la terminal el CSS resultado (selector, propiedad, valor y mediaquery). Para activarlo debemos pasar un quinto parámetro en true.

@include prototype($names, $property, $value, $concat, $debug);

Ejemplo

@include prototype('red', color, red, '.background > ', true);

// Introduzca un string vacío si no necesita el cuarto parámetro
// Puede borrarlo una vez que desactive el debug
@include prototype('red', color, red, '', true);
================================================ FILE: docs/documentacion/prototipado.html ================================================ EDgrid | Base (CSS/Sass)

Prototipado


EDgrid le permite hacer prototipos rápidos con poco esfuerzo. La opción de prototipado viene activada por defecto en el proyecto, por lo que no necesita hacer ajustes extras para empezar a usarla.

Botones

Agrega la clase button a un elemento. Si necesita darle márgenes, centrarlo, etc, use las clases que EDgrid proporciona.

Soy un boton

Bordes

  • Use la clase breakpoint-border para agregar un borde a los cuatro lados.
  • Use la clase breakpoint-border-none para anular el borde en los cuatro lados.
  • Use la clase breakpoint-border-[top|right|bottom|left] para agregar un borde solo en el lado seleccionado.
  • Use la clase breakpoint-border-[top|right|bottom|left]-none para anular el borde en el lado seleccionado.
<div class="s-border lg-30 lg-to-center s-pxy-2">
    <h3 class="s-border-bottom">Soy una tarjeta</h3>
    <p class="s-mb-0">Yo soy el contenido de esta tarjeta</p>
</div>

Soy una tarjeta

Yo soy el contenido de esta tarjeta

Esquinas redondeadas

  • Use la clase breakpoint-radius para asignar un border-radius a las cuatro esquinas.
  • Use la clase breakpoint-radius-none para anular el border-radius de las cuatro esquinas
  • Use la clase breakpoint-radius-[tl|tr|br|bl] para agregar border-radius en top-left|top-right|bottom-right|bottom-left respectivamente
  • Use la clase breakpoint-radius-[tl|tr|br|bl]-none para anular el border-radius en top-left|top-right|bottom-right|bottom-left respectivamente
<div class="s-radius s-border lg-30 lg-to-center s-pxy-2">
    <h3 class="s-border-bottom">Soy una tarjeta</h3>
    <p class="s-mb-0">Yo soy el contenido de esta tarjeta</p>
</div>

Soy una tarjeta

Yo soy el contenido de esta tarjeta

Fondos

Puede usar las clases breakpoint-bg-[grey|blue] Para asignarle un fondo a un elemento. Así podemos crear componentes muy rápido. Por ejemplo, tarjetas:

<div class="lg-50 lg-to-center s-bg-grey s-radius s-pxy-2 l-block">
    <p>EDgrid es una libreria construida con Sass (y con versión CSS) 
        para Responsive Web Design (RWD). Es muy ligero, personalizable 
        y te permite prototipar y crear layouts en muy poco tiempo 
        sin conflictos con tu proyecto.</p>
    <div class="button">Empezar con EDgrid</div>
</div>

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
<div class="lg-50 lg-to-center s-border s-radius">
  <p class="s-pxy-2 s-mb-0">EDgrid es una libreria construida con Sass 
      (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, 
      personalizable y te permite prototipar y crear layouts en muy poco
      tiempo sin conflictos con tu proyecto.</p>
  <div class="s-bg-grey s-pxy-2">
    <div class="button">Empezar con EDgrid</div>
  </div>
</div>

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid

Sombras

  • Use las clases breakpoint-shadow para aplicar sombras en los cuatro lados.
  • Use las clases breakpoint-shadow-[top|right|bottom|left] para aplicar sombras en los lados seleccionados
  • Use las clases breakpoint-shadow-none para anular las sombras en los cuatro lados.
<img class="s-shadow s-block-center" src="/img/tioalexys.jpg">
<div class="s-shadow-bottom lg-50 lg-to-center s-border s-radius">
  <p class="s-pxy-2 s-mb-0">EDgrid es una libreria construida con Sass 
      (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, 
      personalizable y te permite prototipar y crear layouts en muy poco 
      tiempo sin conflictos con tu proyecto.</p>
  <div class="s-bg-grey s-pxy-2">
    <div class="button">Empezar con EDgrid</div>
  </div>
</div>

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
================================================ FILE: docs/documentacion/ratios.html ================================================ EDgrid | Ratios (Sass/CSS)

Ratios e imágenes


Con los ratios puede obtener elementos de un proporcion de ancho y alto definidos. Por ejemplo 3 x 1 (el triple de ancho que de alto). Tenga en cuenta que por limitaciones de css los elementos con ratio siempre tienen el 100% del ancho de su contenedor.

Ratios

Use las clases breakpoint-ratio-x-y donde x y y son numeros enteros del 1 al 4. x representa el ancho y y el alto.

<div class="ed-grid lg-grid-3 lg-60 lg-to-center s-pxy-1 s-border s-radius s-shadow-bottom">
    <div class="s-ratio-16-9 lg-ratio-2-3 s-bg-blue s-mb-2 lg-mb-0"></div>
    <div class="lg-cols-2">
        <h3>Bienvenido a a EDgrid</h3>
        <p>EDgrid es una libreria construida con Sass (y con versión CSS) 
            para Responsive Web Design (RWD). Es muy ligero, personalizable.</p>
        <div class="button">Comenzar con EDgrid</div>
    </div>
</div>

Bienvenido a a EDgrid

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable.

Comenzar con EDgrid

Además EDgrid incluye las clases breakpoint-ratio-16-9, breakpoint-ratio-9-16 y breakpoint-ratio-21-9 Ya que son proporciones comunes de elementos multimedia.

Contenedores de imágenes

Puede usar las clases de ratios para contener imagenes evitando que se desborden o se deformen. Solo agregue la clase img-container.

<div class="ed-grid s-grid-2 m-grid-3 lg-grid-4 s-cross-center">
    <div class="s-ratio-4-3 img-container">
        <img src="https://cocha2018.ed.team/assets/img/banner-edcamp.jpg">
    </div>
    <div class="s-ratio-9-16 img-container">
        <img src="https://cocha2018.ed.team/assets/img/banner-edcamp.jpg">
    </div>
    <div class="circle">
        <img src="https://cocha2018.ed.team/assets/img/banner-edcamp.jpg">
    </div>
    <div class="s-ratio-16-9 img-container">
        <img src="https://cocha2018.ed.team/assets/img/banner-edcamp.jpg">
    </div>
</div>

La imagen es la misma en todos los casos:

  • Puede usar la clase circle para obtener un círculo perfecto sin usar clases de ratio. Si va a usarlo para contener una imagen, agregué tambien la clase img-container.
================================================ FILE: docs/documentacion/sass.html ================================================ EDgrid | Sass

Comprender EDgrid Sass

Si va a trabajar con Sass, tenga en cuenta que como se explicó aquí, EDgrid genera dos grupos de código css:

  • cssCore Clases utilitarias no recomendadas si va a trabajar con Sass (desactivado por defecto para Sass)
  • cssHelpers Clases utilitarias recomendadas si va a trabajar con Sass (activado por defecto para Sass, puede desactivarlo si desea)

Si es un usuario avanzado puede activar o desactivar estos componentes redefiniendo las variables $cssCore y $cssHelpers antes de importar EDgrid. Estas variables son booleans.

Por ejemplo, si desea construir todo su layout con Sass, sin usar clases en HTML, puede desactivar ambos:

$cssCore: false;
$cssHelpers: false;
@import "path/ed-grid/ed-grid"

Sin embargo, si usa la configuración recomendada, importe EDgrid sin preocuparse de estos valores.

@import "~ed-grid/ed-grid";
================================================ FILE: docs/documentacion/skeleton.html ================================================ EDgrid | Skeleton (Sass/CSS)

Skeleton

Los componenentes skeleton son una vista previa del contenido que se muestra antes de que se carguen los datos para reducir la frustración del usuario con los tiempos de cargas lentos en un sitio web. Una vez que terminan de cargar, el skeleton desaparece.

En sí no existe un componente único para los skeleton, porque todo dependerá de la UI que tengan en su proyecto, pero eso no es problema ya que con el prototipado usted podrá recrear la gran mayoría de ésta.

Skeleton de card

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
<article class="s-shadow-bottom">
    <div class="s-bg-grey s-ratio-16-9 img-container s-radius-tl s-radius-tr"></div>
    <div class="s-bg-white s-pxy-2">
        <div class="s-bg-grey s-py-2 s-mb-2"></div>
        <div class="s-bg-grey s-py-1 s-mb-1"></div>
        <div class="s-bg-grey s-py-1 s-70"></div>
    </div>
    <footer class="s-py-4 s-bg-grey">
        <div class="s-py-1"></div>
    </footer>
</article>
================================================ FILE: docs/documentacion/videos.html ================================================ EDgrid | Videos responsive (Sass/CSS)

Videos responsive (Sass/CSS)

EDgrid le permite insertar videos responsive con la proporcion 16:9 en cualquier breakpoint.

El video siempre se expandirá al 100% del ancho de su contenedor.

Uso con clases HTML

Añada la clase ed-video al contenedor de su video (que puede ser un iframe elemento video o cualquier elemento con la clase .video)

<div class="ed-video">
  <iframe src="https://www.youtube.com/embed/cd549lZtPEU"></iframe>
</div>
================================================ FILE: docs/documentacion/visibilidad.html ================================================ EDgrid | Visibilidad

Visibilidad

El componente visibilidad permite definir los breakpoints en los que un elemento se mostrará y los breakpoints en los que se ocultará.

Uso con CSS

Use las clases from-breakpoint o to-breakpoint donde breakpoint es un breakpoint válido de EDgrid (s,m,l,xl)

from-lg hará al elemento visible a partir de 1024px e invisible por debajo de esa medida.

to-xl Hará al elemento visible por debajo de 1440px e invisible por encima de él.

Uso con Sass

En la versión Sass cuenta con cuatro mixins que reciben como parámetro un breakpoint del core de ed-grid ( s,m,l,xl) o uno en px, em o rem.

  • showFrom($bp) Muestra el elemento solo por encima del breakpoint especificado en el parámetro.
  • showTo($bp) Muestra el elemento solo por debajo del breakpoint especificado en el parámetro.
  • hideFrom($bp) Oculta el elemento por encima del breakpoint especificado en el parámetro.
  • hideTo($bp) Oculta el elemento por debajo del breakpoint especificado en el parámetro.

Ejemplo

.menu-movil {
  @include hideFrom(lg)
}

.menu-desktop {
  @include showFrom(xl)
}

Compila a

@media screen and (min-width:1024px){
  .menu-movil{
    display:none;
  }
}

@media screen and (max-width:1440px){
  .menu-desktop{
    display:none;
  }
}
================================================ FILE: docs/index.html ================================================ EDgrid - Libreria Sass/CSS de EDteam para construir layouts web responsive

Maqueta sitios
y aplicaciones web
sin una línea de CSS

EDgrid implementa un sistema de diseño flexible y personalizable para construir layouts y componentes responsive a la velocidad de la luz ⚡

El responsive web design
nunca fue tan sencillo

¿Qué es?

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Solo Layout

No añade botones, tipografías, colores ni otro estilo visual. Es layout puro para maquetar que no genera conflictos. Además EDgrid en su versión Sass compila solo el código necesario sin css extra.

Open Source

Completamente gratuito y de código abierto (GPL2). Puede usarlo en proyectos comerciales, descargarlo y estudiar el código y crear sus propias versiones derivadas sin pagar una licencia.

CSS Grid y Flexbox

EDgrid usa las características más modernas de CSS: Flexbox y Grid. Además incluye fallbacks para Grid en navegadores que todavía no lo soporten.

Adiós columnas

¿Cansado de las 12 columnas? Con EDgrid puedes crear layouts con completa libertad sin amarrarte a usar siempre doce columnas.

Debug

El modo dev se activa con una sola línea de código y te muestra la construcción del layout por debajo del capó. Así podrás corregir problemas con facilidad.

================================================ FILE: docs/js/scripts-min.js ================================================ !function(){return function e(t,n,a){function r(s,o){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!o&&l)return l(s,!0);if(i)return i(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){return r(t[s][1][e]||e)},c,c.exports,e,t,n,a)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;se.length)return;if(!(w instanceof l)){d.lastIndex=0;var S=1;if(!(L=d.exec(w))&&m&&v!=t.length-1){if(d.lastIndex=k,!(L=d.exec(e)))break;for(var A=L.index+(f?L[1].length:0),x=L.index+L[0].length,F=v,j=k,C=t.length;C>F&&(x>j||!t[F].type&&!t[F-1].greedy);++F)A>=(j+=t[F].length)&&(++v,k=j);if(t[v]instanceof l||t[F-1].greedy)continue;S=F-v,w=e.slice(k,j),L.index-=k}if(L){f&&(h=L[1].length);x=(A=L.index+h)+(L=L[0].slice(h)).length;var L,P=w.slice(0,A),E=w.slice(x),N=[v,S];P&&(++v,k+=P.length,N.push(P));var O=new l(u,p?n.tokenize(L,p):L,b,L,m);if(N.push(O),E&&N.push(E),Array.prototype.splice.apply(t,N),1!=S&&n.matchGrammar(e,t,a,v,k,!0,u),s)break}else if(s)break}}}}},tokenize:function(e,t){var a=[e],r=t.rest;if(r){for(var i in r)t[i]=r[i];delete t.rest}return n.matchGrammar(e,a,t,0,0,!1),a},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var i={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if(e.alias){var s="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,s)}n.hooks.run("wrap",i);var o=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(o?" "+o:"")+">"+i.content+""},!s.document)return s.addEventListener?(n.disableWorkerMessageHandler||s.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,i=t.immediateClose;s.postMessage(n.highlight(r,n.languages[a],a)),i&&s.close()},!1),s.Prism):s.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,n.manual||r.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),s.Prism}();void 0!==t&&t.exports&&(t.exports=o),void 0!==n&&(n.Prism=o),o.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),o.languages.xml=o.languages.markup,o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},o.languages.css.atrule.inside.rest=o.util.clone(o.languages.css),o.languages.markup&&(o.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:o.languages.css,alias:"language-css",greedy:!0}}),o.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:o.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:o.languages.css}},alias:"language-css"}},o.languages.markup.tag)),o.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},o.languages.javascript=o.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),o.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),o.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:o.languages.javascript}},string:/[\s\S]+/}}}),o.languages.markup&&o.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:o.languages.javascript,alias:"language-javascript",greedy:!0}}),o.languages.js=o.languages.javascript,o.languages.scss=o.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)*url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()]|&|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),o.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),o.languages.scss.property={pattern:/(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/i,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}},o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:/\bnull\b/,operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),o.languages.scss.atrule.inside.rest=o.util.clone(o.languages.scss),function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e=[],t={},n=function(){};o.plugins.toolbar={};var a=o.plugins.toolbar.registerButton=function(n,a){var r;r="function"==typeof a?a:function(e){var t;return"function"==typeof a.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",function(){a.onClick.call(this,e)})):"string"==typeof a.url?(t=document.createElement("a")).href=a.url:t=document.createElement("span"),t.textContent=a.text,t},e.push(t[n]=r)},r=o.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.classList.contains("code-toolbar")){r.classList.add("code-toolbar");var i=document.createElement("div");i.classList.add("toolbar"),document.body.hasAttribute("data-toolbar-order")&&(e=document.body.getAttribute("data-toolbar-order").split(",").map(function(e){return t[e]||n})),e.forEach(function(e){var t=e(a);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),i.appendChild(n)}}),r.appendChild(i)}};a("label",function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,a,r=t.getAttribute("data-label");try{a=document.querySelector("template#"+r)}catch(e){}return a?n=a.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=r),n}}),o.hooks.add("complete",r)}}(),function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!o.plugins.toolbar)return void console.warn("Show Languages plugin loaded before Toolbar plugin.");var e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript","css-extras":"CSS Extras",django:"Django/Jinja2",fsharp:"F#",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",ichigojam:"IchigoJam",inform7:"Inform 7",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",php:"PHP","php-extras":"PHP Extras",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",jsx:"React JSX",renpy:"Ren'py",rest:"reST (reStructuredText)",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)",sql:"SQL",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",yaml:"YAML"};o.plugins.toolbar.registerButton("show-language",function(t){var n=t.element.parentNode;if(n&&/pre/i.test(n.nodeName)){var a=n.getAttribute("data-language")||e[t.language]||t.language.substring(0,1).toUpperCase()+t.language.substring(1),r=document.createElement("span");return r.textContent=a,r}})}}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./modules/activeMenu":2,"./modules/menu":3,"./modules/scrollBarWIdth":4}],2:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.default=function(e){var t=document.getElementById(e);if(t){var n=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t e.length) return; if (!(w instanceof s)) { h.lastIndex = 0; var _ = h.exec(w), P = 1; if (!_ && m && b != t.length - 1) { if (h.lastIndex = k, _ = h.exec(e), !_) break; for (var A = _.index + (d ? _[1].length : 0), j = _.index + _[0].length, x = b, O = k, N = t.length; N > x && (j > O || !t[x].type && !t[x - 1].greedy); ++x) { O += t[x].length, A >= O && (++b, k = O); }if (t[b] instanceof s || t[x - 1].greedy) continue; P = x - b, w = e.slice(k, O), _.index -= k; } if (_) { d && (p = _[1].length); var A = _.index + p, _ = _[0].slice(p), j = A + _.length, S = w.slice(0, A), C = w.slice(j), M = [b, P]; S && (++b, k += S.length, M.push(S)); var E = new s(g, f ? n.tokenize(_, f) : _, y, _, m); if (M.push(E), C && M.push(C), Array.prototype.splice.apply(t, M), 1 != P && n.matchGrammar(e, t, r, b, k, !0, g), i) break; } else if (i) break; } } } } } }, tokenize: function tokenize(e, t) { var r = [e], a = t.rest; if (a) { for (var l in a) { t[l] = a[l]; }delete t.rest; } return n.matchGrammar(e, r, t, 0, 0, !1), r; }, hooks: { all: {}, add: function add(e, t) { var r = n.hooks.all; r[e] = r[e] || [], r[e].push(t); }, run: function run(e, t) { var r = n.hooks.all[e]; if (r && r.length) for (var a, l = 0; a = r[l++];) { a(t); } } } }, r = n.Token = function (e, t, n, r, a) { this.type = e, this.content = t, this.alias = n, this.length = 0 | (r || '').length, this.greedy = !!a; }; if (r.stringify = function (e, t, a) { if ('string' == typeof e) return e; if ('Array' === n.util.type(e)) return e.map(function (n) { return r.stringify(n, t, e); }).join(''); var l = { type: e.type, content: r.stringify(e.content, t, a), tag: 'span', classes: ['token', e.type], attributes: {}, language: t, parent: a }; if (e.alias) { var i = 'Array' === n.util.type(e.alias) ? e.alias : [e.alias]; Array.prototype.push.apply(l.classes, i); } n.hooks.run('wrap', l); var o = Object.keys(l.attributes).map(function (e) { return e + '="' + (l.attributes[e] || '').replace(/"/g, '"') + '"'; }).join(' '); return '<' + l.tag + ' class="' + l.classes.join(' ') + '"' + (o ? ' ' + o : '') + '>' + l.content + ''; }, !_self.document) return _self.addEventListener ? (n.disableWorkerMessageHandler || _self.addEventListener('message', function (e) { var t = JSON.parse(e.data), r = t.language, a = t.code, l = t.immediateClose; _self.postMessage(n.highlight(a, n.languages[r], r)), l && _self.close(); }, !1), _self.Prism) : _self.Prism; var a = document.currentScript || [].slice.call(document.getElementsByTagName('script')).pop(); return a && (n.filename = a.src, n.manual || a.hasAttribute('data-manual') || ('loading' !== document.readyState ? window.requestAnimationFrame ? window.requestAnimationFrame(n.highlightAll) : window.setTimeout(n.highlightAll, 16) : document.addEventListener('DOMContentLoaded', n.highlightAll))), _self.Prism; }(); 'undefined' != typeof module && module.exports && (module.exports = Prism), 'undefined' != typeof global && (global.Prism = Prism); Prism.languages.markup = { comment: //, prolog: /<\?[\s\S]+?\?>/, doctype: //i, cdata: //i, tag: { pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, inside: { tag: { pattern: /^<\/?[^\s>\/]+/i, inside: { punctuation: /^<\/?/, namespace: /^[^\s>\/:]+:/ } }, 'attr-value': { pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, inside: { punctuation: [/^=/, { pattern: /(^|[^\\])["']/, lookbehind: !0 }] } }, punctuation: /\/?>/, 'attr-name': { pattern: /[^\s>\/]+/, inside: { namespace: /^[^\s>\/:]+:/ } } } }, entity: /&#?[\da-z]{1,8};/i }, Prism.languages.markup.tag.inside['attr-value'].inside.entity = Prism.languages.markup.entity, Prism.hooks.add('wrap', function (a) { 'entity' === a.type && (a.attributes.title = a.content.replace(/&/, '&')); }), Prism.languages.xml = Prism.languages.markup, Prism.languages.html = Prism.languages.markup, Prism.languages.mathml = Prism.languages.markup, Prism.languages.svg = Prism.languages.markup; Prism.languages.css = { comment: /\/\*[\s\S]*?\*\//, atrule: { pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, inside: { rule: /@[\w-]+/ } }, url: /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, selector: /[^{}\s][^{};]*?(?=\s*\{)/, string: { pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, greedy: !0 }, property: /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, important: /\B!important\b/i, 'function': /[-a-z0-9]+(?=\()/i, punctuation: /[(){};:]/ }, Prism.languages.css.atrule.inside.rest = Prism.util.clone(Prism.languages.css), Prism.languages.markup && (Prism.languages.insertBefore('markup', 'tag', { style: { pattern: /()[\s\S]*?(?=<\/style>)/i, lookbehind: !0, inside: Prism.languages.css, alias: 'language-css', greedy: !0 } }), Prism.languages.insertBefore('inside', 'attr-value', { 'style-attr': { pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, inside: { 'attr-name': { pattern: /^\s*style/i, inside: Prism.languages.markup.tag.inside }, punctuation: /^\s*=\s*['"]|['"]\s*$/, 'attr-value': { pattern: /.+/i, inside: Prism.languages.css } }, alias: 'language-css' } }, Prism.languages.markup.tag)); Prism.languages.clike = { comment: [{ pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, lookbehind: !0 }, { pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0 }], string: { pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, greedy: !0 }, 'class-name': { pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, lookbehind: !0, inside: { punctuation: /[.\\]/ } }, keyword: /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, 'boolean': /\b(?:true|false)\b/, 'function': /[a-z0-9_]+(?=\()/i, number: /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, operator: /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, punctuation: /[{}[\];(),.:]/ }; Prism.languages.javascript = Prism.languages.extend('clike', { keyword: /\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/, number: /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, operator: /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ }), Prism.languages.insertBefore('javascript', 'keyword', { regex: { pattern: /(^|[^\/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, lookbehind: !0, greedy: !0 }, 'function-variable': { pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, alias: 'function' } }), Prism.languages.insertBefore('javascript', 'string', { 'template-string': { pattern: /`(?:\\[\s\S]|[^\\`])*`/, greedy: !0, inside: { interpolation: { pattern: /\$\{[^}]+\}/, inside: { 'interpolation-punctuation': { pattern: /^\$\{|\}$/, alias: 'punctuation' }, rest: Prism.languages.javascript } }, string: /[\s\S]+/ } } }), Prism.languages.markup && Prism.languages.insertBefore('markup', 'tag', { script: { pattern: /()[\s\S]*?(?=<\/script>)/i, lookbehind: !0, inside: Prism.languages.javascript, alias: 'language-javascript', greedy: !0 } }), Prism.languages.js = Prism.languages.javascript; Prism.languages.scss = Prism.languages.extend('css', { comment: { pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/, lookbehind: !0 }, atrule: { pattern: /@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/, inside: { rule: /@[\w-]+/ } }, url: /(?:[-a-z]+-)*url(?=\()/i, selector: { pattern: /(?=\S)[^@;{}()]?(?:[^@;{}()]|&|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m, inside: { parent: { pattern: /&/, alias: 'important' }, placeholder: /%[-\w]+/, variable: /\$[-\w]+|#\{\$[-\w]+\}/ } } }), Prism.languages.insertBefore('scss', 'atrule', { keyword: [/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i, { pattern: /( +)(?:from|through)(?= )/, lookbehind: !0 }] }), Prism.languages.scss.property = { pattern: /(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/i, inside: { variable: /\$[-\w]+|#\{\$[-\w]+\}/ } }, Prism.languages.insertBefore('scss', 'important', { variable: /\$[-\w]+|#\{\$[-\w]+\}/ }), Prism.languages.insertBefore('scss', 'function', { placeholder: { pattern: /%[-\w]+/, alias: 'selector' }, statement: { pattern: /\B!(?:default|optional)\b/i, alias: 'keyword' }, 'boolean': /\b(?:true|false)\b/, 'null': /\bnull\b/, operator: { pattern: /(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/, lookbehind: !0 } }), Prism.languages.scss.atrule.inside.rest = Prism.util.clone(Prism.languages.scss); !function () { if ('undefined' != typeof self && self.Prism && self.document) { var t = [], e = {}, n = function n() {}; Prism.plugins.toolbar = {}; var a = Prism.plugins.toolbar.registerButton = function (n, a) { var o; o = 'function' == typeof a ? a : function (t) { var e; return 'function' == typeof a.onClick ? (e = document.createElement('button'), e.type = 'button', e.addEventListener('click', function () { a.onClick.call(this, t); })) : 'string' == typeof a.url ? (e = document.createElement('a'), e.href = a.url) : e = document.createElement('span'), e.textContent = a.text, e; }, t.push(e[n] = o); }, o = Prism.plugins.toolbar.hook = function (a) { var o = a.element.parentNode; if (o && /pre/i.test(o.nodeName) && !o.classList.contains('code-toolbar')) { o.classList.add('code-toolbar'); var r = document.createElement('div'); r.classList.add('toolbar'), document.body.hasAttribute('data-toolbar-order') && (t = document.body.getAttribute('data-toolbar-order').split(',').map(function (t) { return e[t] || n; })), t.forEach(function (t) { var e = t(a); if (e) { var n = document.createElement('div'); n.classList.add('toolbar-item'), n.appendChild(e), r.appendChild(n); } }), o.appendChild(r); } }; a('label', function (t) { var e = t.element.parentNode; if (e && /pre/i.test(e.nodeName) && e.hasAttribute('data-label')) { var n, a, o = e.getAttribute('data-label'); try { a = document.querySelector('template#' + o); } catch (r) {} return a ? n = a.content : (e.hasAttribute('data-url') ? (n = document.createElement('a'), n.href = e.getAttribute('data-url')) : n = document.createElement('span'), n.textContent = o), n; } }), Prism.hooks.add('complete', o); } }(); !function () { if ('undefined' != typeof self && self.Prism && self.document) { if (!Prism.plugins.toolbar) return console.warn('Show Languages plugin loaded before Toolbar plugin.'), void 0; var e = { html: 'HTML', xml: 'XML', svg: 'SVG', mathml: 'MathML', css: 'CSS', clike: 'C-like', javascript: 'JavaScript', abap: 'ABAP', actionscript: 'ActionScript', apacheconf: 'Apache Configuration', apl: 'APL', applescript: 'AppleScript', asciidoc: 'AsciiDoc', asm6502: '6502 Assembly', aspnet: 'ASP.NET (C#)', autohotkey: 'AutoHotkey', autoit: 'AutoIt', basic: 'BASIC', csharp: 'C#', cpp: 'C++', coffeescript: 'CoffeeScript', 'css-extras': 'CSS Extras', django: 'Django/Jinja2', fsharp: 'F#', glsl: 'GLSL', graphql: 'GraphQL', http: 'HTTP', ichigojam: 'IchigoJam', inform7: 'Inform 7', json: 'JSON', latex: 'LaTeX', livescript: 'LiveScript', lolcode: 'LOLCODE', matlab: 'MATLAB', mel: 'MEL', n4js: 'N4JS', nasm: 'NASM', nginx: 'nginx', nsis: 'NSIS', objectivec: 'Objective-C', ocaml: 'OCaml', opencl: 'OpenCL', parigp: 'PARI/GP', php: 'PHP', 'php-extras': 'PHP Extras', powershell: 'PowerShell', properties: '.properties', protobuf: 'Protocol Buffers', jsx: 'React JSX', renpy: 'Ren\'py', rest: 'reST (reStructuredText)', sas: 'SAS', sass: 'Sass (Sass)', scss: 'Sass (Scss)', sql: 'SQL', typescript: 'TypeScript', vbnet: 'VB.Net', vhdl: 'VHDL', vim: 'vim', wiki: 'Wiki markup', xojo: 'Xojo (REALbasic)', yaml: 'YAML' }; Prism.plugins.toolbar.registerButton('show-language', function (t) { var a = t.element.parentNode; if (a && /pre/i.test(a.nodeName)) { var s = a.getAttribute('data-language') || e[t.language] || t.language.substring(0, 1).toUpperCase() + t.language.substring(1), i = document.createElement('span'); return i.textContent = s, i; } }); } }(); }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./modules/activeMenu":2,"./modules/menu":3,"./modules/scrollBarWIdth":4}],2:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var activeMenu = function activeMenu(menuId) { var menu = document.getElementById(menuId); if (!menu) return; var links = [].concat(_toConsumableArray(menu.querySelectorAll('a'))); if (!links) return; links.map(function (link) { var url = document.location.href; if (link.href === url || link.href === url.slice(0, -1)) link.classList.add('active'); }); }; exports.default = activeMenu; module.exports = exports['default']; },{}],3:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var openMenu = function openMenu(navId, toggleId) { var nav = document.getElementById(navId); var toggle = document.getElementById(toggleId); if (!nav || !toggle) return; toggle.addEventListener('click', function () { nav.classList.toggle('show'); toggle.classList.toggle('active'); }); }; exports.default = openMenu; module.exports = exports['default']; },{}],4:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var getScrollBarWidth = function getScrollBarWidth() { return window.innerWidth - document.documentElement.getBoundingClientRect().width; }; document.documentElement.style.setProperty('--scrollbar', getScrollBarWidth() + 'px'); exports.getScrollBarWidth = getScrollBarWidth; },{}]},{},[1]); //# sourceMappingURL=scripts.js.map ================================================ FILE: docs/sitemap.xml ================================================ https://ed-grid.com/ 2020-09-05T17:07:46.413Z https://ed-grid.com/test.html 2020-09-05T17:06:26.756Z https://ed-grid.com/casos-de-exito/ 2020-09-05T17:07:46.648Z https://ed-grid.com/changelog/ 2020-09-05T17:07:46.922Z https://ed-grid.com/creditos/ 2020-09-05T17:07:47.147Z https://ed-grid.com/documentacion/alineacion.1.html 2020-08-06T20:27:42.665Z https://ed-grid.com/documentacion/alineacion.html 2020-09-05T17:07:47.380Z https://ed-grid.com/documentacion/banner.html 2020-09-05T17:07:47.668Z https://ed-grid.com/documentacion/base.1.html 2020-08-06T20:27:42.665Z https://ed-grid.com/documentacion/base.html 2020-09-05T17:07:47.962Z https://ed-grid.com/documentacion/botones.html 2020-08-06T20:27:42.681Z https://ed-grid.com/documentacion/breakpoints.html 2020-09-05T17:07:48.114Z https://ed-grid.com/documentacion/cards.html 2020-09-05T17:07:48.383Z https://ed-grid.com/documentacion/css.html 2020-08-06T20:27:42.681Z https://ed-grid.com/documentacion/distribucion.html 2020-09-05T17:07:48.484Z https://ed-grid.com/documentacion/estructura.html 2020-09-05T17:07:48.486Z https://ed-grid.com/documentacion/flexbox-helpers.html 2020-09-05T17:07:48.488Z https://ed-grid.com/documentacion/funciones.html 2020-09-05T17:07:48.489Z https://ed-grid.com/documentacion/grids.html 2020-09-05T17:07:48.491Z https://ed-grid.com/documentacion/helpers.html 2020-09-05T17:07:48.493Z https://ed-grid.com/documentacion/imagenes.html 2020-08-20T23:27:34.658Z https://ed-grid.com/documentacion/ 2020-09-05T17:07:48.495Z https://ed-grid.com/documentacion/instalacion.html 2020-09-05T17:07:48.497Z https://ed-grid.com/documentacion/layout-css-grid.html 2020-09-05T17:07:48.499Z https://ed-grid.com/documentacion/layout-flexbox.html 2020-09-05T17:07:48.500Z https://ed-grid.com/documentacion/layout.html 2020-09-05T17:07:48.502Z https://ed-grid.com/documentacion/mediaqueries.html 2020-09-05T17:07:48.504Z https://ed-grid.com/documentacion/menu-responsive.html 2020-09-05T17:07:48.506Z https://ed-grid.com/documentacion/menus.html 2020-09-05T17:07:48.508Z https://ed-grid.com/documentacion/modo-dev.html 2020-09-05T17:07:48.509Z https://ed-grid.com/documentacion/offset.html 2020-09-05T17:07:48.511Z https://ed-grid.com/documentacion/personalizar.html 2020-09-05T17:07:48.513Z https://ed-grid.com/documentacion/prototipado-avanzado.html 2020-09-05T17:07:48.514Z https://ed-grid.com/documentacion/prototipado.html 2020-09-05T17:07:48.516Z https://ed-grid.com/documentacion/ratios.html 2020-09-05T17:07:48.518Z https://ed-grid.com/documentacion/sass.html 2020-09-05T17:07:48.520Z https://ed-grid.com/documentacion/skeleton.html 2020-09-05T17:07:48.521Z https://ed-grid.com/documentacion/videos.html 2020-09-05T17:07:48.523Z https://ed-grid.com/documentacion/visibilidad.html 2020-09-05T17:07:48.526Z ================================================ FILE: docs/test.html ================================================ Title ================================================ FILE: ed-grid.scss ================================================ @import "src/scss/ed-grid"; ================================================ FILE: gulpfile.babel.js ================================================ import gulp from 'gulp' import sass from 'gulp-sass' import plumber from 'gulp-plumber' import postcss from 'gulp-postcss' import autoprefixer from 'autoprefixer' import browserSync from 'browser-sync' import sourcemaps from 'gulp-sourcemaps' import browserify from 'browserify' import babelify from 'babelify' import buffer from 'vinyl-buffer' import source from 'vinyl-source-stream' import rename from 'gulp-rename' import pug from 'gulp-pug' import watch from 'gulp-watch' import minify from 'gulp-minify' import imagemin from 'gulp-imagemin' import sitemap from 'gulp-sitemap' import cachebust from 'gulp-cache-bust' import tildeImporter from 'node-sass-tilde-importer' import data from 'gulp-data' import fs from 'fs' const server = browserSync.create() const postcssPlugins = [ autoprefixer({browsers: '> 1%, last 2 versions, Firefox ESR, Opera 12.1'}) ] // Compila Sass para desarrollo gulp.task('styles-dev', () => { gulp.src('./src/scss/styles.scss') .pipe(sourcemaps.init()) .pipe(plumber()) .pipe(sass({ importer: tildeImporter, sourceComments: true, outputStyle: 'expanded' })) .pipe(postcss(postcssPlugins)) .pipe(sourcemaps.write()) .pipe(gulp.dest('./docs/css/')) .pipe(server.stream({match: '**/*.css'})) }) // Compila Sass para producción gulp.task('styles-build', () => { gulp.src('./src/scss/styles.scss') .pipe(plumber()) .pipe(sass({ importer: tildeImporter, outputStyle: 'compressed' })) .pipe(postcss(postcssPlugins)) .pipe(gulp.dest('./docs/css/')) .pipe(server.stream({match: '**/*.css'})) }) // Compila versión CSS minificada gulp.task('css-build-min', () => { gulp.src('./src/scss/ed-grid-css.scss') .pipe(plumber()) .pipe(sass({ outputStyle: 'compressed' })) .pipe(postcss(postcssPlugins)) .pipe(rename('ed-grid.min.css')) .pipe(gulp.dest('./src/css/')) }) // Compila versión CSS sin minificar gulp.task('css-build', () => { gulp.src('./src/scss/ed-grid-css.scss') .pipe(plumber()) .pipe(sass({ outputStyle: 'expanded' })) .pipe(postcss(postcssPlugins)) .pipe(rename('ed-grid.css')) .pipe(gulp.dest('./src/css/')) }) // Compila páginas internas gulp.task('pug-dev', () => gulp.src('./src/pug/pages/**/*.pug') .pipe(plumber()) .pipe(data(function () { return JSON.parse(fs.readFileSync('./src/data/casos-de-exito.json')) })) .pipe(pug({ pretty: true, basedir: './' })) .pipe(gulp.dest('./docs')) ) // Compila páginas internas minificadas gulp.task('pug-build', () => gulp.src('./src/pug/pages/**/*.pug') .pipe(plumber()) .pipe(data(function () { return JSON.parse(fs.readFileSync('./src/data/casos-de-exito.json')) })) .pipe(pug({ basedir: './' })) .pipe(gulp.dest('./docs')) ) // Compila JavaScript sin minificar gulp.task('scripts-dev', () => browserify('./src/js/index.js') .transform(babelify, { global: true // permite importar desde afuera (como node_modules) }) .bundle() .on('error', function (err) { console.error(err) this.emit('end') }) .pipe(source('scripts.js')) .pipe(buffer()) .pipe(minify({ ext: { src: '-min.js', min: '.js' } })) .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('.')) .pipe(gulp.dest('./docs/js')) ) // Compila JavaScript minificado gulp.task('scripts-build', () => browserify('./src/js/index.js') .transform(babelify, { global: true // permite importar desde afuera (como node_modules) }) .bundle() .on('error', function (err) { console.error(err) this.emit('end') }) .pipe(source('scripts.js')) .pipe(buffer()) .pipe(minify({ ext: { src: '.js', min: '-min.js' } })) .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('.')) .pipe(gulp.dest('./docs/js')) ) // Copia y comprime imágenes gulp.task('images-build', () => { gulp.src('./src/img/**/**') .pipe(imagemin([ imagemin.gifsicle({interlaced: true}), imagemin.jpegtran({progressive: true}), imagemin.optipng({optimizationLevel: 5}), imagemin.svgo() ])) .pipe(gulp.dest('./docs/assets/img')) }) // Copia imágenes para desarrollo gulp.task('images-dev', () => { gulp.src('./src/img/**/**') .pipe(gulp.dest('./docs/assets/img')) }) // Copia html de testing gulp.task('html', () => { gulp.src('./test.html') .pipe(gulp.dest('./docs/')) }) gulp.task('sitemap', () => { gulp.src('./docs/**/*.html', { read: false }) .pipe(sitemap({ siteUrl: 'https://ed-grid.com' // remplazar por tu dominio })) .pipe(gulp.dest('./docs')) }) gulp.task('cache', () => { gulp.src('./docs/**/*.html') .pipe(cachebust({ type: 'timestamp' })) .pipe(gulp.dest('./docs')) }) gulp.task('dev', ['styles-dev', 'pug-dev', 'scripts-dev', 'images-dev', 'html'], () => { server.init({ server: { baseDir: './docs' } }) gulp.watch('./src/scss/**/**', () => gulp.start('styles-dev')) gulp.watch('./src/js/**/**', () => gulp.start('scripts-dev', server.reload)) gulp.watch('./src/pug/**/**', () => gulp.start('pug-dev', server.reload)) gulp.watch('./src/data/**/**', () => gulp.start('pug-dev', server.reload)) gulp.watch('./src/md/**/**', () => gulp.start('pug-dev', server.reload)) gulp.watch('./test.html', () => gulp.start('html', server.reload)) gulp.watch('./src/img/**/**', () => gulp.start('images-dev')) }) // Compila versión CSS para producción gulp.task('css', ['css-build', 'css-build-min']) gulp.task('build', ['styles-build', 'pug-build', 'scripts-build', 'images-build', 'cache', 'sitemap']) ================================================ FILE: index.js ================================================ import { getScrollBarWidth } from './src/js/modules/scrollBarWIdth' module.exports = getScrollBarWidth ================================================ FILE: package.json ================================================ { "name": "ed-grid", "version": "3.0.2", "description": "EDgrid (aka ed-grid) is a minimalist Sass/CSS library for building responsive web layouts.", "style": "ed-grid.scss", "main": "ed-grid.scss", "author": "Alvaro Felipe ", "contributors": [ { "name": "Alexis Mora Angulo", "email": "juanalexismoraangulo@hotmail.com", "url": "https://twitter.com/Jopzik" } ], "repository": { "type": "git", "url": "https://github.com/escueladigital/ED-GRID" }, "bugs": { "url": "https://github.com/escueladigital/ED-GRID/issues" }, "scripts": { "start": "./node_modules/.bin/gulp" }, "license": "ISC", "devDependencies": { "autoprefixer": "^6.4.1", "babel-cli": "^6.16.0", "babel-core": "^6.26.0", "babel-plugin-add-module-exports": "^0.2.1", "babel-preset-env": "^1.6.0", "babel-register": "^6.18.0", "babelify": "^7.3.0", "browser-sync": "^2.16.0", "browserify": "^13.1.1", "cssnano": "^3.7.5", "edteam-style-guides": "0.0.68", "gulp": "^3.9.1", "gulp-babel": "^8.0.0", "gulp-cache-bust": "^1.4.0", "gulp-data": "^1.3.1", "gulp-imagemin": "^4.1.0", "gulp-minify": "^3.1.0", "gulp-plumber": "^1.1.0", "gulp-postcss": "^6.2.0", "gulp-pug": "^4.0.1", "gulp-rename": "^1.2.3", "gulp-sass": "^3.1.0", "gulp-sitemap": "^5.1.0", "gulp-sourcemaps": "^1.6.0", "gulp-watch": "^5.0.1", "jstransformer-markdown-it": "^2.1.0", "node-sass-tilde-importer": "^1.0.2", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0" } } ================================================ FILE: src/css/ed-grid.css ================================================ @charset "UTF-8"; /* * $names - Lista de nombres que usaremos para nombrar nuestras clases. * Recorremos una lista por si queremos múltiples selectores con el mismo valor * Ejemplo: (red-color, color-red) * sería igual a .red-color { color : red; } .color-red { color : red; } * * $property, $value - Propiedad CSS con su respectivo valor * * $concact - En ocasiones necesitaremos concadenar para crear clases más específicas. * Por la forma en que funciona el mixin no podemos usar concadenar desde los names. * Para ver un ejemplo práctico vaya a la parte de los gaps en _core-grid.scss * * $debug - Ver cómo sería el resultado en la construcción de la clase y el CSS de salida. * Por defecto está desactivado */ *, *:before, *:after { box-sizing: border-box; } body { margin: 0; font-family: sans-serif; } img { max-width: 100%; height: auto; } a { text-decoration: none; } a:hover { text-decoration: underline; } body.dev:before, body.desarrollo:before, body.dev .ed-container:before, body.dev .ed-grid:before, body.desarrollo .ed-container:before, body.desarrollo .ed-grid:before, body.dev .ed-item:before, body.dev .ed-grid > *:before, body.desarrollo .ed-item:before, body.desarrollo .ed-grid > *:before, body.dev-hover .ed-container:hover:before, body.dev-hover .ed-grid:hover:before, body.desarrollo-hover .ed-container:hover:before, body.desarrollo-hover .ed-grid:hover:before, body.dev-hover .ed-item:hover:before, body.dev-hover .ed-grid > *:hover:before, body.desarrollo-hover .ed-item:hover:before, body.desarrollo-hover .ed-grid > *:hover:before { content: attr(class); font-style: italic; font-size: 0.75rem; font-weight: normal; z-index: 1; right: 0; position: absolute; display: table; width: 100%; padding: 0 0.3125em; height: 1.25rem; line-height: 1.25rem; } body.dev, body.desarrollo { margin: 0 !important; position: relative; top: 66px; } body.dev:before, body.desarrollo:before { position: fixed; background: steelblue; color: #FFF; font-size: 0.875rem; text-align: center; line-height: 36px; height: 36px; top: 0; } body.dev:before, body.desarrollo:before { content: "ed-grid: size s, from 0 (ed-containers: red, ed-items: blue, yellow)"; } @media screen and (min-width: 640px) { body.dev:before, body.desarrollo:before { content: "ed-grid: size m, from 640px (ed-containers: red, ed-items: blue, yellow)"; } } @media screen and (min-width: 1024px) { body.dev:before, body.desarrollo:before { content: "ed-grid: size l, from 1024px (ed-containers: red, ed-items: blue, yellow)"; } } @media screen and (min-width: 1024px) { body.dev:before, body.desarrollo:before { content: "ed-grid: size lg, from 1024px (ed-containers: red, ed-items: blue, yellow)"; } } @media screen and (min-width: 1440px) { body.dev:before, body.desarrollo:before { content: "ed-grid: size xl, from 1440px (ed-containers: red, ed-items: blue, yellow)"; } } body.dev .ed-container, body.dev .ed-grid, body.desarrollo .ed-container, body.desarrollo .ed-grid { padding-top: 1.25rem; margin-bottom: 10px; outline: 1px solid tomato; position: relative; } body.dev .ed-container .ed-container, body.dev .ed-container .ed-grid, body.dev .ed-grid .ed-container, body.dev .ed-grid .ed-grid, body.desarrollo .ed-container .ed-container, body.desarrollo .ed-container .ed-grid, body.desarrollo .ed-grid .ed-container, body.desarrollo .ed-grid .ed-grid { margin-bottom: 0; } body.dev .ed-container:before, body.dev .ed-grid:before, body.desarrollo .ed-container:before, body.desarrollo .ed-grid:before { top: 0; background: rgba(255, 99, 71, 0.3); color: tomato; } body.dev .ed-item, body.dev .ed-grid > *, body.desarrollo .ed-item, body.desarrollo .ed-grid > * { position: relative; padding-bottom: 1.25rem; background-color: rgba(70, 130, 180, 0.1); outline: 1px solid steelblue; background-clip: content-box; } body.dev .ed-item:before, body.dev .ed-grid > *:before, body.desarrollo .ed-item:before, body.desarrollo .ed-grid > *:before { background: rgba(70, 130, 180, 0.8); color: #FFF; bottom: 0; } body.dev-hover .ed-container:hover, body.dev-hover .ed-grid:hover, body.desarrollo-hover .ed-container:hover, body.desarrollo-hover .ed-grid:hover { padding-top: 1.25rem; margin-bottom: 10px; outline: 1px solid tomato; position: relative; } body.dev-hover .ed-container:hover .ed-container, body.dev-hover .ed-container:hover .ed-grid, body.dev-hover .ed-grid:hover .ed-container, body.dev-hover .ed-grid:hover .ed-grid, body.desarrollo-hover .ed-container:hover .ed-container, body.desarrollo-hover .ed-container:hover .ed-grid, body.desarrollo-hover .ed-grid:hover .ed-container, body.desarrollo-hover .ed-grid:hover .ed-grid { margin-bottom: 0; } body.dev-hover .ed-container:hover:before, body.dev-hover .ed-grid:hover:before, body.desarrollo-hover .ed-container:hover:before, body.desarrollo-hover .ed-grid:hover:before { top: 0; background: rgba(255, 99, 71, 0.3); color: tomato; } body.dev-hover .ed-item:hover, body.dev-hover .ed-grid > *:hover, body.desarrollo-hover .ed-item:hover, body.desarrollo-hover .ed-grid > *:hover { position: relative; padding-bottom: 1.25rem; background-color: rgba(70, 130, 180, 0.1); outline: 1px solid steelblue; background-clip: content-box; } body.dev-hover .ed-item:hover:before, body.dev-hover .ed-grid > *:hover:before, body.desarrollo-hover .ed-item:hover:before, body.desarrollo-hover .ed-grid > *:hover:before { background: rgba(70, 130, 180, 0.8); color: #FFF; bottom: 0; } .ed-container { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; max-width: var(--max-width); margin-left: auto; margin-right: auto; width: 100%; } .ed-item { margin: 0; padding-left: 1rem; padding-right: 1rem; } .ed-container.full { max-width: 100%; } .ed-item { width: 100%; } .ed-item.ed-container { padding-left: 0; padding-right: 0; } .s-5, .ed-item.s-5 { width: 5%; } .s-10, .ed-item.s-10 { width: 10%; } .s-15, .ed-item.s-15 { width: 15%; } .s-20, .ed-item.s-20 { width: 20%; } .s-25, .ed-item.s-25 { width: 25%; } .s-30, .ed-item.s-30 { width: 30%; } .s-35, .ed-item.s-35 { width: 35%; } .s-40, .ed-item.s-40 { width: 40%; } .s-45, .ed-item.s-45 { width: 45%; } .s-50, .ed-item.s-50 { width: 50%; } .s-55, .ed-item.s-55 { width: 55%; } .s-60, .ed-item.s-60 { width: 60%; } .s-65, .ed-item.s-65 { width: 65%; } .s-70, .ed-item.s-70 { width: 70%; } .s-75, .ed-item.s-75 { width: 75%; } .s-80, .ed-item.s-80 { width: 80%; } .s-85, .ed-item.s-85 { width: 85%; } .s-90, .ed-item.s-90 { width: 90%; } .s-95, .ed-item.s-95 { width: 95%; } .s-100, .ed-item.s-100 { width: 100%; } .s-1-3, .ed-item.s-1-3 { width: 33.33333%; } .s-2-3, .ed-item.s-2-3 { width: 66.66667%; } .s-3-3, .ed-item.s-3-3 { width: 100%; } .s-1-6, .ed-item.s-1-6 { width: 16.66667%; } .s-2-6, .ed-item.s-2-6 { width: 33.33333%; } .s-3-6, .ed-item.s-3-6 { width: 50%; } .s-4-6, .ed-item.s-4-6 { width: 66.66667%; } .s-5-6, .ed-item.s-5-6 { width: 83.33333%; } .s-6-6, .ed-item.s-6-6 { width: 100%; } @media screen and (min-width: 640px) { .m-5, .ed-item.m-5 { width: 5%; } .m-10, .ed-item.m-10 { width: 10%; } .m-15, .ed-item.m-15 { width: 15%; } .m-20, .ed-item.m-20 { width: 20%; } .m-25, .ed-item.m-25 { width: 25%; } .m-30, .ed-item.m-30 { width: 30%; } .m-35, .ed-item.m-35 { width: 35%; } .m-40, .ed-item.m-40 { width: 40%; } .m-45, .ed-item.m-45 { width: 45%; } .m-50, .ed-item.m-50 { width: 50%; } .m-55, .ed-item.m-55 { width: 55%; } .m-60, .ed-item.m-60 { width: 60%; } .m-65, .ed-item.m-65 { width: 65%; } .m-70, .ed-item.m-70 { width: 70%; } .m-75, .ed-item.m-75 { width: 75%; } .m-80, .ed-item.m-80 { width: 80%; } .m-85, .ed-item.m-85 { width: 85%; } .m-90, .ed-item.m-90 { width: 90%; } .m-95, .ed-item.m-95 { width: 95%; } .m-100, .ed-item.m-100 { width: 100%; } .m-1-3, .ed-item.m-1-3 { width: 33.33333%; } .m-2-3, .ed-item.m-2-3 { width: 66.66667%; } .m-3-3, .ed-item.m-3-3 { width: 100%; } .m-1-6, .ed-item.m-1-6 { width: 16.66667%; } .m-2-6, .ed-item.m-2-6 { width: 33.33333%; } .m-3-6, .ed-item.m-3-6 { width: 50%; } .m-4-6, .ed-item.m-4-6 { width: 66.66667%; } .m-5-6, .ed-item.m-5-6 { width: 83.33333%; } .m-6-6, .ed-item.m-6-6 { width: 100%; } } @media screen and (min-width: 1024px) { .l-5, .ed-item.l-5 { width: 5%; } .l-10, .ed-item.l-10 { width: 10%; } .l-15, .ed-item.l-15 { width: 15%; } .l-20, .ed-item.l-20 { width: 20%; } .l-25, .ed-item.l-25 { width: 25%; } .l-30, .ed-item.l-30 { width: 30%; } .l-35, .ed-item.l-35 { width: 35%; } .l-40, .ed-item.l-40 { width: 40%; } .l-45, .ed-item.l-45 { width: 45%; } .l-50, .ed-item.l-50 { width: 50%; } .l-55, .ed-item.l-55 { width: 55%; } .l-60, .ed-item.l-60 { width: 60%; } .l-65, .ed-item.l-65 { width: 65%; } .l-70, .ed-item.l-70 { width: 70%; } .l-75, .ed-item.l-75 { width: 75%; } .l-80, .ed-item.l-80 { width: 80%; } .l-85, .ed-item.l-85 { width: 85%; } .l-90, .ed-item.l-90 { width: 90%; } .l-95, .ed-item.l-95 { width: 95%; } .l-100, .ed-item.l-100 { width: 100%; } .l-1-3, .ed-item.l-1-3 { width: 33.33333%; } .l-2-3, .ed-item.l-2-3 { width: 66.66667%; } .l-3-3, .ed-item.l-3-3 { width: 100%; } .l-1-6, .ed-item.l-1-6 { width: 16.66667%; } .l-2-6, .ed-item.l-2-6 { width: 33.33333%; } .l-3-6, .ed-item.l-3-6 { width: 50%; } .l-4-6, .ed-item.l-4-6 { width: 66.66667%; } .l-5-6, .ed-item.l-5-6 { width: 83.33333%; } .l-6-6, .ed-item.l-6-6 { width: 100%; } } @media screen and (min-width: 1024px) { .lg-5, .ed-item.lg-5 { width: 5%; } .lg-10, .ed-item.lg-10 { width: 10%; } .lg-15, .ed-item.lg-15 { width: 15%; } .lg-20, .ed-item.lg-20 { width: 20%; } .lg-25, .ed-item.lg-25 { width: 25%; } .lg-30, .ed-item.lg-30 { width: 30%; } .lg-35, .ed-item.lg-35 { width: 35%; } .lg-40, .ed-item.lg-40 { width: 40%; } .lg-45, .ed-item.lg-45 { width: 45%; } .lg-50, .ed-item.lg-50 { width: 50%; } .lg-55, .ed-item.lg-55 { width: 55%; } .lg-60, .ed-item.lg-60 { width: 60%; } .lg-65, .ed-item.lg-65 { width: 65%; } .lg-70, .ed-item.lg-70 { width: 70%; } .lg-75, .ed-item.lg-75 { width: 75%; } .lg-80, .ed-item.lg-80 { width: 80%; } .lg-85, .ed-item.lg-85 { width: 85%; } .lg-90, .ed-item.lg-90 { width: 90%; } .lg-95, .ed-item.lg-95 { width: 95%; } .lg-100, .ed-item.lg-100 { width: 100%; } .lg-1-3, .ed-item.lg-1-3 { width: 33.33333%; } .lg-2-3, .ed-item.lg-2-3 { width: 66.66667%; } .lg-3-3, .ed-item.lg-3-3 { width: 100%; } .lg-1-6, .ed-item.lg-1-6 { width: 16.66667%; } .lg-2-6, .ed-item.lg-2-6 { width: 33.33333%; } .lg-3-6, .ed-item.lg-3-6 { width: 50%; } .lg-4-6, .ed-item.lg-4-6 { width: 66.66667%; } .lg-5-6, .ed-item.lg-5-6 { width: 83.33333%; } .lg-6-6, .ed-item.lg-6-6 { width: 100%; } } @media screen and (min-width: 1440px) { .xl-5, .ed-item.xl-5 { width: 5%; } .xl-10, .ed-item.xl-10 { width: 10%; } .xl-15, .ed-item.xl-15 { width: 15%; } .xl-20, .ed-item.xl-20 { width: 20%; } .xl-25, .ed-item.xl-25 { width: 25%; } .xl-30, .ed-item.xl-30 { width: 30%; } .xl-35, .ed-item.xl-35 { width: 35%; } .xl-40, .ed-item.xl-40 { width: 40%; } .xl-45, .ed-item.xl-45 { width: 45%; } .xl-50, .ed-item.xl-50 { width: 50%; } .xl-55, .ed-item.xl-55 { width: 55%; } .xl-60, .ed-item.xl-60 { width: 60%; } .xl-65, .ed-item.xl-65 { width: 65%; } .xl-70, .ed-item.xl-70 { width: 70%; } .xl-75, .ed-item.xl-75 { width: 75%; } .xl-80, .ed-item.xl-80 { width: 80%; } .xl-85, .ed-item.xl-85 { width: 85%; } .xl-90, .ed-item.xl-90 { width: 90%; } .xl-95, .ed-item.xl-95 { width: 95%; } .xl-100, .ed-item.xl-100 { width: 100%; } .xl-1-3, .ed-item.xl-1-3 { width: 33.33333%; } .xl-2-3, .ed-item.xl-2-3 { width: 66.66667%; } .xl-3-3, .ed-item.xl-3-3 { width: 100%; } .xl-1-6, .ed-item.xl-1-6 { width: 16.66667%; } .xl-2-6, .ed-item.xl-2-6 { width: 33.33333%; } .xl-3-6, .ed-item.xl-3-6 { width: 50%; } .xl-4-6, .ed-item.xl-4-6 { width: 66.66667%; } .xl-5-6, .ed-item.xl-5-6 { width: 83.33333%; } .xl-6-6, .ed-item.xl-6-6 { width: 100%; } } .ed-grid.s-gap-0 { --gap: 0rem; } @media screen and (min-width: 640px) { .ed-grid.m-gap-0 { --gap: 0rem; } } @media screen and (min-width: 1024px) { .ed-grid.l-gap-0 { --gap: 0rem; } } @media screen and (min-width: 1024px) { .ed-grid.lg-gap-0 { --gap: 0rem; } } @media screen and (min-width: 1440px) { .ed-grid.xl-gap-0 { --gap: 0rem; } } .ed-grid.s-gap-1 { --gap: 0.5rem; } @media screen and (min-width: 640px) { .ed-grid.m-gap-1 { --gap: 0.5rem; } } @media screen and (min-width: 1024px) { .ed-grid.l-gap-1 { --gap: 0.5rem; } } @media screen and (min-width: 1024px) { .ed-grid.lg-gap-1 { --gap: 0.5rem; } } @media screen and (min-width: 1440px) { .ed-grid.xl-gap-1 { --gap: 0.5rem; } } .ed-grid.s-gap-2 { --gap: 1rem; } @media screen and (min-width: 640px) { .ed-grid.m-gap-2 { --gap: 1rem; } } @media screen and (min-width: 1024px) { .ed-grid.l-gap-2 { --gap: 1rem; } } @media screen and (min-width: 1024px) { .ed-grid.lg-gap-2 { --gap: 1rem; } } @media screen and (min-width: 1440px) { .ed-grid.xl-gap-2 { --gap: 1rem; } } .ed-grid.s-gap-3 { --gap: 1.5rem; } @media screen and (min-width: 640px) { .ed-grid.m-gap-3 { --gap: 1.5rem; } } @media screen and (min-width: 1024px) { .ed-grid.l-gap-3 { --gap: 1.5rem; } } @media screen and (min-width: 1024px) { .ed-grid.lg-gap-3 { --gap: 1.5rem; } } @media screen and (min-width: 1440px) { .ed-grid.xl-gap-3 { --gap: 1.5rem; } } .ed-grid.s-gap-4 { --gap: 2rem; } @media screen and (min-width: 640px) { .ed-grid.m-gap-4 { --gap: 2rem; } } @media screen and (min-width: 1024px) { .ed-grid.l-gap-4 { --gap: 2rem; } } @media screen and (min-width: 1024px) { .ed-grid.lg-gap-4 { --gap: 2rem; } } @media screen and (min-width: 1440px) { .ed-grid.xl-gap-4 { --gap: 2rem; } } .ed-grid { display: -ms-grid; display: grid; -ms-grid-columns: 100%; grid-template-columns: 100%; column-gap: var(--gap); width: calc(100% - 2rem); margin-left: 1rem; margin-right: 1rem; max-width: var(--max-width); } .ed-grid.gap-0 { --gap: 0rem; } .ed-grid.gap-1 { --gap: 0.5rem; } .ed-grid.gap-2 { --gap: 1rem; } .ed-grid.gap-3 { --gap: 1.5rem; } .ed-grid.gap-4 { --gap: 2rem; } @media screen and (min-width: 1200px) { .ed-grid { width: 100%; margin-left: auto; margin-right: auto; } } .ed-grid.row-gap, .ed-grid.rows-gap { row-gap: var(--gap); } .ed-grid .ed-grid, .ed-grid.full { width: 100%; max-width: 100%; margin-right: 0; margin-left: 0; } .ed-grid .ed-grid.s-5, .ed-grid .ed-grid .ed-grid.s-5 { width: 5%; } .ed-grid .ed-grid.s-10, .ed-grid .ed-grid .ed-grid.s-10 { width: 10%; } .ed-grid .ed-grid.s-15, .ed-grid .ed-grid .ed-grid.s-15 { width: 15%; } .ed-grid .ed-grid.s-20, .ed-grid .ed-grid .ed-grid.s-20 { width: 20%; } .ed-grid .ed-grid.s-25, .ed-grid .ed-grid .ed-grid.s-25 { width: 25%; } .ed-grid .ed-grid.s-30, .ed-grid .ed-grid .ed-grid.s-30 { width: 30%; } .ed-grid .ed-grid.s-35, .ed-grid .ed-grid .ed-grid.s-35 { width: 35%; } .ed-grid .ed-grid.s-40, .ed-grid .ed-grid .ed-grid.s-40 { width: 40%; } .ed-grid .ed-grid.s-45, .ed-grid .ed-grid .ed-grid.s-45 { width: 45%; } .ed-grid .ed-grid.s-50, .ed-grid .ed-grid .ed-grid.s-50 { width: 50%; } .ed-grid .ed-grid.s-55, .ed-grid .ed-grid .ed-grid.s-55 { width: 55%; } .ed-grid .ed-grid.s-60, .ed-grid .ed-grid .ed-grid.s-60 { width: 60%; } .ed-grid .ed-grid.s-65, .ed-grid .ed-grid .ed-grid.s-65 { width: 65%; } .ed-grid .ed-grid.s-70, .ed-grid .ed-grid .ed-grid.s-70 { width: 70%; } .ed-grid .ed-grid.s-75, .ed-grid .ed-grid .ed-grid.s-75 { width: 75%; } .ed-grid .ed-grid.s-80, .ed-grid .ed-grid .ed-grid.s-80 { width: 80%; } .ed-grid .ed-grid.s-85, .ed-grid .ed-grid .ed-grid.s-85 { width: 85%; } .ed-grid .ed-grid.s-90, .ed-grid .ed-grid .ed-grid.s-90 { width: 90%; } .ed-grid .ed-grid.s-95, .ed-grid .ed-grid .ed-grid.s-95 { width: 95%; } .ed-grid .ed-grid.s-100, .ed-grid .ed-grid .ed-grid.s-100 { width: 100%; } .ed-grid .ed-grid.s-to-center, .ed-grid .ed-grid .ed-grid.s-to-center { margin-left: auto; margin-right: auto; } .ed-grid .ed-grid.s-to-right, .ed-grid .ed-grid .ed-grid.s-to-right { margin-left: auto; margin-right: 0; } .ed-grid .ed-grid.s-to-left, .ed-grid .ed-grid .ed-grid.s-to-left { margin-left: 0; margin-right: auto; } @media screen and (min-width: 640px) { .ed-grid .ed-grid.m-5, .ed-grid .ed-grid .ed-grid.m-5 { width: 5%; } .ed-grid .ed-grid.m-10, .ed-grid .ed-grid .ed-grid.m-10 { width: 10%; } .ed-grid .ed-grid.m-15, .ed-grid .ed-grid .ed-grid.m-15 { width: 15%; } .ed-grid .ed-grid.m-20, .ed-grid .ed-grid .ed-grid.m-20 { width: 20%; } .ed-grid .ed-grid.m-25, .ed-grid .ed-grid .ed-grid.m-25 { width: 25%; } .ed-grid .ed-grid.m-30, .ed-grid .ed-grid .ed-grid.m-30 { width: 30%; } .ed-grid .ed-grid.m-35, .ed-grid .ed-grid .ed-grid.m-35 { width: 35%; } .ed-grid .ed-grid.m-40, .ed-grid .ed-grid .ed-grid.m-40 { width: 40%; } .ed-grid .ed-grid.m-45, .ed-grid .ed-grid .ed-grid.m-45 { width: 45%; } .ed-grid .ed-grid.m-50, .ed-grid .ed-grid .ed-grid.m-50 { width: 50%; } .ed-grid .ed-grid.m-55, .ed-grid .ed-grid .ed-grid.m-55 { width: 55%; } .ed-grid .ed-grid.m-60, .ed-grid .ed-grid .ed-grid.m-60 { width: 60%; } .ed-grid .ed-grid.m-65, .ed-grid .ed-grid .ed-grid.m-65 { width: 65%; } .ed-grid .ed-grid.m-70, .ed-grid .ed-grid .ed-grid.m-70 { width: 70%; } .ed-grid .ed-grid.m-75, .ed-grid .ed-grid .ed-grid.m-75 { width: 75%; } .ed-grid .ed-grid.m-80, .ed-grid .ed-grid .ed-grid.m-80 { width: 80%; } .ed-grid .ed-grid.m-85, .ed-grid .ed-grid .ed-grid.m-85 { width: 85%; } .ed-grid .ed-grid.m-90, .ed-grid .ed-grid .ed-grid.m-90 { width: 90%; } .ed-grid .ed-grid.m-95, .ed-grid .ed-grid .ed-grid.m-95 { width: 95%; } .ed-grid .ed-grid.m-100, .ed-grid .ed-grid .ed-grid.m-100 { width: 100%; } .ed-grid .ed-grid.m-to-center, .ed-grid .ed-grid .ed-grid.m-to-center { margin-left: auto; margin-right: auto; } .ed-grid .ed-grid.m-to-right, .ed-grid .ed-grid .ed-grid.m-to-right { margin-left: auto; margin-right: 0; } .ed-grid .ed-grid.m-to-left, .ed-grid .ed-grid .ed-grid.m-to-left { margin-left: 0; margin-right: auto; } } @media screen and (min-width: 1024px) { .ed-grid .ed-grid.l-5, .ed-grid .ed-grid .ed-grid.l-5 { width: 5%; } .ed-grid .ed-grid.l-10, .ed-grid .ed-grid .ed-grid.l-10 { width: 10%; } .ed-grid .ed-grid.l-15, .ed-grid .ed-grid .ed-grid.l-15 { width: 15%; } .ed-grid .ed-grid.l-20, .ed-grid .ed-grid .ed-grid.l-20 { width: 20%; } .ed-grid .ed-grid.l-25, .ed-grid .ed-grid .ed-grid.l-25 { width: 25%; } .ed-grid .ed-grid.l-30, .ed-grid .ed-grid .ed-grid.l-30 { width: 30%; } .ed-grid .ed-grid.l-35, .ed-grid .ed-grid .ed-grid.l-35 { width: 35%; } .ed-grid .ed-grid.l-40, .ed-grid .ed-grid .ed-grid.l-40 { width: 40%; } .ed-grid .ed-grid.l-45, .ed-grid .ed-grid .ed-grid.l-45 { width: 45%; } .ed-grid .ed-grid.l-50, .ed-grid .ed-grid .ed-grid.l-50 { width: 50%; } .ed-grid .ed-grid.l-55, .ed-grid .ed-grid .ed-grid.l-55 { width: 55%; } .ed-grid .ed-grid.l-60, .ed-grid .ed-grid .ed-grid.l-60 { width: 60%; } .ed-grid .ed-grid.l-65, .ed-grid .ed-grid .ed-grid.l-65 { width: 65%; } .ed-grid .ed-grid.l-70, .ed-grid .ed-grid .ed-grid.l-70 { width: 70%; } .ed-grid .ed-grid.l-75, .ed-grid .ed-grid .ed-grid.l-75 { width: 75%; } .ed-grid .ed-grid.l-80, .ed-grid .ed-grid .ed-grid.l-80 { width: 80%; } .ed-grid .ed-grid.l-85, .ed-grid .ed-grid .ed-grid.l-85 { width: 85%; } .ed-grid .ed-grid.l-90, .ed-grid .ed-grid .ed-grid.l-90 { width: 90%; } .ed-grid .ed-grid.l-95, .ed-grid .ed-grid .ed-grid.l-95 { width: 95%; } .ed-grid .ed-grid.l-100, .ed-grid .ed-grid .ed-grid.l-100 { width: 100%; } .ed-grid .ed-grid.l-to-center, .ed-grid .ed-grid .ed-grid.l-to-center { margin-left: auto; margin-right: auto; } .ed-grid .ed-grid.l-to-right, .ed-grid .ed-grid .ed-grid.l-to-right { margin-left: auto; margin-right: 0; } .ed-grid .ed-grid.l-to-left, .ed-grid .ed-grid .ed-grid.l-to-left { margin-left: 0; margin-right: auto; } } @media screen and (min-width: 1024px) { .ed-grid .ed-grid.lg-5, .ed-grid .ed-grid .ed-grid.lg-5 { width: 5%; } .ed-grid .ed-grid.lg-10, .ed-grid .ed-grid .ed-grid.lg-10 { width: 10%; } .ed-grid .ed-grid.lg-15, .ed-grid .ed-grid .ed-grid.lg-15 { width: 15%; } .ed-grid .ed-grid.lg-20, .ed-grid .ed-grid .ed-grid.lg-20 { width: 20%; } .ed-grid .ed-grid.lg-25, .ed-grid .ed-grid .ed-grid.lg-25 { width: 25%; } .ed-grid .ed-grid.lg-30, .ed-grid .ed-grid .ed-grid.lg-30 { width: 30%; } .ed-grid .ed-grid.lg-35, .ed-grid .ed-grid .ed-grid.lg-35 { width: 35%; } .ed-grid .ed-grid.lg-40, .ed-grid .ed-grid .ed-grid.lg-40 { width: 40%; } .ed-grid .ed-grid.lg-45, .ed-grid .ed-grid .ed-grid.lg-45 { width: 45%; } .ed-grid .ed-grid.lg-50, .ed-grid .ed-grid .ed-grid.lg-50 { width: 50%; } .ed-grid .ed-grid.lg-55, .ed-grid .ed-grid .ed-grid.lg-55 { width: 55%; } .ed-grid .ed-grid.lg-60, .ed-grid .ed-grid .ed-grid.lg-60 { width: 60%; } .ed-grid .ed-grid.lg-65, .ed-grid .ed-grid .ed-grid.lg-65 { width: 65%; } .ed-grid .ed-grid.lg-70, .ed-grid .ed-grid .ed-grid.lg-70 { width: 70%; } .ed-grid .ed-grid.lg-75, .ed-grid .ed-grid .ed-grid.lg-75 { width: 75%; } .ed-grid .ed-grid.lg-80, .ed-grid .ed-grid .ed-grid.lg-80 { width: 80%; } .ed-grid .ed-grid.lg-85, .ed-grid .ed-grid .ed-grid.lg-85 { width: 85%; } .ed-grid .ed-grid.lg-90, .ed-grid .ed-grid .ed-grid.lg-90 { width: 90%; } .ed-grid .ed-grid.lg-95, .ed-grid .ed-grid .ed-grid.lg-95 { width: 95%; } .ed-grid .ed-grid.lg-100, .ed-grid .ed-grid .ed-grid.lg-100 { width: 100%; } .ed-grid .ed-grid.lg-to-center, .ed-grid .ed-grid .ed-grid.lg-to-center { margin-left: auto; margin-right: auto; } .ed-grid .ed-grid.lg-to-right, .ed-grid .ed-grid .ed-grid.lg-to-right { margin-left: auto; margin-right: 0; } .ed-grid .ed-grid.lg-to-left, .ed-grid .ed-grid .ed-grid.lg-to-left { margin-left: 0; margin-right: auto; } } @media screen and (min-width: 1440px) { .ed-grid .ed-grid.xl-5, .ed-grid .ed-grid .ed-grid.xl-5 { width: 5%; } .ed-grid .ed-grid.xl-10, .ed-grid .ed-grid .ed-grid.xl-10 { width: 10%; } .ed-grid .ed-grid.xl-15, .ed-grid .ed-grid .ed-grid.xl-15 { width: 15%; } .ed-grid .ed-grid.xl-20, .ed-grid .ed-grid .ed-grid.xl-20 { width: 20%; } .ed-grid .ed-grid.xl-25, .ed-grid .ed-grid .ed-grid.xl-25 { width: 25%; } .ed-grid .ed-grid.xl-30, .ed-grid .ed-grid .ed-grid.xl-30 { width: 30%; } .ed-grid .ed-grid.xl-35, .ed-grid .ed-grid .ed-grid.xl-35 { width: 35%; } .ed-grid .ed-grid.xl-40, .ed-grid .ed-grid .ed-grid.xl-40 { width: 40%; } .ed-grid .ed-grid.xl-45, .ed-grid .ed-grid .ed-grid.xl-45 { width: 45%; } .ed-grid .ed-grid.xl-50, .ed-grid .ed-grid .ed-grid.xl-50 { width: 50%; } .ed-grid .ed-grid.xl-55, .ed-grid .ed-grid .ed-grid.xl-55 { width: 55%; } .ed-grid .ed-grid.xl-60, .ed-grid .ed-grid .ed-grid.xl-60 { width: 60%; } .ed-grid .ed-grid.xl-65, .ed-grid .ed-grid .ed-grid.xl-65 { width: 65%; } .ed-grid .ed-grid.xl-70, .ed-grid .ed-grid .ed-grid.xl-70 { width: 70%; } .ed-grid .ed-grid.xl-75, .ed-grid .ed-grid .ed-grid.xl-75 { width: 75%; } .ed-grid .ed-grid.xl-80, .ed-grid .ed-grid .ed-grid.xl-80 { width: 80%; } .ed-grid .ed-grid.xl-85, .ed-grid .ed-grid .ed-grid.xl-85 { width: 85%; } .ed-grid .ed-grid.xl-90, .ed-grid .ed-grid .ed-grid.xl-90 { width: 90%; } .ed-grid .ed-grid.xl-95, .ed-grid .ed-grid .ed-grid.xl-95 { width: 95%; } .ed-grid .ed-grid.xl-100, .ed-grid .ed-grid .ed-grid.xl-100 { width: 100%; } .ed-grid .ed-grid.xl-to-center, .ed-grid .ed-grid .ed-grid.xl-to-center { margin-left: auto; margin-right: auto; } .ed-grid .ed-grid.xl-to-right, .ed-grid .ed-grid .ed-grid.xl-to-right { margin-left: auto; margin-right: 0; } .ed-grid .ed-grid.xl-to-left, .ed-grid .ed-grid .ed-grid.xl-to-left { margin-left: 0; margin-right: auto; } } .ed-grid.cols-s-1, .ed-grid.s-grid-1 { -ms-grid-columns: 100%; grid-template-columns: 100%; } .ed-grid > .span-s-1, .ed-grid > .s-cols-1 { -ms-grid-column-span: 1; grid-column-end: span 1; } .ed-grid > .s-rows-1 { -ms-grid-row-span: 1; grid-row-end: span 1; } .ed-grid > .s-x-1 { -ms-grid-column: 1; grid-column-start: 1; } .ed-grid > .s-y-1 { -ms-grid-row: 1; grid-row-start: 1; } .ed-grid.cols-s-2, .ed-grid.s-grid-2 { -ms-grid-columns: (calc((100% - var(--gap) * 1) / 2))[2]; grid-template-columns: repeat(2, calc((100% - var(--gap) * 1) / 2)); } .ed-grid > .span-s-2, .ed-grid > .s-cols-2 { -ms-grid-column-span: 2; grid-column-end: span 2; } .ed-grid > .s-rows-2 { -ms-grid-row-span: 2; grid-row-end: span 2; } .ed-grid > .s-x-2 { -ms-grid-column: 2; grid-column-start: 2; } .ed-grid > .s-y-2 { -ms-grid-row: 2; grid-row-start: 2; } .ed-grid.cols-s-3, .ed-grid.s-grid-3 { -ms-grid-columns: (calc((100% - var(--gap) * 2) / 3))[3]; grid-template-columns: repeat(3, calc((100% - var(--gap) * 2) / 3)); } .ed-grid > .span-s-3, .ed-grid > .s-cols-3 { -ms-grid-column-span: 3; grid-column-end: span 3; } .ed-grid > .s-rows-3 { -ms-grid-row-span: 3; grid-row-end: span 3; } .ed-grid > .s-x-3 { -ms-grid-column: 3; grid-column-start: 3; } .ed-grid > .s-y-3 { -ms-grid-row: 3; grid-row-start: 3; } .ed-grid.cols-s-4, .ed-grid.s-grid-4 { -ms-grid-columns: (calc((100% - var(--gap) * 3) / 4))[4]; grid-template-columns: repeat(4, calc((100% - var(--gap) * 3) / 4)); } .ed-grid > .span-s-4, .ed-grid > .s-cols-4 { -ms-grid-column-span: 4; grid-column-end: span 4; } .ed-grid > .s-rows-4 { -ms-grid-row-span: 4; grid-row-end: span 4; } .ed-grid > .s-x-4 { -ms-grid-column: 4; grid-column-start: 4; } .ed-grid > .s-y-4 { -ms-grid-row: 4; grid-row-start: 4; } .ed-grid.cols-s-5, .ed-grid.s-grid-5 { -ms-grid-columns: (calc((100% - var(--gap) * 4) / 5))[5]; grid-template-columns: repeat(5, calc((100% - var(--gap) * 4) / 5)); } .ed-grid > .span-s-5, .ed-grid > .s-cols-5 { -ms-grid-column-span: 5; grid-column-end: span 5; } .ed-grid > .s-rows-5 { -ms-grid-row-span: 5; grid-row-end: span 5; } .ed-grid > .s-x-5 { -ms-grid-column: 5; grid-column-start: 5; } .ed-grid > .s-y-5 { -ms-grid-row: 5; grid-row-start: 5; } .ed-grid.cols-s-6, .ed-grid.s-grid-6 { -ms-grid-columns: (calc((100% - var(--gap) * 5) / 6))[6]; grid-template-columns: repeat(6, calc((100% - var(--gap) * 5) / 6)); } .ed-grid > .span-s-6, .ed-grid > .s-cols-6 { -ms-grid-column-span: 6; grid-column-end: span 6; } .ed-grid > .s-rows-6 { -ms-grid-row-span: 6; grid-row-end: span 6; } .ed-grid > .s-x-6 { -ms-grid-column: 6; grid-column-start: 6; } .ed-grid > .s-y-6 { -ms-grid-row: 6; grid-row-start: 6; } .ed-grid.cols-s-7, .ed-grid.s-grid-7 { -ms-grid-columns: (calc((100% - var(--gap) * 6) / 7))[7]; grid-template-columns: repeat(7, calc((100% - var(--gap) * 6) / 7)); } .ed-grid > .span-s-7, .ed-grid > .s-cols-7 { -ms-grid-column-span: 7; grid-column-end: span 7; } .ed-grid > .s-rows-7 { -ms-grid-row-span: 7; grid-row-end: span 7; } .ed-grid > .s-x-7 { -ms-grid-column: 7; grid-column-start: 7; } .ed-grid > .s-y-7 { -ms-grid-row: 7; grid-row-start: 7; } .ed-grid.cols-s-8, .ed-grid.s-grid-8 { -ms-grid-columns: (calc((100% - var(--gap) * 7) / 8))[8]; grid-template-columns: repeat(8, calc((100% - var(--gap) * 7) / 8)); } .ed-grid > .span-s-8, .ed-grid > .s-cols-8 { -ms-grid-column-span: 8; grid-column-end: span 8; } .ed-grid > .s-rows-8 { -ms-grid-row-span: 8; grid-row-end: span 8; } .ed-grid > .s-x-8 { -ms-grid-column: 8; grid-column-start: 8; } .ed-grid > .s-y-8 { -ms-grid-row: 8; grid-row-start: 8; } .ed-grid.cols-s-9, .ed-grid.s-grid-9 { -ms-grid-columns: (calc((100% - var(--gap) * 8) / 9))[9]; grid-template-columns: repeat(9, calc((100% - var(--gap) * 8) / 9)); } .ed-grid > .span-s-9, .ed-grid > .s-cols-9 { -ms-grid-column-span: 9; grid-column-end: span 9; } .ed-grid > .s-rows-9 { -ms-grid-row-span: 9; grid-row-end: span 9; } .ed-grid > .s-x-9 { -ms-grid-column: 9; grid-column-start: 9; } .ed-grid > .s-y-9 { -ms-grid-row: 9; grid-row-start: 9; } .ed-grid.cols-s-10, .ed-grid.s-grid-10 { -ms-grid-columns: (calc((100% - var(--gap) * 9) / 10))[10]; grid-template-columns: repeat(10, calc((100% - var(--gap) * 9) / 10)); } .ed-grid > .span-s-10, .ed-grid > .s-cols-10 { -ms-grid-column-span: 10; grid-column-end: span 10; } .ed-grid > .s-rows-10 { -ms-grid-row-span: 10; grid-row-end: span 10; } .ed-grid > .s-x-10 { -ms-grid-column: 10; grid-column-start: 10; } .ed-grid > .s-y-10 { -ms-grid-row: 10; grid-row-start: 10; } .ed-grid.cols-s-11, .ed-grid.s-grid-11 { -ms-grid-columns: (calc((100% - var(--gap) * 10) / 11))[11]; grid-template-columns: repeat(11, calc((100% - var(--gap) * 10) / 11)); } .ed-grid > .span-s-11, .ed-grid > .s-cols-11 { -ms-grid-column-span: 11; grid-column-end: span 11; } .ed-grid > .s-rows-11 { -ms-grid-row-span: 11; grid-row-end: span 11; } .ed-grid > .s-x-11 { -ms-grid-column: 11; grid-column-start: 11; } .ed-grid > .s-y-11 { -ms-grid-row: 11; grid-row-start: 11; } .ed-grid.cols-s-12, .ed-grid.s-grid-12 { -ms-grid-columns: (calc((100% - var(--gap) * 11) / 12))[12]; grid-template-columns: repeat(12, calc((100% - var(--gap) * 11) / 12)); } .ed-grid > .span-s-12, .ed-grid > .s-cols-12 { -ms-grid-column-span: 12; grid-column-end: span 12; } .ed-grid > .s-rows-12 { -ms-grid-row-span: 12; grid-row-end: span 12; } .ed-grid > .s-x-12 { -ms-grid-column: 12; grid-column-start: 12; } .ed-grid > .s-y-12 { -ms-grid-row: 12; grid-row-start: 12; } @media screen and (min-width: 640px) { .ed-grid.cols-m-1, .ed-grid.m-grid-1 { -ms-grid-columns: 100%; grid-template-columns: 100%; } .ed-grid > .span-m-1, .ed-grid > .m-cols-1 { -ms-grid-column-span: 1; grid-column-end: span 1; } .ed-grid > .m-rows-1 { -ms-grid-row-span: 1; grid-row-end: span 1; } .ed-grid > .m-x-1 { -ms-grid-column: 1; grid-column-start: 1; } .ed-grid > .m-y-1 { -ms-grid-row: 1; grid-row-start: 1; } .ed-grid.cols-m-2, .ed-grid.m-grid-2 { -ms-grid-columns: (calc((100% - var(--gap) * 1) / 2))[2]; grid-template-columns: repeat(2, calc((100% - var(--gap) * 1) / 2)); } .ed-grid > .span-m-2, .ed-grid > .m-cols-2 { -ms-grid-column-span: 2; grid-column-end: span 2; } .ed-grid > .m-rows-2 { -ms-grid-row-span: 2; grid-row-end: span 2; } .ed-grid > .m-x-2 { -ms-grid-column: 2; grid-column-start: 2; } .ed-grid > .m-y-2 { -ms-grid-row: 2; grid-row-start: 2; } .ed-grid.cols-m-3, .ed-grid.m-grid-3 { -ms-grid-columns: (calc((100% - var(--gap) * 2) / 3))[3]; grid-template-columns: repeat(3, calc((100% - var(--gap) * 2) / 3)); } .ed-grid > .span-m-3, .ed-grid > .m-cols-3 { -ms-grid-column-span: 3; grid-column-end: span 3; } .ed-grid > .m-rows-3 { -ms-grid-row-span: 3; grid-row-end: span 3; } .ed-grid > .m-x-3 { -ms-grid-column: 3; grid-column-start: 3; } .ed-grid > .m-y-3 { -ms-grid-row: 3; grid-row-start: 3; } .ed-grid.cols-m-4, .ed-grid.m-grid-4 { -ms-grid-columns: (calc((100% - var(--gap) * 3) / 4))[4]; grid-template-columns: repeat(4, calc((100% - var(--gap) * 3) / 4)); } .ed-grid > .span-m-4, .ed-grid > .m-cols-4 { -ms-grid-column-span: 4; grid-column-end: span 4; } .ed-grid > .m-rows-4 { -ms-grid-row-span: 4; grid-row-end: span 4; } .ed-grid > .m-x-4 { -ms-grid-column: 4; grid-column-start: 4; } .ed-grid > .m-y-4 { -ms-grid-row: 4; grid-row-start: 4; } .ed-grid.cols-m-5, .ed-grid.m-grid-5 { -ms-grid-columns: (calc((100% - var(--gap) * 4) / 5))[5]; grid-template-columns: repeat(5, calc((100% - var(--gap) * 4) / 5)); } .ed-grid > .span-m-5, .ed-grid > .m-cols-5 { -ms-grid-column-span: 5; grid-column-end: span 5; } .ed-grid > .m-rows-5 { -ms-grid-row-span: 5; grid-row-end: span 5; } .ed-grid > .m-x-5 { -ms-grid-column: 5; grid-column-start: 5; } .ed-grid > .m-y-5 { -ms-grid-row: 5; grid-row-start: 5; } .ed-grid.cols-m-6, .ed-grid.m-grid-6 { -ms-grid-columns: (calc((100% - var(--gap) * 5) / 6))[6]; grid-template-columns: repeat(6, calc((100% - var(--gap) * 5) / 6)); } .ed-grid > .span-m-6, .ed-grid > .m-cols-6 { -ms-grid-column-span: 6; grid-column-end: span 6; } .ed-grid > .m-rows-6 { -ms-grid-row-span: 6; grid-row-end: span 6; } .ed-grid > .m-x-6 { -ms-grid-column: 6; grid-column-start: 6; } .ed-grid > .m-y-6 { -ms-grid-row: 6; grid-row-start: 6; } .ed-grid.cols-m-7, .ed-grid.m-grid-7 { -ms-grid-columns: (calc((100% - var(--gap) * 6) / 7))[7]; grid-template-columns: repeat(7, calc((100% - var(--gap) * 6) / 7)); } .ed-grid > .span-m-7, .ed-grid > .m-cols-7 { -ms-grid-column-span: 7; grid-column-end: span 7; } .ed-grid > .m-rows-7 { -ms-grid-row-span: 7; grid-row-end: span 7; } .ed-grid > .m-x-7 { -ms-grid-column: 7; grid-column-start: 7; } .ed-grid > .m-y-7 { -ms-grid-row: 7; grid-row-start: 7; } .ed-grid.cols-m-8, .ed-grid.m-grid-8 { -ms-grid-columns: (calc((100% - var(--gap) * 7) / 8))[8]; grid-template-columns: repeat(8, calc((100% - var(--gap) * 7) / 8)); } .ed-grid > .span-m-8, .ed-grid > .m-cols-8 { -ms-grid-column-span: 8; grid-column-end: span 8; } .ed-grid > .m-rows-8 { -ms-grid-row-span: 8; grid-row-end: span 8; } .ed-grid > .m-x-8 { -ms-grid-column: 8; grid-column-start: 8; } .ed-grid > .m-y-8 { -ms-grid-row: 8; grid-row-start: 8; } .ed-grid.cols-m-9, .ed-grid.m-grid-9 { -ms-grid-columns: (calc((100% - var(--gap) * 8) / 9))[9]; grid-template-columns: repeat(9, calc((100% - var(--gap) * 8) / 9)); } .ed-grid > .span-m-9, .ed-grid > .m-cols-9 { -ms-grid-column-span: 9; grid-column-end: span 9; } .ed-grid > .m-rows-9 { -ms-grid-row-span: 9; grid-row-end: span 9; } .ed-grid > .m-x-9 { -ms-grid-column: 9; grid-column-start: 9; } .ed-grid > .m-y-9 { -ms-grid-row: 9; grid-row-start: 9; } .ed-grid.cols-m-10, .ed-grid.m-grid-10 { -ms-grid-columns: (calc((100% - var(--gap) * 9) / 10))[10]; grid-template-columns: repeat(10, calc((100% - var(--gap) * 9) / 10)); } .ed-grid > .span-m-10, .ed-grid > .m-cols-10 { -ms-grid-column-span: 10; grid-column-end: span 10; } .ed-grid > .m-rows-10 { -ms-grid-row-span: 10; grid-row-end: span 10; } .ed-grid > .m-x-10 { -ms-grid-column: 10; grid-column-start: 10; } .ed-grid > .m-y-10 { -ms-grid-row: 10; grid-row-start: 10; } .ed-grid.cols-m-11, .ed-grid.m-grid-11 { -ms-grid-columns: (calc((100% - var(--gap) * 10) / 11))[11]; grid-template-columns: repeat(11, calc((100% - var(--gap) * 10) / 11)); } .ed-grid > .span-m-11, .ed-grid > .m-cols-11 { -ms-grid-column-span: 11; grid-column-end: span 11; } .ed-grid > .m-rows-11 { -ms-grid-row-span: 11; grid-row-end: span 11; } .ed-grid > .m-x-11 { -ms-grid-column: 11; grid-column-start: 11; } .ed-grid > .m-y-11 { -ms-grid-row: 11; grid-row-start: 11; } .ed-grid.cols-m-12, .ed-grid.m-grid-12 { -ms-grid-columns: (calc((100% - var(--gap) * 11) / 12))[12]; grid-template-columns: repeat(12, calc((100% - var(--gap) * 11) / 12)); } .ed-grid > .span-m-12, .ed-grid > .m-cols-12 { -ms-grid-column-span: 12; grid-column-end: span 12; } .ed-grid > .m-rows-12 { -ms-grid-row-span: 12; grid-row-end: span 12; } .ed-grid > .m-x-12 { -ms-grid-column: 12; grid-column-start: 12; } .ed-grid > .m-y-12 { -ms-grid-row: 12; grid-row-start: 12; } } @media screen and (min-width: 1024px) { .ed-grid.cols-l-1, .ed-grid.l-grid-1 { -ms-grid-columns: 100%; grid-template-columns: 100%; } .ed-grid > .span-l-1, .ed-grid > .l-cols-1 { -ms-grid-column-span: 1; grid-column-end: span 1; } .ed-grid > .l-rows-1 { -ms-grid-row-span: 1; grid-row-end: span 1; } .ed-grid > .l-x-1 { -ms-grid-column: 1; grid-column-start: 1; } .ed-grid > .l-y-1 { -ms-grid-row: 1; grid-row-start: 1; } .ed-grid.cols-l-2, .ed-grid.l-grid-2 { -ms-grid-columns: (calc((100% - var(--gap) * 1) / 2))[2]; grid-template-columns: repeat(2, calc((100% - var(--gap) * 1) / 2)); } .ed-grid > .span-l-2, .ed-grid > .l-cols-2 { -ms-grid-column-span: 2; grid-column-end: span 2; } .ed-grid > .l-rows-2 { -ms-grid-row-span: 2; grid-row-end: span 2; } .ed-grid > .l-x-2 { -ms-grid-column: 2; grid-column-start: 2; } .ed-grid > .l-y-2 { -ms-grid-row: 2; grid-row-start: 2; } .ed-grid.cols-l-3, .ed-grid.l-grid-3 { -ms-grid-columns: (calc((100% - var(--gap) * 2) / 3))[3]; grid-template-columns: repeat(3, calc((100% - var(--gap) * 2) / 3)); } .ed-grid > .span-l-3, .ed-grid > .l-cols-3 { -ms-grid-column-span: 3; grid-column-end: span 3; } .ed-grid > .l-rows-3 { -ms-grid-row-span: 3; grid-row-end: span 3; } .ed-grid > .l-x-3 { -ms-grid-column: 3; grid-column-start: 3; } .ed-grid > .l-y-3 { -ms-grid-row: 3; grid-row-start: 3; } .ed-grid.cols-l-4, .ed-grid.l-grid-4 { -ms-grid-columns: (calc((100% - var(--gap) * 3) / 4))[4]; grid-template-columns: repeat(4, calc((100% - var(--gap) * 3) / 4)); } .ed-grid > .span-l-4, .ed-grid > .l-cols-4 { -ms-grid-column-span: 4; grid-column-end: span 4; } .ed-grid > .l-rows-4 { -ms-grid-row-span: 4; grid-row-end: span 4; } .ed-grid > .l-x-4 { -ms-grid-column: 4; grid-column-start: 4; } .ed-grid > .l-y-4 { -ms-grid-row: 4; grid-row-start: 4; } .ed-grid.cols-l-5, .ed-grid.l-grid-5 { -ms-grid-columns: (calc((100% - var(--gap) * 4) / 5))[5]; grid-template-columns: repeat(5, calc((100% - var(--gap) * 4) / 5)); } .ed-grid > .span-l-5, .ed-grid > .l-cols-5 { -ms-grid-column-span: 5; grid-column-end: span 5; } .ed-grid > .l-rows-5 { -ms-grid-row-span: 5; grid-row-end: span 5; } .ed-grid > .l-x-5 { -ms-grid-column: 5; grid-column-start: 5; } .ed-grid > .l-y-5 { -ms-grid-row: 5; grid-row-start: 5; } .ed-grid.cols-l-6, .ed-grid.l-grid-6 { -ms-grid-columns: (calc((100% - var(--gap) * 5) / 6))[6]; grid-template-columns: repeat(6, calc((100% - var(--gap) * 5) / 6)); } .ed-grid > .span-l-6, .ed-grid > .l-cols-6 { -ms-grid-column-span: 6; grid-column-end: span 6; } .ed-grid > .l-rows-6 { -ms-grid-row-span: 6; grid-row-end: span 6; } .ed-grid > .l-x-6 { -ms-grid-column: 6; grid-column-start: 6; } .ed-grid > .l-y-6 { -ms-grid-row: 6; grid-row-start: 6; } .ed-grid.cols-l-7, .ed-grid.l-grid-7 { -ms-grid-columns: (calc((100% - var(--gap) * 6) / 7))[7]; grid-template-columns: repeat(7, calc((100% - var(--gap) * 6) / 7)); } .ed-grid > .span-l-7, .ed-grid > .l-cols-7 { -ms-grid-column-span: 7; grid-column-end: span 7; } .ed-grid > .l-rows-7 { -ms-grid-row-span: 7; grid-row-end: span 7; } .ed-grid > .l-x-7 { -ms-grid-column: 7; grid-column-start: 7; } .ed-grid > .l-y-7 { -ms-grid-row: 7; grid-row-start: 7; } .ed-grid.cols-l-8, .ed-grid.l-grid-8 { -ms-grid-columns: (calc((100% - var(--gap) * 7) / 8))[8]; grid-template-columns: repeat(8, calc((100% - var(--gap) * 7) / 8)); } .ed-grid > .span-l-8, .ed-grid > .l-cols-8 { -ms-grid-column-span: 8; grid-column-end: span 8; } .ed-grid > .l-rows-8 { -ms-grid-row-span: 8; grid-row-end: span 8; } .ed-grid > .l-x-8 { -ms-grid-column: 8; grid-column-start: 8; } .ed-grid > .l-y-8 { -ms-grid-row: 8; grid-row-start: 8; } .ed-grid.cols-l-9, .ed-grid.l-grid-9 { -ms-grid-columns: (calc((100% - var(--gap) * 8) / 9))[9]; grid-template-columns: repeat(9, calc((100% - var(--gap) * 8) / 9)); } .ed-grid > .span-l-9, .ed-grid > .l-cols-9 { -ms-grid-column-span: 9; grid-column-end: span 9; } .ed-grid > .l-rows-9 { -ms-grid-row-span: 9; grid-row-end: span 9; } .ed-grid > .l-x-9 { -ms-grid-column: 9; grid-column-start: 9; } .ed-grid > .l-y-9 { -ms-grid-row: 9; grid-row-start: 9; } .ed-grid.cols-l-10, .ed-grid.l-grid-10 { -ms-grid-columns: (calc((100% - var(--gap) * 9) / 10))[10]; grid-template-columns: repeat(10, calc((100% - var(--gap) * 9) / 10)); } .ed-grid > .span-l-10, .ed-grid > .l-cols-10 { -ms-grid-column-span: 10; grid-column-end: span 10; } .ed-grid > .l-rows-10 { -ms-grid-row-span: 10; grid-row-end: span 10; } .ed-grid > .l-x-10 { -ms-grid-column: 10; grid-column-start: 10; } .ed-grid > .l-y-10 { -ms-grid-row: 10; grid-row-start: 10; } .ed-grid.cols-l-11, .ed-grid.l-grid-11 { -ms-grid-columns: (calc((100% - var(--gap) * 10) / 11))[11]; grid-template-columns: repeat(11, calc((100% - var(--gap) * 10) / 11)); } .ed-grid > .span-l-11, .ed-grid > .l-cols-11 { -ms-grid-column-span: 11; grid-column-end: span 11; } .ed-grid > .l-rows-11 { -ms-grid-row-span: 11; grid-row-end: span 11; } .ed-grid > .l-x-11 { -ms-grid-column: 11; grid-column-start: 11; } .ed-grid > .l-y-11 { -ms-grid-row: 11; grid-row-start: 11; } .ed-grid.cols-l-12, .ed-grid.l-grid-12 { -ms-grid-columns: (calc((100% - var(--gap) * 11) / 12))[12]; grid-template-columns: repeat(12, calc((100% - var(--gap) * 11) / 12)); } .ed-grid > .span-l-12, .ed-grid > .l-cols-12 { -ms-grid-column-span: 12; grid-column-end: span 12; } .ed-grid > .l-rows-12 { -ms-grid-row-span: 12; grid-row-end: span 12; } .ed-grid > .l-x-12 { -ms-grid-column: 12; grid-column-start: 12; } .ed-grid > .l-y-12 { -ms-grid-row: 12; grid-row-start: 12; } } @media screen and (min-width: 1024px) { .ed-grid.cols-lg-1, .ed-grid.lg-grid-1 { -ms-grid-columns: 100%; grid-template-columns: 100%; } .ed-grid > .span-lg-1, .ed-grid > .lg-cols-1 { -ms-grid-column-span: 1; grid-column-end: span 1; } .ed-grid > .lg-rows-1 { -ms-grid-row-span: 1; grid-row-end: span 1; } .ed-grid > .lg-x-1 { -ms-grid-column: 1; grid-column-start: 1; } .ed-grid > .lg-y-1 { -ms-grid-row: 1; grid-row-start: 1; } .ed-grid.cols-lg-2, .ed-grid.lg-grid-2 { -ms-grid-columns: (calc((100% - var(--gap) * 1) / 2))[2]; grid-template-columns: repeat(2, calc((100% - var(--gap) * 1) / 2)); } .ed-grid > .span-lg-2, .ed-grid > .lg-cols-2 { -ms-grid-column-span: 2; grid-column-end: span 2; } .ed-grid > .lg-rows-2 { -ms-grid-row-span: 2; grid-row-end: span 2; } .ed-grid > .lg-x-2 { -ms-grid-column: 2; grid-column-start: 2; } .ed-grid > .lg-y-2 { -ms-grid-row: 2; grid-row-start: 2; } .ed-grid.cols-lg-3, .ed-grid.lg-grid-3 { -ms-grid-columns: (calc((100% - var(--gap) * 2) / 3))[3]; grid-template-columns: repeat(3, calc((100% - var(--gap) * 2) / 3)); } .ed-grid > .span-lg-3, .ed-grid > .lg-cols-3 { -ms-grid-column-span: 3; grid-column-end: span 3; } .ed-grid > .lg-rows-3 { -ms-grid-row-span: 3; grid-row-end: span 3; } .ed-grid > .lg-x-3 { -ms-grid-column: 3; grid-column-start: 3; } .ed-grid > .lg-y-3 { -ms-grid-row: 3; grid-row-start: 3; } .ed-grid.cols-lg-4, .ed-grid.lg-grid-4 { -ms-grid-columns: (calc((100% - var(--gap) * 3) / 4))[4]; grid-template-columns: repeat(4, calc((100% - var(--gap) * 3) / 4)); } .ed-grid > .span-lg-4, .ed-grid > .lg-cols-4 { -ms-grid-column-span: 4; grid-column-end: span 4; } .ed-grid > .lg-rows-4 { -ms-grid-row-span: 4; grid-row-end: span 4; } .ed-grid > .lg-x-4 { -ms-grid-column: 4; grid-column-start: 4; } .ed-grid > .lg-y-4 { -ms-grid-row: 4; grid-row-start: 4; } .ed-grid.cols-lg-5, .ed-grid.lg-grid-5 { -ms-grid-columns: (calc((100% - var(--gap) * 4) / 5))[5]; grid-template-columns: repeat(5, calc((100% - var(--gap) * 4) / 5)); } .ed-grid > .span-lg-5, .ed-grid > .lg-cols-5 { -ms-grid-column-span: 5; grid-column-end: span 5; } .ed-grid > .lg-rows-5 { -ms-grid-row-span: 5; grid-row-end: span 5; } .ed-grid > .lg-x-5 { -ms-grid-column: 5; grid-column-start: 5; } .ed-grid > .lg-y-5 { -ms-grid-row: 5; grid-row-start: 5; } .ed-grid.cols-lg-6, .ed-grid.lg-grid-6 { -ms-grid-columns: (calc((100% - var(--gap) * 5) / 6))[6]; grid-template-columns: repeat(6, calc((100% - var(--gap) * 5) / 6)); } .ed-grid > .span-lg-6, .ed-grid > .lg-cols-6 { -ms-grid-column-span: 6; grid-column-end: span 6; } .ed-grid > .lg-rows-6 { -ms-grid-row-span: 6; grid-row-end: span 6; } .ed-grid > .lg-x-6 { -ms-grid-column: 6; grid-column-start: 6; } .ed-grid > .lg-y-6 { -ms-grid-row: 6; grid-row-start: 6; } .ed-grid.cols-lg-7, .ed-grid.lg-grid-7 { -ms-grid-columns: (calc((100% - var(--gap) * 6) / 7))[7]; grid-template-columns: repeat(7, calc((100% - var(--gap) * 6) / 7)); } .ed-grid > .span-lg-7, .ed-grid > .lg-cols-7 { -ms-grid-column-span: 7; grid-column-end: span 7; } .ed-grid > .lg-rows-7 { -ms-grid-row-span: 7; grid-row-end: span 7; } .ed-grid > .lg-x-7 { -ms-grid-column: 7; grid-column-start: 7; } .ed-grid > .lg-y-7 { -ms-grid-row: 7; grid-row-start: 7; } .ed-grid.cols-lg-8, .ed-grid.lg-grid-8 { -ms-grid-columns: (calc((100% - var(--gap) * 7) / 8))[8]; grid-template-columns: repeat(8, calc((100% - var(--gap) * 7) / 8)); } .ed-grid > .span-lg-8, .ed-grid > .lg-cols-8 { -ms-grid-column-span: 8; grid-column-end: span 8; } .ed-grid > .lg-rows-8 { -ms-grid-row-span: 8; grid-row-end: span 8; } .ed-grid > .lg-x-8 { -ms-grid-column: 8; grid-column-start: 8; } .ed-grid > .lg-y-8 { -ms-grid-row: 8; grid-row-start: 8; } .ed-grid.cols-lg-9, .ed-grid.lg-grid-9 { -ms-grid-columns: (calc((100% - var(--gap) * 8) / 9))[9]; grid-template-columns: repeat(9, calc((100% - var(--gap) * 8) / 9)); } .ed-grid > .span-lg-9, .ed-grid > .lg-cols-9 { -ms-grid-column-span: 9; grid-column-end: span 9; } .ed-grid > .lg-rows-9 { -ms-grid-row-span: 9; grid-row-end: span 9; } .ed-grid > .lg-x-9 { -ms-grid-column: 9; grid-column-start: 9; } .ed-grid > .lg-y-9 { -ms-grid-row: 9; grid-row-start: 9; } .ed-grid.cols-lg-10, .ed-grid.lg-grid-10 { -ms-grid-columns: (calc((100% - var(--gap) * 9) / 10))[10]; grid-template-columns: repeat(10, calc((100% - var(--gap) * 9) / 10)); } .ed-grid > .span-lg-10, .ed-grid > .lg-cols-10 { -ms-grid-column-span: 10; grid-column-end: span 10; } .ed-grid > .lg-rows-10 { -ms-grid-row-span: 10; grid-row-end: span 10; } .ed-grid > .lg-x-10 { -ms-grid-column: 10; grid-column-start: 10; } .ed-grid > .lg-y-10 { -ms-grid-row: 10; grid-row-start: 10; } .ed-grid.cols-lg-11, .ed-grid.lg-grid-11 { -ms-grid-columns: (calc((100% - var(--gap) * 10) / 11))[11]; grid-template-columns: repeat(11, calc((100% - var(--gap) * 10) / 11)); } .ed-grid > .span-lg-11, .ed-grid > .lg-cols-11 { -ms-grid-column-span: 11; grid-column-end: span 11; } .ed-grid > .lg-rows-11 { -ms-grid-row-span: 11; grid-row-end: span 11; } .ed-grid > .lg-x-11 { -ms-grid-column: 11; grid-column-start: 11; } .ed-grid > .lg-y-11 { -ms-grid-row: 11; grid-row-start: 11; } .ed-grid.cols-lg-12, .ed-grid.lg-grid-12 { -ms-grid-columns: (calc((100% - var(--gap) * 11) / 12))[12]; grid-template-columns: repeat(12, calc((100% - var(--gap) * 11) / 12)); } .ed-grid > .span-lg-12, .ed-grid > .lg-cols-12 { -ms-grid-column-span: 12; grid-column-end: span 12; } .ed-grid > .lg-rows-12 { -ms-grid-row-span: 12; grid-row-end: span 12; } .ed-grid > .lg-x-12 { -ms-grid-column: 12; grid-column-start: 12; } .ed-grid > .lg-y-12 { -ms-grid-row: 12; grid-row-start: 12; } } @media screen and (min-width: 1440px) { .ed-grid.cols-xl-1, .ed-grid.xl-grid-1 { -ms-grid-columns: 100%; grid-template-columns: 100%; } .ed-grid > .span-xl-1, .ed-grid > .xl-cols-1 { -ms-grid-column-span: 1; grid-column-end: span 1; } .ed-grid > .xl-rows-1 { -ms-grid-row-span: 1; grid-row-end: span 1; } .ed-grid > .xl-x-1 { -ms-grid-column: 1; grid-column-start: 1; } .ed-grid > .xl-y-1 { -ms-grid-row: 1; grid-row-start: 1; } .ed-grid.cols-xl-2, .ed-grid.xl-grid-2 { -ms-grid-columns: (calc((100% - var(--gap) * 1) / 2))[2]; grid-template-columns: repeat(2, calc((100% - var(--gap) * 1) / 2)); } .ed-grid > .span-xl-2, .ed-grid > .xl-cols-2 { -ms-grid-column-span: 2; grid-column-end: span 2; } .ed-grid > .xl-rows-2 { -ms-grid-row-span: 2; grid-row-end: span 2; } .ed-grid > .xl-x-2 { -ms-grid-column: 2; grid-column-start: 2; } .ed-grid > .xl-y-2 { -ms-grid-row: 2; grid-row-start: 2; } .ed-grid.cols-xl-3, .ed-grid.xl-grid-3 { -ms-grid-columns: (calc((100% - var(--gap) * 2) / 3))[3]; grid-template-columns: repeat(3, calc((100% - var(--gap) * 2) / 3)); } .ed-grid > .span-xl-3, .ed-grid > .xl-cols-3 { -ms-grid-column-span: 3; grid-column-end: span 3; } .ed-grid > .xl-rows-3 { -ms-grid-row-span: 3; grid-row-end: span 3; } .ed-grid > .xl-x-3 { -ms-grid-column: 3; grid-column-start: 3; } .ed-grid > .xl-y-3 { -ms-grid-row: 3; grid-row-start: 3; } .ed-grid.cols-xl-4, .ed-grid.xl-grid-4 { -ms-grid-columns: (calc((100% - var(--gap) * 3) / 4))[4]; grid-template-columns: repeat(4, calc((100% - var(--gap) * 3) / 4)); } .ed-grid > .span-xl-4, .ed-grid > .xl-cols-4 { -ms-grid-column-span: 4; grid-column-end: span 4; } .ed-grid > .xl-rows-4 { -ms-grid-row-span: 4; grid-row-end: span 4; } .ed-grid > .xl-x-4 { -ms-grid-column: 4; grid-column-start: 4; } .ed-grid > .xl-y-4 { -ms-grid-row: 4; grid-row-start: 4; } .ed-grid.cols-xl-5, .ed-grid.xl-grid-5 { -ms-grid-columns: (calc((100% - var(--gap) * 4) / 5))[5]; grid-template-columns: repeat(5, calc((100% - var(--gap) * 4) / 5)); } .ed-grid > .span-xl-5, .ed-grid > .xl-cols-5 { -ms-grid-column-span: 5; grid-column-end: span 5; } .ed-grid > .xl-rows-5 { -ms-grid-row-span: 5; grid-row-end: span 5; } .ed-grid > .xl-x-5 { -ms-grid-column: 5; grid-column-start: 5; } .ed-grid > .xl-y-5 { -ms-grid-row: 5; grid-row-start: 5; } .ed-grid.cols-xl-6, .ed-grid.xl-grid-6 { -ms-grid-columns: (calc((100% - var(--gap) * 5) / 6))[6]; grid-template-columns: repeat(6, calc((100% - var(--gap) * 5) / 6)); } .ed-grid > .span-xl-6, .ed-grid > .xl-cols-6 { -ms-grid-column-span: 6; grid-column-end: span 6; } .ed-grid > .xl-rows-6 { -ms-grid-row-span: 6; grid-row-end: span 6; } .ed-grid > .xl-x-6 { -ms-grid-column: 6; grid-column-start: 6; } .ed-grid > .xl-y-6 { -ms-grid-row: 6; grid-row-start: 6; } .ed-grid.cols-xl-7, .ed-grid.xl-grid-7 { -ms-grid-columns: (calc((100% - var(--gap) * 6) / 7))[7]; grid-template-columns: repeat(7, calc((100% - var(--gap) * 6) / 7)); } .ed-grid > .span-xl-7, .ed-grid > .xl-cols-7 { -ms-grid-column-span: 7; grid-column-end: span 7; } .ed-grid > .xl-rows-7 { -ms-grid-row-span: 7; grid-row-end: span 7; } .ed-grid > .xl-x-7 { -ms-grid-column: 7; grid-column-start: 7; } .ed-grid > .xl-y-7 { -ms-grid-row: 7; grid-row-start: 7; } .ed-grid.cols-xl-8, .ed-grid.xl-grid-8 { -ms-grid-columns: (calc((100% - var(--gap) * 7) / 8))[8]; grid-template-columns: repeat(8, calc((100% - var(--gap) * 7) / 8)); } .ed-grid > .span-xl-8, .ed-grid > .xl-cols-8 { -ms-grid-column-span: 8; grid-column-end: span 8; } .ed-grid > .xl-rows-8 { -ms-grid-row-span: 8; grid-row-end: span 8; } .ed-grid > .xl-x-8 { -ms-grid-column: 8; grid-column-start: 8; } .ed-grid > .xl-y-8 { -ms-grid-row: 8; grid-row-start: 8; } .ed-grid.cols-xl-9, .ed-grid.xl-grid-9 { -ms-grid-columns: (calc((100% - var(--gap) * 8) / 9))[9]; grid-template-columns: repeat(9, calc((100% - var(--gap) * 8) / 9)); } .ed-grid > .span-xl-9, .ed-grid > .xl-cols-9 { -ms-grid-column-span: 9; grid-column-end: span 9; } .ed-grid > .xl-rows-9 { -ms-grid-row-span: 9; grid-row-end: span 9; } .ed-grid > .xl-x-9 { -ms-grid-column: 9; grid-column-start: 9; } .ed-grid > .xl-y-9 { -ms-grid-row: 9; grid-row-start: 9; } .ed-grid.cols-xl-10, .ed-grid.xl-grid-10 { -ms-grid-columns: (calc((100% - var(--gap) * 9) / 10))[10]; grid-template-columns: repeat(10, calc((100% - var(--gap) * 9) / 10)); } .ed-grid > .span-xl-10, .ed-grid > .xl-cols-10 { -ms-grid-column-span: 10; grid-column-end: span 10; } .ed-grid > .xl-rows-10 { -ms-grid-row-span: 10; grid-row-end: span 10; } .ed-grid > .xl-x-10 { -ms-grid-column: 10; grid-column-start: 10; } .ed-grid > .xl-y-10 { -ms-grid-row: 10; grid-row-start: 10; } .ed-grid.cols-xl-11, .ed-grid.xl-grid-11 { -ms-grid-columns: (calc((100% - var(--gap) * 10) / 11))[11]; grid-template-columns: repeat(11, calc((100% - var(--gap) * 10) / 11)); } .ed-grid > .span-xl-11, .ed-grid > .xl-cols-11 { -ms-grid-column-span: 11; grid-column-end: span 11; } .ed-grid > .xl-rows-11 { -ms-grid-row-span: 11; grid-row-end: span 11; } .ed-grid > .xl-x-11 { -ms-grid-column: 11; grid-column-start: 11; } .ed-grid > .xl-y-11 { -ms-grid-row: 11; grid-row-start: 11; } .ed-grid.cols-xl-12, .ed-grid.xl-grid-12 { -ms-grid-columns: (calc((100% - var(--gap) * 11) / 12))[12]; grid-template-columns: repeat(12, calc((100% - var(--gap) * 11) / 12)); } .ed-grid > .span-xl-12, .ed-grid > .xl-cols-12 { -ms-grid-column-span: 12; grid-column-end: span 12; } .ed-grid > .xl-rows-12 { -ms-grid-row-span: 12; grid-row-end: span 12; } .ed-grid > .xl-x-12 { -ms-grid-column: 12; grid-column-start: 12; } .ed-grid > .xl-y-12 { -ms-grid-row: 12; grid-row-start: 12; } } .ed-grid[class*="-main-"], .ed-grid[class*="-cross-"] { display: -ms-grid; display: grid; } .l-block, .cancel-l-block, .l-section, .cancel-l-section, .l-big-section, .cancel-l-big-section { margin-top: 0; } .l-block { margin-bottom: var(--vertical-block-space); } .cancel-l-block { margin-top: calc(var(--vertical-block-space) * -1); } .l-section { margin-bottom: calc(var(--vertical-block-space) * 2); } .cancel-l-section { margin-top: calc(var(--vertical-block-space) * -2); } .l-big-section { margin-bottom: calc(var(--vertical-block-space) * 4); } .cancel-l-big-section { margin-top: calc(var(--vertical-block-space) * -4); } body { display: -ms-flexbox; display: flex; -ms-flex-direction: column; flex-direction: column; min-height: 100vh; } .main-footer { margin-top: auto; } h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: var(--vertical-content-space); } h1 { margin-bottom: calc(var(--vertical-content-space) * 1.5); } p, video, blockquote, article, section, form, figure, iframe, ul, ol, pre, hr, dl, address, table { margin-top: 0; margin-bottom: calc(var(--vertical-content-space) * 1.5); } p + h2, video + h2, blockquote + h2, article + h2, section + h2, form + h2, figure + h2, iframe + h2, ul + h2, ol + h2, pre + h2, hr + h2, dl + h2, address + h2, table + h2 { padding-top: calc(var(--vertical-content-space) * 1.5); } p + h3, video + h3, blockquote + h3, article + h3, section + h3, form + h3, figure + h3, iframe + h3, ul + h3, ol + h3, pre + h3, hr + h3, dl + h3, address + h3, table + h3 { padding-top: var(--vertical-content-space); } ul ul, ol ol, ul ol, ol ul { margin-bottom: 0; } .s-pt-0 { padding-top: 0; } .s-pl-0 { padding-left: 0; } .s-pb-0 { padding-bottom: 0; } .s-pr-0 { padding-right: 0; } .s-py-0 { padding-top: 0; padding-bottom: 0; } .s-px-0 { padding-left: 0; padding-right: 0; } .s-pxy-0 { padding: 0; } .s-mr-0 { margin-right: 0; } .s-mb-0 { margin-bottom: 0; } .s-mt-0 { margin-top: 0; } .s-ml-0 { margin-left: 0; } .s-sticky-0 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0); } .s-pt-1 { padding-top: 0.5rem; } .s-pl-1 { padding-left: 0.5rem; } .s-pb-1 { padding-bottom: 0.5rem; } .s-pr-1 { padding-right: 0.5rem; } .s-py-1 { padding-top: 0.5rem; padding-bottom: 0.5rem; } .s-px-1 { padding-left: 0.5rem; padding-right: 0.5rem; } .s-pxy-1 { padding: 0.5rem; } .s-mr-1 { margin-right: 0.5rem; } .s-mb-1 { margin-bottom: 0.5rem; } .s-mt-1 { margin-top: -0.5rem; } .s-ml-1 { margin-left: -0.5rem; } .s-sticky-1 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.5rem); } .s-pt-2 { padding-top: 1rem; } .s-pl-2 { padding-left: 1rem; } .s-pb-2 { padding-bottom: 1rem; } .s-pr-2 { padding-right: 1rem; } .s-py-2 { padding-top: 1rem; padding-bottom: 1rem; } .s-px-2 { padding-left: 1rem; padding-right: 1rem; } .s-pxy-2 { padding: 1rem; } .s-mr-2 { margin-right: 1rem; } .s-mb-2 { margin-bottom: 1rem; } .s-mt-2 { margin-top: -1rem; } .s-ml-2 { margin-left: -1rem; } .s-sticky-2 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1rem); } .s-pt-3 { padding-top: 1.5rem; } .s-pl-3 { padding-left: 1.5rem; } .s-pb-3 { padding-bottom: 1.5rem; } .s-pr-3 { padding-right: 1.5rem; } .s-py-3 { padding-top: 1.5rem; padding-bottom: 1.5rem; } .s-px-3 { padding-left: 1.5rem; padding-right: 1.5rem; } .s-pxy-3 { padding: 1.5rem; } .s-mr-3 { margin-right: 1.5rem; } .s-mb-3 { margin-bottom: 1.5rem; } .s-mt-3 { margin-top: -1.5rem; } .s-ml-3 { margin-left: -1.5rem; } .s-sticky-3 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1.5rem); } .s-pt-4 { padding-top: 2rem; } .s-pl-4 { padding-left: 2rem; } .s-pb-4 { padding-bottom: 2rem; } .s-pr-4 { padding-right: 2rem; } .s-py-4 { padding-top: 2rem; padding-bottom: 2rem; } .s-px-4 { padding-left: 2rem; padding-right: 2rem; } .s-pxy-4 { padding: 2rem; } .s-mr-4 { margin-right: 2rem; } .s-mb-4 { margin-bottom: 2rem; } .s-mt-4 { margin-top: -2rem; } .s-ml-4 { margin-left: -2rem; } .s-sticky-4 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 2rem); } .s-pt-05 { padding-top: 0.25rem; } .s-pl-05 { padding-left: 0.25rem; } .s-pb-05 { padding-bottom: 0.25rem; } .s-pr-05 { padding-right: 0.25rem; } .s-py-05 { padding-top: 0.25rem; padding-bottom: 0.25rem; } .s-px-05 { padding-left: 0.25rem; padding-right: 0.25rem; } .s-pxy-05 { padding: 0.25rem; } .s-mr-05 { margin-right: 0.25rem; } .s-mb-05 { margin-bottom: 0.25rem; } .s-mt-05 { margin-top: -0.25rem; } .s-ml-05 { margin-left: -0.25rem; } .s-sticky-05 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.25rem); } .s-sticky-none { position: static; } @media screen and (min-width: 640px) { .m-pt-0 { padding-top: 0; } .m-pl-0 { padding-left: 0; } .m-pb-0 { padding-bottom: 0; } .m-pr-0 { padding-right: 0; } .m-py-0 { padding-top: 0; padding-bottom: 0; } .m-px-0 { padding-left: 0; padding-right: 0; } .m-pxy-0 { padding: 0; } .m-mr-0 { margin-right: 0; } .m-mb-0 { margin-bottom: 0; } .m-mt-0 { margin-top: 0; } .m-ml-0 { margin-left: 0; } .m-sticky-0 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0); } .m-pt-1 { padding-top: 0.5rem; } .m-pl-1 { padding-left: 0.5rem; } .m-pb-1 { padding-bottom: 0.5rem; } .m-pr-1 { padding-right: 0.5rem; } .m-py-1 { padding-top: 0.5rem; padding-bottom: 0.5rem; } .m-px-1 { padding-left: 0.5rem; padding-right: 0.5rem; } .m-pxy-1 { padding: 0.5rem; } .m-mr-1 { margin-right: 0.5rem; } .m-mb-1 { margin-bottom: 0.5rem; } .m-mt-1 { margin-top: -0.5rem; } .m-ml-1 { margin-left: -0.5rem; } .m-sticky-1 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.5rem); } .m-pt-2 { padding-top: 1rem; } .m-pl-2 { padding-left: 1rem; } .m-pb-2 { padding-bottom: 1rem; } .m-pr-2 { padding-right: 1rem; } .m-py-2 { padding-top: 1rem; padding-bottom: 1rem; } .m-px-2 { padding-left: 1rem; padding-right: 1rem; } .m-pxy-2 { padding: 1rem; } .m-mr-2 { margin-right: 1rem; } .m-mb-2 { margin-bottom: 1rem; } .m-mt-2 { margin-top: -1rem; } .m-ml-2 { margin-left: -1rem; } .m-sticky-2 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1rem); } .m-pt-3 { padding-top: 1.5rem; } .m-pl-3 { padding-left: 1.5rem; } .m-pb-3 { padding-bottom: 1.5rem; } .m-pr-3 { padding-right: 1.5rem; } .m-py-3 { padding-top: 1.5rem; padding-bottom: 1.5rem; } .m-px-3 { padding-left: 1.5rem; padding-right: 1.5rem; } .m-pxy-3 { padding: 1.5rem; } .m-mr-3 { margin-right: 1.5rem; } .m-mb-3 { margin-bottom: 1.5rem; } .m-mt-3 { margin-top: -1.5rem; } .m-ml-3 { margin-left: -1.5rem; } .m-sticky-3 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1.5rem); } .m-pt-4 { padding-top: 2rem; } .m-pl-4 { padding-left: 2rem; } .m-pb-4 { padding-bottom: 2rem; } .m-pr-4 { padding-right: 2rem; } .m-py-4 { padding-top: 2rem; padding-bottom: 2rem; } .m-px-4 { padding-left: 2rem; padding-right: 2rem; } .m-pxy-4 { padding: 2rem; } .m-mr-4 { margin-right: 2rem; } .m-mb-4 { margin-bottom: 2rem; } .m-mt-4 { margin-top: -2rem; } .m-ml-4 { margin-left: -2rem; } .m-sticky-4 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 2rem); } .m-pt-05 { padding-top: 0.25rem; } .m-pl-05 { padding-left: 0.25rem; } .m-pb-05 { padding-bottom: 0.25rem; } .m-pr-05 { padding-right: 0.25rem; } .m-py-05 { padding-top: 0.25rem; padding-bottom: 0.25rem; } .m-px-05 { padding-left: 0.25rem; padding-right: 0.25rem; } .m-pxy-05 { padding: 0.25rem; } .m-mr-05 { margin-right: 0.25rem; } .m-mb-05 { margin-bottom: 0.25rem; } .m-mt-05 { margin-top: -0.25rem; } .m-ml-05 { margin-left: -0.25rem; } .m-sticky-05 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.25rem); } .m-sticky-none { position: static; } } @media screen and (min-width: 1024px) { .l-pt-0 { padding-top: 0; } .l-pl-0 { padding-left: 0; } .l-pb-0 { padding-bottom: 0; } .l-pr-0 { padding-right: 0; } .l-py-0 { padding-top: 0; padding-bottom: 0; } .l-px-0 { padding-left: 0; padding-right: 0; } .l-pxy-0 { padding: 0; } .l-mr-0 { margin-right: 0; } .l-mb-0 { margin-bottom: 0; } .l-mt-0 { margin-top: 0; } .l-ml-0 { margin-left: 0; } .l-sticky-0 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0); } .l-pt-1 { padding-top: 0.5rem; } .l-pl-1 { padding-left: 0.5rem; } .l-pb-1 { padding-bottom: 0.5rem; } .l-pr-1 { padding-right: 0.5rem; } .l-py-1 { padding-top: 0.5rem; padding-bottom: 0.5rem; } .l-px-1 { padding-left: 0.5rem; padding-right: 0.5rem; } .l-pxy-1 { padding: 0.5rem; } .l-mr-1 { margin-right: 0.5rem; } .l-mb-1 { margin-bottom: 0.5rem; } .l-mt-1 { margin-top: -0.5rem; } .l-ml-1 { margin-left: -0.5rem; } .l-sticky-1 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.5rem); } .l-pt-2 { padding-top: 1rem; } .l-pl-2 { padding-left: 1rem; } .l-pb-2 { padding-bottom: 1rem; } .l-pr-2 { padding-right: 1rem; } .l-py-2 { padding-top: 1rem; padding-bottom: 1rem; } .l-px-2 { padding-left: 1rem; padding-right: 1rem; } .l-pxy-2 { padding: 1rem; } .l-mr-2 { margin-right: 1rem; } .l-mb-2 { margin-bottom: 1rem; } .l-mt-2 { margin-top: -1rem; } .l-ml-2 { margin-left: -1rem; } .l-sticky-2 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1rem); } .l-pt-3 { padding-top: 1.5rem; } .l-pl-3 { padding-left: 1.5rem; } .l-pb-3 { padding-bottom: 1.5rem; } .l-pr-3 { padding-right: 1.5rem; } .l-py-3 { padding-top: 1.5rem; padding-bottom: 1.5rem; } .l-px-3 { padding-left: 1.5rem; padding-right: 1.5rem; } .l-pxy-3 { padding: 1.5rem; } .l-mr-3 { margin-right: 1.5rem; } .l-mb-3 { margin-bottom: 1.5rem; } .l-mt-3 { margin-top: -1.5rem; } .l-ml-3 { margin-left: -1.5rem; } .l-sticky-3 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1.5rem); } .l-pt-4 { padding-top: 2rem; } .l-pl-4 { padding-left: 2rem; } .l-pb-4 { padding-bottom: 2rem; } .l-pr-4 { padding-right: 2rem; } .l-py-4 { padding-top: 2rem; padding-bottom: 2rem; } .l-px-4 { padding-left: 2rem; padding-right: 2rem; } .l-pxy-4 { padding: 2rem; } .l-mr-4 { margin-right: 2rem; } .l-mb-4 { margin-bottom: 2rem; } .l-mt-4 { margin-top: -2rem; } .l-ml-4 { margin-left: -2rem; } .l-sticky-4 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 2rem); } .l-pt-05 { padding-top: 0.25rem; } .l-pl-05 { padding-left: 0.25rem; } .l-pb-05 { padding-bottom: 0.25rem; } .l-pr-05 { padding-right: 0.25rem; } .l-py-05 { padding-top: 0.25rem; padding-bottom: 0.25rem; } .l-px-05 { padding-left: 0.25rem; padding-right: 0.25rem; } .l-pxy-05 { padding: 0.25rem; } .l-mr-05 { margin-right: 0.25rem; } .l-mb-05 { margin-bottom: 0.25rem; } .l-mt-05 { margin-top: -0.25rem; } .l-ml-05 { margin-left: -0.25rem; } .l-sticky-05 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.25rem); } .l-sticky-none { position: static; } } @media screen and (min-width: 1024px) { .lg-pt-0 { padding-top: 0; } .lg-pl-0 { padding-left: 0; } .lg-pb-0 { padding-bottom: 0; } .lg-pr-0 { padding-right: 0; } .lg-py-0 { padding-top: 0; padding-bottom: 0; } .lg-px-0 { padding-left: 0; padding-right: 0; } .lg-pxy-0 { padding: 0; } .lg-mr-0 { margin-right: 0; } .lg-mb-0 { margin-bottom: 0; } .lg-mt-0 { margin-top: 0; } .lg-ml-0 { margin-left: 0; } .lg-sticky-0 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0); } .lg-pt-1 { padding-top: 0.5rem; } .lg-pl-1 { padding-left: 0.5rem; } .lg-pb-1 { padding-bottom: 0.5rem; } .lg-pr-1 { padding-right: 0.5rem; } .lg-py-1 { padding-top: 0.5rem; padding-bottom: 0.5rem; } .lg-px-1 { padding-left: 0.5rem; padding-right: 0.5rem; } .lg-pxy-1 { padding: 0.5rem; } .lg-mr-1 { margin-right: 0.5rem; } .lg-mb-1 { margin-bottom: 0.5rem; } .lg-mt-1 { margin-top: -0.5rem; } .lg-ml-1 { margin-left: -0.5rem; } .lg-sticky-1 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.5rem); } .lg-pt-2 { padding-top: 1rem; } .lg-pl-2 { padding-left: 1rem; } .lg-pb-2 { padding-bottom: 1rem; } .lg-pr-2 { padding-right: 1rem; } .lg-py-2 { padding-top: 1rem; padding-bottom: 1rem; } .lg-px-2 { padding-left: 1rem; padding-right: 1rem; } .lg-pxy-2 { padding: 1rem; } .lg-mr-2 { margin-right: 1rem; } .lg-mb-2 { margin-bottom: 1rem; } .lg-mt-2 { margin-top: -1rem; } .lg-ml-2 { margin-left: -1rem; } .lg-sticky-2 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1rem); } .lg-pt-3 { padding-top: 1.5rem; } .lg-pl-3 { padding-left: 1.5rem; } .lg-pb-3 { padding-bottom: 1.5rem; } .lg-pr-3 { padding-right: 1.5rem; } .lg-py-3 { padding-top: 1.5rem; padding-bottom: 1.5rem; } .lg-px-3 { padding-left: 1.5rem; padding-right: 1.5rem; } .lg-pxy-3 { padding: 1.5rem; } .lg-mr-3 { margin-right: 1.5rem; } .lg-mb-3 { margin-bottom: 1.5rem; } .lg-mt-3 { margin-top: -1.5rem; } .lg-ml-3 { margin-left: -1.5rem; } .lg-sticky-3 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1.5rem); } .lg-pt-4 { padding-top: 2rem; } .lg-pl-4 { padding-left: 2rem; } .lg-pb-4 { padding-bottom: 2rem; } .lg-pr-4 { padding-right: 2rem; } .lg-py-4 { padding-top: 2rem; padding-bottom: 2rem; } .lg-px-4 { padding-left: 2rem; padding-right: 2rem; } .lg-pxy-4 { padding: 2rem; } .lg-mr-4 { margin-right: 2rem; } .lg-mb-4 { margin-bottom: 2rem; } .lg-mt-4 { margin-top: -2rem; } .lg-ml-4 { margin-left: -2rem; } .lg-sticky-4 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 2rem); } .lg-pt-05 { padding-top: 0.25rem; } .lg-pl-05 { padding-left: 0.25rem; } .lg-pb-05 { padding-bottom: 0.25rem; } .lg-pr-05 { padding-right: 0.25rem; } .lg-py-05 { padding-top: 0.25rem; padding-bottom: 0.25rem; } .lg-px-05 { padding-left: 0.25rem; padding-right: 0.25rem; } .lg-pxy-05 { padding: 0.25rem; } .lg-mr-05 { margin-right: 0.25rem; } .lg-mb-05 { margin-bottom: 0.25rem; } .lg-mt-05 { margin-top: -0.25rem; } .lg-ml-05 { margin-left: -0.25rem; } .lg-sticky-05 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.25rem); } .lg-sticky-none { position: static; } } @media screen and (min-width: 1440px) { .xl-pt-0 { padding-top: 0; } .xl-pl-0 { padding-left: 0; } .xl-pb-0 { padding-bottom: 0; } .xl-pr-0 { padding-right: 0; } .xl-py-0 { padding-top: 0; padding-bottom: 0; } .xl-px-0 { padding-left: 0; padding-right: 0; } .xl-pxy-0 { padding: 0; } .xl-mr-0 { margin-right: 0; } .xl-mb-0 { margin-bottom: 0; } .xl-mt-0 { margin-top: 0; } .xl-ml-0 { margin-left: 0; } .xl-sticky-0 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0); } .xl-pt-1 { padding-top: 0.5rem; } .xl-pl-1 { padding-left: 0.5rem; } .xl-pb-1 { padding-bottom: 0.5rem; } .xl-pr-1 { padding-right: 0.5rem; } .xl-py-1 { padding-top: 0.5rem; padding-bottom: 0.5rem; } .xl-px-1 { padding-left: 0.5rem; padding-right: 0.5rem; } .xl-pxy-1 { padding: 0.5rem; } .xl-mr-1 { margin-right: 0.5rem; } .xl-mb-1 { margin-bottom: 0.5rem; } .xl-mt-1 { margin-top: -0.5rem; } .xl-ml-1 { margin-left: -0.5rem; } .xl-sticky-1 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.5rem); } .xl-pt-2 { padding-top: 1rem; } .xl-pl-2 { padding-left: 1rem; } .xl-pb-2 { padding-bottom: 1rem; } .xl-pr-2 { padding-right: 1rem; } .xl-py-2 { padding-top: 1rem; padding-bottom: 1rem; } .xl-px-2 { padding-left: 1rem; padding-right: 1rem; } .xl-pxy-2 { padding: 1rem; } .xl-mr-2 { margin-right: 1rem; } .xl-mb-2 { margin-bottom: 1rem; } .xl-mt-2 { margin-top: -1rem; } .xl-ml-2 { margin-left: -1rem; } .xl-sticky-2 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1rem); } .xl-pt-3 { padding-top: 1.5rem; } .xl-pl-3 { padding-left: 1.5rem; } .xl-pb-3 { padding-bottom: 1.5rem; } .xl-pr-3 { padding-right: 1.5rem; } .xl-py-3 { padding-top: 1.5rem; padding-bottom: 1.5rem; } .xl-px-3 { padding-left: 1.5rem; padding-right: 1.5rem; } .xl-pxy-3 { padding: 1.5rem; } .xl-mr-3 { margin-right: 1.5rem; } .xl-mb-3 { margin-bottom: 1.5rem; } .xl-mt-3 { margin-top: -1.5rem; } .xl-ml-3 { margin-left: -1.5rem; } .xl-sticky-3 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 1.5rem); } .xl-pt-4 { padding-top: 2rem; } .xl-pl-4 { padding-left: 2rem; } .xl-pb-4 { padding-bottom: 2rem; } .xl-pr-4 { padding-right: 2rem; } .xl-py-4 { padding-top: 2rem; padding-bottom: 2rem; } .xl-px-4 { padding-left: 2rem; padding-right: 2rem; } .xl-pxy-4 { padding: 2rem; } .xl-mr-4 { margin-right: 2rem; } .xl-mb-4 { margin-bottom: 2rem; } .xl-mt-4 { margin-top: -2rem; } .xl-ml-4 { margin-left: -2rem; } .xl-sticky-4 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 2rem); } .xl-pt-05 { padding-top: 0.25rem; } .xl-pl-05 { padding-left: 0.25rem; } .xl-pb-05 { padding-bottom: 0.25rem; } .xl-pr-05 { padding-right: 0.25rem; } .xl-py-05 { padding-top: 0.25rem; padding-bottom: 0.25rem; } .xl-px-05 { padding-left: 0.25rem; padding-right: 0.25rem; } .xl-pxy-05 { padding: 0.25rem; } .xl-mr-05 { margin-right: 0.25rem; } .xl-mb-05 { margin-bottom: 0.25rem; } .xl-mt-05 { margin-top: -0.25rem; } .xl-ml-05 { margin-left: -0.25rem; } .xl-sticky-05 { position: -webkit-sticky; position: sticky; top: calc(var(--header-height) + 0.25rem); } .xl-sticky-none { position: static; } } /* Alineación de contenido */ .s-left { text-align: left; } .s-center { text-align: center; } .s-right { text-align: right; } .s-to-left { margin-left: 0; margin-right: auto; } .s-to-left[class*=button] { display: table; } .s-to-center { margin-left: auto; margin-right: auto; } .s-to-center[class*=button] { display: table; } .s-to-right { margin-right: 0; margin-left: auto; } .s-to-right[class*=button] { display: table; } .s-block-left { display: block; margin-left: 0; margin-right: auto; } .s-block-center { display: block; margin-left: auto; margin-right: auto; } .s-block-right { display: block; margin-right: 0; margin-left: auto; } @media screen and (min-width: 640px) { .m-left { text-align: left; } .m-center { text-align: center; } .m-right { text-align: right; } .m-to-left { margin-left: 0; margin-right: auto; } .m-to-left[class*=button] { display: table; } .m-to-center { margin-left: auto; margin-right: auto; } .m-to-center[class*=button] { display: table; } .m-to-right { margin-right: 0; margin-left: auto; } .m-to-right[class*=button] { display: table; } .m-block-left { display: block; margin-left: 0; margin-right: auto; } .m-block-center { display: block; margin-left: auto; margin-right: auto; } .m-block-right { display: block; margin-right: 0; margin-left: auto; } } @media screen and (min-width: 1024px) { .l-left { text-align: left; } .l-center { text-align: center; } .l-right { text-align: right; } .l-to-left { margin-left: 0; margin-right: auto; } .l-to-left[class*=button] { display: table; } .l-to-center { margin-left: auto; margin-right: auto; } .l-to-center[class*=button] { display: table; } .l-to-right { margin-right: 0; margin-left: auto; } .l-to-right[class*=button] { display: table; } .l-block-left { display: block; margin-left: 0; margin-right: auto; } .l-block-center { display: block; margin-left: auto; margin-right: auto; } .l-block-right { display: block; margin-right: 0; margin-left: auto; } } @media screen and (min-width: 1024px) { .lg-left { text-align: left; } .lg-center { text-align: center; } .lg-right { text-align: right; } .lg-to-left { margin-left: 0; margin-right: auto; } .lg-to-left[class*=button] { display: table; } .lg-to-center { margin-left: auto; margin-right: auto; } .lg-to-center[class*=button] { display: table; } .lg-to-right { margin-right: 0; margin-left: auto; } .lg-to-right[class*=button] { display: table; } .lg-block-left { display: block; margin-left: 0; margin-right: auto; } .lg-block-center { display: block; margin-left: auto; margin-right: auto; } .lg-block-right { display: block; margin-right: 0; margin-left: auto; } } @media screen and (min-width: 1440px) { .xl-left { text-align: left; } .xl-center { text-align: center; } .xl-right { text-align: right; } .xl-to-left { margin-left: 0; margin-right: auto; } .xl-to-left[class*=button] { display: table; } .xl-to-center { margin-left: auto; margin-right: auto; } .xl-to-center[class*=button] { display: table; } .xl-to-right { margin-right: 0; margin-left: auto; } .xl-to-right[class*=button] { display: table; } .xl-block-left { display: block; margin-left: 0; margin-right: auto; } .xl-block-center { display: block; margin-left: auto; margin-right: auto; } .xl-block-right { display: block; margin-right: 0; margin-left: auto; } } .s-order-1 { -ms-flex-order: 1; order: 1; } .s-order-2 { -ms-flex-order: 2; order: 2; } .s-order-3 { -ms-flex-order: 3; order: 3; } .s-order-4 { -ms-flex-order: 4; order: 4; } .s-order-5 { -ms-flex-order: 5; order: 5; } .s-order-6 { -ms-flex-order: 6; order: 6; } .s-order-7 { -ms-flex-order: 7; order: 7; } .s-order-8 { -ms-flex-order: 8; order: 8; } .s-order-9 { -ms-flex-order: 9; order: 9; } .s-order-10 { -ms-flex-order: 10; order: 10; } .s-order-11 { -ms-flex-order: 11; order: 11; } .s-order-12 { -ms-flex-order: 12; order: 12; } @media screen and (min-width: 640px) { .m-order-1 { -ms-flex-order: 1; order: 1; } .m-order-2 { -ms-flex-order: 2; order: 2; } .m-order-3 { -ms-flex-order: 3; order: 3; } .m-order-4 { -ms-flex-order: 4; order: 4; } .m-order-5 { -ms-flex-order: 5; order: 5; } .m-order-6 { -ms-flex-order: 6; order: 6; } .m-order-7 { -ms-flex-order: 7; order: 7; } .m-order-8 { -ms-flex-order: 8; order: 8; } .m-order-9 { -ms-flex-order: 9; order: 9; } .m-order-10 { -ms-flex-order: 10; order: 10; } .m-order-11 { -ms-flex-order: 11; order: 11; } .m-order-12 { -ms-flex-order: 12; order: 12; } } @media screen and (min-width: 1024px) { .l-order-1 { -ms-flex-order: 1; order: 1; } .l-order-2 { -ms-flex-order: 2; order: 2; } .l-order-3 { -ms-flex-order: 3; order: 3; } .l-order-4 { -ms-flex-order: 4; order: 4; } .l-order-5 { -ms-flex-order: 5; order: 5; } .l-order-6 { -ms-flex-order: 6; order: 6; } .l-order-7 { -ms-flex-order: 7; order: 7; } .l-order-8 { -ms-flex-order: 8; order: 8; } .l-order-9 { -ms-flex-order: 9; order: 9; } .l-order-10 { -ms-flex-order: 10; order: 10; } .l-order-11 { -ms-flex-order: 11; order: 11; } .l-order-12 { -ms-flex-order: 12; order: 12; } } @media screen and (min-width: 1024px) { .lg-order-1 { -ms-flex-order: 1; order: 1; } .lg-order-2 { -ms-flex-order: 2; order: 2; } .lg-order-3 { -ms-flex-order: 3; order: 3; } .lg-order-4 { -ms-flex-order: 4; order: 4; } .lg-order-5 { -ms-flex-order: 5; order: 5; } .lg-order-6 { -ms-flex-order: 6; order: 6; } .lg-order-7 { -ms-flex-order: 7; order: 7; } .lg-order-8 { -ms-flex-order: 8; order: 8; } .lg-order-9 { -ms-flex-order: 9; order: 9; } .lg-order-10 { -ms-flex-order: 10; order: 10; } .lg-order-11 { -ms-flex-order: 11; order: 11; } .lg-order-12 { -ms-flex-order: 12; order: 12; } } @media screen and (min-width: 1440px) { .xl-order-1 { -ms-flex-order: 1; order: 1; } .xl-order-2 { -ms-flex-order: 2; order: 2; } .xl-order-3 { -ms-flex-order: 3; order: 3; } .xl-order-4 { -ms-flex-order: 4; order: 4; } .xl-order-5 { -ms-flex-order: 5; order: 5; } .xl-order-6 { -ms-flex-order: 6; order: 6; } .xl-order-7 { -ms-flex-order: 7; order: 7; } .xl-order-8 { -ms-flex-order: 8; order: 8; } .xl-order-9 { -ms-flex-order: 9; order: 9; } .xl-order-10 { -ms-flex-order: 10; order: 10; } .xl-order-11 { -ms-flex-order: 11; order: 11; } .xl-order-12 { -ms-flex-order: 12; order: 12; } } /* Crea selectores agrupados para propiedades básicas de flexbox*/ .flex, .s-row, .s-row-reverse, .s-column, .s-column-reverse, .s-main-start, .s-main-center, .s-main-end, .s-main-justify, .s-main-distribute, .s-cross-baseline, .s-cross-start, .s-cross-center, .s-cross-end { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } @media screen and (min-width: 640px) { .flex, .m-row, .m-row-reverse, .m-column, .m-column-reverse, .m-main-start, .m-main-center, .m-main-end, .m-main-justify, .m-main-distribute, .m-cross-baseline, .m-cross-start, .m-cross-center, .m-cross-end { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } } @media screen and (min-width: 1024px) { .flex, .l-row, .l-row-reverse, .l-column, .l-column-reverse, .l-main-start, .l-main-center, .l-main-end, .l-main-justify, .l-main-distribute, .l-cross-baseline, .l-cross-start, .l-cross-center, .l-cross-end { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } } @media screen and (min-width: 1024px) { .flex, .lg-row, .lg-row-reverse, .lg-column, .lg-column-reverse, .lg-main-start, .lg-main-center, .lg-main-end, .lg-main-justify, .lg-main-distribute, .lg-cross-baseline, .lg-cross-start, .lg-cross-center, .lg-cross-end { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } } @media screen and (min-width: 1440px) { .flex, .xl-row, .xl-row-reverse, .xl-column, .xl-column-reverse, .xl-main-start, .xl-main-center, .xl-main-end, .xl-main-justify, .xl-main-distribute, .xl-cross-baseline, .xl-cross-start, .xl-cross-center, .xl-cross-end { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; } } /*Crea selectores de flex alignment en todos los breakpoints*/ .s-row { -ms-flex-direction: row; flex-direction: row; } .s-row-reverse { -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .s-column { -ms-flex-direction: column; flex-direction: column; } .s-column-reverse { -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .s-main-start { -ms-flex-pack: start; justify-content: flex-start; } .s-main-center { -ms-flex-pack: center; justify-content: center; } .s-main-end { -ms-flex-pack: end; justify-content: flex-end; } .s-main-justify { -ms-flex-pack: justify; justify-content: space-between; } .s-main-distribute { -ms-flex-pack: space-evenly; justify-content: space-evenly; } .s-cross-baseline { -ms-flex-align: baseline; align-items: baseline; -ms-flex-line-pack: baseline; align-content: baseline; } .s-cross-start { -ms-flex-align: start; align-items: flex-start; -ms-flex-line-pack: start; align-content: flex-start; } .s-cross-center { -ms-flex-align: center; align-items: center; -ms-flex-line-pack: center; align-content: center; } .s-cross-end { -ms-flex-align: end; align-items: flex-end; -ms-flex-line-pack: end; align-content: flex-end; } @media screen and (min-width: 640px) { .m-row { -ms-flex-direction: row; flex-direction: row; } .m-row-reverse { -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .m-column { -ms-flex-direction: column; flex-direction: column; } .m-column-reverse { -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .m-main-start { -ms-flex-pack: start; justify-content: flex-start; } .m-main-center { -ms-flex-pack: center; justify-content: center; } .m-main-end { -ms-flex-pack: end; justify-content: flex-end; } .m-main-justify { -ms-flex-pack: justify; justify-content: space-between; } .m-main-distribute { -ms-flex-pack: space-evenly; justify-content: space-evenly; } .m-cross-baseline { -ms-flex-align: baseline; align-items: baseline; -ms-flex-line-pack: baseline; align-content: baseline; } .m-cross-start { -ms-flex-align: start; align-items: flex-start; -ms-flex-line-pack: start; align-content: flex-start; } .m-cross-center { -ms-flex-align: center; align-items: center; -ms-flex-line-pack: center; align-content: center; } .m-cross-end { -ms-flex-align: end; align-items: flex-end; -ms-flex-line-pack: end; align-content: flex-end; } } @media screen and (min-width: 1024px) { .l-row { -ms-flex-direction: row; flex-direction: row; } .l-row-reverse { -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .l-column { -ms-flex-direction: column; flex-direction: column; } .l-column-reverse { -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .l-main-start { -ms-flex-pack: start; justify-content: flex-start; } .l-main-center { -ms-flex-pack: center; justify-content: center; } .l-main-end { -ms-flex-pack: end; justify-content: flex-end; } .l-main-justify { -ms-flex-pack: justify; justify-content: space-between; } .l-main-distribute { -ms-flex-pack: space-evenly; justify-content: space-evenly; } .l-cross-baseline { -ms-flex-align: baseline; align-items: baseline; -ms-flex-line-pack: baseline; align-content: baseline; } .l-cross-start { -ms-flex-align: start; align-items: flex-start; -ms-flex-line-pack: start; align-content: flex-start; } .l-cross-center { -ms-flex-align: center; align-items: center; -ms-flex-line-pack: center; align-content: center; } .l-cross-end { -ms-flex-align: end; align-items: flex-end; -ms-flex-line-pack: end; align-content: flex-end; } } @media screen and (min-width: 1024px) { .lg-row { -ms-flex-direction: row; flex-direction: row; } .lg-row-reverse { -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .lg-column { -ms-flex-direction: column; flex-direction: column; } .lg-column-reverse { -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .lg-main-start { -ms-flex-pack: start; justify-content: flex-start; } .lg-main-center { -ms-flex-pack: center; justify-content: center; } .lg-main-end { -ms-flex-pack: end; justify-content: flex-end; } .lg-main-justify { -ms-flex-pack: justify; justify-content: space-between; } .lg-main-distribute { -ms-flex-pack: space-evenly; justify-content: space-evenly; } .lg-cross-baseline { -ms-flex-align: baseline; align-items: baseline; -ms-flex-line-pack: baseline; align-content: baseline; } .lg-cross-start { -ms-flex-align: start; align-items: flex-start; -ms-flex-line-pack: start; align-content: flex-start; } .lg-cross-center { -ms-flex-align: center; align-items: center; -ms-flex-line-pack: center; align-content: center; } .lg-cross-end { -ms-flex-align: end; align-items: flex-end; -ms-flex-line-pack: end; align-content: flex-end; } } @media screen and (min-width: 1440px) { .xl-row { -ms-flex-direction: row; flex-direction: row; } .xl-row-reverse { -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .xl-column { -ms-flex-direction: column; flex-direction: column; } .xl-column-reverse { -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .xl-main-start { -ms-flex-pack: start; justify-content: flex-start; } .xl-main-center { -ms-flex-pack: center; justify-content: center; } .xl-main-end { -ms-flex-pack: end; justify-content: flex-end; } .xl-main-justify { -ms-flex-pack: justify; justify-content: space-between; } .xl-main-distribute { -ms-flex-pack: space-evenly; justify-content: space-evenly; } .xl-cross-baseline { -ms-flex-align: baseline; align-items: baseline; -ms-flex-line-pack: baseline; align-content: baseline; } .xl-cross-start { -ms-flex-align: start; align-items: flex-start; -ms-flex-line-pack: start; align-content: flex-start; } .xl-cross-center { -ms-flex-align: center; align-items: center; -ms-flex-line-pack: center; align-content: center; } .xl-cross-end { -ms-flex-align: end; align-items: flex-end; -ms-flex-line-pack: end; align-content: flex-end; } } .from-s { display: none; } .to-s { display: none; } @media screen and (max-width: 639px) { .from-m { display: none; } } @media screen and (min-width: 640px) { .to-m { display: none; } } @media screen and (max-width: 1023px) { .from-l { display: none; } } @media screen and (min-width: 1024px) { .to-l { display: none; } } @media screen and (max-width: 1023px) { .from-lg { display: none; } } @media screen and (min-width: 1024px) { .to-lg { display: none; } } @media screen and (max-width: 1439px) { .from-xl { display: none; } } @media screen and (min-width: 1440px) { .to-xl { display: none; } } .button { display: inline-block; padding: .5em 1em; color: #FFF; background: var(--color); cursor: pointer; text-decoration: none; line-height: inherit; border-radius: .25rem; transition: transform .05s; border: none; } .button:hover { background: var(--color-alt); } .z-back { z-index: var(--z-back); } .z-normal { z-index: var(--z-normal); } .z-tooltip { z-index: var(--z-tooltip); } .z-fixed { z-index: var(--z-fixed); } .z-modal { z-index: var(--z-modal); } .s-border { border: 1px solid var(--border-color); } .s-border-none { border: none; } .s-radius { border-radius: var(--border-radius); } .s-border-top { border-top: 1px solid var(--border-color); } .s-border-none { border-top: none; } .s-border-right { border-right: 1px solid var(--border-color); } .s-border-none { border-right: none; } .s-border-bottom { border-bottom: 1px solid var(--border-color); } .s-border-none { border-bottom: none; } .s-border-left { border-left: 1px solid var(--border-color); } .s-border-none { border-left: none; } .s-radius-tl { border-top-left-radius: var(--border-radius); } .s-radius-tr { border-top-right-radius: var(--border-radius); } .s-radius-bl { border-bottom-left-radius: var(--border-radius); } .s-radius-br { border-bottom-right-radius: var(--border-radius); } .s-radius-0 { border-radius: 0; } .s-radius-1 { border-radius: 0.5rem; } .s-radius-2 { border-radius: 1rem; } .s-radius-3 { border-radius: 1.5rem; } .s-radius-4 { border-radius: 2rem; } .s-radius-05 { border-radius: 0.25rem; } .s-radius-tl-0 { border-top-left-radius: 0; } .s-radius-tl-1 { border-top-left-radius: 0.5rem; } .s-radius-tl-2 { border-top-left-radius: 1rem; } .s-radius-tl-3 { border-top-left-radius: 1.5rem; } .s-radius-tl-4 { border-top-left-radius: 2rem; } .s-radius-tl-05 { border-top-left-radius: 0.25rem; } .s-radius-tr-0 { border-top-right-radius: 0; } .s-radius-tr-1 { border-top-right-radius: 0.5rem; } .s-radius-tr-2 { border-top-right-radius: 1rem; } .s-radius-tr-3 { border-top-right-radius: 1.5rem; } .s-radius-tr-4 { border-top-right-radius: 2rem; } .s-radius-tr-05 { border-top-right-radius: 0.25rem; } .s-radius-bl-0 { border-bottom-left-radius: 0; } .s-radius-bl-1 { border-bottom-left-radius: 0.5rem; } .s-radius-bl-2 { border-bottom-left-radius: 1rem; } .s-radius-bl-3 { border-bottom-left-radius: 1.5rem; } .s-radius-bl-4 { border-bottom-left-radius: 2rem; } .s-radius-bl-05 { border-bottom-left-radius: 0.25rem; } .s-radius-br-0 { border-bottom-right-radius: 0; } .s-radius-br-1 { border-bottom-right-radius: 0.5rem; } .s-radius-br-2 { border-bottom-right-radius: 1rem; } .s-radius-br-3 { border-bottom-right-radius: 1.5rem; } .s-radius-br-4 { border-bottom-right-radius: 2rem; } .s-radius-br-05 { border-bottom-right-radius: 0.25rem; } .s-radius-tl-none { border-top-left-radius: 0; } .s-radius-tr-none { border-top-right-radius: 0; } .s-radius-bl-none { border-bottom-left-radius: 0; } .s-radius-br-none { border-bottom-right-radius: 0; } .s-radius-none { border-radius: none; } .s-bg-blue { background-color: var(--color); } .s-bg-white { background-color: #FFF; } .s-bg-grey { background-color: var(--light-bg); } .s-bg-none { background-color: transparent; } .s-ratio-1-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .s-ratio-1-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .s-ratio-1-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 300%; position: relative; } .s-ratio-1-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 400%; position: relative; } .s-ratio-2-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .s-ratio-2-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .s-ratio-2-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 150%; position: relative; } .s-ratio-2-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .s-ratio-3-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 33.33333%; position: relative; } .s-ratio-3-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 66.66667%; position: relative; } .s-ratio-3-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .s-ratio-3-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 133.33333%; position: relative; } .s-ratio-4-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 25%; position: relative; } .s-ratio-4-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .s-ratio-4-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 75%; position: relative; } .s-ratio-4-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .s-ratio-16-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 56.25%; position: relative; } .s-ratio-9-16 { width: 100%; height: 0; overflow: hidden; padding-bottom: 177.77778%; position: relative; } .s-ratio-21-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 42.85714%; position: relative; } .s-shadow { box-shadow: 0 0 1rem #CCC; } .s-shadow-bottom { box-shadow: 0 0.5rem 1rem -0.5rem #CCC; } .s-shadow-top { box-shadow: 0 -0.5rem 1rem -0.5rem #CCC; } .s-shadow-right { box-shadow: 0.5rem 0 1rem -0.5rem #CCC; } .s-shadow-left { box-shadow: -0.5rem 0 1rem -0.5rem #CCC; } .s-shadow-none { box-shadow: none; } .s-fxn { -ms-flex: none; flex: none; } .s-fxw { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .s-fxg { -ms-flex-positive: 1; flex-grow: 1; } .s-opacity-1 { opacity: 0.1; } .s-opacity-2 { opacity: 0.2; } .s-opacity-3 { opacity: 0.3; } .s-opacity-4 { opacity: 0.4; } .s-opacity-5 { opacity: 0.5; } .s-opacity-6 { opacity: 0.6; } .s-opacity-7 { opacity: 0.7; } .s-opacity-8 { opacity: 0.8; } .s-opacity-9 { opacity: 0.9; } .s-opacity-10 { opacity: 1; } @media screen and (min-width: 640px) { .m-border { border: 1px solid var(--border-color); } .m-border-none { border: none; } .m-radius { border-radius: var(--border-radius); } .m-border-top { border-top: 1px solid var(--border-color); } .m-border-none { border-top: none; } .m-border-right { border-right: 1px solid var(--border-color); } .m-border-none { border-right: none; } .m-border-bottom { border-bottom: 1px solid var(--border-color); } .m-border-none { border-bottom: none; } .m-border-left { border-left: 1px solid var(--border-color); } .m-border-none { border-left: none; } .m-radius-tl { border-top-left-radius: var(--border-radius); } .m-radius-tr { border-top-right-radius: var(--border-radius); } .m-radius-bl { border-bottom-left-radius: var(--border-radius); } .m-radius-br { border-bottom-right-radius: var(--border-radius); } .m-radius-0 { border-radius: 0; } .m-radius-1 { border-radius: 0.5rem; } .m-radius-2 { border-radius: 1rem; } .m-radius-3 { border-radius: 1.5rem; } .m-radius-4 { border-radius: 2rem; } .m-radius-05 { border-radius: 0.25rem; } .m-radius-tl-0 { border-top-left-radius: 0; } .m-radius-tl-1 { border-top-left-radius: 0.5rem; } .m-radius-tl-2 { border-top-left-radius: 1rem; } .m-radius-tl-3 { border-top-left-radius: 1.5rem; } .m-radius-tl-4 { border-top-left-radius: 2rem; } .m-radius-tl-05 { border-top-left-radius: 0.25rem; } .m-radius-tr-0 { border-top-right-radius: 0; } .m-radius-tr-1 { border-top-right-radius: 0.5rem; } .m-radius-tr-2 { border-top-right-radius: 1rem; } .m-radius-tr-3 { border-top-right-radius: 1.5rem; } .m-radius-tr-4 { border-top-right-radius: 2rem; } .m-radius-tr-05 { border-top-right-radius: 0.25rem; } .m-radius-bl-0 { border-bottom-left-radius: 0; } .m-radius-bl-1 { border-bottom-left-radius: 0.5rem; } .m-radius-bl-2 { border-bottom-left-radius: 1rem; } .m-radius-bl-3 { border-bottom-left-radius: 1.5rem; } .m-radius-bl-4 { border-bottom-left-radius: 2rem; } .m-radius-bl-05 { border-bottom-left-radius: 0.25rem; } .m-radius-br-0 { border-bottom-right-radius: 0; } .m-radius-br-1 { border-bottom-right-radius: 0.5rem; } .m-radius-br-2 { border-bottom-right-radius: 1rem; } .m-radius-br-3 { border-bottom-right-radius: 1.5rem; } .m-radius-br-4 { border-bottom-right-radius: 2rem; } .m-radius-br-05 { border-bottom-right-radius: 0.25rem; } .m-radius-tl-none { border-top-left-radius: 0; } .m-radius-tr-none { border-top-right-radius: 0; } .m-radius-bl-none { border-bottom-left-radius: 0; } .m-radius-br-none { border-bottom-right-radius: 0; } .m-radius-none { border-radius: none; } .m-bg-blue { background-color: var(--color); } .m-bg-white { background-color: #FFF; } .m-bg-grey { background-color: var(--light-bg); } .m-bg-none { background-color: transparent; } .m-ratio-1-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .m-ratio-1-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .m-ratio-1-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 300%; position: relative; } .m-ratio-1-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 400%; position: relative; } .m-ratio-2-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .m-ratio-2-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .m-ratio-2-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 150%; position: relative; } .m-ratio-2-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .m-ratio-3-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 33.33333%; position: relative; } .m-ratio-3-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 66.66667%; position: relative; } .m-ratio-3-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .m-ratio-3-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 133.33333%; position: relative; } .m-ratio-4-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 25%; position: relative; } .m-ratio-4-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .m-ratio-4-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 75%; position: relative; } .m-ratio-4-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .m-ratio-16-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 56.25%; position: relative; } .m-ratio-9-16 { width: 100%; height: 0; overflow: hidden; padding-bottom: 177.77778%; position: relative; } .m-ratio-21-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 42.85714%; position: relative; } .m-shadow { box-shadow: 0 0 1rem #CCC; } .m-shadow-bottom { box-shadow: 0 0.5rem 1rem -0.5rem #CCC; } .m-shadow-top { box-shadow: 0 -0.5rem 1rem -0.5rem #CCC; } .m-shadow-right { box-shadow: 0.5rem 0 1rem -0.5rem #CCC; } .m-shadow-left { box-shadow: -0.5rem 0 1rem -0.5rem #CCC; } .m-shadow-none { box-shadow: none; } .m-fxn { -ms-flex: none; flex: none; } .m-fxw { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .m-fxg { -ms-flex-positive: 1; flex-grow: 1; } .m-opacity-1 { opacity: 0.1; } .m-opacity-2 { opacity: 0.2; } .m-opacity-3 { opacity: 0.3; } .m-opacity-4 { opacity: 0.4; } .m-opacity-5 { opacity: 0.5; } .m-opacity-6 { opacity: 0.6; } .m-opacity-7 { opacity: 0.7; } .m-opacity-8 { opacity: 0.8; } .m-opacity-9 { opacity: 0.9; } .m-opacity-10 { opacity: 1; } } @media screen and (min-width: 1024px) { .l-border { border: 1px solid var(--border-color); } .l-border-none { border: none; } .l-radius { border-radius: var(--border-radius); } .l-border-top { border-top: 1px solid var(--border-color); } .l-border-none { border-top: none; } .l-border-right { border-right: 1px solid var(--border-color); } .l-border-none { border-right: none; } .l-border-bottom { border-bottom: 1px solid var(--border-color); } .l-border-none { border-bottom: none; } .l-border-left { border-left: 1px solid var(--border-color); } .l-border-none { border-left: none; } .l-radius-tl { border-top-left-radius: var(--border-radius); } .l-radius-tr { border-top-right-radius: var(--border-radius); } .l-radius-bl { border-bottom-left-radius: var(--border-radius); } .l-radius-br { border-bottom-right-radius: var(--border-radius); } .l-radius-0 { border-radius: 0; } .l-radius-1 { border-radius: 0.5rem; } .l-radius-2 { border-radius: 1rem; } .l-radius-3 { border-radius: 1.5rem; } .l-radius-4 { border-radius: 2rem; } .l-radius-05 { border-radius: 0.25rem; } .l-radius-tl-0 { border-top-left-radius: 0; } .l-radius-tl-1 { border-top-left-radius: 0.5rem; } .l-radius-tl-2 { border-top-left-radius: 1rem; } .l-radius-tl-3 { border-top-left-radius: 1.5rem; } .l-radius-tl-4 { border-top-left-radius: 2rem; } .l-radius-tl-05 { border-top-left-radius: 0.25rem; } .l-radius-tr-0 { border-top-right-radius: 0; } .l-radius-tr-1 { border-top-right-radius: 0.5rem; } .l-radius-tr-2 { border-top-right-radius: 1rem; } .l-radius-tr-3 { border-top-right-radius: 1.5rem; } .l-radius-tr-4 { border-top-right-radius: 2rem; } .l-radius-tr-05 { border-top-right-radius: 0.25rem; } .l-radius-bl-0 { border-bottom-left-radius: 0; } .l-radius-bl-1 { border-bottom-left-radius: 0.5rem; } .l-radius-bl-2 { border-bottom-left-radius: 1rem; } .l-radius-bl-3 { border-bottom-left-radius: 1.5rem; } .l-radius-bl-4 { border-bottom-left-radius: 2rem; } .l-radius-bl-05 { border-bottom-left-radius: 0.25rem; } .l-radius-br-0 { border-bottom-right-radius: 0; } .l-radius-br-1 { border-bottom-right-radius: 0.5rem; } .l-radius-br-2 { border-bottom-right-radius: 1rem; } .l-radius-br-3 { border-bottom-right-radius: 1.5rem; } .l-radius-br-4 { border-bottom-right-radius: 2rem; } .l-radius-br-05 { border-bottom-right-radius: 0.25rem; } .l-radius-tl-none { border-top-left-radius: 0; } .l-radius-tr-none { border-top-right-radius: 0; } .l-radius-bl-none { border-bottom-left-radius: 0; } .l-radius-br-none { border-bottom-right-radius: 0; } .l-radius-none { border-radius: none; } .l-bg-blue { background-color: var(--color); } .l-bg-white { background-color: #FFF; } .l-bg-grey { background-color: var(--light-bg); } .l-bg-none { background-color: transparent; } .l-ratio-1-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .l-ratio-1-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .l-ratio-1-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 300%; position: relative; } .l-ratio-1-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 400%; position: relative; } .l-ratio-2-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .l-ratio-2-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .l-ratio-2-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 150%; position: relative; } .l-ratio-2-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .l-ratio-3-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 33.33333%; position: relative; } .l-ratio-3-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 66.66667%; position: relative; } .l-ratio-3-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .l-ratio-3-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 133.33333%; position: relative; } .l-ratio-4-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 25%; position: relative; } .l-ratio-4-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .l-ratio-4-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 75%; position: relative; } .l-ratio-4-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .l-ratio-16-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 56.25%; position: relative; } .l-ratio-9-16 { width: 100%; height: 0; overflow: hidden; padding-bottom: 177.77778%; position: relative; } .l-ratio-21-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 42.85714%; position: relative; } .l-shadow { box-shadow: 0 0 1rem #CCC; } .l-shadow-bottom { box-shadow: 0 0.5rem 1rem -0.5rem #CCC; } .l-shadow-top { box-shadow: 0 -0.5rem 1rem -0.5rem #CCC; } .l-shadow-right { box-shadow: 0.5rem 0 1rem -0.5rem #CCC; } .l-shadow-left { box-shadow: -0.5rem 0 1rem -0.5rem #CCC; } .l-shadow-none { box-shadow: none; } .l-fxn { -ms-flex: none; flex: none; } .l-fxw { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .l-fxg { -ms-flex-positive: 1; flex-grow: 1; } .l-opacity-1 { opacity: 0.1; } .l-opacity-2 { opacity: 0.2; } .l-opacity-3 { opacity: 0.3; } .l-opacity-4 { opacity: 0.4; } .l-opacity-5 { opacity: 0.5; } .l-opacity-6 { opacity: 0.6; } .l-opacity-7 { opacity: 0.7; } .l-opacity-8 { opacity: 0.8; } .l-opacity-9 { opacity: 0.9; } .l-opacity-10 { opacity: 1; } } @media screen and (min-width: 1024px) { .lg-border { border: 1px solid var(--border-color); } .lg-border-none { border: none; } .lg-radius { border-radius: var(--border-radius); } .lg-border-top { border-top: 1px solid var(--border-color); } .lg-border-none { border-top: none; } .lg-border-right { border-right: 1px solid var(--border-color); } .lg-border-none { border-right: none; } .lg-border-bottom { border-bottom: 1px solid var(--border-color); } .lg-border-none { border-bottom: none; } .lg-border-left { border-left: 1px solid var(--border-color); } .lg-border-none { border-left: none; } .lg-radius-tl { border-top-left-radius: var(--border-radius); } .lg-radius-tr { border-top-right-radius: var(--border-radius); } .lg-radius-bl { border-bottom-left-radius: var(--border-radius); } .lg-radius-br { border-bottom-right-radius: var(--border-radius); } .lg-radius-0 { border-radius: 0; } .lg-radius-1 { border-radius: 0.5rem; } .lg-radius-2 { border-radius: 1rem; } .lg-radius-3 { border-radius: 1.5rem; } .lg-radius-4 { border-radius: 2rem; } .lg-radius-05 { border-radius: 0.25rem; } .lg-radius-tl-0 { border-top-left-radius: 0; } .lg-radius-tl-1 { border-top-left-radius: 0.5rem; } .lg-radius-tl-2 { border-top-left-radius: 1rem; } .lg-radius-tl-3 { border-top-left-radius: 1.5rem; } .lg-radius-tl-4 { border-top-left-radius: 2rem; } .lg-radius-tl-05 { border-top-left-radius: 0.25rem; } .lg-radius-tr-0 { border-top-right-radius: 0; } .lg-radius-tr-1 { border-top-right-radius: 0.5rem; } .lg-radius-tr-2 { border-top-right-radius: 1rem; } .lg-radius-tr-3 { border-top-right-radius: 1.5rem; } .lg-radius-tr-4 { border-top-right-radius: 2rem; } .lg-radius-tr-05 { border-top-right-radius: 0.25rem; } .lg-radius-bl-0 { border-bottom-left-radius: 0; } .lg-radius-bl-1 { border-bottom-left-radius: 0.5rem; } .lg-radius-bl-2 { border-bottom-left-radius: 1rem; } .lg-radius-bl-3 { border-bottom-left-radius: 1.5rem; } .lg-radius-bl-4 { border-bottom-left-radius: 2rem; } .lg-radius-bl-05 { border-bottom-left-radius: 0.25rem; } .lg-radius-br-0 { border-bottom-right-radius: 0; } .lg-radius-br-1 { border-bottom-right-radius: 0.5rem; } .lg-radius-br-2 { border-bottom-right-radius: 1rem; } .lg-radius-br-3 { border-bottom-right-radius: 1.5rem; } .lg-radius-br-4 { border-bottom-right-radius: 2rem; } .lg-radius-br-05 { border-bottom-right-radius: 0.25rem; } .lg-radius-tl-none { border-top-left-radius: 0; } .lg-radius-tr-none { border-top-right-radius: 0; } .lg-radius-bl-none { border-bottom-left-radius: 0; } .lg-radius-br-none { border-bottom-right-radius: 0; } .lg-radius-none { border-radius: none; } .lg-bg-blue { background-color: var(--color); } .lg-bg-white { background-color: #FFF; } .lg-bg-grey { background-color: var(--light-bg); } .lg-bg-none { background-color: transparent; } .lg-ratio-1-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .lg-ratio-1-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .lg-ratio-1-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 300%; position: relative; } .lg-ratio-1-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 400%; position: relative; } .lg-ratio-2-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .lg-ratio-2-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .lg-ratio-2-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 150%; position: relative; } .lg-ratio-2-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .lg-ratio-3-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 33.33333%; position: relative; } .lg-ratio-3-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 66.66667%; position: relative; } .lg-ratio-3-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .lg-ratio-3-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 133.33333%; position: relative; } .lg-ratio-4-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 25%; position: relative; } .lg-ratio-4-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .lg-ratio-4-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 75%; position: relative; } .lg-ratio-4-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .lg-ratio-16-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 56.25%; position: relative; } .lg-ratio-9-16 { width: 100%; height: 0; overflow: hidden; padding-bottom: 177.77778%; position: relative; } .lg-ratio-21-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 42.85714%; position: relative; } .lg-shadow { box-shadow: 0 0 1rem #CCC; } .lg-shadow-bottom { box-shadow: 0 0.5rem 1rem -0.5rem #CCC; } .lg-shadow-top { box-shadow: 0 -0.5rem 1rem -0.5rem #CCC; } .lg-shadow-right { box-shadow: 0.5rem 0 1rem -0.5rem #CCC; } .lg-shadow-left { box-shadow: -0.5rem 0 1rem -0.5rem #CCC; } .lg-shadow-none { box-shadow: none; } .lg-fxn { -ms-flex: none; flex: none; } .lg-fxw { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .lg-fxg { -ms-flex-positive: 1; flex-grow: 1; } .lg-opacity-1 { opacity: 0.1; } .lg-opacity-2 { opacity: 0.2; } .lg-opacity-3 { opacity: 0.3; } .lg-opacity-4 { opacity: 0.4; } .lg-opacity-5 { opacity: 0.5; } .lg-opacity-6 { opacity: 0.6; } .lg-opacity-7 { opacity: 0.7; } .lg-opacity-8 { opacity: 0.8; } .lg-opacity-9 { opacity: 0.9; } .lg-opacity-10 { opacity: 1; } } @media screen and (min-width: 1440px) { .xl-border { border: 1px solid var(--border-color); } .xl-border-none { border: none; } .xl-radius { border-radius: var(--border-radius); } .xl-border-top { border-top: 1px solid var(--border-color); } .xl-border-none { border-top: none; } .xl-border-right { border-right: 1px solid var(--border-color); } .xl-border-none { border-right: none; } .xl-border-bottom { border-bottom: 1px solid var(--border-color); } .xl-border-none { border-bottom: none; } .xl-border-left { border-left: 1px solid var(--border-color); } .xl-border-none { border-left: none; } .xl-radius-tl { border-top-left-radius: var(--border-radius); } .xl-radius-tr { border-top-right-radius: var(--border-radius); } .xl-radius-bl { border-bottom-left-radius: var(--border-radius); } .xl-radius-br { border-bottom-right-radius: var(--border-radius); } .xl-radius-0 { border-radius: 0; } .xl-radius-1 { border-radius: 0.5rem; } .xl-radius-2 { border-radius: 1rem; } .xl-radius-3 { border-radius: 1.5rem; } .xl-radius-4 { border-radius: 2rem; } .xl-radius-05 { border-radius: 0.25rem; } .xl-radius-tl-0 { border-top-left-radius: 0; } .xl-radius-tl-1 { border-top-left-radius: 0.5rem; } .xl-radius-tl-2 { border-top-left-radius: 1rem; } .xl-radius-tl-3 { border-top-left-radius: 1.5rem; } .xl-radius-tl-4 { border-top-left-radius: 2rem; } .xl-radius-tl-05 { border-top-left-radius: 0.25rem; } .xl-radius-tr-0 { border-top-right-radius: 0; } .xl-radius-tr-1 { border-top-right-radius: 0.5rem; } .xl-radius-tr-2 { border-top-right-radius: 1rem; } .xl-radius-tr-3 { border-top-right-radius: 1.5rem; } .xl-radius-tr-4 { border-top-right-radius: 2rem; } .xl-radius-tr-05 { border-top-right-radius: 0.25rem; } .xl-radius-bl-0 { border-bottom-left-radius: 0; } .xl-radius-bl-1 { border-bottom-left-radius: 0.5rem; } .xl-radius-bl-2 { border-bottom-left-radius: 1rem; } .xl-radius-bl-3 { border-bottom-left-radius: 1.5rem; } .xl-radius-bl-4 { border-bottom-left-radius: 2rem; } .xl-radius-bl-05 { border-bottom-left-radius: 0.25rem; } .xl-radius-br-0 { border-bottom-right-radius: 0; } .xl-radius-br-1 { border-bottom-right-radius: 0.5rem; } .xl-radius-br-2 { border-bottom-right-radius: 1rem; } .xl-radius-br-3 { border-bottom-right-radius: 1.5rem; } .xl-radius-br-4 { border-bottom-right-radius: 2rem; } .xl-radius-br-05 { border-bottom-right-radius: 0.25rem; } .xl-radius-tl-none { border-top-left-radius: 0; } .xl-radius-tr-none { border-top-right-radius: 0; } .xl-radius-bl-none { border-bottom-left-radius: 0; } .xl-radius-br-none { border-bottom-right-radius: 0; } .xl-radius-none { border-radius: none; } .xl-bg-blue { background-color: var(--color); } .xl-bg-white { background-color: #FFF; } .xl-bg-grey { background-color: var(--light-bg); } .xl-bg-none { background-color: transparent; } .xl-ratio-1-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .xl-ratio-1-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .xl-ratio-1-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 300%; position: relative; } .xl-ratio-1-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 400%; position: relative; } .xl-ratio-2-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .xl-ratio-2-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .xl-ratio-2-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 150%; position: relative; } .xl-ratio-2-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 200%; position: relative; } .xl-ratio-3-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 33.33333%; position: relative; } .xl-ratio-3-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 66.66667%; position: relative; } .xl-ratio-3-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .xl-ratio-3-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 133.33333%; position: relative; } .xl-ratio-4-1 { width: 100%; height: 0; overflow: hidden; padding-bottom: 25%; position: relative; } .xl-ratio-4-2 { width: 100%; height: 0; overflow: hidden; padding-bottom: 50%; position: relative; } .xl-ratio-4-3 { width: 100%; height: 0; overflow: hidden; padding-bottom: 75%; position: relative; } .xl-ratio-4-4 { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .xl-ratio-16-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 56.25%; position: relative; } .xl-ratio-9-16 { width: 100%; height: 0; overflow: hidden; padding-bottom: 177.77778%; position: relative; } .xl-ratio-21-9 { width: 100%; height: 0; overflow: hidden; padding-bottom: 42.85714%; position: relative; } .xl-shadow { box-shadow: 0 0 1rem #CCC; } .xl-shadow-bottom { box-shadow: 0 0.5rem 1rem -0.5rem #CCC; } .xl-shadow-top { box-shadow: 0 -0.5rem 1rem -0.5rem #CCC; } .xl-shadow-right { box-shadow: 0.5rem 0 1rem -0.5rem #CCC; } .xl-shadow-left { box-shadow: -0.5rem 0 1rem -0.5rem #CCC; } .xl-shadow-none { box-shadow: none; } .xl-fxn { -ms-flex: none; flex: none; } .xl-fxw { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .xl-fxg { -ms-flex-positive: 1; flex-grow: 1; } .xl-opacity-1 { opacity: 0.1; } .xl-opacity-2 { opacity: 0.2; } .xl-opacity-3 { opacity: 0.3; } .xl-opacity-4 { opacity: 0.4; } .xl-opacity-5 { opacity: 0.5; } .xl-opacity-6 { opacity: 0.6; } .xl-opacity-7 { opacity: 0.7; } .xl-opacity-8 { opacity: 0.8; } .xl-opacity-9 { opacity: 0.9; } .xl-opacity-10 { opacity: 1; } } .circle, .square { width: 100%; height: 0; overflow: hidden; padding-bottom: 100%; position: relative; } .circle { border-radius: 50%; } .img-container { position: relative; } .img-container img { width: 100%; height: 100%; position: absolute; top: 0; left: 0; -o-object-fit: cover; object-fit: cover; } .ed-video { height: 0; overflow: hidden; padding-bottom: 56.25%; position: relative; } .ed-video > iframe, .ed-video > video, .ed-video > .video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* | Mixin para crear cuadriculas | | $gridItemSelector: nombre del selector CSS de cada item de la cuadricula | $listColumns: | * lista de numeros de columnas en cada breakpoint (separados por espacios). Ej: 1 2 3 4 | * el numero de columnas del ultimo breakpoint se hereda a breakpoints superiores | $gutter: separación entre cada item de la cuadricula (opcional) | */ /* Mixins de alineacion con compatibilidad hacia atras*/ :root { --color: #007BDF; --color-alt: #006DC6; --border-color: #DFE0E0; --light-bg: #F0F0F0; --border-radius: 0.25rem; --vertical-block-space: 1rem; --vertical-content-space: 1rem; --gap: 1rem; --max-width: 1200px; } @media screen and (min-width: 1024px) { :root { --vertical-block-space: 2rem; --gap: 2rem; } } ================================================ FILE: src/data/casos-de-exito.json ================================================ { "casos": [ { "img": "/assets/img/ed-team-web.jpg", "title": "EDteam", "subtitle": "Web oficial de EDteam", "description": "Plataforma dedicada a la enseñanza de programación, diseño web y todo lo referente al mundo de desarrollo web.", "url": "https://ed.team/", "user": "no", "imageUser": "", "linkUser": "" }, { "img": "/assets/img/la-canasta.jpg", "title": "Las Canastas", "subtitle": "Restaurant", "description": "Restaurant de parrilldas y pollos ubicada en Perú con diversas sucursales al rededor de todo el país.", "url": "https://lascanastas.com/", "user": "Jose Álvarado", "imageUser": "/assets/img/jose-alvarado.png", "linkUser": "https://twitter.com/josealvaradoo" }, { "img": "/assets/img/caexco.jpg", "title": "Caexco", "subtitle": "Tienda en línea", "description": "Empresa dedicada a la comercialización de equipo agrícola, repuestos y accesorios. ", "url": "http://www.caexcobolivia.com/", "user": "Beto Quiroga", "imageUser": "/assets/img/beto-quiroga.jpg", "linkUser": "https://www.facebook.com/diterterrones" }, { "img": "/assets/img/importmecardo.jpg", "title": "Importmercado", "subtitle": "Venta de maquinaría metalmecánica", "description": "Empresa dedicada a la importación y comercialización de maquinaria metalmecánica y accesorios.", "url": "http://importmercado.com/", "user": "Beto Quiroga", "imageUser": "/assets/img/beto-quiroga.jpg", "linkUser": "https://www.facebook.com/diterterrones" }, { "img": "/assets/img/capilla-cocha.jpg", "title": "Capilla de Cochabamba", "subtitle": "Centro educativo cristiano bilingüe", "description": "Unidad Educativa fundamentada en sólidos principios bíblicos con una alta calidad en la formación académica bilingüe.", "url": "http://colegiocapillacbba.edu.bo/", "user": "Beto Quiroga", "imageUser": "/assets/img/beto-quiroga.jpg", "linkUser": "https://www.facebook.com/diterterrones" }, { "img": "/assets/img/aremisse.jpg", "title": "Aremisse Lima", "subtitle": "Transporte corporativo, turístico y personal", "description": "Empresa peruana dedicada al transporte de personal, transporte ejecutivo o corporativo y transporte turístico.", "url": "https://aremisse.com/", "user": "Diter Terrones", "imageUser": "/assets/img/diter-terrones.jpeg", "linkUser": "https://www.facebook.com/diterterrones" }, { "img": "/assets/img/wizardgva-web.png", "title": "Wizardgva", "subtitle": "Agencia de soluciones TI", "description": "Wizardgva nace del sueño de un joven por brindar soluciones de hardware rápidas y accesibles", "url": "https://wizardgva.com/", "user": "Danny Restrepo", "imageUser": "/assets/img/wizardgva-user.png", "linkUser": "https://www.linkedin.com/in/restrepodanny/" }, { "img": "/assets/img/alkila-web.png", "title": "Alkila", "subtitle": "Empresa de reta de autos", "description": "Alkila es una empresa Peruana dedicada al rubro de alquiler de vehículos.", "url": "http://alkilarentacar.com", "user": "Edwing Romero", "imageUser": "/assets/img/alkila-user.png", "linkUser": "https://www.linkedin.com/in/edwingromero/" }, { "img": "/assets/img/gema-web.png", "title": "Agencia Gema", "subtitle": "Agencia de eventos", "description": "En Gema, son especialistas en el servicio de banquetes y renta de equipo para todo tipo de eventos", "url": "http://agenciagema.com/", "user": "no", "imageUser": "", "linkUser": "" }, { "img": "/assets/img/robert-web.png", "title": "Portafolio - Robert", "subtitle": "Portafolio", "description": "Esta web es el portfolio de Robert Huamán Cáceres, estudiante en Ingeniería informática y sistemas de la Universidad Nacional Micaela Bastidas de Apurímac - Perú", "url": "https://pepobj.github.io/dist/", "user": "Robert BJ Huamán", "imageUser": "/assets/img/robert-user.png", "linkUser": "https://www.linkedin.com/in/robert-bj-huaman/" }, { "img": "/assets/img/militaria-web.png", "title": "Militaria", "subtitle": "Empresa", "description": "Empresa peruana dedicada a la exportación de indumentaria y accesorios para uso militar.", "url": "http://militaria.com.pe/", "user": "Edwing Romero", "imageUser": "/assets/img/alkila-user.png", "linkUser": "https://www.linkedin.com/in/robert-bj-huaman/" } ] } ================================================ FILE: src/js/index.js ================================================ // import menu from './modules/menu' // import migrate from './modules/migrate' // // export default { menu, migrate } import activeMenu from './modules/activeMenu' import openMenu from './modules/menu' import { getScrollBarWidth } from './modules/scrollBarWIdth' activeMenu('main-menu') activeMenu('vertical-menu') openMenu('main-menu','main-menu-toggle') openMenu('vertical-menu','vertical-menu-toggle') /* PrismJS 1.9.0 http://prismjs.com/download.html?themes=prism-okaidia&languages=markup+css+clike+javascript+scss&plugins=toolbar+show-language */ var _self = 'undefined' != typeof window ? window : 'undefined' != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope ? self : {}, Prism = function () { var e = /\blang(?:uage)?-(\w+)\b/i, t = 0, n = _self.Prism = { manual: _self.Prism && _self.Prism.manual, disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, util: { encode: function (e) { return e instanceof r ? new r(e.type, n.util.encode(e.content), e.alias) : 'Array' === n.util.type(e) ? e.map(n.util.encode) : e.replace(/&/g, '&').replace(/ e.length) return if (!(w instanceof s)) { h.lastIndex = 0 var _ = h.exec(w), P = 1 if (!_ && m && b != t.length - 1) { if (h.lastIndex = k, _ = h.exec(e), !_) break for (var A = _.index + (d ? _[1].length : 0), j = _.index + _[0].length, x = b, O = k, N = t.length; N > x && (j > O || !t[x].type && !t[x - 1].greedy); ++x) O += t[x].length, A >= O && (++b, k = O) if (t[b] instanceof s || t[x - 1].greedy) continue P = x - b, w = e.slice(k, O), _.index -= k } if (_) { d && (p = _[1].length) var A = _.index + p, _ = _[0].slice(p), j = A + _.length, S = w.slice(0, A), C = w.slice(j), M = [b, P] S && (++b, k += S.length, M.push(S)) var E = new s(g, f ? n.tokenize(_, f) : _, y, _, m) if (M.push(E), C && M.push(C), Array.prototype.splice.apply(t, M), 1 != P && n.matchGrammar(e, t, r, b, k, !0, g), i) break } else if (i) break } } } } }, tokenize: function (e, t) { var r = [e], a = t.rest if (a) { for (var l in a) t[l] = a[l] delete t.rest } return n.matchGrammar(e, r, t, 0, 0, !1), r }, hooks: { all: {}, add: function (e, t) { var r = n.hooks.all r[e] = r[e] || [], r[e].push(t) }, run: function (e, t) { var r = n.hooks.all[e] if (r && r.length) for (var a, l = 0; a = r[l++];) a(t) } } }, r = n.Token = function (e, t, n, r, a) { this.type = e, this.content = t, this.alias = n, this.length = 0 | (r || '').length, this.greedy = !!a } if (r.stringify = function (e, t, a) { if ('string' == typeof e) return e if ('Array' === n.util.type(e)) return e.map(function (n) { return r.stringify(n, t, e) }).join('') var l = { type: e.type, content: r.stringify(e.content, t, a), tag: 'span', classes: ['token', e.type], attributes: {}, language: t, parent: a } if (e.alias) { var i = 'Array' === n.util.type(e.alias) ? e.alias : [e.alias] Array.prototype.push.apply(l.classes, i) } n.hooks.run('wrap', l) var o = Object.keys(l.attributes).map(function (e) { return e + '="' + (l.attributes[e] || '').replace(/"/g, '"') + '"' }).join(' ') return '<' + l.tag + ' class="' + l.classes.join(' ') + '"' + (o ? ' ' + o : '') + '>' + l.content + '' }, !_self.document) return _self.addEventListener ? (n.disableWorkerMessageHandler || _self.addEventListener('message', function (e) { var t = JSON.parse(e.data), r = t.language, a = t.code, l = t.immediateClose _self.postMessage(n.highlight(a, n.languages[r], r)), l && _self.close() }, !1), _self.Prism) : _self.Prism var a = document.currentScript || [].slice.call(document.getElementsByTagName('script')).pop() return a && (n.filename = a.src, n.manual || a.hasAttribute('data-manual') || ('loading' !== document.readyState ? window.requestAnimationFrame ? window.requestAnimationFrame(n.highlightAll) : window.setTimeout(n.highlightAll, 16) : document.addEventListener('DOMContentLoaded', n.highlightAll))), _self.Prism }() 'undefined' != typeof module && module.exports && (module.exports = Prism), 'undefined' != typeof global && (global.Prism = Prism) Prism.languages.markup = { comment: //, prolog: /<\?[\s\S]+?\?>/, doctype: //i, cdata: //i, tag: { pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, inside: { tag: { pattern: /^<\/?[^\s>\/]+/i, inside: {punctuation: /^<\/?/, namespace: /^[^\s>\/:]+:/} }, 'attr-value': { pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, inside: { punctuation: [/^=/, { pattern: /(^|[^\\])["']/, lookbehind: !0 }] } }, punctuation: /\/?>/, 'attr-name': {pattern: /[^\s>\/]+/, inside: {namespace: /^[^\s>\/:]+:/}} } }, entity: /&#?[\da-z]{1,8};/i }, Prism.languages.markup.tag.inside['attr-value'].inside.entity = Prism.languages.markup.entity, Prism.hooks.add('wrap', function (a) { 'entity' === a.type && (a.attributes.title = a.content.replace(/&/, '&')) }), Prism.languages.xml = Prism.languages.markup, Prism.languages.html = Prism.languages.markup, Prism.languages.mathml = Prism.languages.markup, Prism.languages.svg = Prism.languages.markup Prism.languages.css = { comment: /\/\*[\s\S]*?\*\//, atrule: {pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, inside: {rule: /@[\w-]+/}}, url: /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, selector: /[^{}\s][^{};]*?(?=\s*\{)/, string: { pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, greedy: !0 }, property: /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, important: /\B!important\b/i, 'function': /[-a-z0-9]+(?=\()/i, punctuation: /[(){};:]/ }, Prism.languages.css.atrule.inside.rest = Prism.util.clone(Prism.languages.css), Prism.languages.markup && (Prism.languages.insertBefore('markup', 'tag', { style: { pattern: /()[\s\S]*?(?=<\/style>)/i, lookbehind: !0, inside: Prism.languages.css, alias: 'language-css', greedy: !0 } }), Prism.languages.insertBefore('inside', 'attr-value', { 'style-attr': { pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, inside: { 'attr-name': { pattern: /^\s*style/i, inside: Prism.languages.markup.tag.inside }, punctuation: /^\s*=\s*['"]|['"]\s*$/, 'attr-value': {pattern: /.+/i, inside: Prism.languages.css} }, alias: 'language-css' } }, Prism.languages.markup.tag)) Prism.languages.clike = { comment: [{ pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, lookbehind: !0 }, {pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0}], string: { pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, greedy: !0 }, 'class-name': { pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, lookbehind: !0, inside: {punctuation: /[.\\]/} }, keyword: /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, 'boolean': /\b(?:true|false)\b/, 'function': /[a-z0-9_]+(?=\()/i, number: /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, operator: /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, punctuation: /[{}[\];(),.:]/ } Prism.languages.javascript = Prism.languages.extend('clike', { keyword: /\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/, number: /\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/, 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, operator: /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ }), Prism.languages.insertBefore('javascript', 'keyword', { regex: { pattern: /(^|[^\/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, lookbehind: !0, greedy: !0 }, 'function-variable': { pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, alias: 'function' } }), Prism.languages.insertBefore('javascript', 'string', { 'template-string': { pattern: /`(?:\\[\s\S]|[^\\`])*`/, greedy: !0, inside: { interpolation: { pattern: /\$\{[^}]+\}/, inside: { 'interpolation-punctuation': { pattern: /^\$\{|\}$/, alias: 'punctuation' }, rest: Prism.languages.javascript } }, string: /[\s\S]+/ } } }), Prism.languages.markup && Prism.languages.insertBefore('markup', 'tag', { script: { pattern: /()[\s\S]*?(?=<\/script>)/i, lookbehind: !0, inside: Prism.languages.javascript, alias: 'language-javascript', greedy: !0 } }), Prism.languages.js = Prism.languages.javascript Prism.languages.scss = Prism.languages.extend('css', { comment: { pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/, lookbehind: !0 }, atrule: { pattern: /@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/, inside: {rule: /@[\w-]+/} }, url: /(?:[-a-z]+-)*url(?=\()/i, selector: { pattern: /(?=\S)[^@;{}()]?(?:[^@;{}()]|&|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m, inside: { parent: {pattern: /&/, alias: 'important'}, placeholder: /%[-\w]+/, variable: /\$[-\w]+|#\{\$[-\w]+\}/ } } }), Prism.languages.insertBefore('scss', 'atrule', { keyword: [/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i, { pattern: /( +)(?:from|through)(?= )/, lookbehind: !0 }] }), Prism.languages.scss.property = { pattern: /(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/i, inside: {variable: /\$[-\w]+|#\{\$[-\w]+\}/} }, Prism.languages.insertBefore('scss', 'important', {variable: /\$[-\w]+|#\{\$[-\w]+\}/}), Prism.languages.insertBefore('scss', 'function', { placeholder: { pattern: /%[-\w]+/, alias: 'selector' }, statement: {pattern: /\B!(?:default|optional)\b/i, alias: 'keyword'}, 'boolean': /\b(?:true|false)\b/, 'null': /\bnull\b/, operator: { pattern: /(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/, lookbehind: !0 } }), Prism.languages.scss.atrule.inside.rest = Prism.util.clone(Prism.languages.scss) !function () { if ('undefined' != typeof self && self.Prism && self.document) { var t = [], e = {}, n = function () { } Prism.plugins.toolbar = {} var a = Prism.plugins.toolbar.registerButton = function (n, a) { var o o = 'function' == typeof a ? a : function (t) { var e return 'function' == typeof a.onClick ? (e = document.createElement('button'), e.type = 'button', e.addEventListener('click', function () { a.onClick.call(this, t) })) : 'string' == typeof a.url ? (e = document.createElement('a'), e.href = a.url) : e = document.createElement('span'), e.textContent = a.text, e }, t.push(e[n] = o) }, o = Prism.plugins.toolbar.hook = function (a) { var o = a.element.parentNode if (o && /pre/i.test(o.nodeName) && !o.classList.contains('code-toolbar')) { o.classList.add('code-toolbar') var r = document.createElement('div') r.classList.add('toolbar'), document.body.hasAttribute('data-toolbar-order') && (t = document.body.getAttribute('data-toolbar-order').split(',').map(function (t) { return e[t] || n })), t.forEach(function (t) { var e = t(a) if (e) { var n = document.createElement('div') n.classList.add('toolbar-item'), n.appendChild(e), r.appendChild(n) } }), o.appendChild(r) } } a('label', function (t) { var e = t.element.parentNode if (e && /pre/i.test(e.nodeName) && e.hasAttribute('data-label')) { var n, a, o = e.getAttribute('data-label') try { a = document.querySelector('template#' + o) } catch (r) { } return a ? n = a.content : (e.hasAttribute('data-url') ? (n = document.createElement('a'), n.href = e.getAttribute('data-url')) : n = document.createElement('span'), n.textContent = o), n } }), Prism.hooks.add('complete', o) } }() !function () { if ('undefined' != typeof self && self.Prism && self.document) { if (!Prism.plugins.toolbar) return console.warn('Show Languages plugin loaded before Toolbar plugin.'), void 0 var e = { html: 'HTML', xml: 'XML', svg: 'SVG', mathml: 'MathML', css: 'CSS', clike: 'C-like', javascript: 'JavaScript', abap: 'ABAP', actionscript: 'ActionScript', apacheconf: 'Apache Configuration', apl: 'APL', applescript: 'AppleScript', asciidoc: 'AsciiDoc', asm6502: '6502 Assembly', aspnet: 'ASP.NET (C#)', autohotkey: 'AutoHotkey', autoit: 'AutoIt', basic: 'BASIC', csharp: 'C#', cpp: 'C++', coffeescript: 'CoffeeScript', 'css-extras': 'CSS Extras', django: 'Django/Jinja2', fsharp: 'F#', glsl: 'GLSL', graphql: 'GraphQL', http: 'HTTP', ichigojam: 'IchigoJam', inform7: 'Inform 7', json: 'JSON', latex: 'LaTeX', livescript: 'LiveScript', lolcode: 'LOLCODE', matlab: 'MATLAB', mel: 'MEL', n4js: 'N4JS', nasm: 'NASM', nginx: 'nginx', nsis: 'NSIS', objectivec: 'Objective-C', ocaml: 'OCaml', opencl: 'OpenCL', parigp: 'PARI/GP', php: 'PHP', 'php-extras': 'PHP Extras', powershell: 'PowerShell', properties: '.properties', protobuf: 'Protocol Buffers', jsx: 'React JSX', renpy: 'Ren\'py', rest: 'reST (reStructuredText)', sas: 'SAS', sass: 'Sass (Sass)', scss: 'Sass (Scss)', sql: 'SQL', typescript: 'TypeScript', vbnet: 'VB.Net', vhdl: 'VHDL', vim: 'vim', wiki: 'Wiki markup', xojo: 'Xojo (REALbasic)', yaml: 'YAML' } Prism.plugins.toolbar.registerButton('show-language', function (t) { var a = t.element.parentNode if (a && /pre/i.test(a.nodeName)) { var s = a.getAttribute('data-language') || e[t.language] || t.language.substring(0, 1).toUpperCase() + t.language.substring(1), i = document.createElement('span') return i.textContent = s, i } }) } }() ================================================ FILE: src/js/modules/activeMenu.js ================================================ const activeMenu = menuId => { const menu = document.getElementById(menuId) if(!menu) return const links = [...menu.querySelectorAll('a')] if (!links) return links.map( link => { const url = document.location.href if(link.href === url || link.href === url.slice(0,-1)) link.classList.add('active') }) } export default activeMenu ================================================ FILE: src/js/modules/menu.js ================================================ const openMenu = (navId, toggleId) => { const nav = document.getElementById(navId) const toggle = document.getElementById(toggleId) if (!nav || !toggle) return toggle.addEventListener('click', () => { nav.classList.toggle('show') toggle.classList.toggle('active') }) } export default openMenu ================================================ FILE: src/js/modules/scrollBarWIdth.js ================================================ const getScrollBarWidth = () => window.innerWidth - document.documentElement.getBoundingClientRect().width document.documentElement.style.setProperty('--scrollbar', `${getScrollBarWidth()}px`) export { getScrollBarWidth } ================================================ FILE: src/md/alineacion.md ================================================ # Alineación - [Alineación de contenido](#alineación-de-contenido) - [Alineación de bloques](#alineación-de-bloques) - [Ancho de los bloques](#ancho-de-los-bloques) - [Diferencia entre bloque y contenido](#diferencia-entre-bloque--y-contenido) - [Alineación de imágenes y elementos inline](#alineación-de-imágenes-y-elementos-inline) - [Sobre el ancho de las imágenes](#sobre-el-ancho-de-las-imágenes) --- Con EDgrid puede alinear elementos o su contenido en horizontal y vertical según el breakpoint. ## Alineación de contenido Use las clases `breakpoint-left`, `breakpoint-center` y `breakpoint-right` ```html

Hola mundo

Hola mundo

Hola mundo ``` Redimensione la ventana para ver
Hola mundo
Hola mundo
Hola mundo
## Alineación de bloques Use las clases `breakpoint-to-left`, `breakpoint-to-center`, `breakpoint-to-right` ```html

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

``` Ejemplo:

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

## Ancho de los bloques Use las clases `breakpoint-numero` donde `número` es un múltiplo de 5 desde 0 hasta 95. Asi que la clase `m-85` significa que el elemento tendrá 85% de ancho (de su contenedor) a partir de 640px. Combine estas clases con las de alineación para crear layouts avanzados. ```html

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

``` Ejemplo:

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

## Diferencia entre bloque y contenido Comprender la diferencia entre estos dos conceptos le ahorrará dolores de cabeza y sufrimiento. Se considera contenido a todo elemento inline y bloque a todo elemento de bloque (en la definición de HTML). Los elementos inline son mostrados por el navegador uno al lado del otro y con saltos de línea (cuando se agota el ancho). Los elementos de bloque fuerzan un salto de línea (salvo que lo modifiques con CSS). Por ejemplo, un párrafo `

` es un bloque, pero el texto dentro de él es contenido. Así que debe preguntarse, ¿quiero todo el bloque de párrafo a la derecha o solo quiero el texto alineado a la derecha? ```html

Este es un párrafo cuyo texto se ha alineado a la derecha

``` Ejemplo:

Este es un párrafo cuyo texto se ha alineado a la derecha

```html

Este es un párrafo alineado a la derecha (como bloque)

``` Ejemplo:

Este es un párrafo alineado a la derecha (como bloque)

```html

Este es un párrafo alineado al centro como bloque
y con el contenido alineado a la derecha.

``` Ejemplo:

Este es un párrafo alineado al centro como bloque
y con el contenido alineado a la derecha.

Comprender esta sutil diferencia es crucial para construir layouts. Por ejemplo, si quiere una imagen centrada, agregarle una clase `s-to-center` no hará nada porque las imágenes son inline (igual que los ``, ``, ``, ` ## Alineación de imágenes y elementos inline Para centrar una imágen puede aplicarle la clase `breakpoint-center` a su contenedor. Por ejemplo: ```html
```
Igual si quiere alinearla a la derecha o izquierda. Y lo mismo para cualquier elemento inline. Ahora bien, ¿qué sucede si quiero centrar directamente la imagen y no usar su contenedor? Use la clases `breakpoint-block-left`, `breakpoint-block-center` y `breakpoint-block-right` que agregan además un `display: block` al elemento inlne al que se apliquen y resuelven la alineación. ```html ```
Seguro pensará: si se necesita un `display: block` agréguenlo a los estilos en lugar de crear nuevas clases. El detalle es que el elemento podría tener `display:grid`, `display:flex`, `display: table` o `display: inline-block` y no se puede forzar un `display: block` porque destruiría su layout. ### Sobre el ancho de las imágenes Las imágenes de mapas de bits (jpg, png, gif, webp) poseen las propiedades `naturalHeight` y `naturalWidth` (accedes a ellas por JavaScript) que representan su ancho y alto original. La imagen del ejemplo anterior es de `200x200px` por eso la podemos centrar. Pero si fuera más grande habría que aplicarle además una clase para definir su ancho. En el caso de las imágenes svg, estas son vectoriales y carecen de dichas propiedades por lo que siempre ocuparan todo el espacio disponible en su contenedor. Ejemplo: Logotipo de EDgrid La podemos centrar con clases de ancho y de alineación de bloques ```html Logotipo de EDgrid ``` Logotipo de EDgrid ================================================ FILE: src/md/base.md ================================================ # Estilos base Los estilos base normalizan los elementos HTML para Responsive Web Design. ```scss *, *:before, *:after { box-sizing: border-box; } body { margin : 0; font-family : sans-serif; } img { max-width : 100%; height : auto; } a { text-decoration : none; &:hover { text-decoration : underline } } ``` ================================================ FILE: src/md/breakpoints.md ================================================ # Breakpoints - [Mobile first](#mobile-first) - [Cambiar los breakpoints (Sass)](#cambiar-los-breakpoints-sass) --- Los breakpoints son los puntos de quiebre donde el layout cambia. Estan definidos en el siguiente Sass map: ```scss $breakpoints : ( s : 0, // Todos los tamaños m : 40em, // ~ 640px lg : 64em, // ~ 1024px xl : 90em // ~1440px ) !default; ``` \* En versiones anteriores se usaba el breakpoint `l` que ahora se ha cambiado a `lg` para evitar confusión con la nomenclatura de SMACSS en la que `l` no significa `large` sino `layout`. Sin embargo, por compatibilidad hacia atrás, EDgrid reconoce aun el breakpoint `l` por lo que su proyecto no se verá afectado. Aunque recomendamos dejar de usarlo en el futuro. ## Mobile first EDgrid usa el patrón **Mobile first**, lo que significa que el estilo definido en un breakpoint será heredado en breakpoints superiores salvo que sea sobreescrito. En el siguiente ejemplo, el elemento medirá 50% de ancho (`s-50`) en todos los tamaños ya que fue definido en el breakpoint menor y no ha sido sobreescrito. ```html
Hola mundo
``` En cambio, en este ejemplo, medirá 50% en los breakpoints `s` y `m` pero en `l` y `xl` medirá 75%. ```html
Hola mundo
``` ## Cambiar los breakpoints (Sass) Si es usuario avanzado puede cambiar los breakpoints por los suyos. Puede cambiar el tamaño, el nombre o la cantidad. Solo debe declarar el Sass map `$breakpoints` antes de importar EDgrid. ```scss $breakpoints : ( small : 0, medium : 45em, large : 80em, xlarge : 90em, xxlarge : 120em ) @import "~ed-grid/ed-grid"; ``` ================================================ FILE: src/md/cards.md ================================================ # Cards - [Card básico](#card-basico) - [Card horizontal](#card-horizontal) --- Recuerde que EDgrid es una librería enfocada al RWD, por lo que no tiene componentes o estilos integrados por defecto, pero puede utilizar el prototipado y el prototipado avanzado para crear sus propios componentes. ## Card básico Ejemplo de tarjeta creada con el prototipado integrado:

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
```html

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
``` ## Card horizontal Este card se mostrará en formato horizontal en desktop y pasará a ser vertical en dispositivos móviles.

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
```html

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
``` ================================================ FILE: src/md/distribucion.md ================================================ # Distribución - [Order](#order) - [Alineación en vertical y horizontal de elementos hijos](#alineaci%C3%B3n-en-vertical-y-horizontal-de-elementos-hijos) - [Orientación](#orientaci%C3%B3n) --- ## Order Tanto en flexbox como en grid, la propiedad `order` permite definir la posición de un elemento en el layout. Por ejemplo, un elemento con `order: 1` aparecerá antes que uno con `order:2` aunque en el código HTML se encuentre después. Con EDgrid puede definir esta propiedad con las clases `breakpoint-order-numero`. Donde número va de `1` hasta la variable `max-grid-columns` (12 por defecto). Tenga en cuenta que asignarle `1` al order de un elemento no hará que aparezca en primer lugar ya que el valor predeterminado de todos es `0` (teoría de CSS). Por lo que debe agregarle las clases a todos los que quiera modificar. ```html
1
2
3
```
1
2
3
## Alineación en vertical y horizontal de elementos hijos Usando la teoría de flexbox, consideramos `main` como eje horizontal y `cross` como eje vertical. Con las clases `breakpoint-main-[start|center|end|justify|distribute]` y `breakpoint-cross-[start|center|end|baseline]` Puede alinear bloques y elementos hijos. ```html
Alexys Lozada
```
Alexys Lozada
Tenga en cuenta que los márgenes de los elementos pueden influir en estas alineaciones. Por ejemplo, el mismo código anterior pero con un párrafo en lugar de span (el párrafo tienen un margin-bottom que impide el centrado vertical). ```html

Alexys Lozada

```

Alexys Lozada

Lo resolvemos cambiando la etiqueta o anulando el margen. ```html

Alexys Lozada

```

Alexys Lozada

## Orientación Use las siguientes clases para definir la orientacion de los hijos de un elemento: * `breakpoint-row` De izquierda a derecha (predeterminado) * `breakpoint-column` De arriba hacia abajo * `breakpoint-row-reverse` De derecha a izquierda * `breakpoint-column-reverse` De abajo hacia arriba ```html
1
2
3
```
1
2
3
================================================ FILE: src/md/docs/botones.md ================================================ # Botones (Sass/CSS) Aunque ed-grid no pretende incluir elementos de UI (que se incluirán en el futuro proyecto ed-ui), por el momento incluye botones y menu pensando en el prototipado rápido. ## Uso con CSS (cssCore) Use la clase button. Puede añadir las clases round o radius para bordes redondeados. Para controlar el tamaño del botón, cambie manualmente el font-size por CSS. Si desea cambiar los colores, haga lo mismo en su CSS personalizado. ```markup Boton default Boton round Boton radius ``` Resultado Boton default Boton round Boton radius ## Uso con Sass Incluya el mixin button($bg-color,$front-color,$style) Sus parámetros (todos opcionales) son: * $bg-color: el color de fondo (#ddd por defecto) * $font-color: color del texto (#333 por defecto) * $style: estilo del boton (default por defecto, puede usar round o radius). ```markup Boton 1 Boton 2 Boton 3 ``` ```scss .selector1 { @include button(teal, white) } .selector2 { @include button(tomato, white, round) } .selector3 { @include button(#2e84e6, white, radius) } ``` Resultado Boton 1 Boton 2 Boton 3 ================================================ FILE: src/md/docs/flexbox.md ================================================ # Flexbox (CSS/Sass) El core de ed-grid está construido con flexbox, cero floats, display:table, inline-blocks u otros hacks extraños. Sin embargo, ed-grid ofrece muchas utilidades extra para aprovechar el poder de flexbox. Estas utilidades están dentro de los helpers de CSS ($cssHelpers : true) por lo que se recomienda activarlos aunque su flujo de trabajo sea con Sass. * Flexbox alinea los elementos respecto a dos ejes: main (horizontal por defecto) y cross (vertical por defecto). * En las siguientes instrucciones, la version css indicará la clase que debe añadirse al marcado html del contenedor * En la versión Sass se indicará el mixin que debe incluirse al contenedor * En la version CSS (cssCore), si desea indicar un breakpoint, inicie la clase con él, así `l-main-justify` `m-flex-reverse` `xl-cross-center` * Si no indica el breakpoint (cssHelpers), así `cross-end` ## Alineaciones en el eje principal ### Alinear los elementos a la izquierda y derecha #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass ******* .container { @include mainJustify } ``` ### Distribuir el espacio disponible alrededor de los elementos #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include mainDistribute } ``` ### Alinear los elementos al inicio del eje #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include mainStart } ``` ### Alinear los elementos al centro del eje #### Versión con css ```markup
1
2
3
``` #### Versión con Sass :markdown-it ```scss // version con Sass .container { @include mainCenter } ``` ### Alinea los elementos al final del eje #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include mainEnd } ``` ## Alineaciones en el eje secundario ### Al inicio del eje secundario #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include crossStart } ``` ### Al centro del eje secundario ##### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include crossCenter } ``` ### Al final del eje secundario ##### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include crossEnd } ``` ## Combinar alineaciones en ambos ejes Puede combinar alineaciones para el eje principal y secundario #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include mainCenter; @include crossCenter; } ``` ## Orientación de los ejes ### Reversa horizontal #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include flexReverse } ``` ### En columna (de arriba hacia abajo) #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss //version con Sass .container { @include flexReverse } ``` ### Columna en reversa (de abajo hacia arriba) #### Versión con css ```markup
1
2
3
``` #### Versión con Sass ```scss // version con Sass .container { @include flexColumnReverse } ``` ## Centrado absoluto El centrado absoluto se aplica a un container que tiene un solo hijo, el cual puede ser solo texto o un elemento html #### Versión con css ```markup
1
``` #### Versión con Sass ```scss // version con Sass .container { @include flexCenter } ``` ## Orden de elementos (solo CSS) A través de clases html con el formato `bp-order-n` siendo `bp` un breakpoint válido de ed-grid, y `n` un número entre 1 y 10 se puede controlar la aparicion de los elementos en el navegador. Recuerde que todos los elementos tienen por defecto el valor 0 para la propiedad `order`. Ejemplo ```markup
1
2
3
``` Esta característica no esta disponible para Sass porque en Sass basta escribir una linea de código en la media query requerida. Escribir los mixins consume más código que tan solo escribir manualmente el orden cuando sea necesario. ================================================ FILE: src/md/docs/menu.md ================================================ # Menus Con EDgrid puede crear menus responsive fácilmente. Basta con crear una lista `ul` y los enlaces dentro de cada `li`. ## Uso con clases CSS Añada la clase `ed-menu al` `ul` de nivel superior. Añada la clase `n-horizontal siendo` `n` el breakpoint (`s,m,l,xl`) desde el cual el menú será horizontal Añada alguna de las tres clases para cambiar el estilo: `default` `nav-bar` `button-bar` ```markup ``` ## Uso con Sass Si va a usar Sass, el marcado HTML debe ser el mismo. Incluya el mixin `edMenu($bp,$style)` al `ul` de nivel superior. Los parámetros son: * `$bp` breakpoint a partir del cual el menu será horizontal. Puede ser un breakpoint del core de ed-grid (`s,m,l,xl`) o un breakpoint válido en `px`, `em` o `rem`. * `$style` (opcional) puede ser `default`, `navBar` o `buttonBar` ```scss .main-menu { @include edMenu(l,navBar) } ``` ## Trabajo en desarrollo Este componente no está terminado y estos son algunos de los pendientes * En la version CSS, debería funcionar sin tener que añadir una clase para horizontal (en caso se requiera siempre vertical) * Scripts JS para activar y desactivar el menú en tamaños moviles * Scripts JS para activar y desactivar subniveles en tamaños moviles * Definir la personalizacion de colores para menu, items y links. ================================================ FILE: src/md/docs/offset.md ================================================ # Offset (Sass/CSS) Se conoce como offset al movimiento de un elemento respecto a la posición que se supone deberia tener. En ed-grid, offset no es más que un margin-left. La única ventaja de usar offsets con ed-grid es no escribir a mano las media queries. ## Uso con CSS (cssCore) Basta añadir clases del formato bp-offset-n donde bp es un breakpoint válido de ed-grid (s,m,l,xl) y n un múltiplo de 5 o una fracción según lo indicado en el flujo de trabajo recomendado. ```markup
``` ## Uso con Sass Incluya el mixin `offset($s,$m,$l$xl)` donde cada parámetro es el offset en cada breakpoint de ed-grid. No hay restricciones a múltiplos de 5, incluso puede pasar fracciones. Tenga en cuenta que solo es obligatorio el primer parámetro. ```scss .selector { @include offset(2/3,50,10); } ``` Compila a: ```scss .selector{ margin-left:66.66667%; } @media screen and (min-width:40em){ .selector{ margin-left:50%; } } @media screen and (min-width:64em){ .selector{ margin-left:10%; } } ``` ================================================ FILE: src/md/docs/videos.md ================================================ # Videos responsive (Sass/CSS) EDgrid le permite insertar videos responsive con la proporcion 16:9 en cualquier breakpoint. El video siempre se expandirá al 100% del ancho de su contenedor. ## Uso con clases HTML Añada la clase `ed-video` al contenedor de su video (que puede ser un `iframe` elemento `video` o cualquier elemento con la clase `.video`) ```html
```
================================================ FILE: src/md/estructura.md ================================================ # Estructura de archivos - [Etructura general del repositotio](#etructura-general-del-repositotio) - [Archivos exclusivos de EDgrid](#archivos-exclusivos-de-edgrid) - [Archivos exclusivos de la página de documentación](#archivos-exclusivos-de-la-p%C3%A1gina-de-documentaci%C3%B3n) --- La siguiente es la estructura de archivos de **EDgrid**. Solo se explican los archivos y directorios propios del proyecto y no las herramientas comunes de desarrollo (package.json, .gitignore, etc) Tenga presente que en el mismo repositorio se encuentra la librería **EDgrid** y la página web con la documentación. Si desea estudiar como se creó EDgrid busque el archivo `src/scss/ed-grid.scss` y la carpeta `src/scss/ed-grid`. Todo lo demás se usa para construir esta página web y no forma parte de la librería. ## Etructura general del repositotio * `src/` Carpeta de desarrollo * `md/` Contenido de la documentación en markdown * `data/` Datos JSON para la página web * `img/` Imágenes para la página web * `js/` JavaScript para la página web * `pug/` Archivos pug para generar la página web * `scss/` Estructura de archivos Sass * `ed-grid/` **🔥 Componentes de la librería EDgrid.** * `web-styles/` Estilos para la documentación en ed-grid.com (no son parte de EDgrid) * `styles.scss` Archivo principal para la documentacion ed-grid.com (no es parte de EDgrid) * `ed-grid.scss` **🔥 Archivo principal de EDgrid que importa sus componentes y define variables.** * `ed-grid.scss` **🔥 Archivo para importar EDgrid desde node_modules**. * `test.html` **🔥 Archivo para hacer pruebas con EDgrid** ## Archivos exclusivos de EDgrid * `ed-grid.scss` **🔥 Archivo para importar EDgrid desde node_modules**. * `src/` * `ed-grid.scss` **🔥 Archivo que importa los componentes y define las variables de configuración** * `ed-grid-css.scss` **Archivo para compilar EDgrid a su versión CSS** * `ed-grid/` * `components/` Componententes principales de la librería * `_alignment.scss` Utilidades para alineación de bloques y contenido * `_base` Estilos base para elementos HTML. * `_core-flexbox.scss` Sistema de columnas con flexbox * `_core-grid.scss` Sistema de filas y columnas con CSS Grid * `_dev.scss` Estilos para debuggin * `_layouts.scss` Estilos para separaciones verticales, margenes y paddings. * `_media-queries` Mixins para crear media queries * `_prototype.scss` Estilos para prototipado rápido * `_video.scss` Estilos para video responsive * `_visibility.scss` Estilos para mostrar y ocultar elementos en cada breakpoint * `helpers/` Funciones y mixins necesarios para el funcionamiento de diversos componentes * `_functions.scss` Funciones para convertir pixeles a em y rem (necesarios para mixins de EDgrid) * `_mixins.scss` Mixins de apoyo en el desarrollo de componentes * `legacy/` Componentes y estilos para compatibilidad con versiones anteriores de EDgrid (no necesario en proyectos nuevos). * `_ed-menu` Estilos para crear menus de navegación * `_grid.scss` Estilos para crear cuadriculas (se recomienda usar core-grid) * `_legacy.scss` Estilos varios de versiones antiguas * `_offset` Estilos legacy para offset de columnas (no necesario en proyectos nuevos). * `css/` * `ed-grid.css` Versión CSS de EDgrid con comentarios para desarrollo * `ed-grid.min.css` Versión minificada de EDgrid ## Archivos exclusivos de la página de documentación * `docs/` Página web de documentación y assets compilados * `src/` * `pug/` Archivos pug para generar páginas HTML * `md/` Contenido de la documentación en formato markdown * `img/` Imágenes de la página web * `data/` Datos en formato JSON para mostrar en la página web * `js/` Archivos javascript para la documentación * `scss/` * `styles.scss` Importa archivos para estilos de la documentación * `web-styles/` Partials de Sass para la documentación ================================================ FILE: src/md/funciones.md ================================================ # Funciones (Sass) EDgrid incluye dos funciones útiles en el RWD: `em($px)` y `rem($px)` Estas funciones convierten un número en `px` a `em` o `rem` respectivamente ```css .selector { font-size: em(15px); max-width : rem(1000px); } ``` Compila a ```css .selector{ font-size:.9375em; max-width:62.5rem; } ``` Estas funciones lanzarán un error si le pasa un valor diferente a un número en pixeles ================================================ FILE: src/md/grids.md ================================================ # Grids (cuadrículas) Con EDgrid puede crear cuadrículas fácilmente. ## Grids con CSS En CSS EDgrid cuenta con dos grids preconstruidos: `1,2,3,4` y `2,3,4,5` (los números representan las columnas en cada breakpoint de ed-grid). Para utilizarlos, use la clase `grid-container` en el contedor, además la clase `grid-1234` o `grid-2345` para indicar el tipo de grid. Por último, a cada item de la galeria asignele la clase `grid-item` ```html
``` ## Grids con Sass Para Sass, use el mixin `grid($item,$s $m $l $xl,$gutter)` aplicado al contenedor del grid. Los parámetros son: * `$item` (obligatorio) es el selector css de cada item del grid. Debe pasarse entrecomillado. * `$s $m $l $xl` (solo el primero obligatorio) son el número de columnas en cada breakpoint de EDgrid (separados por espacios) * Los breakpoints superiores heredaran el número de columnas del último breakpoint declarado en el mixin * `$gutter` (opcional) es la separación entre los items. Solo se aceptan `em`, `rem` o `px`. Ejemplo, para el siguiente HTML: ```html ``` Crearemos un grid 1,1,2,3 ```scss .gallery { @include grid('.image',1 1 2 3); } ``` Los grids son creados con CSS Grid y agregan un fallback con flexbox para navegadores que no lo soportem. ================================================ FILE: src/md/helpers.md ================================================ # Helpers Archivo `helpers.scss` Los helpers son ayudas al trabajo a través de clases. ## Ancho de elementos Puede usar las mismas clases de los `ed-item`. ```html
``` ## Alineación de elementos Se aplica al mismo elemento que se quiere alinear las clases: `to-left`, `to-right`, `to-center`. Para que funcione debe especificar un ancho también. ```html
``` ## Alinear contenido Use las clases `left`, `center`, `right` en el contenedor para que su contenido se centre. ```html

Soy un título centrado

``` ## Limpiar floats **Versión CSS** ```html
``` **Versión Sass** ```scss // Uso con Sass .selector { @include clearfix } ``` ## Forzar ancho total Hace que un elemento siempre mida el 100% del ancho disponible **Versión CSS** ```html
``` **Versión Sass** ```scss // Uso con Sass .selector { @include full } ``` ## Hacer un elemento circular Tenga en cuenta que si el alto y el ancho no son iguales, el elemento no será circular sino oval. **Versión CSS** ```markup
``` **Versión Sass** ```scss // Uso con Sass .selector { @include circle } ``` ## Controlar el padding > Importante: si usa la versión con CSS Grid puede saltarse esta sección. En EDgrid la separación entre los ed-item se genera a través de padding laterales (la separación entre uno y el siguiente es dos veces el tamaño del padding, por defecto 15px). Puede ocurrir que en algunos casos complejos para forzar la alineación requiera añadir o quitar los padding por defecto a cualquier elemento (no solo ed-container y ed-item). **Versión CSS** ```markup
``` **Versión Sass** ```scss // Uso con Sass // el mixin padding() recibe un número como parámetro // este número puede ser 0 para eliminar el padding .selector1 { @include padding(3) } // El mixin noPaddingContainer tiene efecto // solo aplicado a un .ed-container y elimina // el padding de sus ed-item hijos .selector2 { @include noPaddingContainer } ``` ================================================ FILE: src/md/layout-css-grid.md ================================================ # Sistema de filas y columnas con CSS Grid La versión 3 de EDgrid incluye la creación de layouts con CSS Grid, la que ofrece varias ventajas sobre los layouts con Flexbox. Esta versión se basa en las siguientes reglas: 1. El contenedor define la cantidad de columnas en cada breakpoint 2. Los items definen cuantas columnas de su contedor ocuparán 3. Solo el contenedor tiene una clase definida `ed-grid`. Los items pueden ser cualquier elemento hijo directo de `ed-grid` (a diferencia de la versión con flexbox que exigía tener un `ed-item`). 4. CSS Grid utiliza la propiedad `gap` para definir la separación entre tracks, lo que resuelve el problema de los contenedores anidados y los paddings (propio de layouts con floats y flexbox). ## Contenedor ed-grid En esta versión se usa `ed-grid` como contenedor y es en él donde debemos definir las columnas (es así como funciona CSS Grid). Para definir las columnas use la nomenclatura `breakpoint-grid-numero`. ```html
``` ## Items Cualquier hijo directo de `ed-grid` es automáticamente un item del layout. Y automáticamente tomará una columna de su contenedor. ```html
``` Ejemplo:
1
2
3
### Definir cantidad de columnas que ocupa el item Use la siguiente nomenclatura `breakpoint-cols-numero` Donde número es la cantidad de columnas. Por ejemplo, para crear un layout de sidebar al 25% y contenido al 75% el marcado sería el siguiente: ```html
1
2
``` Ejemplo
1
2
### Definir en qué columna inicia un item Use la nomenclatura: `breakpoint-x-numero` para indicar en qué columna iniciará un item. ```html
Comienzo en la columna 2 y ocupo 3 columnas
``` Ejemplo:
Comienzo en la columna 2 y ocupo 3 columnas
### Definir cantidad de filas que ocupa el item Use la siguiente nomenclatura `breakpoint-rows-numero` Donde número es la cantidad de filas. ```html
1
2
3
``` Ejemplo:
1
2
3
### Definir en qué fila inicia un item Use la nomenclatura: `breakpoint-y-numero` para indicar en qué columna iniciará un item. ```html
1
2
3
4
5
``` Ejemplo:
1
2
3
4
5
## Anidar contenedores Puesto que CSS Grid define la separación entre tracks internamente, puede anidar contenedores como desee, sin restricciones. ```html
1
2
3
4
5
``` Ejemplo:
1
2
3
4
5
## Separación entre filas y columnas De forma predeterminada las columnas tienen una separacion de `1rem` en tamaños móviles (s,m) y `2rem` en tamaños de escritorio (lg,xl). Si desea agregar una separación entre filas (igual a la de las columnas), agregue la clase `rows-gap` al contenedor. ```html
1
2
3
4
5
6
7
8
9
10
11
12
``` Ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
Puede cambiar la separación para todos los `ed-grid` redefiniendo la variable `$gap` antes de importar EDgrid. ```scss $gap: 1rem; // En tamaños de escritorio se multiplica por 2 @import "~ed-grid/ed-grid"; ``` O puede cambiar la separación para un `ed-grid` especifico usando la nomenclatura `breakpoint-gap-numero`. El número va de 0 a 4 con separaciones de `.5rem`. \* *Puede usar el numero `05` para crear separaciones de `.25rem`. Ejemplo: `s-gap-05`.* ```html
1
2
3
4
5
6
7
8
9
10
```
1
2
3
4
5
6
7
8
9
10
================================================ FILE: src/md/layout-flexbox.md ================================================ # Sistema de columnas con flexbox - [ed-container y ed-item](#ed-container-y-ed-item) - [Ancho de los ed-container](#ancho-de-los-ed-container) - [Ancho de los ed-item](#ancho-de-los-ed-item) - [1. Porcentajes](#1-porcentajes) - [2. Fracciones](#2-fracciones) - [Anidar contenedores e items](#anidar-contenedores-e-items) - [Avanzado: crea tus propios contenedores e items](#avanzado-crea-tus-propios-contenedores-e-items) - [Avanzado: crear contenedores e items con Sass (sin clases HTML)](#avanzado-crear-contenedores-e-items-con-sass-sin-clases-html) --- EDgrid es una librería para construir layouts. Puede construirlos con Flexbox o [CSS Grid](/documentacion/layout-css-grid.html). ## ed-container y ed-item Para construir layouts con Flexbox y EDgrid debe definir contenedores con la clase `ed-container` e items con la clase `ed-item`. Con las siguientes reglas: 1. Un `ed-item` no puede ser huérfano. Siempre debe ser hijo de un `ed-container` 2. Un `ed-container` debe tener al menos un `ed-item` como hijo directo. 3. Los `ed-container` y `ed-item` son contenedores para crear layout. No agregue contenido directamente en ellos. ```html

En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor.

En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor.
``` ## Ancho de los ed-container Los `ed-container` tienen un ancho predeterminado de 100% y un ancho máximo de `1200px`. Así cuando la pantalla es mayor a esta medida, el `ed-container` queda fijo y se centra horizontalmente. Si desea un `ed-container` que mida siempre el 100% de la pantalla agregue la clase `full`. ```markup
``` Si desea personalizar el ancho máximo del `ed-container` redefina la variable Sass `$max-width` antes de importar EDgrid. ```scss $max-width: 1400px; @import "~ed-grid/ed-grid"; ``` ## Ancho de los ed-item Cada `ed-item` tiene 100% del ancho de su padre a menos que se especifique lo contrario (a través de clases). Las clases para definir el ancho son de dos tipos: porcentajes y fracciones. ### 1. Porcentajes La nomenclatura de clase es `breakpoint-numero` Donde número es cualquier número múltiplo de 5 entre 0 y 100. Así que la clase `lg-75` significa que el elemento tendrá 75% del ancho de su padre a partir del breakpoint `lg`. ```html
1
2
3
```
1
2
3
* Como puede ver, las separaciones entre columnas se crean con paddings laterales. * Si no desea separaciones con paddings (que dan problemas en layouts complejos) use nuestra versión con [CSS Grid](/documentacion/layout-css-grid.html) * Si la suma de los anchos da más de 100, habrá saltos de fila. Así puede crear layouts más complejos sin crear nuevos contenedores. ### 2. Fracciones Si quiere dividir el ancho entre 3 o 6 necesitará fracciones. La nomenclatura es `breakpoint-numerador-denominador`. Por ejemplo: `lg-1-3` significa un tercio de ancho (33.33%) a partir del breakpoint `lg` (1024px). Mientras que `xl-2-3` significa dos tercios a partir del breakpoint `xl` (1440px). ```html
1
2
3
```
1
2
3
## Anidar contenedores e items Si necesita anidar elementos para crear layouts más complejos tenga en cuenta las siguientes reglas: 1. No cree un `ed-container` como hijo de un `ed-item` 2. Para anidar, agregue la clase `ed-container` a un `ed-item` entonces ya podrá crear nuevos `ed-item` nietos. ```html
1
2
3
```
1
2
3
## Avanzado: crea tus propios contenedores e items Si no desea usar las clases `ed-container` y `ed-item` puede definir las suyas. Simplemente redefina las variables `$container` y `$item` antes de importar EDgrid. ```scss $container: row; $item: column; @import "~ed-grid/ed-grid"; ``` ## Avanzado: crear contenedores e items con Sass (sin clases HTML) Si no desea tocar el marcado HTML (o no tiene acceso a el por restricciones del proyecto) puede usar mixins de Sass para definir sus contenedores e items. * Para los contenedores, use el mixin `ed-container`. * Para los items, use el mixin `ed-item($s,$m,$lg,$xl)` Los parámetros definen el ancho en cada breakpoint: * Puede omitirlos todos y el ancho será siempre 100% * Un ancho declarado se herederá en los breakpoints superiores. * Puede usar fracciones como parámetro. Por ejemplo: `1/3` ```scss .main-page { @include ed-container } .sidebar { @include ed-item(100,100,1/3) } .content { @include ed-item(100,100,2/3) } ``` ================================================ FILE: src/md/layout.md ================================================ # Layout - [Secciones](#secciones) - [Anular espaciado entre secciones](#anular-espaciado-entre-secciones) - [Valores de los espaciados verticales](#valores-de-los-espaciados-verticales) - [Espaciado vertical entre contenido](#espaciado-vertical-entre-contenido) - [Titulos](#titulos) - [Contenido](#contenido) - [Márgenes](#m%C3%A1rgenes) - [Márgenes negativos](#m%C3%A1rgenes-negativos) - [Paddings](#paddings) --- EDgrid agrega clases para crear separaciones exteriores (margin) e interiores (padding) para crear layouts armoniosos y bien distribuidos. Para seguir buenas prácticas, considere lo siguiente: * Las clases de layout comienzan con `l-`. *Además todos l * Los espacios verticales se crean solamente con `margin-bottom`. * La propiedad `margin-top` se usa solamente en negativo para cancelar una separación vertical * Los espacios horizontales se crean solamente con `margin-right` * La propiedad `margin-left` se usa solo en negativo para cancelar una separación horizontal. * Evite usar css para márgenes y paddings, utilice las clases de EDgrid ## Secciones En EDgrid existen tres tipos de secciones que se indican con las siguientes clases. * `l-block` Bloques pequeños como widgets, cards, separadores. * `l-section` Sección grande de contenido. * `l-big-section` Igual que el anterior pero cuando se quiere dar una separación mayor. ### Anular espaciado entre secciones Si en algun caso desea anular el espaciado de una seccion con la anterior. Use las siguientes clases: * `cancel-l-block` Cancela margin-bottom de hermano anterior `l-block` * `cancel-l-section` Cancela margin-bottom de hermano anterior `l-section` * `cancel-l-big-section` Cancela margin-bottom de hermano anterior `l-big-section` ### Valores de los espaciados verticales EDgrid usa la variable CSS `--vertical-block-space` cuyo valor cambia según el breakpoint ```scss :root { --vertical-block-space : #{$l-unit * 2}; // 1rem @include from(lg) { --vertical-block-space : #{$l-unit * 4}; // 2rem } } ``` El código que crea las separaciones es el siguiente. ```scss // Block .l-block { margin-bottom : var(--vertical-block-space); // 1rem mobile, 2rem desktop } .cancel-l-block { margin-top : calc(var(--vertical-block-space) * -1); } // Section .l-section { margin-bottom : calc(var(--vertical-block-space) * 2); // 2rem mobile, 4rem desktop } .cancel-l-section { margin-top : calc(var(--vertical-block-space) * -2); } // Big section .l-big-section { margin-bottom : calc(var(--vertical-block-space) * 4); // 4rem mobile, 8rem desktop } .cancel-l-big-section { margin-top : calc(var(--vertical-block-space) * -4); } ``` ## Espaciado vertical entre contenido EDgrid incluye espaciado vertical armonioso entre contenido (parrafos, titulos, listas, etc). No tiene que hacer nada. Solo escribir su contenido. ### Titulos ```scss :root { --vertical-content-space : 1rem; } // Encabezados h1, h2, h3, h4, h5, h6 { margin-top : 0; margin-bottom : var(--vertical-content-space); } h1 { margin-bottom : calc(var(--vertical-content-space) * 1.5) !important; } ``` ### Contenido La norma recomienda encerrar cada sección en una etiqueta section. Pero en la práctica es dificil conseguirlo siempre así que la presenciad e un titulo indica el cambio de sección y por eso se le agrega una separación vertical mayor con el hermano anterior. ```scss :root { --vertical-content-space : 1rem; } p, video, blockquote, article, section, form, figure, iframe, ul, ol, pre, hr, dl, address { margin-top : 0; margin-bottom : var(--vertical-content-space); + h2 { padding-top : calc(var(--vertical-content-space) * 1.5); } + h3 { padding-top : var(--vertical-content-space); } } ``` ## Márgenes Use las clases de márgenes para separar elementos. La nomenclatura es la siguiente `breakpoint-mr-numero` y `breakpoint-mb-numero` Donde `mr` es `margin-right` y `mb` es `margin-bottom`. El número va de 0 a 4 con separaciones de `.5rem` Por ejemplo `lg-mb-0` significa `margin-bottom:0` a partir del breakpoint `lg`. Y `m-br-4` sinifica `margin-right: 2rem` a partir del breakpoint `m`. \* *Puede usar el numero `05` para crear separaciones de `.25rem`. Ejemplo: `s-mb-05`.* ```html Logotipo de EDgrid Logotipo de EDgrid ```
Logotipo de EDgrid Logotipo de EDgrid
Usando margenes ```html Logotipo de EDgrid Logotipo de EDgrid ```
Logotipo de EDgrid Logotipo de EDgrid
### Márgenes negativos Con la misma nomenclatura puede crear márgenes superiores `margin-top` e izquierdos `margin-left` pero estos siempre serán negativos y debe usarlos para cancelar una separación con un hermano anterior. ```html

Bienvenidos a EDteam

Este es un subtítulo pero aparecerá muy abajo del título

``` Ejemplo:

Bienvenidos a EDteam

Este es un subtítulo pero aparecerá muy abajo del título

Usando márgenes negativos: ```html

Bienvenidos a EDteam

Este es un subtítulo con un margen superior negativo

``` Ejemplo:

Bienvenidos a EDteam

Este es un subtítulo con un margen superior negativo

## Paddings Los paddings agregan una separación interna y tienen la siguiente nomenclatura de clases: `breakpoint-p[direction]-numero` Donde `direction` puede ser `t` (top), `r` (right), `b` (bottom), `l` (left). Por ejemplo: `xl-pb-4`. Al igual que en margin, los números van de 0 a 4 indicando separaciones de `.5rem`. * Para paddings verticales (top y bottom a la vez) use `breakpoint-py-numero)`. * Para paddings horizontales (left y right a la vez) use `breakpoint-px-numero` * Para paddings en las cuatro direcciones use `breakpoint-pxy-numero` \* *Puede usar el numero `05` para crear paddings de `.25rem`. Ejemplo: `s-py-05`.* ================================================ FILE: src/md/mediaqueries.md ================================================ # Mediaqueries (Sass) EDgrid incluye mixins para crear mediaqueries fácilmente: 1. `from($bp)`\ Para tamaños mayores al breakpoint (parámetro) 2. `to($bp) `\ Para tamaños menores al breakpoint (parámetro) 3. `fromTo($from,$to)`\ Para tamaños comprendidos entre los dos parámetros. Los tres mixins reciben como parámetros breakpoints válidos que pueden ser del core de ed-grid `s,m,lg,xl` o números especificados en `px`, `em` o `rem`. Ejemplos: ```scss // Ejemplo mixin from() .from { color: red; @include from(m) { color: blue; } @include from(700px) { color: red } } // Ejemplo mixin to() .to { display: flex; @include to(l) { display: block } } // Ejemplo mixin from-to() .from-to { display: block; @include from-to(m,800px) { display: none } } ``` Compila a: ```scss // From .from{ color:red; } @media screen and (min-width:40em){ .from{ color:blue; } } @media screen and (min-width:700px){ .from{ color:red; } } // To .to { display:flex; } @media screen and (max-width:64em){ .to { display:block; } } // From to .from-to { display:block; } @media screen and (min-width:40em) and (max-width:800px){ .from-to { display:none; } } ``` ## Control de errores Si los parámetros pasados a estos mixins no son válidos EDgrid lanzará un mensaje en terminal indicando el error. ================================================ FILE: src/md/menu-responsive.md ================================================ # Menú responsive Un menú responsive es un buen ejemplo de cómo podemos integrar EDgrid con código ajeno a la librería. Toda la estructura y distribución se harán desde el marcado con la nomenclatura que ya conocemos y a la vez se usarán los mixins que otorga la librería para los estilos en Sass.
### HTML ```html
``` ### SCSS La mayoría del siguiente código es para estética del menú. ```scss // Posicionamiento del header .ed-header { position : fixed; top : 0; width : 100%; z-index : 100; .logo { height : 2rem } // Posicionamiento del nav // Utilizamos el mixin to() de EDgrid para que sólo se aplique en móvil .nav { @include to(lg) { position : fixed; left : 0; bottom : 0; background : black; } } .menu { list-style : none } // Colores de links del menú .link { color : lightgrey; &.active { color : cornflowerblue } @include from(lg) { color : grey } } // Estilos para los íconos .icon { --size : 1.5rem; width : var(--size); height : var(--size); fill : currentColor; } } ``` ### SVG Este componente utiliza íconos para su versión móvil. Puede crear un archivo SVG donde guarde todo el siguiente código o ponerlo al lado de la estructura del header en el HTML. ```svg ``` ================================================ FILE: src/md/modo-dev.md ================================================ # Modo dev El modo dev es una característica de EDgrid que nos permite saber el breakpoint actual y los componentes del layout (ed-grid, ed-container y ed-item). Al activarlo el navegador muestra el layout de la siguiente manera: 1. Los `ed-container` y `ed-grid` tienen un borde rojo y en la parte superior una franja roja que imprime sus clases html. 2. Los `ed-item` e hijos directos de `ed-grid` se colorean de azul y a su vez imprimen sus clases html en una franja azul.

Modo dev en Flexbox

1
2
3

Modo dev en Grid

1
2
3
## Activar modo dev con clases HTML Basta con añadirle la clase `dev` al elemento body ```html ``` ## Activar el modo dev en Sass Redefinir la variable `$dev` a `true` antes de importar `ed-grid` ```scss $dev: true; @import 'path/ed-grid/ed-grid'; ``` ## Modo dev hover Si sólo quieres inspeccionar un elemento a la vez y no toda la página, puedes usar el modo desarrollo con hover, donde sólo funcionará con `ed-grid`, `ed-container` y `ed-item` que tengan el estado de hover.

Modo dev con hover

1
2
3

Activar modo dev hover con clases HTML

Basta con añadirle la clase `dev-hover` al elemento body ```html ```

Activar modo dev hover en Sass

Redefinir la variable `$dev-hover` a `true` antes de importar `ed-grid` (no es necesario redifinir también la variable `$dev`). ```scss $dev-hover: true; @import 'path/ed-grid/ed-grid'; ``` ================================================ FILE: src/md/personalizar.md ================================================ # Personalizar EDgrid con Sass EDgrid es altamente personalizable pues sus variables de configuración pueden ser sobreescritas. Para hacerlo, debe redefinirlas antes de importar EDgrid. ```scss // 1. Personalice sus variables $prototype: false; $dev: true; // 2. Importe EDgrid @import "~ed-grid/ed-grid"; ``` Tenga en cuenta que no siempre querrá personalizar EDgrid y le bastará con solo importar la librería. ## Variables que puede personalizar. A continuación se muestran las variables que puede redefinir, con su valor por defecto y la explicación de su función. ```scss // Breakpoints $breakpoints : ( s : 0, m : 640px, lg : 1024px, xl : 1440px ); $prototype : true; // Activa los estilos de prototipado $dev : false; // Activa los estilos para debuggin $dev-hover : false; // Estilos de debuggi sólo en hover $max-width : 1200px; // Ancho máximo de los contenedores ed-container y ed-grid $l-unit : .5rem; // Unidad básica de layout (para separaciones verticales, margin y padding) $gap : $l-unit * 4; // Separación entre columnas (2rem) $fractions : 3 6; // Fracciones para crear columnas (core flexbox) $container : ed-container; // Clase para el contenedor (core flexbox) $item : ed-item; // Clase para los items (core flexbox) $grid-container : ed-grid; // Clase para el contenedor (core grid) $max-grid-columns : 12; // Máximo número de columnas (core css grid) $legacy : false; // Soporte para versiones antiguas // CSS Variables :root { // Variables para prototipar --color : #007BDF; // Color base (azul EDteam) --color-alt : #006DC6; // Color alterno (azul EDteam alterno) --border-color : #DFE0E0; // Color para bordes (gris suave) --light-bg : #F0F0F0; // Color gris para fondos --border-radius : #{$l-unit * 0.5}; // .25rem // layout --vertical-block-space : #{$l-unit * 2}; // 1rem --vertical-content-space : #{$l-unit * 2}; // 1rem --gap : #{$l-unit * 2}; // 1rem --max-width : #{$max-width}; @include from(lg) { --vertical-block-space : #{$l-unit * 4}; --gap : #{$l-unit * 4}; // 2rem } } ``` ================================================ FILE: src/md/prototipado-avanzado.md ================================================ # Prototipado avanzado Ya vio qué es EDgrid y todo lo que es capaz de hacer, pero tal vez no sea suficiente en ciertos casos. ¿Qué tal si quiere utilizar otras propiedades que no tiene la librería? ¿O no quiere estar escribiendo CSS para cada componente y prefiere usar la numenclaruta de clases de EDgrid? Aquí es donde el prototipado avanzado entra en acción. Utiliza el core de EDgrid para convetir cualquier propiedad en las nomenclaturas de la librería `breakpoint-propiedad`. Cabe recalcar que esta función sólo está disponible para la versión de EDgrid Sass. ## ¿Cómo funciona? Para esto haremos uso del mixin `prototype()`, el cual podrá utilizarlo en cualquier lugar de su proyecto siempre y cuando EDgrid se haya importado antes. La sintaxis es la siguiente: ```scss @include prototype($names, $property, $value); /* * $names - Lista de nombres que usaremos para nombrar nuestras clases. * Recorremos una lista por si queremos múltiples selectores con el mismo valor * * $property, $value - Propiedad CSS con su respectivo valor */ ``` Ejemplo ```scss @include prototype('cursor-pointer', cursor, pointer); ``` El resultado en CSS sería: ```css .s-cursor-pointer { cursor: pointer; } @media screen and (min-width: 640px) .m-cursor-pointer { cursor: pointer; } } @media screen and (min-width: 1024px) { .lg-cursor-pointer { cursor: pointer; } } @media screen and (min-width: 1440px) { .xl-cursor-pointer { cursor: pointer; } } ``` Si queremos múltiples clases con el mismo valor debemos pasar `$names` como si fuera una lista. ```scss @include prototype(('color-red', 'red-color'), cursor, pointer); ``` ```html

Este es un párrafo de color rojo

Y éste también lo está

``` ## Especifidad Si quiere crear selectores más avanzados como juntar una clase con la nomenclatura que está creando o usar selectores como `+`, `>`, `~` entre muchos otros, no podrá hacerlo desde `$names`, si no que deberá pasar un cuarto parámetro. Un ejemplo de esto es el componente `breakpoint-gap-numero` de EDgrid, el cuál solo funciona si el contenedor tiene la clase `ed-grid`. ```scss @include prototype($names, $property, $value, $concat); ``` Ejemplos ```scss // El elemento también tiene la clase .background // .background.s-red @include prototype('red', color, red, '.background'); // Algún elemento ancestro tiene la clase .background (nótese el espacio al final) // .background .s-red @include prototype('red', color, red, '.background '); // Hijos directos de un elemento con la clase background // .background > .s-red @include prototype('red', color, red, '.background > '); ``` ## Debug El modo debug le permite ver en la terminal el CSS resultado (selector, propiedad, valor y mediaquery). Para activarlo debemos pasar un quinto parámetro en `true`. ```scss @include prototype($names, $property, $value, $concat, $debug); ``` Ejemplo ```scss @include prototype('red', color, red, '.background > ', true); // Introduzca un string vacío si no necesita el cuarto parámetro // Puede borrarlo una vez que desactive el debug @include prototype('red', color, red, '', true); ``` ================================================ FILE: src/md/prototipado.md ================================================ # Prototipado - [Botones](#botones) - [Bordes](#bordes) - [Esquinas redondeadas](#esquinas-redondeadas) - [Fondos](#fondos) - [Sombras](#sombras) --- EDgrid le permite hacer prototipos rápidos con poco esfuerzo. La opción de prototipado viene activada por defecto en el proyecto, por lo que no necesita hacer ajustes extras para empezar a usarla. ## Botones Agrega la clase `button` a un elemento. Si necesita darle márgenes, centrarlo, etc, use las clases que EDgrid proporciona.
Soy un boton
## Bordes * Use la clase `breakpoint-border` para agregar un borde a los cuatro lados. * Use la clase `breakpoint-border-none` para anular el borde en los cuatro lados. * Use la clase `breakpoint-border-[top|right|bottom|left]` para agregar un borde solo en el lado seleccionado. * Use la clase `breakpoint-border-[top|right|bottom|left]-none` para anular el borde en el lado seleccionado. ```html

Soy una tarjeta

Yo soy el contenido de esta tarjeta

```

Soy una tarjeta

Yo soy el contenido de esta tarjeta

## Esquinas redondeadas * Use la clase `breakpoint-radius` para asignar un border-radius a las cuatro esquinas. * Use la clase `breakpoint-radius-none` para anular el border-radius de las cuatro esquinas * Use la clase `breakpoint-radius-[tl|tr|br|bl]` para agregar border-radius en `top-left|top-right|bottom-right|bottom-left` respectivamente * Use la clase `breakpoint-radius-[tl|tr|br|bl]-none` para anular el border-radius en `top-left|top-right|bottom-right|bottom-left` respectivamente ```html

Soy una tarjeta

Yo soy el contenido de esta tarjeta

```

Soy una tarjeta

Yo soy el contenido de esta tarjeta

## Fondos Puede usar las clases `breakpoint-bg-[grey|blue]` Para asignarle un fondo a un elemento. Así podemos crear componentes muy rápido. Por ejemplo, tarjetas: ```html

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
```

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
```html

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
```

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
## Sombras * Use las clases `breakpoint-shadow` para aplicar sombras en los cuatro lados. * Use las clases `breakpoint-shadow-[top|right|bottom|left]` para aplicar sombras en los lados seleccionados * Use las clases `breakpoint-shadow-none` para anular las sombras en los cuatro lados. ```html ``` ```html

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
```

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.

Empezar con EDgrid
================================================ FILE: src/md/ratios.md ================================================ # Ratios e imágenes - [Ratios](#ratios) - [Imágenes](#imagenes) --- Con los ratios puede obtener elementos de un proporcion de ancho y alto definidos. Por ejemplo **3 x 1** (el triple de ancho que de alto). Tenga en cuenta que por limitaciones de css los elementos con ratio siempre tienen el 100% del ancho de su contenedor. ## Ratios Use las clases `breakpoint-ratio-x-y` donde `x` y `y` son numeros enteros del 1 al 4. `x` representa el ancho y `y` el alto. ```html

Bienvenido a a EDgrid

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable.

Comenzar con EDgrid
```

Bienvenido a a EDgrid

EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable.

Comenzar con EDgrid
Además EDgrid incluye las clases `breakpoint-ratio-16-9`, `breakpoint-ratio-9-16` y `breakpoint-ratio-21-9` Ya que son proporciones comunes de elementos multimedia. ## Contenedores de imágenes Puede usar las clases de ratios para contener imagenes evitando que se desborden o se deformen. Solo agregue la clase `img-container`. ```html
``` La imagen es la misma en todos los casos:
* Puede usar la clase `circle` para obtener un círculo perfecto sin usar clases de ratio. Si va a usarlo para contener una imagen, agregué tambien la clase `img-container`. ================================================ FILE: src/md/skeleton.md ================================================ # Skeleton Los componenentes skeleton son una vista previa del contenido que se muestra antes de que se carguen los datos para reducir la frustración del usuario con los tiempos de cargas lentos en un sitio web. Una vez que terminan de cargar, el skeleton desaparece. En sí no existe un componente único para los skeleton, porque todo dependerá de la UI que tengan en su proyecto, pero eso no es problema ya que con el prototipado usted podrá recrear la gran mayoría de ésta. ## Skeleton de card

Curso Bases de Datos Desde Cero

Diseña, estructura y administra bases de datos SQL y crea un sistema de facturación

Prof. Alexys Lozada

$40USD
```html
``` ================================================ FILE: src/md/visibilidad.md ================================================ # Visibilidad El componente visibilidad permite definir los breakpoints en los que un elemento se mostrará y los breakpoints en los que se ocultará. ## Uso con CSS Use las clases `from-breakpoint` o `to-breakpoint` donde **breakpoint** es un breakpoint válido de EDgrid (`s,m,l,xl`) `from-lg` hará al elemento visible a partir de 1024px e invisible por debajo de esa medida. `to-xl` Hará al elemento visible por debajo de 1440px e invisible por encima de él. ## Uso con Sass En la versión Sass cuenta con cuatro mixins que reciben como parámetro un breakpoint del core de ed-grid ( `s,m,l,xl`) o uno en `px`, `em` o `rem`. * `showFrom($bp)` Muestra el elemento solo por encima del breakpoint especificado en el parámetro. * `showTo($bp)` Muestra el elemento solo por debajo del breakpoint especificado en el parámetro. * `hideFrom($bp)` Oculta el elemento por encima del breakpoint especificado en el parámetro. * `hideTo($bp)` Oculta el elemento por debajo del breakpoint especificado en el parámetro. Ejemplo ```scss .menu-movil { @include hideFrom(lg) } .menu-desktop { @include showFrom(xl) } ``` Compila a ```scss @media screen and (min-width:1024px){ .menu-movil{ display:none; } } @media screen and (max-width:1440px){ .menu-desktop{ display:none; } } ``` ================================================ FILE: src/pug/config/config.pug ================================================ - var title = "EDgrid | Inicio" - var description = "Descripcion de la pagina" - var ogUrl = "index.html" - let docsMenu = false - var img = "" - var title = "" - var description = "" - var clase = "" - var boton = "" - var botones = "" ================================================ FILE: src/pug/config/template.pug ================================================ block config include config doctype html html(lang="es") head title= title meta(charset="utf-8") meta(name="viewport" content="initial-scale=1.0, width=device-width") meta(name="description" content= description) // Estilos link(rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,400i,700|Open+Sans:700") link(rel="stylesheet" href="/css/styles.css?180113") link(rel="shortcut icon" href="/assets/img/logo/favicon.png") //- Open Graph Protocol meta(property="og:title" content= title) meta(property="og:type" content="website") meta(property="og:description" content= description) meta(property="og:url" content= ogUrl) meta(property="og:image" content="/assets/img/logo/edgrid-poster.jpg") meta(property="og:site_name" content="EDteam") meta(property="og:locale" content="es_PE") meta(property="og:locale:alternate" content="es_CO") meta(property="og:locale:alternate" content="es_MX") meta(property="og:locale:alternate" content="es_DO") meta(property="og:locale:alternate" content="es_BO") //- Twitter Cards meta(property="twitter:card" content="summary_large_image") meta(property="twitter:title" content= title) meta(property="twitter:site" content="@EDteamLat") meta(property="twitter:description" content=description) meta(name="theme-color" content="#007BDF") // Body body(itemscope itemtype="http://schema.org/WebPage") include ../includes/header // Banner section block banner // Main if docsMenu .l-block .ed-grid.cols-l-4.main-section.l-big-section aside(itemscope="itemscope" itemtype="http://schema.org/WPSideBar" role="complementary").main-sidebar.sidebar-first .vertical-menu-toggle.to-l#vertical-menu-toggle(data-content="Filtros") include ../includes/docs-menu .span-l-3 block main else .l-block .main-section.l-big-section block main // Footer include ../includes/footer script(src="/js/scripts.js") ================================================ FILE: src/pug/includes/banner.pug ================================================ mixin banner(img, title, description, clase, boton, botonClass, botonUrl, botonText, botones) .main-banner.background.s-py-4.grey-700.l-block.img-container(class=clase) .ed-grid.lg-grid-6 .lg-cols-4.lg-x-2.s-center .main-banner__data .t1.s-mb-2 span.color.white-color= title if description p.color.white-color.s-opacity-8(class=boton || botones ? 'l-block' : 's-mb-0')= description if boton a(class='button--'+botonClass href=botonUrl target="_blank")= botonText if botones .s-center a.button.ghost.blue-400.s-mr-2(href="/documentacion" title="Documentación de EDgrid") span Documentación a.button.ghost.blue-400(href="https://github.com/escueladigital/EDgrid" target="_blank" title="EDgrid en Github") span Github if block block ================================================ FILE: src/pug/includes/cards.pug ================================================ mixin card(cardImage, cardTitle, cardSub, cardText, cardlink, user, imageUser, linkuser) .testimony-card.s-column.s-border.s-radius.s-bg-white.s-shadow-bottom .img-container.s-ratio-16-9 img(src=cardImage).s-radius-tl.s-radius-tr .content.s-pxy-2.s-column h2.t3.s-mb-1=cardTitle p.color.color-text-light=cardSub .card__body p=cardText footer.card__footer.s-cross-center.nowrap .card__btn.small.s-mr-1 a(target="_blank" href=cardlink title=cardTitle).button.small.ghost Ver página if (user !== "no") .s-to-right.s-cross-center.user-avatar .photo.s-mr-1 .img-container.circle img(src=imageUser) a(target="_blank" href=linkuser)= user ================================================ FILE: src/pug/includes/collaborator.pug ================================================ mixin collaborator(name, job, url, photo) article.s-mb-0.s-column.s-cross-center.s-pxy-2 a(href=url target="_blank").s-70.s-to-center.s-mb-2 div.img-container.circle img(src=photo) p.t4.s-mb-1.s-center= name p.color.blue-500.s-mb-0.smaller.font-semibold= job ================================================ FILE: src/pug/includes/docs-menu.pug ================================================ mixin sidebar-section(title) section.s-mb-2.m-mb-3 p.t5.s-mb-1= title block mixin sidebar-link(value, url) li(itemprop="url") a(href=url itemprop="name" title=value)= value nav(itemscope itemtype="http://schema.org/WPSideBar").vertical-menu#vertical-menu ul +sidebar-section('Comenzar con EDgrid') +sidebar-link('Instalación', '/documentacion/instalacion.html') +sidebar-link('Estructura de archivos', '/documentacion/estructura.html') +sidebar-link('Personalización', '/documentacion/personalizar.html') +sidebar-link('Breakpoints', '/documentacion/breakpoints.html') +sidebar-section('Filas y columnas') +sidebar-link('Flexbox', '/documentacion/layout-flexbox.html') +sidebar-link('CSS Grid', '/documentacion/layout-css-grid.html') +sidebar-link('Modo desarrollo', '/documentacion/modo-dev.html') +sidebar-section('Layout') +sidebar-link('Estilos base', '/documentacion/base.html') +sidebar-link('Secciones y espaciado', '/documentacion/layout.html') +sidebar-link('Distribución', '/documentacion/distribucion.html') +sidebar-link('Alineación', '/documentacion/alineacion.html') +sidebar-link('Visibilidad', '/documentacion/visibilidad.html') +sidebar-link('Mediaqueries', '/documentacion/mediaqueries.html') +sidebar-link('Videos responsive', '/documentacion/videos.html') +sidebar-link('Ratios e imágenes', '/documentacion/ratios.html') +sidebar-section('Helpers y prototipado') +sidebar-link('Funciones', '/documentacion/funciones.html') +sidebar-link('Prototipado de EDgrid', '/documentacion/prototipado.html') +sidebar-link('Prototipado avanzado', '/documentacion/prototipado-avanzado.html') +sidebar-section('Componentes') +sidebar-link('Cards', '/documentacion/cards.html') +sidebar-link('Banner', '/documentacion/banner.html') +sidebar-link('Skeleton', '/documentacion/skeleton.html') +sidebar-link('Menú responsive', '/documentacion/menu-responsive.html') ================================================ FILE: src/pug/includes/feature-item.pug ================================================ mixin main-feature(img, title, text) .main-feature.s-pxy-2 .main-feature__img img(src=img) h3= title p.s-mb-0.small= text ================================================ FILE: src/pug/includes/footer.pug ================================================ footer.main-footer(role="contentinfo" itemscope itemtype="http://schema.org/WPFooter") .ed-container.main-footer--content .ed-item.l-50.s-to-center.s-center p.smaller.s-mb-1 EDgrid es una librería Sass/Css para crear diseños web responsive y mobile first. a(href="https://github.com/escueladigital/EDgrid" target="_blank" title="EDgrid en EDgrid").icon-github.space a(href="documentacion" target="_blank" title="Documentación de EDgrid").icon-docs.space p.smaller.s-mb-1 EDgrid es una marca de #[a(target="_blank" href="https://ed.team") EDteam], ambas fundadas por #[a(target="_blank" href="https://alvaro.ceo") Álvaro Felipe]. p.smaller.l-block= `2015 - ${new Date().getFullYear()}` .s-cross-center.s-main-center a.s-mr-3(href="https://github.com/escueladigital/EDgrid" target="_blank") img(src="/assets/img/icons/github.svg" width=20 height=20) a(href="https://twitter.com/EDgridcss" target="_blank") img(src="/assets/img/icons/twitter.svg" width=20 height=20) ================================================ FILE: src/pug/includes/header.pug ================================================ header(itemscope itemtype="http://schema.org/WPHeader").main-header .ed-grid.s-grid-5.cols-lg-10 .s-cols-2.s-cross-center(itemscope itemtype="http://schema.org/Organization") a(href="/" itemprop="url") img(alt="Logotipo de EDgrid" itemprop="logo" src="/assets/img/logo/EDgrid-logo.svg").main-logo .s-cols-3.lg-cols-8.main-menu-container.s-cross-center.s-main-end nav(itemscope itemtype="http://schema.org/SiteNavigationElement" role="navigation").main-menu#main-menu include main-menu .main-menu-toggle.to-l#main-menu-toggle ================================================ FILE: src/pug/includes/main-banner.pug ================================================ mixin main-banner .main-banner.background.grey-800.l-section .ed-grid.lg-grid-2.row-gap.s-gap-2.m-gap-4 .s-column.s-main-center.lg-main-center.lg-cross-start.s-center.lg-left h1.bigger-title span.color.white-color Maqueta sitios #[
] #[span.color.blue-400 y aplicaciones web] #[
] sin una línea de CSS p.color.grey-400.m-60.m-to-center.lg-100 EDgrid implementa un sistema de diseño flexible y personalizable para construir layouts y componentes responsive a la velocidad de la luz ⚡ .s-main-center a.button.blue-500.s-mr-2.s-mb-2.m-mb-0(href="/documentacion/instalacion.html" title="Documentación de EDgrid") span 📄 Lee la documentación a.button.ghost.blue-400.s-mb-2.m-mb-0(href="https://github.com/escueladigital/EDgrid" target="_blank" title="EDgrid en Github") span 😺 Repo en Github div .img-container.s-ratio-16-9 img.s-radius-1(src="/assets/img/logo/edgrid-poster.jpg") ================================================ FILE: src/pug/includes/main-menu.pug ================================================ block link-section - var active = 'Documentación'; - var menu = { 'Documentación': '/documentacion/instalacion.html', 'Casos de éxito': '/casos-de-exito', 'Changelog': '/changelog', 'Créditos': '/creditos', 'Ir a EDteam': 'https://ed.team' }; ul each val, key in menu - var target = val === 'https://ed.team' ? '"_blank"' : '' li(itemprop="url") a(href=val target=target itemprop="name" title= "Enlace de " + key)= key ================================================ FILE: src/pug/pages/casos-de-exito/index.pug ================================================ extends ../../config/template include ../../includes/banner include ../../includes/cards append config -title = "Casos de éxito" -description = "Casos de éxito que se encuentran actualmente en producción y que utilizan la librería de EDgrid." -ogUrl = "/casos-exito.html" -img = "/assets/img/docs-banner.jpg" -titleBanner = "Casos de éxito" -descriptionBanner = "¿Tienes un sitio en producción que use EDgrid?" -clase = "grey-700" -boton = false -botonClass= "" -botonUrl="" -botonText ="" -botones = false block banner +banner(img, titleBanner, descriptionBanner, clase, boton, botonClass, botonUrl, botonText, botones) .s-pt-2 a(href="https://form.asana.com?hash=31f9f176c441c66d609b556604bcdedd200b3712c944519a869686a6fb11ca4c&id=1189924623721081" target="_blank").button.blue-500 ⚡ Envíanos tu caso block main main.main-section .ed-grid.lg-grid-3.rows-gap.l-section -for (var i = 0; i < casos.length ; i++) -var caso = casos[i] +card(caso.img, caso.title, caso.subtitle, caso.description, caso.url, caso.user, caso.imageUser, caso.linkUser) .ed-grid.s-center h3 ¿Quieres que tu sitio sea parte de esta página? div a(href="https://form.asana.com?hash=31f9f176c441c66d609b556604bcdedd200b3712c944519a869686a6fb11ca4c&id=1189924623721081" target="_blank").button.blue-500 ⚡ Envíanos tu caso ================================================ FILE: src/pug/pages/changelog/index.pug ================================================ extends ../../config/template include ../../includes/banner append config -title = "EDgrid | Changelog" -description = "Registro de cambios que ha tenido la librería EDgrid." -ogUrl = "/funciones.html" -img = "/assets/img/docs-banner.jpg" -titleBanner = "Changelog" -descriptionBanner = "Lanzamientos importantes de EDgrid" -clase = "grey-700" -boton = false -botonClass= "" -botonUrl="" -botonText ="" -botones = false block banner +banner(img, titleBanner, descriptionBanner, clase, boton, botonClass, botonUrl, botonText, botones) block main .ed-grid.lg-grid-6 .lg-cols-4.lg-x-2 ul.data-list li.s-column.s-cross-start .container.s-column .s-main-justify span.s-mb-1.strong Actual (v 3.0) a(href="https://github.com/escueladigital/EDgrid/archive/master.zip" itemprop="url" target="_blank").button.small.icon-download.space Descargar versión ul.small.s-pl-0 li - CSS Grid para crear layouts li - Versión desarrollo para CSS grid li - Modo dev en hover para CSS grid y flexbox li - Correcciones en clases de alineación li - Se eliminó el componente Menu (pasó a ser legacy) li - Corrige error en los .ed-container con la clase .full li - Prototipado y prototipado avanzado li - Sección de componentes creados con EDgrid li - CDN para a versión CSS li - Modifica estructura de archivos del core principal li - Mejoras en código en general li p span.strong v2.1.6 (Mayo 2017) br span.small Agrega CSS grid y resuelve varios bugs menores. a(href="https://github.com/escueladigital/EDgrid/archive/v2.0.2.zip" itemprop="url" target="_blank").button.small.icon-download.space Descargar versión li p span.strong v2.0 (3 dic 2016) br span.small Cambia su enfoque al de librería (pretendía ser un framework) en versión Sass y CSS. Permite usar mixins que compilano solo el código necesario, además de activar y desactivar componentes. a(href="https://github.com/escueladigital/EDgrid/releases/tag/v2.0.0" itemprop="url" target="_blank").button.small.icon-download.space Descargar versión li p span.strong v1.2 (26 sep 2015) br span.small Se cambia floats por flexbox. Se usan las clases .ed-container y .ed-item en remplazo de .grupo y .caja a(href="https://github.com/escueladigital/EDgrid/releases/tag/1.2" itemprop="url" target="_blank").button.small.icon-download.space Descargar versión li p span.strong v1.0 (19 abr 2015) br span.small Uso de floats, clases .grupo y .caja a(href="https://github.com/escueladigital/EDgrid/releases/tag/v1.0" itemprop="url" target="_blank").button.small.icon-download.space Descargar versión ================================================ FILE: src/pug/pages/creditos/index.pug ================================================ extends ../../config/template include ../../includes/banner include ../../includes/collaborator append config -title = "EDgrid | Créditos" -description = "Créditos de quien realizo la librería, colaboro desarrollando el portal." -ogUrl = "/creditos.html" -img = "/assets/img/docs-banner.jpg" -titleBanner = "Créditos" -descriptionBanner = "Gente que ha ayudado a construir la librería." -clase = "dark-color" -boton = false -botonClass= "" -botonUrl="" -botonText ="" -botones = false block banner +banner(img, titleBanner, descriptionBanner, clase, boton, botonClass, botonUrl, botonText, botones) p.s-opacity-8.s-mb-0 ¿Quieres ser uno de ellos? .s-pt-2 a(href="https://github.com/escueladigital/EDgrid" target="_blank").button.blue-500 😼 Colabora en EDgrid block main .ed-grid .s-to-center.s-65 main.ed-grid.m-grid-2.lg-grid-3.row-gap.l-section +collaborator("Álvaro Felipe", "CEO de EDteam", "https://www.linkedin.com/in/alvarofelipe/", "/assets/img/people/alvaro-felipe.jpg") +collaborator("Alexis Mora Angulo", "UX Designer", "https://twitter.com/Jopzik", "/assets/img/people/alexis-mora.jpg") +collaborator("Carlos Cuatin", "Frontend Developer", "https://github.com/carloscuatin", "/assets/img/people/carlos-cuatin.jpg") +collaborator("Camilo Rodríguez", "Web Developer", "https://github.com/aeroxmotion", "/assets/img/people/camilo-rodirguez.png") +collaborator("Daniel Romero", "Backend Developer", "https://github.com/danielromeroauk", "/assets/img/people/daniel-romero.jpg") +collaborator("Franco Correa", "Web Developer", "https://github.com/francocorreasosa", "/assets/img/people/franco-correa.jpg") +collaborator("Ernesto Graterol", "UI Designer", "https://github.com/Revod", "/assets/img/people/ernesto-graterol.png") +collaborator("Jose Daniel Posso Garcia", "Developer", "https://github.com/daniel7byte", "/assets/img/people/jose-daniel.png") +collaborator("Alex Andrei", "Frontend Developer", "https://www.linkedin.com/in/alex-andrei/", "/assets/img/people/alex-andrei.jpg") +collaborator("Johelyn Cordovao", "Web Designer", "https://github.com/AKUmajinn", "/assets/img/people/johelyn.jpg") .ed-grid.s-center h3 ¿Quieres ser parte de esta página? div a(href="https://github.com/escueladigital/EDgrid" target="_blank").button.blue-500 😼 Colabora en EDgrid ================================================ FILE: src/pug/pages/documentacion/alineacion.pug ================================================ extends /src/pug/config/template append config -title = "EDgrid | Base (CSS/Sass)" -description = "Los estilos base normalizan los elementos HTML para Responsive Web Design." -ogUrl = "/base.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/alineacion.md ================================================ FILE: src/pug/pages/documentacion/banner.pug ================================================ extends ../../config/template include ../../includes/main-banner append config -title = "EDgrid | Banner" -description = "Componente banner creado con el prototipado de EDgrid." -ogUrl= "/banner.html" -docsMenu = true block banner section.main-banner.background.grey-800.l-section .ed-grid.lg-grid-2.row-gap.s-gap-2.m-gap-4 .s-column.s-main-center.lg-main-start.lg-cross-start.s-center.lg-left h1.bigger-title span.color.white-color Banner principal #[
] #[span.color.blue-400 de dos columnas] #[
] con EDgrid p.white-color.s-opacity-8 Creado utilizando los componentes de columnas. Totalmente responsive. .s-main-center a.button.blue-500.s-mr-2.s-mb-2.m-mb-0 Botón 1 a.button.ghost.blue-400.s-mb-2.m-mb-0 Botón 2 div .img-container.s-ratio-16-9 img.s-radius-1(src="/assets/img/og-image.jpg") block main main(itemscope itemprop="mainContentOfPage" role="main") :markdown-it ## Banner de dos columnas Al copiar el código del componente banner usted sólo conseguirá la estructura de éste para que coloque el contenido que desee. Los estilos empleados en la demostración (como el color de fondo o estilos del texto) provienen de la [guía de estilos](https://ux.ed.team/) de EDteam. ```html

Banner principal de dos columnas con EDgrid

Creado utilizando los componentes de columnas. Totalmente responsive.

``` ================================================ FILE: src/pug/pages/documentacion/base.pug ================================================ extends /src/pug/config/template append config -title = "EDgrid | Base (CSS/Sass)" -description = "Los estilos base normalizan los elementos HTML para Responsive Web Design." -ogUrl = "/base.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/base.md ================================================ FILE: src/pug/pages/documentacion/breakpoints.pug ================================================ extends ../../config/template append config -title = "EDgrid | CSS" -description = "La principal diferencia de ed-grid 2 con su versión anterior es que podemos decidir qué componentes compilar a CSS. En la versión 1, todo el CSS era compilado generando código innecesario. Si usted desea puede trabajar solo con la versión CSS de ed-grid 2, y añadir clases al código HTML para construir su layout según el flujo de trabajo recomendado. El CSS de ed-grid 2 se clasifica en 2 grupos:" -ogUrl= "documentacion/breakpoints.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/breakpoints.md ================================================ FILE: src/pug/pages/documentacion/cards.pug ================================================ extends ../../config/template append config -title = "EDgrid | Cards (Sass/CSS)" -description = "Componente card creado con el prototipado de EDgrid." -ogUrl = "/cards.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/cards.md ================================================ FILE: src/pug/pages/documentacion/distribucion.pug ================================================ extends /src/pug/config/template append config -title = "EDgrid | Distribucion" -description = "Distrubción y dirección de los elementos" -ogUrl = "/docs/distribucion.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/distribucion.md ================================================ FILE: src/pug/pages/documentacion/estructura.pug ================================================ extends ../../config/template append config -title = "EDgrid | Estructura" -description = "La siguiente es la estructura de archivos de ed-grid. Solo se explican los archivos y directorios propios del proyecto y no las herramientas comunes de desarrollo (package.json, .gitignore, etc)" -ogUrl= "/estructura.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/estructura.md ================================================ FILE: src/pug/pages/documentacion/flexbox-helpers.pug ================================================ extends ../../config/template append config -title = "EDgrid | Flexbox (CSS/Sass)" -description = "El core de ed-grid está construido con flexbox, cero floats, display:table, inline-blocks u otros hacks extraños. Sin embargo, ed-grid ofrece mcuhas utilidades extra para aprovechar el poder de flexbox. Estas utilidades están dentro de los helpers de CSS ($cssHelpers : true) por lo que se recomienda activarlos aunque su flujo de trabajo sea con Sass." -ogUrl = "/documentacion/flexbox.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/docs/flexbox.md ================================================ FILE: src/pug/pages/documentacion/funciones.pug ================================================ extends ../../config/template append config -title = "EDgrid | Funciones (Sass)" -description = "ed-grid incluye dos funciones útiles en el RWD: em($px) y rem($px). Estas funciones convierten un número en px a em o rem respectivamente. Estas funciones lanzarán un error si le pasa un valor diferente a un número en pixeles" -ogUrl = "/documentacion/funciones.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/funciones.md ================================================ FILE: src/pug/pages/documentacion/grids.pug ================================================ extends ../../config/template append config -title = "EDgrid | Grid (CSS/Sass)" -description = "La principal diferencia de ed-grid 2 con su versión anterior es que podemos decidir qué componentes compilar a CSS. En la versión 1, todo el CSS era compilado generando código innecesario. Si usted desea puede trabajar solo con la versión CSS de ed-grid 2, y añadir clases al código HTML para construir su layout según el flujo de trabajo recomendado. El CSS de ed-grid 2 se clasifica en 2 grupos:" -ogUrl= "/grid.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/grids.md ================================================ FILE: src/pug/pages/documentacion/helpers.pug ================================================ extends ../../config/template append config -title = "EDgrid | Helpers (CSS/Sass)" -description = "Los helpers son ayudas al trabajo que fueron llamadas utilidades en la versión anterior de ed-grid. Se pueden usar con CSS (cssHelpers) o Sass. Alineación de elementos. Se aplica al mismo elemento que se quiere alinear (no a su contenedor). Tenga en cuenta que se usa float y se requiere declarar un ancho para que funcione bien. Puede declarar anchos usando clases al igual que con los ed-item." -ogUrl = "/documentacion/helpers.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/helpers.md ================================================ FILE: src/pug/pages/documentacion/index.pug ================================================ extends ../../config/template include ../../includes/banner append config -title = "EDgrid | Documentación" -description = "Puede usar EDgrid con CSS y Sass." -ogUrl= "/documentacion" -docsMenu = true -img = "/assets/img/docs-banner.jpg" -titleBanner = "Documentación" -descriptionBanner = "EDgrid es muy fácil de aprender. En una hora ya lo estará usando en sus proyectos" -clase = "dark-color" -boton = false -botonClass= "" -botonUrl="" -botonText ="" -botones = false block banner +banner(img, titleBanner, descriptionBanner, clase, boton, botonClass, botonUrl, botonText, botones) block main main(itemscope itemprop="mainContentOfPage" role="main") :markdown-it # Comenzar con EDgrid EDgrid es una libreria CSS/Sass para construir layouts para web fácilmente. EDgrid es un proyecto de [EDteam](https://ed.team) usado en todos los proyectos de la empresa. Es Open Source (GPL2) y puede usarla y modificarla libremente en todos sus proyectos. Si encuentra algun error o tiene sugerencias de mejoras, [puede escribirlas en Github](https://github.com/escueladigital/EDgrid/issues). ================================================ FILE: src/pug/pages/documentacion/instalacion.pug ================================================ extends ../../config/template append config -title = "EDgrid | Base (CSS/Sass)" -description = "Los estilos base normalizan los elementos HTML para Responsive Web Design." -ogUrl = "/documentacion/instalacion.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") :markdown-it # Comenzar con EDgrid EDgrid es una libreria CSS/Sass para construir layouts para web fácilmente. En una hora ya lo estará usando en sus proyectos. Creado por [EDteam](https://ed.team) y usado en todos los proyectos de la empresa. Es Open Source (GPL2) y puede usarla y modificarla libremente en todos sus proyectos. Si encuentra algun error o tiene sugerencias de mejoras, [puede escribirlas en Github](https://github.com/escueladigital/EDgrid/issues). ## Instalación Puede usar EDgrid con [Sass](https://ed.team/cursos/sass) (recomendado) y [CSS](https://ed.team/cursos/css). ### Instalación de versión Sass Para instalar la versión Sass puede utilizar npm: ```bash npm install --save-dev ed-grid ``` También puede usar yarn: ```bash yarn add ed-grid --dev ``` Posteriormente, impórtelo en su estructura de archivos Sass ```scss @import "~ed-grid/ed-grid" ``` ### Instalación de versión CSS Descargue la última [versión CSS]() de EDgrid e impórtela en su proyecto como cualquier otra hoja de estilos. También puede usar del CDN para importaciones rápidas. ```HTML ``` \* *Al usar EDgrid en su versión CSS no podrá [personalizar la librería](/documentacion/personalizar.html), utilizar el [prototipado avanzado](/documentacion/prototipado-avanzado.html) y compilar sólo el código necesario, entre otras opciones que sólo se pueden hacer con la versión de Sass* ================================================ FILE: src/pug/pages/documentacion/layout-css-grid.pug ================================================ extends ../../config/template append config -title = "EDgrid | Flujo de trabajo (CSS/Sass)" -description = "Sass o CSS Puede usar ed-grid con CSS (añadiendo el archivo css e insertando clases en html) o con Sass (mixins preconstruidos). Se recomienda Sass para aprovechar todo el potencial de ed-grid. A lo largo de esta documentación se indicará si nos referimos al trabajo con Sass o CSS." -ogUrl= "/flujo.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/layout-css-grid.md ================================================ FILE: src/pug/pages/documentacion/layout-flexbox.pug ================================================ extends ../../config/template append config -title = "EDgrid | Flujo de trabajo (CSS/Sass)" -description = "Sass o CSS Puede usar ed-grid con CSS (añadiendo el archivo css e insertando clases en html) o con Sass (mixins preconstruidos). Se recomienda Sass para aprovechar todo el potencial de ed-grid. A lo largo de esta documentación se indicará si nos referimos al trabajo con Sass o CSS." -ogUrl= "/flujo.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/layout-flexbox.md ================================================ FILE: src/pug/pages/documentacion/layout.pug ================================================ extends /src/pug/config/template append config -title = "EDgrid | Base (CSS/Sass)" -description = "Los estilos base normalizan los elementos HTML para Responsive Web Design." -ogUrl = "/base.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/layout.md ================================================ FILE: src/pug/pages/documentacion/mediaqueries.pug ================================================ extends /src/pug/config/template append config -title = "EDgrid | Mediaqueries (Sass)" -description = "Con ed-grid escribir media queries es tan sencillo como usar cualquiera de estos tres mixins from($bp) to($bp) fromTo($from,$to) Los tres mixins reciben como parámetros breakpoints válidos que pueden ser del core de ed-grid s,m,l,xl o números especificados en px, em o rem. from($bp) remplaza al antiguo desde($size) significa que los estilos se aplicarán desde ese breakpoint en adelante." -ogUrl= "/mediaqueries.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/mediaqueries.md ================================================ FILE: src/pug/pages/documentacion/menu-responsive.pug ================================================ extends ../../config/template append config -title = "EDgrid | Menú responsive (Sass/CSS)" -description = "Componente menú responsive creado con EDgrid." -ogUrl = "/menu-responsive.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/menu-responsive.md ================================================ FILE: src/pug/pages/documentacion/menus.pug ================================================ extends ../../config/template append config -title = "EDgrid | Uso con CSS (cssCore)" -description = "Con ed-grid puede crear menus responsive fácilmente. Basta con crear una lista ul y los enlaces dentro de cada li. Uso con CSS (cssCore) Añada la clase ed-menu al ul de nivel superior. Añada la clase n-horizontal siendo n el breakpoint (s,m,l,xl) desde el cual el menú será horizontal. Añada alguna de las tres clases para cambiar el estilo: default nav-bar button-bar" -ogUrl = "/menus.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/docs/menu.md ================================================ FILE: src/pug/pages/documentacion/modo-dev.pug ================================================ extends /src/pug/config/template append config -title = "EDgrid | Modo dev" -description = "El modo dev (modo desarrollo en versiones anteriores) es una característica exclusiva de ed-grid (no existente en otros frameworks) que nos permite saber el breakpoint actual y los componentes del layout (ed-container y ed-item). Al activarlo el navegador muestra el layout de la siguiente manera: En la parte superior en una franja azul se muestra el breakpoint actual y la leyenda de colores para el ed-container y los ed-item. El layout de la página es coloreado de la siguiente manera:" -ogUrl= "/modo-dev.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/modo-dev.md ================================================ FILE: src/pug/pages/documentacion/offset.pug ================================================ extends ../../config/template append config -title = "EDgrid | Offset (Sass/CSS)" -description = "Se conoce como offset al movimiento de un elemento respecto a la posición que se supone deberia tener. En ed-grid, offset no es más que un margin-left. La única ventaja de usar offsets con ed-grid es no escribir a mano las media queries. Uso con CSS (cssCore) Basta añadir clases del formato bp-offset-n donde bp es un breakpoint válido de ed-grid (s,m,l,xl) y n un múltiplo de 5 o una fracción según lo indicado en el flujo de trabajo recomendado." -ogUrl = "/documentacion/offset.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/docs/offset.md ================================================ FILE: src/pug/pages/documentacion/personalizar.pug ================================================ extends ../../config/template append config -title = "EDgrid | Configurar (Sass)" -description = "Si va a trabajar con Sass lo primero es importarlo en su proyecto. @import 'path/ed-grid/ed-grid' Sin embargo, ed-grid posee un archivo config.scss que define las variables y que pueden sobreescribirse (antes de la importación). Recomendamos fijarse en estas tres variables" -ogUrl= "/configurar.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/personalizar.md ================================================ FILE: src/pug/pages/documentacion/prototipado-avanzado.pug ================================================ extends ../../config/template append config -title = "EDgrid | Prototipado avanzado (Sass/CSS)" -description = "Cree su propio prototipado y vaya más allá de lo que ya tiene EDgrid." -ogUrl = "/prototipado-avanzado.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/prototipado-avanzado.md ================================================ FILE: src/pug/pages/documentacion/prototipado.pug ================================================ extends /src/pug/config/template append config -title = "EDgrid | Base (CSS/Sass)" -description = "Los estilos base normalizan los elementos HTML para Responsive Web Design." -ogUrl = "/base.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/prototipado.md ================================================ FILE: src/pug/pages/documentacion/ratios.pug ================================================ extends ../../config/template append config -title = "EDgrid | Ratios (Sass/CSS)" -description = "Con los ratios puede obtener elementos de un proporcion de ancho y alto definidos." -ogUrl = "/ratios.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/ratios.md ================================================ FILE: src/pug/pages/documentacion/sass.pug ================================================ extends ../../config/template append config -title = "EDgrid | Sass" -description = "Si va a trabajar con Sass, tenga en cuenta que como se explicó aquí, ed-grid genera dos grupos de código css: cssCore no recomendado si va a trabajar con Sass (desactivado por defecto para Sass) cssHelpers recomendado si va a trabajar con Sass (activado por defecto para Sass, puede desactivarlo si es un usuario avanzado) Para activar o desactivar estos componentes redefina las variables $cssCore y $cssHelpers antes de importar ed-grid." -ogUrl= "/sass.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") :markdown-it # Comprender EDgrid Sass Si va a trabajar con Sass, tenga en cuenta que [como se explicó aquí](/documentacion/css.html), EDgrid genera dos grupos de código css: * `cssCore` Clases utilitarias no recomendadas si va a trabajar con Sass (desactivado por defecto para Sass) * `cssHelpers` Clases utilitarias recomendadas si va a trabajar con Sass (activado por defecto para Sass, puede desactivarlo si desea) Si es un usuario avanzado puede activar o desactivar estos componentes redefiniendo las variables `$cssCore` y `$cssHelpers` antes de importar EDgrid. Estas variables son booleans. Por ejemplo, si desea construir todo su layout con Sass, sin usar clases en HTML, puede desactivar ambos: ```scss $cssCore: false; $cssHelpers: false; @import "path/ed-grid/ed-grid" ``` Sin embargo, si usa la configuración recomendada, importe EDgrid sin preocuparse de estos valores. ```scss @import "~ed-grid/ed-grid"; ``` ================================================ FILE: src/pug/pages/documentacion/skeleton.pug ================================================ extends ../../config/template append config -title = "EDgrid | Skeleton (Sass/CSS)" -description = "Componente skeleton creado con el prototipado de EDgrid." -ogUrl = "/skeleton.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/skeleton.md ================================================ FILE: src/pug/pages/documentacion/videos.pug ================================================ extends ../../config/template append config -title = "EDgrid | Videos responsive (Sass/CSS)" -description = "ed-grid le permite insertar videos responsive con la proporcion 16:9 en cualquier breakpoint. El video siempre se expandirá al 100% del ancho de su contenedor. Uso con CSS (cssHelpers) Añada la clase ed-video al contenedor de su video (que puede ser un iframe elemento video o cualquier elemento con la clase .video)" -ogUrl = "/videos.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) ../../../md/docs/videos.md ================================================ FILE: src/pug/pages/documentacion/visibilidad.pug ================================================ extends ../../config/template append config -title = "EDgrid | Visibilidad" -description = "El componente visibilidad permite definir los breakpoints en los que un elemento se mostrará y los breakpoints en los que se ocultará. Uso con CSS (cssHelpers) Use las clases from-bp o to-bp donde bp es un breakpoint válido de ed-grid (s,m,l,xl) from-bp hará al elemento visible a partir del breakpoint especificado e invisible por debajo de él. to-bp hará al elemento visible por debajo del breakpoint especificado e invisible por encima de él." -ogUrl= "/visibilidad.html" -docsMenu = true block main main(itemscope itemprop="mainContentOfPage" role="main") include:markdown-it(html) /src/md/visibilidad.md ================================================ FILE: src/pug/pages/index.pug ================================================ extends ../config/template include ../includes/banner include ../includes/main-banner include ../includes/feature-item append config -title = "EDgrid - Libreria Sass/CSS de EDteam para construir layouts web responsive" -description = "Libreria Sass/CSS de EDteam para construir layouts web responsive" -ogUrl = "/index.html" -img = "/assets/img/docs-banner.jpg" -titleBanner = "EDgrid" -descriptionBanner = "Libreria Sass/CSS de EDteam para construir layouts web responsive" -clase = "" -boton = false -botonClass= "" -botonUrl="" -botonText ="" -botones = true block banner //+banner(img, titleBanner, descriptionBanner, clase, boton, botonClass, botonUrl, botonText, botones) +main-banner() block main main .ed-grid h1.s-to-center.s-center.l-section El responsive web design
nunca fue tan sencillo .main-features.ed-grid.m-grid-2.lg-grid-3.row-gap +main-feature("assets/img/logo/EDgrid-logo.svg", "¿Qué es?", "EDgrid es una libreria construida con Sass (y con versión CSS) para Responsive Web Design (RWD). Es muy ligero, personalizable y te permite prototipar y crear layouts en muy poco tiempo sin conflictos con tu proyecto.") +main-feature("assets/img/utils/layout.svg", "Solo Layout", "No añade botones, tipografías, colores ni otro estilo visual. Es layout puro para maquetar que no genera conflictos. Además EDgrid en su versión Sass compila solo el código necesario sin css extra.") +main-feature("assets/img/utils/help.svg", "Open Source", "Completamente gratuito y de código abierto (GPL2). Puede usarlo en proyectos comerciales, descargarlo y estudiar el código y crear sus propias versiones derivadas sin pagar una licencia.") +main-feature("assets/img/utils/grid.svg", "CSS Grid y Flexbox", "EDgrid usa las características más modernas de CSS: Flexbox y Grid. Además incluye fallbacks para Grid en navegadores que todavía no lo soporten.") +main-feature("assets/img/utils/rwd.svg", "Adiós columnas", "¿Cansado de las 12 columnas? Con EDgrid puedes crear layouts con completa libertad sin amarrarte a usar siempre doce columnas.") +main-feature("assets/img/utils/bug.svg", "Debug", "El modo dev se activa con una sola línea de código y te muestra la construcción del layout por debajo del capó. Así podrás corregir problemas con facilidad.") ================================================ FILE: src/scss/ed-grid/components/_alignment.scss ================================================ /* Alineación de contenido */ // Recorrer los breakpoints @each $size in $sizes { // Lista de alineaciones $aligns : left, center, right; // Crea las alineaciones por cada breakpoint @include from($size) { // Crea las alineaciones de contenido @each $align in $aligns { .#{$size}-#{$align} { text-align : $align; } } // Crea las alineaciones de bloques .#{$size}-to-left { &[class*=button] { display: table } margin-left : 0; margin-right : auto; } .#{$size}-to-center { &[class*=button] { display: table } margin-left : auto; margin-right : auto; } .#{$size}-to-right { &[class*=button] { display: table } margin-right : 0; margin-left : auto; } .#{$size}-block-left { display : block; margin-left : 0; margin-right : auto; } .#{$size}-block-center { display : block; margin-left : auto; margin-right : auto; } .#{$size}-block-right { display : block; margin-right : 0; margin-left : auto; } } } // Order @each $size in $sizes { @include from ($size) { @for $i from 1 through $max-grid-columns { .#{$size}-order-#{$i} { order : $i; } } } } // Flex aignments map // Used for build aligments properties in breakpoints $flex-alignments : ( row: ( flex-direction: row ), row-reverse: ( flex-direction: row-reverse ), column: ( flex-direction: column ), column-reverse: ( flex-direction: column-reverse ), main-start: ( justify-content: flex-start ), main-center: ( justify-content: center ), main-end: ( justify-content: flex-end ), main-justify: ( justify-content: space-between ), main-distribute: ( justify-content: space-evenly ), cross-baseline: ( align-items: baseline, align-content: baseline ), cross-start: ( align-items: flex-start, align-content: flex-start ), cross-center: ( align-items: center, align-content: center ), cross-end: ( align-items: flex-end, align-content: flex-end ) ); /* Crea selectores agrupados para propiedades básicas de flexbox*/ // Recorre los breakpoints @each $size in $sizes { // Selector inicial (placeholder) $selectors : '.flex'; // Recorre el mapa de selectores @each $selector, $property in $flex-alignments { // Crea el selector actual $selector : ".#{$size}-#{$selector}"; // Concatena el selector actual a la lista total de selectores (con coma) $selectors : append($selectors, unquote($selector), comma); } @include from($size) { #{$selectors} { display : flex; flex-wrap : wrap; } } } /*Crea selectores de flex alignment en todos los breakpoints*/ // Recorre los breakpoints @each $size in $sizes { @include from($size) { // Recorre el mapa de selectores @each $selector, $property in $flex-alignments { // Construye el selector .#{$size}-#{$selector} { // Recorre el submapa de propiedades y valores @each $prop, $value in $property { // Imprime cada propiedad y valor #{$prop} : $value; } } } } } ================================================ FILE: src/scss/ed-grid/components/_base.scss ================================================ // RWD Bases *, *:before, *:after { box-sizing: border-box; } body { margin : 0; font-family : sans-serif; } // Imágenes responsive img { max-width : 100%; height : auto; } a { text-decoration : none; &:hover { text-decoration : underline } } ================================================ FILE: src/scss/ed-grid/components/_core-flexbox.scss ================================================ // placeholder para ed-container %ed-container { display : flex; flex-wrap : wrap; max-width : var(--max-width); margin-left : auto; margin-right : auto; width : 100%; } // placeholder para ed-item %ed-item { margin : 0; padding-left : $gap / 2; padding-right : $gap / 2; } // Hace que un elemento siempre mida el 100% del ancho disponible @mixin full { max-width : 100%; } // mixin para crear un ed-container @mixin edContainer { @extend %ed-container; @include dev-container; } @mixin ed-container { @extend %ed-container; @include dev-container; &.full { @include full; } } @mixin edItemWidth($currentBp, $prevBp, $coreBp){ // Si el tamaño actual es diferente al previo // asignará el ancho en porcentaje @if $currentBp != $prevBp{ @if $currentBp < 1 { @include from($coreBp){ width : $currentBp * 100%; } } @else { @include from($coreBp){ width : $currentBp * 1%; } } } } // mixin para crear un ed-item @mixin edItem($s:100,$m:$s,$l:$m,$xl:$l) { @extend %ed-item; @include dev-item; // calcular el ancho para el primer breakpoint // por defecto es 100% y se convertirá al porcentaje adecuado // según el valor que se le pase @if $s == 100 { width : 100%; } @else if $s < 1 { width : $s * 100%; } @else { width : $s * 1%; } // widths for others breakpoints // anchos para los demás breakpoints @include edItemWidth($m, $s, m); //medium @include edItemWidth($l, $m, l); //large @include edItemWidth($xl, $l, xl); //xlarge } @mixin ed-item($s:100,$m:$s,$l:$m,$xl:$l) { @extend %ed-item; @include dev-item; // calcular el ancho para el primer breakpoint // por defecto es 100% y se convertirá al porcentaje adecuado // según el valor que se le pase @if $s == 100 { width : 100%; } @else if $s < 1 { width : $s * 100%; } @else { width : $s * 1%; } // widths for others breakpoints // anchos para los demás breakpoints @include edItemWidth($m, $s, m); //medium @include edItemWidth($l, $m, l); //large @include edItemWidth($xl, $l, xl); //xlarge } // crear un ed-container .#{$container} { @include ed-container() } // crear un ed-item .#{$item} { @include ed-item; // un ed-item a la vez puede ser ed-container // para evitar anidaciones innecesarias &.#{$container}{ padding-left : 0; padding-right : 0; } } // Breakpoints @each $size in $sizes{ @include from($size) { @for $i from 1 through 20 { .#{$size}-#{$i*5}, .#{$item}.#{$size}-#{$i*5} { width : $i * 5%; } } @each $fraction in $fractions { @for $i from 1 through $fraction { .#{$size}-#{$i}-#{$fraction}, .#{$item}.#{$size}-#{$i}-#{$fraction} { width : (100% / $fraction) * $i } } } } } ================================================ FILE: src/scss/ed-grid/components/_core-grid.scss ================================================ // Calcula ancho de cada columna @mixin grid-column-width($i) { // La cantidad de gaps es igual a la cantidad de columnas menos 1 $n : #{$i - 1}; // Formula para calcular el ancho de cada columna $column-width : calc((100% - var(--gap) * #{$n}) / #{$i}); // Define las columnas en el contenedor grid-template-columns : repeat($i, $column-width); } // gap para los EDgri containers con brakpoints // Probando cómo funciona la opción de prototipado @for $i from 0 through 4 { @include prototype(gap-#{$i}, --gap, #{$l-unit * $i}, '.ed-grid'); } .#{$grid-container} { display : grid; grid-template-columns : 100%; column-gap : var(--gap); @for $i from 0 through 4 { &.gap-#{$i} { --gap: #{$l-unit * $i}; } } // Evita que en tamaños moviles los items queden pegados a los lados width : calc(100% - 2rem); margin-left : 1rem; margin-right : 1rem; max-width : var(--max-width); // Por sobre el max width el container se centra @include from($max-width) { width : 100%; margin-left : auto; margin-right : auto; } // Agrega separación vertical entre filas &.row-gap, &.rows-gap { row-gap : var(--gap); } // Para containers hijos de otro container o con clase full // se elimninan los márgenes y se ocupa todo_ el ancho disponible .#{$grid-container}, &.full { width : 100%; max-width : 100%; margin-right : 0; margin-left : 0; } // Fuerza a ed-grid a tomar tamaños y alineaciones con clases // Es por conflicto con la declaracion anterior, toca revisar @each $size in $sizes { @include from($size) { @for $i from 1 through 20 { .#{$grid-container}.#{$size}-#{$i*5}, .#{$grid-container} .#{$grid-container}.#{$size}-#{$i*5} { width : $i * 5%; } } .#{$grid-container}.#{$size}-to-center, .#{$grid-container} .#{$grid-container}.#{$size}-to-center { margin-left: auto; margin-right: auto; } .#{$grid-container}.#{$size}-to-right, .#{$grid-container} .#{$grid-container}.#{$size}-to-right { margin-left: auto; margin-right: 0; } .#{$grid-container}.#{$size}-to-left, .#{$grid-container} .#{$grid-container}.#{$size}-to-left { margin-left: 0; margin-right: auto; } } } // Define columnas en containers e items por breakpoint @each $size, $screen-size in $breakpoints { // Estilos por breakpoint @include from($size) { // Recorre la cantidad de columnas @for $i from 1 through $max-grid-columns { // Columnas en el contenedor // Una columna @if $i == 1 { &.cols-#{$size}-1, &.#{$size}-grid-1 { grid-template-columns : 100%; } } // Más de una columna @if $i > 1 { &.cols-#{$size}-#{$i}, &.#{$size}-grid-#{$i} { @include grid-column-width($i); } } // Columnas en los items > .span-#{$size}-#{$i}, > .#{$size}-cols-#{$i} { grid-column-end : span $i; } // rows en los items > .#{$size}-rows-#{$i} { grid-row-end : span $i; } // Inicio de columna en items > .#{$size}-x-#{$i} { grid-column-start : $i; } // Inicio de fila en items > .#{$size}-y-#{$i} { grid-row-start : $i; } } } } // Hack para las alineaciones // Ahora un edgrid puede alinear todos sus hijos &[class*="-main-"], &[class*="-cross-"] { display: grid; } @include dev-container; > * { @include dev-item; } } ================================================ FILE: src/scss/ed-grid/components/_dev.scss ================================================ // altura de los pseudoelementos que imprimiran clases $info-height : rem(20px); $info-font-size : $info-height * 0.6; %info { content : attr(class); font-style : italic; font-size : $info-font-size; font-weight : normal; z-index : 1; right : 0; position : absolute; display : table; width : 100%; padding : 0 em(5px); height : $info-height; line-height : $info-height; } // estilos para los containers en modo dev @mixin dev-container-style { $dev-color : tomato; padding-top : $info-height; margin-bottom : 10px; outline : 1px solid $dev-color; position : relative; .#{$container}, .#{$grid-container} { margin-bottom : 0 } &:before { @extend %info; top : 0; background : rgba($dev-color, .3); color : $dev-color; } } @mixin dev-container{ @if $dev == true {@include dev-container-style} @else if $dev-hover == true {&:hover {@include dev-container-style}} } // estilos para los items en modo dev @mixin dev-item-style { $dev-color : steelblue; position : relative; padding-bottom : $info-height; background-color : rgba($dev-color, 0.1); outline : 1px solid $dev-color; background-clip : content-box; &:before { @extend %info; background : rgba($dev-color, .8); color : #FFF; bottom : 0; } } @mixin dev-item { @if $dev == true {@include dev-item-style} @else if $dev-hover == true {&:hover {@include dev-item-style}} } // Mixin para modo desarrollo @mixin dev-mode { margin : 0 !important; position : relative; top : 66px; // imprimir información del breakpoint &:before { @extend %info; position : fixed; background : steelblue; color : #FFF; font-size : $info-height * 0.7; text-align : center; line-height : 36px; height : 36px; top : 0; } @each $size, $screen-size in $breakpoints { @include from($size) { &:before { content : "ed-grid: size #{$size}, from #{$screen-size} (ed-containers: red, ed-items: blue, yellow)"; } } } } // Incluir el modo dev en body @if $dev { body { @include dev-mode } } // CSS body.dev, body.desarrollo { @include dev-mode; .ed-container, .ed-grid { @include dev-container-style; } .ed-item, .ed-grid > * { @include dev-item-style; } &-hover { .ed-container, .ed-grid { &:hover { @include dev-container-style; } } .ed-item, .ed-grid > * { &:hover { @include dev-item-style; } } } } ================================================ FILE: src/scss/ed-grid/components/_layout.scss ================================================ // SEPARACIONES // Use las siguientes clases para crear separaciones verticales armoniosas // Las clases cancel-l- cancelan el margin bottom del hermano anterior .l-block, .cancel-l-block, .l-section, .cancel-l-section, .l-big-section, .cancel-l-big-section { margin-top : 0; } // Bloque .l-block { margin-bottom : var(--vertical-block-space); } .cancel-l-block { margin-top : calc(var(--vertical-block-space) * -1); } // Sección .l-section { margin-bottom : calc(var(--vertical-block-space) * 2); } .cancel-l-section { margin-top : calc(var(--vertical-block-space) * -2); } // Big section .l-big-section { margin-bottom : calc(var(--vertical-block-space) * 4); } .cancel-l-big-section { margin-top : calc(var(--vertical-block-space) * -4); } // sticky footer body { display : flex; flex-direction : column; min-height : 100vh; } .main-footer { margin-top : auto; } // Distribución vertical de contenido // Puede sobreescribirlas usando las clases de arriba // Encabezados h1, h2, h3, h4, h5, h6 { margin-top : 0; margin-bottom : var(--vertical-content-space); } h1 { margin-bottom : calc(var(--vertical-content-space) * 1.5); } // Separación entre secciones de contenido // La norma recomienda encerrar cada sección en una etiqueta section // Pero en la práctica es dificil conseguirlo siempre así que la presencia // De un titulo indica el cambio de sección p, video, blockquote, article, section, form, figure, iframe, ul, ol, pre, hr, dl, address, table { margin-top : 0; margin-bottom : calc(var(--vertical-content-space) * 1.5); + h2 { padding-top : calc(var(--vertical-content-space) * 1.5); } + h3 { padding-top : var(--vertical-content-space); } } // Eliminar separaciones ul ul, ol ol, ul ol, ol ul { margin-bottom: 0; } // Creación de márgenes y paddings @include breakpoints { // Crea cinco niveles de separacion @for $i from 0 through 5 { // Unidad de separación actual $unit : $l-unit * $i; // Valida el cero para evitar devolver 0rem como unidad @if $i == 0 { $unit : 0; } // Valida el 5 para devolver nueva clase y unidad @if $i == 5 { $i : "05"; $unit: $l-unit * 0.5; } // Padding top &-pt-#{$i} { padding-top : $unit; } // Padding left &-pl-#{$i} { padding-left : $unit; } // Padding bottom &-pb-#{$i} { padding-bottom : $unit; } // Padding right &-pr-#{$i} { padding-right : $unit; } // Padding vertical &-py-#{$i} { padding-top : $unit; padding-bottom : $unit; } // Padding horizontal &-px-#{$i} { padding-left : $unit; padding-right : $unit; } // Padding total &-pxy-#{$i} { padding : $unit; } // Margin right &-mr-#{$i} { margin-right : $unit; } // Margin bottom &-mb-#{$i} { margin-bottom : $unit; } // Margin bottom (negativo) &-mt-#{$i} { margin-top : $unit * -1; } // Margin top (negativo) &-ml-#{$i} { margin-left : $unit * -1; } // Elemento sticky &-sticky-#{$i} { position: sticky; top: calc(var(--header-height) + #{$unit}); } } &-sticky-none { position: static; } } ================================================ FILE: src/scss/ed-grid/components/_media-queries.scss ================================================ /// Devuelve true si el breakpoint es parte del core /// @group mq /// @author Alvaro Felipe /// @param {number} $bp - breakpoint /// @example scss /// .elemento { /// @if isCoreBreakpoint(l) { /// $customBp : 720px; /// .... /// } /// } @function isCoreBreakpoint($bp){ @if map-get($breakpoints,$bp) { @return true } @else { @return false } } /// Devuelve true si el breakpint es válido (em, rem, px) /// @group mq /// @author Alvaro Felipe /// @param {number} $bp - breakpoint a verificar. @function isValidBreakpoint($bp){ @if type-of($bp) == number and (unit($bp) == 'px' or unit($bp) == 'em' or unit($bp) == 'rem') { @return true } @else { @return false } } /// Obtiene un breakpoint del core /// @group mq /// @author Alvaro Felipe /// @param {number} $bp - breakpoint a obtener. @function getBp($bp){ @return map-get($breakpoints,$bp) } /// Convierte un valor en em o rem a px /// @group mq /// @author Alvaro Felipe /// @param {number} $value - var a convertir a pixeles. @function toPx($value){ @if type-of($value) == number { @if unit($value) == 'em'{ @return ($value / 1em) * 16px; } @else if unit($value) == 'rem'{ @return ($value / 1rem) * 16px } @else if unit($value) == 'px' { @return $value; } @else { @error "La funcion toPx() solo acepta numeros en em o rem o px" } } @else { @error "La funcion toPx() solo acepta numeros en em o rem" } } /// From (mayor que $bp) /// @group mq /// @author Alvaro Felipe /// @param {number} $from - breakpoint /// @example scss /// .elemento { /// width: 30%; /// @include from(m) { /// width: 50%; /// } /// } @mixin from($from){ // Si el bp es del core de EDgrid @if isCoreBreakpoint($from){ // no imprime media query para tamaño s @if $from == s { @content } // imprime media query en los otros tamaños @else { @media screen and (min-width: getBp($from)){ @content } } } // Si el bp no es del core de EDgrid pero es una unidad válida @else if isValidBreakpoint($from){ @media screen and (min-width: $from){ @content } } // Error @else { @error 'El mixin from() solo puede recibir un breakpoint del Core (#{map-keys($breakpoints)}) o un número en px, em o rem' } } /// To (es menor que $to) /// @group mq /// @author Alvaro Felipe /// @param {number} $to - breakpoint /// @example scss /// .elemento { /// width: 50%; /// @include to(m) { /// width: 30%; /// } /// } @mixin to($to){ // Si es un breakpoint del core @if isCoreBreakpoint($to){ @if $to == s { @content; } @else { @media screen and (max-width : getBp($to) - 1px) { @content } } } // Si es un breakpoint válido (px, em, rem) @else if isValidBreakpoint($to){ @media screen and (max-width: toPx($to) - 1px){ @content } } // Si no es un breakpoint válido lanzar error @else { @error 'El mixin to() solo puede recibir un breakpoint del Core (#{map-keys($breakpoints)}) o un número en px, em o rem' } } /// fromTo la regla se ejecuta entre ambos breakpoints. /// @group mq /// @author Alvaro Felipe /// @param {number} $from - breakpoint desde que medida se iniciara la regla. /// @param {number} $to - breakpoint hasta que medida se ejecutara la regla. /// @example scss /// .elemento { /// background-color: cyan; /// @include fromTo(s, l) { /// background-color: darken(cyan, .8); /// } /// } @mixin fromTo($from,$to){ // Si ambos son breakpoints del core @if isCoreBreakpoint($from) and isCoreBreakpoint($to){ @if getBp($to) > getBp($from) { @media screen and (min-width : getBp($from)) and (max-width : getBp($to) - 1px) { @content } } @else { @error "El segundo argumento del mixin fromTo debe ser mayor que el primero" } } // Si solo $from es breakpoint del core @else if isCoreBreakpoint($from) and not isCoreBreakpoint($to){ @if isValidBreakpoint($to) { @if toPx($to) > toPx(getBp($from)) { @media screen and (min-width : getBp($from)) and (max-width : toPx($to) - 1px) { @content } } @else { @error "El segundo argumento del mixin fromTo debe ser mayor que el primero" } } @else { @error "El segundo argumento del mixin fromTo() debe ser un breakpoint del Core (#{map-keys($breakpoints)}) o un número en px, em o rem" } } // Si solo $to es breakpoint del core @else if not isCoreBreakpoint($from) and isCoreBreakpoint($to) { @if isValidBreakpoint($from) { @if toPx(getBp($to)) > toPx($from){ @media screen and (min-width : $from) and (max-width : getBp($to) - 1px) { @content } } @else { @error "El segundo argumento del mixin fromTo debe ser mayor que el primero" } } @else { @error "El primer argumento del mixin fromTo() debe ser un breakpoint del Core (#{map-keys($breakpoints)}) o un número en px, em o rem" } } // Si no son breakpoints del core pero son breakpoints válidos (px, em, rem) @else if isValidBreakpoint($from) and isValidBreakpoint($to){ @if toPx($to) > toPx($from) { @media screen and (min-width : $from) and (max-width : toPx($to) - 1px) { @content } } @else { @error "El segundo argumento del mixin fromTo debe ser mayor que el primero" } } // Si al menos hay un breakpoint inválido @else { @error 'Los argumentos del mixin fromTo() deben ser breakpoints del Core (#{map-keys($breakpoints)}) o números en px, em o rem'; } } ================================================ FILE: src/scss/ed-grid/components/_prototype.scss ================================================ @mixin ratio($h, $v) { $width: 100%; width: $width; height: 0; overflow: hidden; padding-bottom: $width * ($v/$h); position: relative; } $border-radius: (tl: top-left, tr: top-right, bl: bottom-left, br: bottom-right); $z-indexs: ( z-back: var(--z-back), z-normal: var(--z-normal), z-tooltip: var(--z-tooltip), z-fixed: var(--z-fixed), z-modal: var(--z-modal), ); @if $prototype==true { .button { display: inline-block; padding: .5em 1em; color: #FFF; background: var(--color); cursor: pointer; text-decoration: none; line-height: inherit; border-radius: .25rem; transition: transform .05s; border: none; &:hover { background: var(--color-alt); } } @each $index, $value in $z-indexs { .#{$index} { z-index: $value; } } @include breakpoints { $border: 1px solid var(--border-color); // Bordes &-border { border: $border; } &-border-none { border: none; } &-radius { border-radius: var(--border-radius); } // boder top, left, right, bottom @each $direction in top right bottom left { &-border-#{$direction} { border-#{$direction}: $border; } &-border-none { border-#{$direction}: none; } } // Border radius @each $corner in map-keys($border-radius) { &-radius-#{$corner} { border-#{map-get($border-radius,$corner)}-radius: var(--border-radius); } } @include l-unit("radius", "border-radius"); @each $corner in map-keys($border-radius) { @include l-unit("radius-#{$corner}", "border-#{map-get($border-radius,$corner)}-radius"); } @each $corner in map-keys($border-radius) { &-radius-#{$corner}-none { border-#{map-get($border-radius,$corner)}-radius: 0; } } &-radius-none { border-radius: none; } // Backgrounds &-bg-blue { background-color: var(--color); } &-bg-white { background-color: #FFF; } &-bg-grey { background-color: var(--light-bg); } &-bg-none { background-color: transparent; } // ratios @each $x in 1 2 3 4 { @each $y in 1 2 3 4 { &-ratio-#{$x}-#{$y} { @include ratio($x, $y) } } } // 16,9 &-ratio-16-9 { @include ratio(16, 9) } // 9,16 &-ratio-9-16 { @include ratio(9, 16) } // 21,9 &-ratio-21-9 { @include ratio(21, 9) } // Sombras &-shadow { box-shadow: 0 0 1rem #CCC; } &-shadow-bottom { box-shadow: 0 0.5rem 1rem -0.5rem #CCC; } &-shadow-top { box-shadow: 0 -0.5rem 1rem -0.5rem #CCC; } &-shadow-right { box-shadow: 0.5rem 0 1rem -0.5rem #CCC; } &-shadow-left { box-shadow: -0.5rem 0 1rem -0.5rem #CCC; } &-shadow-none { box-shadow: none; } // Clases con flexbox &-fxn { flex: none; } &-fxw { flex-wrap: nowrap; } &-fxg { flex-grow: 1; } // Opacidad @for $i from 1 through 10 { &-opacity-#{$i} { opacity: $i * 0.1; } } } .circle, .square { @include ratio(1, 1); } .circle { border-radius: 50%; } .img-container { position: relative; img { width: 100%; height: 100%; position: absolute; top: 0; left: 0; object-fit: cover; } } } ================================================ FILE: src/scss/ed-grid/components/_video.scss ================================================ .ed-video { height : 0; overflow : hidden; padding-bottom : 56.25%; position : relative; > iframe, > video, > .video { position : absolute; top : 0; left : 0; width : 100%; height : 100%; } } ================================================ FILE: src/scss/ed-grid/components/_visibility.scss ================================================ /// Muestra un elemento a partir del breakpoint especificado /// @group visibility /// @author Alvaro Felipe /// @param {number} $bp - breakpoint a partir del cual mostrar el elemento /// @example scss /// .sidebar { /// @include showFrom(l); /// } @mixin showFrom($bp){ @include to($bp){ display : none; } } /// Muestra un elemento por debajo del breakpoint especificado. /// @group visibility /// @author Alvaro Felipe /// @param {number} $bp - breakpoint. /// @example scss /// .sidebar { /// @include showFrom(l); /// } @mixin showTo($bp){ @include from($bp){ display : none; } } /// Oculta un elemento a partir del breakpoint especificado /// @group visibility /// @author Alvaro Felipe /// @param {number} $bp - breakpoint a partir del cual ocultar el elemento /// @example scss /// .sidebar { /// @include hideFrom(l); /// } @mixin hideFrom($bp){ @include from($bp){ display : none; } } /// Oculta un elemento por debajo del breakpoint especificado. /// @group visibility /// @author Alvaro Felipe /// @param {number} $bp - breakpoint /// @example scss /// .sidebar { /// @include hideFrom(l); /// } @mixin hideTo($bp){ @include to($bp){ display : none; } } // Version css @each $size, $screenSize in $breakpoints { .from-#{$size} { @include showFrom($size) } .to-#{$size} { @include showTo($size) } } ================================================ FILE: src/scss/ed-grid/helpers/_functions.scss ================================================ /// Transforma un valor en pixeles a em. /// @group functions /// @author Alvaro Felipe /// @param {number} $el - el valor en pixeles que se desea convertir. /// @param {number} $context - el valor en pixeles del contenedor. /// @return {number} el tamaño transformado en em. @function em($el,$context:16px) { @if type_of($el) == number and unit($el) == 'px' { @return ($el / $context) * 1em; } @else { @error 'Function em() requires a px unit as first argument / La función em() requiere una unidad de pixeles como primer argumento (el segundo es opcional)' } } /// Transforma un valor en pixeles a rem. /// @group functions /// @author Alvaro Felipe /// @param {number} $el - el valor en pixeles que se desea convertir. /// @return {number} el tamaño transformado en rem. @function rem($el) { @if type_of($el) == number and unit($el) == 'px' { @return ($el / 16px) * 1rem; } @else { @error 'Function rem() requires a px unit as argument / La funcion rem() requiere una unidad de pixeles como argumento'; } } ================================================ FILE: src/scss/ed-grid/helpers/_mixins.scss ================================================ // Recorre cada uno de los breakpoints que hay en las variables por defecto @mixin breakpoints { @each $size in $sizes { @include from($size) { .#{$size} { @content; } } } } // Mixin para crear seletores utilizando las unidades de medidas creadas con $l-unit // 05:0.25rem, 1:0.5rem, 2:1rem, 3:1.5rem, 4:2rem @mixin l-unit($selector, $property) { @for $i from 0 through 5 { // Unidad de separación actual $unit: $l-unit * $i; // Valida el cero para evitar devolver 0rem como unidad @if $i==0 { $unit: 0; } @if $i==5 { $i: '05'; $unit: $l-unit * 0.5; } &-#{$selector}-#{$i} { #{$property}: $unit; } } } /* * $names - Lista de nombres que usaremos para nombrar nuestras clases. * Recorremos una lista por si queremos múltiples selectores con el mismo valor * Ejemplo: (red-color, color-red) * sería igual a .red-color { color : red; } .color-red { color : red; } * * $property, $value - Propiedad CSS con su respectivo valor * * $concact - En ocasiones necesitaremos concadenar para crear clases más específicas. * Por la forma en que funciona el mixin no podemos usar concadenar desde los names. * Para ver un ejemplo práctico vaya a la parte de los gaps en _core-grid.scss * * $debug - Ver cómo sería el resultado en la construcción de la clase y el CSS de salida. * Por defecto está desactivado */ @mixin prototype($names, $property, $value, $concat: '', $debug : false) { @each $name in $names { // Recorremos cada breakpoint que tenemos almacenados en $sizes @each $size in $sizes { @if $size != 'l' { // Creamos nuestro selector con las variables $selector : '#{$concat}.#{$size}-#{$name}'; @include from($size) { // Modo debug para saber ver cómo se crearía el selector y el CSS resultante // Los \a represetan saltos de línea en el string @if $debug { @debug ('\a@media screen and min-width(#{map-get($breakpoints, $size)}) { \a #{$selector} { \a #{$property} : #{$value} \a }\a}'); } // Salida de código #{$selector} { #{$property} : $value; } } } } } } ================================================ FILE: src/scss/ed-grid/legacy/_ed-menu.scss ================================================ // estilo default del menu /// Aplica un estilo por defecto al menu. /// @group menu /// @author Alvaro Felipe @mixin menuStyleDefault { background : #eee; li:hover { background : rgba(#000, .1) } ul { background : darken(#eee, 5) } a { color : #666 } } // estilo nav para el menu // incluye el breakpoint que lo cambia a horizontal @mixin menuStyleNav($bp) { $border : 1px solid rgba(#000, .1); background : #EEE; border : $border; li:hover { background : rgba(#000, .1) } ul { background : darken(#eee, 5) } a { color : #666 } li { border-bottom : $border; &:last-child { border-right : none; border-bottom : none; } } ul { border : $border; li { border-bottom : $border; &:last-child { border-bottom : none } } } @include from($bp) { > li { border-right : 1px solid rgba(#000, .1); border-bottom : none; } } } /// estilo button para el menú /// @group menu /// @author Alvaro Felipe @mixin menuStyleButton { li { margin-bottom : .5em; margin-right : .5em; } a { border : 1px solid rgba(#000, .1); background : #EEE; line-height : 2.5em; padding : 0 1.5em; border-radius : 4px; color : #666; &:hover { background : rgba(#000, .1) } } } /// mixin que construye el menú sin un tema, solo maqueta /// @group menu /// @author Alvaro Felipe /// @param {number} $bp - Breakpoint a partir del cual el menu se volvera horizontal. /// @param {number} $style - estilo a usar en el menu las opciones son: [default | nav | button], este argumento es opcional. /// @example [scss | sass] - Usage @mixin edMenu($bp,$style:null) { width : 100%; &, ul { margin-top : 0; margin-bottom : 0; padding-left : 0; list-style : none; } li { position : relative; list-style : none; flex : auto; // Si es padre de un submenu &.parent-submenu { display : flex; flex-wrap : wrap; a { flex : auto } } } //submenus ul { display : none; @include to($bp) { &.show-submenu { display : block; width : 100%; order : 3; margin-left : 1em; margin-bottom : .5em; } } } a { display : block; line-height : 3em; padding : 0 1em; &:hover { text-decoration : none } } // cambio a horizontal @include from($bp) { display : flex; align-items : center; a { text-align : center } // Ocultar el botón de expandir en horizontal .expand { display : none} ul { position : absolute; left : 0; top : 100%; min-width : 100%; white-space : nowrap; a { text-align : left } ul { top : 0; left : 100%; } } // mostrar submenu li:hover > ul { display : block } } // expand submenu button .expand-submenu { @include hideFrom($bp); $size : 3em; position : relative; right : 0; width : $size; height : $size; cursor : pointer; transition : all .3s; &::after { content : ""; position : absolute; width : 40%; height : 40%; top : 20%; left : 30%; border-left : ($size * 0.15) solid; border-bottom : ($size * 0.15) solid; border-radius : ($size * 0.08); transform : rotate(-45deg); transition : all .3s; } &.active { transform : rotate(180deg); } } // incluir el estilo del menu si se ha definido @if $style == default { @include menuStyleDefault } @if $style == nav { @include menuStyleNav($bp) } @if $style == button { @include menuStyleButton } // compilar los mixins en modo CSS // Se comenta para corregirlo luego de eliminar cssCore //@if $cssCore == true { // &.default { @include menuStyleDefault } // &.nav-bar { @include menuStyleNav($bp) } // &.button-bar { @include menuStyleButton } //} } /// mixin Nav (para el contenedor del menú) /// @group menu /// @author Alvaro Felipe /// @param {string} $direction - El eje desde donde aparecera el menu. Las opciones son [left | right | top | bottom] /// @param {number} $bp - breakpoint que indica hasta donde debe mostrarse en vertical. /// @example scss /// nav { /// @include edNav(left, m); /// } @mixin edNav($direction, $bp){ @include to($bp) { $lrWidth : 85%; position : fixed; transition : all .3s; height : 100vh; z-index : 200; overflow-y : auto; @if $direction == left or $direction == right { width : $lrWidth; } @else { width : 100%; } @if $direction == left { left : $lrWidth * -1; &.show-menu { left : 0 } } @if $direction == right { right : $lrWidth * -1; &.show-menu { right : 0 } } @if $direction == top { width : 100%; left : 0; top : -100%; &.show-menu { top : 0 } } @if $direction == bottom { width : 100%; left : 0; bottom : -100%; &.show-menu { bottom : 0 } } } } /// Toggle del menu /// @group menu /// @author Alvaro Felipe /// @param {number} $size - especifica el tamaño del elemento toggle /// @param {color} $color - especifica el color del toggle. /// @example scss /// .menu-toggle { /// @include navToggle(200px, $black); /// } @mixin navToggle($size, $color) { $segmentHeight : ($size / 5); position : relative; z-index : 300; width : $size * 1.5; height : $size; box-shadow : 0 ($segmentHeight) $color inset; cursor : pointer; &::after, &::before { content : ""; position : absolute; width : 100%; height : ($segmentHeight); background-color : $color; bottom : 0; } &::after { bottom : $segmentHeight * 2; } } // Version CSS // Menus // se requiere la clase .ed-menu // y la clase para cambio a horizontal @if $legacy == true { .ed-menu { &.s-horizontal { @include edMenu(s) } &.m-horizontal { @include edMenu(m) } &.l-horizontal { @include edMenu(l) } &.xl-horizontal { @include edMenu(xl) } } .ed-nav { &.l-top { @include edNav(top, l)} &.l-bottom { @include edNav(bottom, l)} &.l-left { @include edNav(left, l)} &.l-right { @include edNav(right, l)} &.x-top { @include edNav(top, xl)} &.xl-bottom { @include edNav(bottom, xl)} &.xl-left { @include edNav(left, xl)} &.xl-right { @include edNav(right, xl)} &.m-top { @include edNav(top, m)} &.m-bottom { @include edNav(bottom, m)} &.m-left { @include edNav(left, m)} &.m-right { @include edNav(right, m)} } .nav-toggle { @include navToggle(20px, #333) } } ================================================ FILE: src/scss/ed-grid/legacy/_grid.scss ================================================ // returns grid-item width based on columns number and gutter // retorna el ancho del grid-item basado en el número de columnas y el gutter @function item-width($width,$gutter){ @return calc(#{$width} - #{$gutter}); } // asigns grid-item width for each breakpoint @mixin columnWidth($currentBreakpoint, $previousBreakpoint, $edgridBreakpoint ,$gutter,$gridItem){ // check if current breakpoint is not equal to previous breakpoint @if $currentBreakpoint != $previousBreakpoint { @include from($edgridBreakpoint){ $width: 100% / $currentBreakpoint; & > #{$gridItem}{ width : item-width($width,$gutter); } } } } /* | Mixin para crear cuadriculas | | $gridItemSelector: nombre del selector CSS de cada item de la cuadricula | $listColumns: | * lista de numeros de columnas en cada breakpoint (separados por espacios). Ej: 1 2 3 4 | * el numero de columnas del ultimo breakpoint se hereda a breakpoints superiores | $gutter: separación entre cada item de la cuadricula (opcional) | */ /// mixin para crear cuadriculas /// @group grid /// @author Alvaro Felipe /// @param {element} $selector - nombre del selector css de cada item de la cuadricula. /// @param {list} $listColumns - lista de numeros de columnas en cada breakpoint. Ej: (1,2,3,4), el numero de columnas del ultimo breakpoint se hereda a breakpoints superiores /// @param {number} $gutter - el espaciado entre cada elemento de la cuadricula. Por defecto es de 1em. /// @example scss /// .gallery { /// @include grid(li, 5 ); /// } @mixin grid($gridItemSelector,$listColumns,$gutter:1em){ // $width sirve para calcular el ancho de cada item $width : 100% / nth($listColumns,1); // elimina el espaciado vertical de las imágenes img { display : block; } display : flex; flex-wrap : wrap; margin-left : -($gutter / 2); margin-right : -($gutter / 2); // Evitar scroll horizontal @at-root { body { overflow-x: hidden; } } // por si el contenedor es un ul @if $gridItemSelector == li { margin : 0; padding : 0; list-style : none; li { margin-left : 0; list-style : none; } } & > #{$gridItemSelector} { width : item-width($width,$gutter); margin : $gutter / 2; } // calculate grid item width for each breakpoint $indice: 1; $longListColumns: length($listColumns); @each $size, $_ in $breakpoints{ @if $indice > 1 and $indice <= $longListColumns{ @include columnWidth(nth($listColumns,$indice),nth($listColumns,$indice - 1),$size,$gutter,$gridItemSelector); } $indice: $indice + 1; } // Si soporta grid @supports (grid-template-areas: 'header') { $i: 1; $longListColumns: length($listColumns); display: grid; grid-gap: $gutter; margin-left : 0; margin-right : 0; // Restaurar el scroll horizontal (por si se necesitara) @at-root { body { overflow-x: visible; } } @each $size, $_ in $breakpoints{ @if $i <= $longListColumns { @include from($size) { grid-template-columns: repeat(nth($listColumns,$i),1fr); } $i: $i + 1; } } // grid-item > #{$gridItemSelector} { width : 100%; margin : 0; } } } ================================================ FILE: src/scss/ed-grid/legacy/_legacy.scss ================================================ @mixin padding($numero:1) { padding-left : $gap * $numero; padding-right : $gap * $numero; } @mixin noPaddingContainer() { > .#{$item} { @include padding(0) } } @mixin clearfix { &:before, &:after { content : ''; width : 100%; display : table; clear : both; } } @mixin toRight($width:auto,$margin-left:1em) { float : right; width : $width; margin-left : $margin-left; } @mixin toLeft($width:auto,$margin-right:1em) { float : left; width : $width; margin-right : $margin-right; } @mixin toCenter($width:auto) { display : block; width : $width; margin-left : auto; margin-right : auto; text-align : center; } @mixin circle { border-radius : 50% } @mixin full() { width : 100%; max-width : 100%; clear : both; } @mixin stickyFooter { @at-root { body { display : flex; flex-direction : column; min-height : 100vh; } } margin-top : auto; } @mixin cssStyckyFooter { display : flex; flex-direction : column; min-height : 100vh; > footer { margin-top : auto } } @if $legacy == true { .to-center { display : block; margin-right : auto; margin-left : auto; &.ed-container { display : flex; } } .to-left { @include toLeft() } .to-right { @include toRight() } .full { @include full() } .circle { @include circle() } .clearfix { @include clearfix() } .no-padding.#{$container} { @include noPaddingContainer() } .no-padding.#{$item} { @include padding(0) } .padding { @include padding(1) } .padding-2 { @include padding(2) } .padding-3 { @include padding(3) } body.sticky-footer { @include cssStyckyFooter() } .center { text-align : center; } .left { text-align : left; } .right { text-align : right; } // grid version CSS .grid-container.grid-1234 { @include grid('.grid-item', 1 2 3 4) } .grid-container.grid-2345 { @include grid('.grid-item', 2 3 4 5) } // Offset CSS @include cssOffset(); // Alineaciones /* Clases para alineaciones con compatibilidad hacia atrás Sedesactivarán en el futuro */ .main-justify, .main-distribute, .main-center, .main-start, .main-end, .cross-start, .cross-center, .cross-end, .flex-reverse, .flex-column, .flex-reverse, .abcenter { display : flex; flex-wrap : wrap; } .main-justify { justify-content : space-between } .main-distribute { justify-content : space-evenly } .main-center { justify-content : center } .main-start { justify-content : flex-start } .main-end { justify-content : flex-end } .flex-reverse { flex-direction : row-reverse } .flex-column { flex-direction : column } .flex-column-reverse { flex-direction : column-reverse } .cross-start { align-items : start; align-content : start; } .cross-center { align-items : center; align-content : center; } .cross-end { align-items : end; align-content : end; } .abcenter { justify-content : center; align-items : center; } } /* Mixins de alineacion con compatibilidad hacia atras*/ @mixin crossCenter { display : flex; flex-wrap : wrap; align-items : center; align-content : center; } @mixin mainCenter { display : flex; flex-wrap : wrap; justify-content : center; } ================================================ FILE: src/scss/ed-grid/legacy/_offset.scss ================================================ @mixin cssOffset { @each $size, $screen-size in $breakpoints{ @if $size == s { @for $i from 1 through 20 { .#{$size}-offset-#{$i*5}{ margin-left: unquote($i*5 + "%"); } } @each $fraction in $fractions{ @for $i from 1 through length($fractions){ .#{$size}-offset-#{$i}-#{$fraction} { margin-left: (100% / $fraction) * $i; } } } } @else { @media all and (min-width: $screen-size){ //porcentajes @for $i from 1 through 20 { .#{$size}-offset-#{$i*5}{ margin-left: unquote($i*5 + "%"); } } //fracciones @each $fraction in $fractions{ @for $i from 1 through $fraction { .#{$size}-offset-#{$i}-#{$fraction} { margin-left: (100% / $fraction) * $i; } } } } } } } @mixin offsetWidth($currentBp, $prevBp, $coreBp){ @if $currentBp != $prevBp{ @if $currentBp < 1 { @include from($coreBp){ margin-left : $currentBp * 100%; } } @else { @include from($coreBp){ margin-left : $currentBp * 1%; } } } } /// mixin para aplicarle un desplazamiento a un elemento. /// Description el unico parametro necesario es el primero, luego los demas parametros si no estan especificados toman la medida del anterior. /// @group offset /// @author Alvaro Felipe /// @param {number} $s - desplazamiento para medidas menores a 640px. /// @param {number} $m - desplazamiento para medidas mayores a 640px y menores o iguales a 1024px. /// @param {number} $l - desplazamiento para medidas mayores a 1024px y menores o iguales a 1440px. /// @param {number} $xl -desplazamiento para medidas mayores a 1440px en adelante. /// @example scss /// .sidebar { /// @include offset(2, 5, 7); /// } @mixin offset($s,$m:$s,$l:$m,$xl:$l){ @if $s < 1 { margin-left : $s * 100%; } @else { margin-left : $s * 1%; } @include offsetWidth($m,$s,m); @include offsetWidth($l,$m,l); @include offsetWidth($xl,$l,xl); } ================================================ FILE: src/scss/ed-grid-css.scss ================================================ // Esta configuración se usa solamente para compilar la versión CSS $cssCore : true !default; $buttons : true !default; @import "ed-grid"; ================================================ FILE: src/scss/ed-grid.scss ================================================ // Configuraciones $prototype : true !default; $dev : false !default; $dev-hover : false !default; $max-width : 1200px !default; $l-unit : .5rem !default; $gap : $l-unit * 4 !default; // 2rem $fractions : 3 6 !default; $container : ed-container !default; $item : ed-item !default; $grid-container : ed-grid !default; $max-grid-columns : 12 !default; $legacy : false !default; // Breakpoints $breakpoints : ( s : 0, m : 640px, l : 1024px, lg : 1024px, xl : 1440px ) !default; $sizes: map-keys($breakpoints); // Importa archivos de configuración @import 'ed-grid/helpers/mixins'; @import 'ed-grid/helpers/functions'; // Importar componentes // Core @import 'ed-grid/components/base'; @import 'ed-grid/components/media-queries'; @import 'ed-grid/components/dev'; @import 'ed-grid/components/core-flexbox'; @import 'ed-grid/components/core-grid'; @import 'ed-grid/components/layout'; @import 'ed-grid/components/alignment'; // Recommended Utilities @import 'ed-grid/components/visibility'; @import 'ed-grid/components/prototype'; @import 'ed-grid/components/video'; // Not recomended (legacy) @import 'ed-grid/legacy/ed-menu'; @import 'ed-grid/legacy/offset'; @import 'ed-grid/legacy/grid'; @import 'ed-grid/legacy/legacy'; // CSS Variables :root { // Prototype --color : #007BDF; --color-alt : #006DC6; --border-color : #DFE0E0; --light-bg : #F0F0F0; --border-radius : #{$l-unit * 0.5}; // .25rem // layout --vertical-block-space : #{$l-unit * 2}; // 1rem --vertical-content-space : #{$l-unit * 2}; // 1rem --gap : #{$l-unit * 2}; // 1rem --max-width : #{$max-width}; @include from(lg) { --vertical-block-space : #{$l-unit * 4}; --gap : #{$l-unit * 4}; // 2rem } } ================================================ FILE: src/scss/styles.scss ================================================ // Use este archivo para escribir los estilos de la página de documentación $legacy: false; @import "ed-grid"; @import "~edteam-style-guides/edteam-style-guides"; /* This boilerplate is based in ITCSS and SMACSS */ //@import "../../node_modules/edteam-style-guides/edteam-style-guides"; // Config //@import "web-styles/config/functions"; //@import "web-styles/config/variables"; //@import "web-styles/config/mixins"; // libraries @import "web-styles/libraries/prism"; // Base and elements (generic) //@import "web-styles/base/base"; // LAYOUT // Escribe solo los estilos de layout (division en regiones del viewport) @import "web-styles/layout/layout"; // MODULOS (SMACSS) O COMPONENTES (ITCSS) // Son los elementos de UI de tu interfaz, como botones, tablas, menus, etc. // Crea los archivos adicionales que necesites (uno por componente) @import "web-styles/components/buttons"; @import "web-styles/components/menus"; @import "web-styles/components/demo"; @import "web-styles/components/menu-responsive"; // Theme (colors and fonts) //@import "web-styles/theme/typography"; //@import "web-styles/theme/footer"; //@import "web-styles/theme/banner"; //@import "web-styles/theme/icons"; @import "web-styles/components/main-features"; // Utilities (hacks) // Todos los hacks que hayas necesitado para solucionar conflictos // o resolver situaciones extremas. Se espera poder mejorarlos luego. @import "web-styles/hacks/hacks"; ================================================ FILE: src/scss/web-styles/base/base.scss ================================================ *, *::before, *:after { box-sizing: border-box; } body { font-size: fontSize(small); } ================================================ FILE: src/scss/web-styles/components/_buttons.scss ================================================ ================================================ FILE: src/scss/web-styles/components/_demo.scss ================================================ .ed-grid-demo { // border: 1px solid var(--dark-color); margin-bottom: var(--vertical-block-space); background: var(--light-bg); border: 1px solid var(--border-color); .ed-item, .box-demo { min-height: 100px; background-clip: content-box; background-color: var(--color); display: grid; align-content: center; justify-content: center; font-size: 1.5rem; color: #fff; &.ed-container { display: flex; .ed-item { background-color: rgba(#000,.25); } } } .ed-grid { background:var(--border-color); > * { min-height: 100px; background: var(--color); display: grid; align-content: center; justify-content: center; font-size: 1.5rem; color: #fff; } > .ed-grid { background: rgba(#000,.25); } } } .dev-demo, .dev-demo-hover { position: static !important; top : initial; border : 0; @include dev-mode; .ed-item, .ed-grid > * { color: black; } } .dev-demo { .ed-container, .ed-grid { @include dev-container-style; } .ed-item, .ed-grid > * { @include dev-item-style;} &-hover { .ed-container, .ed-grid { &:hover { @include dev-container-style; } } .ed-item, .ed-grid > * { &:hover { @include dev-item-style; } } } } ================================================ FILE: src/scss/web-styles/components/_main-features.scss ================================================ // Features de EDgrid que aparecen en el home .main-features { text-align : center; } // Imágenes de cada feature .main-feature__img { --size : 6rem; width : var(--size); height : var(--size); overflow : hidden; margin : 0 auto 1rem; img { width : 100%; height : 100%; object-fit: contain; object-position: center center; } .main-feature:first-child & { width : calc(var(--size) * 2); } } ================================================ FILE: src/scss/web-styles/components/_menu-responsive.scss ================================================ // Este es el verdadero código, pero para la demostración no podemos usar posicionamiento fijo /* .ed-menu { position : fixed; top : 0; width : 100%; z-index : 100; .logo { height : 2rem } .nav { @include to(lg) { position : fixed; left : 0; bottom : 0; background : black; } } .menu { list-style : none } .link { color : grey; &.active { color : cornflowerblue } @include to(lg) { color : lightgrey } } .icon { --size : 1.5rem; width : var(--size); height : var(--size); fill : currentColor; } } */ .menu-responsive { min-height: 500px; position: relative; @include from(lg) { min-height: 300px; } } .ed-menu { top : var(--header-height); width : 100%; z-index : 10; @include from(lg) { position: sticky; } .logo { height : 2rem } .nav { @include to(lg) { position : absolute; left : 0; bottom : 0; background : black } } .menu { list-style : none } .link { color : lightgrey; &.active { color : cornflowerblue } @include from(lg) { color : grey } } .icon { --size : 1.25rem; width : var(--size); height : var(--size); fill : currentColor; } } ================================================ FILE: src/scss/web-styles/components/_menus.scss ================================================ ================================================ FILE: src/scss/web-styles/config/_functions.scss ================================================ ================================================ FILE: src/scss/web-styles/config/_variables.scss ================================================ // Typography $font-family: 'sans-serif'; ================================================ FILE: src/scss/web-styles/hacks/_hacks.scss ================================================ @include to(lg) { .vertical-menu { background : var(--blue-900); &::before { color : var(--grey-200); content : 'Documentación de EDgrid'; } .t5 { color : var(--grey-300); } a { color : var(--grey-500); &.active { color : var(--red-500); } } } } .vertical-menu { li { padding : 0; } a, a.active { padding: 0.35rem 0; } @include from(lg) { a.active { box-shadow: 0 1px inset var(--border-color), 0 -1px inset var(--border-color); } a.active { border-top : none; border-bottom : none; } } } .main-banner { @include from(lg) { padding-bottom: var(--padding); } } .testimony-card { .content { flex-grow: 1; } .card__footer { flex-wrap: nowrap; margin-top: auto; .button { white-space: nowrap; } } } .user-avatar { flex-wrap: nowrap; .photo { width: 1.75rem; height: 1.75rem; } } .data-list .container.container { width : 100%; max-width : 100%; } .data-list li li { list-style: circle; border-bottom : none; padding-top : 0; padding-bottom: 0.5rem; } .font-semibold { font-weight: 600; } ================================================ FILE: src/scss/web-styles/layout/_layout.scss ================================================ .main-features{ .main-features__content{ .main-features__img{ display: block; margin: 0 auto .5em; width: 200px; height: 98px; background: url(../images/ed-grid--features.png); background-size: 200px; } } } ================================================ FILE: src/scss/web-styles/libraries/_prism.scss ================================================ /* PrismJS 1.9.0 http://prismjs.com/download.html?themes=prism-okaidia&languages=markup+css+clike+javascript+scss&plugins=line-numbers+toolbar+show-language+copy-to-clipboard */ /** * okaidia theme for JavaScript, CSS and HTML * Loosely based on Monokai textmate theme by http://www.monokai.nl/ * @author ocodia */ code[class*="language-"], pre[class*="language-"] { color: #f8f8f2; background: none; text-shadow: 0 1px rgba(0, 0, 0, 0.3); font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; line-height: 1.5; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } /* Code blocks */ pre[class*="language-"] { padding: 1em; overflow: auto; border-radius: 0.3em; } :not(pre) > code[class*="language-"], pre[class*="language-"] { background: #272822; } /* Inline code */ :not(pre) > code[class*="language-"] { padding: .1em; border-radius: .3em; white-space: normal; } .token.comment, .token.prolog, .token.doctype, .token.cdata { color: slategray; } .token.punctuation { color: #f8f8f2; } .namespace { opacity: .7; } .token.property, .token.tag, .token.constant, .token.symbol, .token.deleted { color: #f92672; } .token.boolean, .token.number { color: #ae81ff; } .token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: #a6e22e; } .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string, .token.variable { color: #f8f8f2; } .token.atrule, .token.attr-value, .token.function { color: #e6db74; } .token.keyword { color: #66d9ef; } .token.regex, .token.important { color: #fd971f; } .token.important, .token.bold { font-weight: bold; } .token.italic { font-style: italic; } .token.entity { cursor: help; } pre.line-numbers { position: relative; padding-left: 3.8em; counter-reset: linenumber; } pre.line-numbers > code { position: relative; white-space: inherit; } .line-numbers .line-numbers-rows { position: absolute; pointer-events: none; top: 0; font-size: 100%; left: -3.8em; width: 3em; /* works for line-numbers below 1000 lines */ letter-spacing: -1px; border-right: 1px solid #999; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .line-numbers-rows > span { pointer-events: none; display: block; counter-increment: linenumber; } .line-numbers-rows > span:before { content: counter(linenumber); color: #999; display: block; padding-right: 0.8em; text-align: right; } pre.code-toolbar { position: relative; } pre.code-toolbar > .toolbar { position: absolute; top: .3em; right: .2em; transition: opacity 0.3s ease-in-out; opacity: 0; } pre.code-toolbar:hover > .toolbar { opacity: 1; } pre.code-toolbar > .toolbar .toolbar-item { display: inline-block; } pre.code-toolbar > .toolbar a { cursor: pointer; } pre.code-toolbar > .toolbar button { background: none; border: 0; color: inherit; font: inherit; line-height: normal; overflow: visible; padding: 0; -webkit-user-select: none; /* for button */ -moz-user-select: none; -ms-user-select: none; } pre.code-toolbar > .toolbar a, pre.code-toolbar > .toolbar button, pre.code-toolbar > .toolbar span { color: #bbb; font-size: .8em; padding: 0 .5em; background: #f5f2f0; background: rgba(224, 224, 224, 0.2); box-shadow: 0 2px 0 0 rgba(0,0,0,0.2); border-radius: .5em; } pre.code-toolbar > .toolbar a:hover, pre.code-toolbar > .toolbar a:focus, pre.code-toolbar > .toolbar button:hover, pre.code-toolbar > .toolbar button:focus, pre.code-toolbar > .toolbar span:hover, pre.code-toolbar > .toolbar span:focus { color: inherit; text-decoration: none; } ================================================ FILE: src/scss/web-styles/theme/_banner.scss ================================================ .main-banner { @include to(l) { .center [class*="button"] { font-size: fontSize(smaller); margin : .5em; } } } ================================================ FILE: src/scss/web-styles/theme/_footer.scss ================================================ .main-footer { padding : 2rem 0; p { opacity : .6; margin : 0; } a:hover { text-decoration : none; } } ================================================ FILE: src/scss/web-styles/theme/_icons.scss ================================================ @charset "UTF-8"; @font-face { font-family : "edgrid-website"; src : url("../fonts/edgrid-website.eot"); src : url("../fonts/edgrid-website.eot?#iefix") format("embedded-opentype"), url("../fonts/edgrid-website.woff") format("woff"), url("../fonts/edgrid-website.ttf") format("truetype"), url("../fonts/edgrid-website.svg#edgrid-website") format("svg"); font-weight : normal; font-style : normal; } [data-icon]:before { font-family : "edgrid-website", sans-serif !important; content : attr(data-icon); font-style : normal !important; font-weight : normal !important; font-variant : normal !important; text-transform : none !important; speak : none; line-height : 1; -webkit-font-smoothing : antialiased; -moz-osx-font-smoothing : grayscale; } [class^="icon-"]:before, [class*=" icon-"]:before { font-family : "edgrid-website", sans-serif !important; font-style : normal !important; font-weight : normal !important; font-variant : normal !important; text-transform : none !important; speak : none; line-height : 1; -webkit-font-smoothing : antialiased; -moz-osx-font-smoothing : grayscale; } .icon-docs:before { content : "\61"; } .icon-slack:before { content : "\62"; } .icon-github:before { content : "\63"; } .icon-link-external:before { content : "\64"; } .icon-download:before { content : "\65"; } .icon-left:before { content : "\66"; } ================================================ FILE: src/scss/web-styles/theme/_typography.scss ================================================ ================================================ FILE: test.html ================================================ Title