/*!* MT v2.0.0
*
* Copyright (c) 2024, Mario Thomas <mario@mariothomas.com>. All rights reserved.
**/@font-face{font-family:'martel regular 400';src:url(/fonts/Martel-Regular.woff2)format('woff2-variations');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'martel bold 700';src:url(/fonts/Martel-Bold.woff2)format('woff2-variations');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'martel sans light 300';src:url(/fonts/MartelSans-Light.woff2)format('woff2-variations');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:dm sans;src:url(/fonts/DMSans-VariableFont_opsz,wght.woff2)format('woff2-variations');font-weight:400 700;font-style:normal;font-display:swap}@font-face{font-family:dm sans;src:url(/fonts/DMSans-Italic-VariableFont_opsz,wght.woff2)format('woff2-variations');font-weight:400 700;font-style:italic;font-display:swap}@font-face{font-family:space mono;font-style:normal;font-weight:400;font-display:swap;src:local(''),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-regular.woff2)format('woff2'),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-regular.woff)format('woff')}@font-face{font-family:space mono;font-style:italic;font-weight:400;font-display:swap;src:local(''),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-italic.woff2)format('woff2'),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-italic.woff)format('woff')}@font-face{font-family:space mono;font-style:normal;font-weight:700;font-display:swap;src:local(''),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-700.woff2)format('woff2'),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-700.woff)format('woff')}@font-face{font-family:space mono;font-style:italic;font-weight:700;font-display:swap;src:local(''),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-700italic.woff2)format('woff2'),url(/fonts/space-mono-v12-latin/space-mono-v12-latin-700italic.woff)format('woff')}*{margin:0;padding:0;border:0;box-sizing:border-box}:root{--home:'/';--width:1024px;--main-width:735px;--main-gutter:39px;--aside-width:250px;--font-size:1em;--header-h1-font-size:2.6em;--h1-font-size:2.1em;--h2-font-size:1.9em;--h3-font-size:1.7em;--h4-font-size:1.5em;--h5-font-size:1.3em;--h6-font-size:1.1em;--section-h1-font-size:2.1em;--section-h2-font-size:2.1em;--h3-aside-font-size:1.17em;--nav-font-size:1.2em;--footer-font-size:1em;--header-div-font-size:0.95em;--font-family:'Martel Regular 400', serif;--font-family-sans:'Martel Sans Light 300', sans-serif;--font-family-code:'Space Mono', monospace;--font-weight:400;--h3-aside-font-family:'Martel Regular 400', serif;--h3-aside-font-size:1.2em;--aside-font-family:'Martel Sans Light 300', sans-serif;--aside-font-size:0.8em;--tags-font-family:'Martel Sans Light 300', sans-serif;--tags-font-size:0.8em;--background-color:#FFFFFF;--color:#1C2321;--color-less:#5E6572;--a:#1C2321;--a-href-hover:#3a72b6;--button-color:#A9B4C2;--tag-bg:#aed0db;--cat-bg:#dbd4ae;--marked:#ffff00;--code-bg:#ebfaff;--code-color:#2d2d2d;--accent:#bde5f2;--gradient-teal:linear-gradient(135deg, rgba(174, 208, 219, 0.35) 0%, rgba(26, 37, 37, 0.95) 100%);--gradient-gold:linear-gradient(135deg, rgba(219, 212, 174, 0.35) 0%, rgba(26, 37, 37, 0.95) 100%);--gradient-coral:linear-gradient(135deg, rgba(255, 127, 102, 0.35) 0%, rgba(26, 37, 37, 0.95) 100%);--gradient-slate:linear-gradient(135deg, rgba(94, 101, 114, 0.35) 0%, rgba(26, 37, 37, 0.95) 100%);--gradient-teal-hover:linear-gradient(135deg, rgba(174, 208, 219, 0.5) 0%, rgba(26, 37, 37, 0.9) 100%);--gradient-gold-hover:linear-gradient(135deg, rgba(219, 212, 174, 0.5) 0%, rgba(26, 37, 37, 0.9) 100%);--gradient-coral-hover:linear-gradient(135deg, rgba(255, 127, 102, 0.5) 0%, rgba(26, 37, 37, 0.9) 100%);--gradient-slate-hover:linear-gradient(135deg, rgba(94, 101, 114, 0.5) 0%, rgba(26, 37, 37, 0.9) 100%);--gradient-mario-blue:linear-gradient(135deg, #bde5f2 0%, #8ec5d6 50%, #aed0db 100%);--board-ink:#1C2321;--board-slate:#5E6572;--board-mist:#E5E8EC;--board-white:#FFFFFF;--clarity-cyan:#BDE5F2;--insight-teal:#AED0DB;--strategy-gold:#DBD4AE;--signal-coral:#F5A090;--background-color:var(--board-white);--color:var(--board-ink);--color-less:var(--board-slate);--a:var(--board-ink);--a-href-hover:#3A72B6;--button-color:#A9B4C2;--tag-bg:var(--insight-teal);--cat-bg:var(--strategy-gold);--marked:#FFFF00;--code-bg:#EBFAFF;--code-color:#2D2D2D;--accent:var(--clarity-cyan);--gradient-cyan-light:linear-gradient(135deg, #BDE5F2 0%, #8EC5D6 50%, #AED0DB 100%);--gradient-teal-light:linear-gradient(135deg, #C8E4EB 0%, #96C7D4 50%, #AED0DB 100%);--gradient-gold-light:linear-gradient(135deg, #EBE6D2 0%, #D4CDB0 50%, #C9C199 100%);--gradient-coral-light:linear-gradient(135deg, #FFDDD6 0%, #F5B8AC 50%, #F0A090 100%);--gradient-slate-light:linear-gradient(135deg, #E5E8EC 0%, #C8CDD4 50%, #B0B6C0 100%);--gradient-cyan-deep:linear-gradient(135deg, #7CBACA 0%, #4A95A8 50%, #2D7080 100%);--gradient-teal-deep:linear-gradient(135deg, #6AABB8 0%, #3D8694 50%, #256270 100%);--gradient-gold-deep:linear-gradient(135deg, #C4B87C 0%, #9A8F5C 50%, #706842 100%);--gradient-coral-deep:linear-gradient(135deg, #E89080 0%, #D06858 50%, #A84840 100%);--gradient-slate-deep:linear-gradient(135deg, #7A8290 0%, #545C6A 50%, #3A424E 100%);--gradient-cyan-deep-hover:linear-gradient(135deg, #8DC8D8 0%, #5AA3B6 50%, #3D808F 100%);--gradient-teal-deep-hover:linear-gradient(135deg, #7ABAC6 0%, #4D94A2 50%, #35707E 100%);--gradient-gold-deep-hover:linear-gradient(135deg, #D4C88C 0%, #AA9F6C 50%, #807852 100%);--gradient-coral-deep-hover:linear-gradient(135deg, #F0A090 0%, #E07868 50%, #B85850 100%);--gradient-slate-deep-hover:linear-gradient(135deg, #8A92A0 0%, #646C7A 50%, #4A525E 100%);--toolkit-primitives:var(--gradient-teal-deep);--toolkit-primitives-hover:var(--gradient-teal-deep-hover);--toolkit-tools:var(--gradient-cyan-light);--toolkit-tools-hover:var(--gradient-teal-light);--toolkit-series:var(--gradient-coral-deep);--toolkit-series-hover:var(--gradient-coral-deep-hover);--toolkit-newsletter:var(--gradient-cyan-light);.gradient-teal-deep { background: var(--gradient-teal-deep); color: var(--board-white); } .gradient-cyan-deep { background: var(--gradient-cyan-deep); color: var(--board-white); } .gradient-coral-deep { background: var(--gradient-coral-deep); color: var(--board-white); } .gradient-gold-deep { background: var(--gradient-gold-deep); color: var(--board-white); } .gradient-slate-deep { background: var(--gradient-slate-deep); color: var(--board-white); } .gradient-cyan-light { background: var(--gradient-cyan-light); color: var(--board-ink); } .gradient-teal-light { background: var(--gradient-teal-light); color: var(--board-ink); } .gradient-gold-light { background: var(--gradient-gold-light); color: var(--board-ink); } .gradient-coral-light { background: var(--gradient-coral-light); color: var(--board-ink); } .gradient-slate-light { background: var(--gradient-slate-light); color: var(--board-ink); } .gradient-teal-deep:hover { background: var(--gradient-teal-deep-hover); } .gradient-cyan-deep:hover { background: var(--gradient-cyan-deep-hover); } .gradient-coral-deep:hover { background: var(--gradient-coral-deep-hover); } .gradient-gold-deep:hover { background: var(--gradient-gold-deep-hover); } .gradient-slate-deep:hover { background: var(--gradient-slate-deep-hover); }}html{font-family:var(--font-family);font-size:var(--font-size);line-height:1.5;color:var(--color);background:var(--background-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}strong{font-family:'martel bold 700'}header nav label,header nav input{display:none}body{padding:48px 0 0;max-width:var(--width);margin:0 auto}a{color:var(--a);text-decoration:underline}a[href]:hover{color:var(--a-href-hover);text-decoration:underline}a.framework-card,a.framework-card:hover,a.hero-card-more,a.hero-card-more:hover{text-decoration:none}header nav ul{color:var(--color);font-style:normal;text-decoration:none}header{margin:0 0 100px}header nav a,h1 a,section article h2 a{color:var(--a);font-style:normal;text-decoration:none}header nav a[href]:hover,h1 a[href]:hover,section article h2 a[href]:hover{color:var(--a-href-hover);font-style:normal;text-decoration:none}header nav h1{float:left;font-size:var(--header-h1-font-size);font-weight:var(--font-weight)}header nav div[role=heading]{float:left;font-size:var(--header-h1-font-size);font-weight:var(--font-weight)}header nav div[role=heading] a{color:var(--a);font-style:normal;text-decoration:none}header nav div[role=heading] a[href]:hover{color:var(--a-href-hover);font-style:normal;text-decoration:none}header button{display:none}header nav{width:100%}header nav ul{list-style:none;float:right;margin-top:18px}header nav ul li{float:left;font-size:var(--nav-font-size);margin:0;padding:0 0 0 25px}header a img{margin-bottom:-4px}main{float:left;width:100%;max-width:var(--width);margin:0 0 3em}@media(min-width:1101px){main:has(~aside){width:var(--main-width);margin-right:var(--main-gutter)}}main article{margin:0 0 3em;font-size:1em}main section{margin:0 0 3em;font-size:1em}main article h1,main article h2,main article h3,main article h4,main article h5,main article h6,main section h1,main section h2,main section h3,main section h4,main section h5,main section h6{font-family:var(--font-family);font-weight:var(--font-weight)}main article h1{font-size:var(--h1-font-size);margin:0 0 5px;line-height:1.2}main article h2{font-size:var(--h2-font-size);margin:30px 0 10px;line-height:1.2}main article h3{font-size:var(--h3-font-size);margin:0 0 10px;line-height:1.2}main article h4{font-size:var(--h4-font-size);margin:0 0 10px;line-height:1.6}main article h5{font-size:var(--h5-font-size);margin:0 0 10px;line-height:1.6}main article h6{font-size:var(--h6-font-size);margin:0 0 10px;line-height:1.6}main section h1{font-size:var(--h1-font-size);margin:0 0 5px;line-height:1.2}main section h2{font-size:var(--h2-font-size);margin:30px 0 10px;line-height:1.2}main section h3{font-size:var(--h3-font-size);margin:0 0 10px;line-height:1.2}main section h4{font-size:var(--h4-font-size);margin:0 0 10px;line-height:1.6}main section h5{font-size:var(--h5-font-size);margin:0 0 10px;line-height:1.6}main section h6{font-size:var(--h6-font-size);margin:0 0 10px;line-height:1.6}main section article h2{font-size:var(--section-h2-font-size);margin:0 0 5px;line-height:1.2}main p,main li{font-family:var(--font-family-sans)}main p{margin:0 0 1em}main li{margin:0 0 .5em}main article ul,main article ol,main section ul,main section ol{margin-left:0;padding-left:40px;margin-bottom:24px}main article ul ul,main section ul ul{margin-bottom:0}main article ul li main article ol li,main section ul li main section ol li{margin:0;padding:0}hr{width:100%;margin:auto;border:0;border-top:1px solid #d6d4d4;margin:2em 0}main nav{overflow:hidden;margin:0 0 60px}main nav ul{list-style:none}main nav ul li{font-size:var(--nav-font-size)}main nav ul li.older,#prev{float:left}main nav ul li.newer,#next{float:right}main nav#pagination{text-align:center;margin:2em 0}mark{padding:2px 5px;border-radius:3px;background-color:var(--marked)}code,pre code,details{background-color:var(--code-bg);border:1px solid var(--accent);border-radius:5px}kbd{background-color:var(--cat-bg);border:1px solid #c1ba99;border-radius:5px}details{padding:1em 1.5em}details summary{font-family:var(--font-family-sans);font-size:var(--h5-font-size);cursor:pointer}code,pre,kbd,samp{font-family:var(--font-family-code);color:var(--code-color)}kbd,code{border-radius:3px;box-shadow:0 1px 1px rgba(0,0,0,.2),0 2px rgba(255,255,255,.7)inset;display:inline-block;padding:2px 4px;white-space:nowrap}code{border:1px solid #bde5f2}pre{max-width:100%;overflow:auto;white-space:initial}pre code{border-radius:3px;border:1px solid #bde5f2;color:var(--code-color);page-break-inside:avoid;font-family:var(--font-family-code);font-size:var(--font-size);line-height:1.6;max-width:100%;overflow:auto;padding:1em;display:block;word-wrap:break-word;white-space:pre-line;margin:0 0 20px}blockquote{margin:2em 0 2em 2em;padding:.4rem .8em;border-left:.35em solid var(--accent);color:var(--text-light);font-size:var(--h4-font-size);clear:both}blockquote cite{font-family:var(--font-family);font-size:var(--font-size);display:block;clear:both}aside{width:var(--aside-width);float:left;margin:4px 0 0;font-family:var(--aside-font-family);font-size:var(--aside-font-size)}aside h3{font-family:var(--h3-aside-font-family);font-size:var(--h3-aside-font-size);margin:0 0 5px}aside h3,aside h3 a{color:var(--color);font-weight:var(--font-weight);text-decoration:none}aside ul{list-style:none}aside section{margin:0 0 20px}aside section p{margin:0 0 20px}button,main article button,main nav button,form button{align-items:center;justify-content:center;max-width:max-content;background-color:var(--tag-bg);border-radius:100px;color:var(--color);cursor:pointer}button,main article button,main nav button,form button,button[type=submit]{height:2rem;background-color:var(--button-color);color:var(--color);line-height:0;margin:.5em .5em 0 0;font-size:.9rem;padding:0 1.2em}aside section button{display:inline-block;background-color:var(--tag-bg);color:var(--color);font-size:.8rem;font-family:var(--tags-font-family);padding:1em;align-items:center;justify-content:center}main article footer button{display:inline-block;background-color:var(--tag-bg);color:var(--color);font-size:.8rem;font-family:var(--tags-font-family);padding:1.5em;align-items:center;justify-content:center}#tags button{background-color:var(--tag-bg)}#categories button{background-color:var(--cat-bg)}footer{font-size:var(--footer-font-size);overflow:hidden;max-width:var(--width);margin:0 auto;padding-bottom:6em;clear:both}article footer{padding-bottom:0}footer p{font-size:var(--footer-font-size);font-weight:var(--font-weight)}table{font-family:var(--font-family-sans);border-bottom:10px;border-collapse:collapse;width:100%;margin-bottom:20px}table th{border:1px solid var(--accent);text-align:left;padding:8px;background-color:var(--code-bg);color:var(--color);font-weight:var(--font-weight);white-space:nowrap;font-weight:700}table td{border:1px solid var(--accent);text-align:left;vertical-align:top;padding:8px}.twitter-tweet{margin-left:auto;margin-right:auto}video,audio{max-width:100%;clear:both}#socials{margin-top:1em}#socials img{margin-right:.5em}input,textarea{border:1px solid #4a4a4a}input:focus,textarea:focus{border:1px solid #1d7484}input,textarea{width:100%}textarea,select,input{color:#4a4a4a;padding:6px 10px;margin-bottom:10px;background-color:var(--code-bg);border:1px solid var(--accent);border-radius:4px;box-shadow:none;box-sizing:border-box;font-family:var(--font-family-sans);font-weight:var(--font-weight);font-size:var(--font-size)}textarea:focus,select:focus,input:focus{border:1px solid #1d7484;outline:0}input[type=radio],input[type=checkbox]{width:12px}label,legend,fieldset{margin-bottom:.3rem;font-family:var(--font-family-sans);font-weight:var(--font-weight)}legend,fieldset{display:block}dfn{position:relative;display:inline-block;cursor:pointer;text-decoration:underline;text-decoration-style:dashed}dfn::after{content:attr(data-info);display:inline;position:absolute;top:22px;left:0;opacity:0;width:230px;font-family:Arial,Helvetica,sans-serif;font-style:normal;font-size:13px;font-weight:400;line-height:1.5em;padding:.5em .8em;background:rgba(0,0,0,.8);color:#fff;pointer-events:none;transition:opacity 250ms,top 250ms}dfn::before{content:'';display:block;position:absolute;top:12px;left:20px;opacity:0;width:0;height:0;border:solid transparent 5px;border-bottom-color:rgba(0,0,0,.8);transition:opacity 250ms,top 250ms}dfn:hover{z-index:2}dfn:hover::after,dfn:hover::before{opacity:1}dfn:hover::after{top:30px}dfn:hover::before{top:20px}main article figure picture img,main section figure picture img{max-width:100%;min-width:108px;height:auto;border-radius:15px;margin:0 0 10px}main article header span{font-family:var(--font-family-sans);font-size:var(--header-div-font-size);color:var(--color-less)}main article header div{font-family:var(--font-family-sans);font-size:var(--header-div-font-size);color:var(--color-less);margin:0 0 10px}main article header{margin:0}main article header h3 img{min-width:0}@media(max-width:1100px){main,aside,header,footer{width:576px;max-width:576px;clear:both;float:initial}main,footer{margin:0 auto}aside{margin:4px auto 0}header{margin:0 auto 98px}header nav ul li{clear:both;margin:2px 0;padding:0}header nav{float:left;clear:both;margin:0}header nav label{display:inline-block;color:var(--color);background:#fff;font-style:normal;font-size:1.8em;cursor:pointer;float:right;margin-top:18px}header nav ul{display:none;float:left;clear:both;margin-bottom:20px}header nav input:checked~ul{display:block}}@media(max-width:768px){main,aside,header,footer{width:calc(100% - 40px);max-width:calc(100% - 40px)}main>article>footer{width:100%}main>article>footer button{display:inline-block;margin-right:.2em}}@media(max-width:576px){header nav label{margin-top:0}main>article>footer{width:100%}main>article>footer button{display:inline-block;margin-right:.2em}main>article>footer{margin-left:0;margin-right:0;padding:0}main>article>footer button{margin-left:0;margin-right:.2em;margin-top:.2em;margin-bottom:.2em}}lite-youtube{background-color:#000;position:relative;display:block;contain:content;background-position:50%;background-size:cover;cursor:pointer;max-width:720px;aspect-ratio:16/9;margin:25px 0;border-radius:15px}lite-youtube::before{content:attr(data-title);display:block;position:absolute;top:0;background-image:linear-gradient(180deg,rgb(0 0 0/67%) 0%,rgb(0 0 0/54%) 14%,rgb(0 0 0/15%) 54%,rgb(0 0 0/5%) 72%,transparent 94%);height:99px;width:100%;font-family:youtube noto,Roboto,Arial,Helvetica,sans-serif;color:hsl(0deg 0% 93.33%);text-shadow:0 0 2px rgba(0,0,0,.5);font-size:18px;padding:25px 20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;border-radius:15px 15px 0 0;pointer-events:none;z-index:1}lite-youtube>.lty-playbtn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:136px;height:96px;z-index:2;border:0;background:0 0;cursor:pointer;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-34 -24 136 96"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');background-repeat:no-repeat;background-position:50%;background-size:200%;filter:grayscale(100%);transition:filter .1s cubic-bezier(0,0,.2,1)}lite-youtube:hover>.lty-playbtn,lite-youtube .lty-playbtn:focus{filter:none}lite-youtube.lyt-activated{cursor:unset}lite-youtube.lyt-activated::before,lite-youtube.lyt-activated>.lty-playbtn{display:none}lite-youtube>iframe{width:100%;height:100%;position:absolute;top:0;left:0;border:0;border-radius:15px}.lyt-visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.cc-banner{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:1000;width:100%;max-width:600px;background:var(--tag-bg);box-shadow:0 -2px 10px rgba(0,0,0,.1);margin-bottom:20px;border-radius:8px;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.cc-banner--visible{opacity:1;visibility:visible}.cc-banner--hidden{opacity:0;visibility:hidden}@media(max-width:640px){.cc-banner{width:calc(100% - 40px);margin:0 20px 20px}}.cc-banner__content{padding:20px;position:relative}.cc-banner__close{position:absolute;top:10px;right:10px;border:none;background:0 0;font-size:20px;cursor:pointer;padding:5px}.cc-banner__title{margin:0 0 10px;font-size:1.2em;font-family:inherit}.cc-banner__text{margin:0 0 20px;font-size:.9em;font-family:inherit}.cc-banner__buttons{display:flex;gap:10px}.cc-banner__button{padding:8px 16px;border-radius:4px;border:none;cursor:pointer;flex:1;font-family:inherit;font-size:inherit}.cc-banner__button--accept{background-color:var(--a-href-hover);color:#fff}.cc-banner__button--dismiss{background-color:#f8f9fa;border:1px solid #dee2e6;color:inherit}.hero-page{width:100%;max-width:var(--width);margin:0 auto 3em}.hero-featured{margin-bottom:1.5em}.hero-featured .hero-article{margin:0}.hero-article{position:relative}.hero-image-link{display:block;text-decoration:none}.hero-figure{position:relative;margin:0;overflow:hidden;border-radius:15px;background-color:var(--color)}.hero-figure picture img{width:100%;height:auto;display:block;border-radius:15px;transform:scale(1.01);transition:transform .3s ease}.hero-image-link:hover .hero-figure picture img{transform:scale(1.03)}.hero-overlay{position:absolute;bottom:0;left:0;right:0;padding:2em 1.5em 1.5em;background:linear-gradient(to top,rgba(0,0,0,.8) 0%,rgba(0,0,0,.6) 50%,transparent 100%);border-radius:0 0 15px 15px}.hero-overlay h2{color:#fff;font-size:var(--h2-font-size);margin:0 0 .3em;line-height:1.2;text-shadow:0 1px 3px rgba(0,0,0,.5)}.hero-meta{color:rgba(255,255,255,.9);font-family:var(--font-family-sans);font-size:var(--header-div-font-size)}.hero-meta time{color:rgba(255,255,255,.9)}.hero-meta span{color:rgba(255,255,255,.9)}.hero-recent{margin-bottom:1.5em}.hero-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5em}.hero-card{position:relative;margin:0}.hero-card-link{display:block;text-decoration:none}.hero-card-figure{position:relative;margin:0;overflow:hidden;border-radius:15px;aspect-ratio:4/3}.hero-card-figure picture{display:block;width:100%;height:100%}.hero-card-figure picture img{width:100%;height:100%;object-fit:cover;display:block;border-radius:15px;transition:transform .3s ease}.hero-card-link:hover .hero-card-figure picture img{transform:scale(1.05)}.hero-card-overlay{position:absolute;bottom:0;left:0;right:0;top:0;display:flex;flex-direction:column;justify-content:flex-end;padding:1em;background:linear-gradient(to top,rgba(0,0,0,.85) 0%,rgba(0,0,0,.5) 40%,transparent 70%);border-radius:15px}.hero-card-overlay h3{color:#fff;font-size:1.1em;margin:0 0 .3em;line-height:1.3;text-shadow:0 1px 2px rgba(0,0,0,.5)}.hero-card-meta{color:rgba(255,255,255,.85);font-family:var(--font-family-sans);font-size:.8em}.hero-card-more{display:flex;align-items:center;justify-content:center;background:var(--gradient-slate);border-radius:15px;text-decoration:none;aspect-ratio:4/3;transition:background .3s ease,box-shadow .2s ease}.hero-card-more:hover{background:var(--gradient-slate-hover);box-shadow:0 8px 25px rgba(0,0,0,.3);text-decoration:none}.hero-card-more-content{padding:1.5em;text-align:center}.hero-card-more h3{color:#fff;font-size:1.3em;margin:0 0 .5em;line-height:1.3;text-decoration:none}.hero-card-more p{font-family:var(--font-family-sans);font-size:.85em;color:rgba(255,255,255,.85);margin:0 0 1em;line-height:1.5;text-decoration:none}.hero-card-more-cta{display:inline-block;font-family:var(--font-family-sans);font-size:.9em;color:var(--accent);font-weight:500;text-decoration:none}.hero-card-more:hover .hero-card-more-cta{color:#fff;text-decoration:none}.hero-card-more:hover h3,.hero-card-more:hover p{text-decoration:none}.hero-resources{margin-top:1.5em;margin-bottom:1.5em}.hero-resources h2{font-size:var(--h2-font-size);font-weight:var(--font-weight);margin:2em 0 .5em}.hero-resources-intro{font-family:var(--font-family-sans);color:var(--color-less);margin:0 0 1em}.framework-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1em}.framework-card{position:relative;padding:1.5em;background:var(--gradient-teal);border-radius:15px;text-decoration:none;color:#fff;min-height:140px;display:flex;flex-direction:column;justify-content:flex-end;transition:transform .2s ease,box-shadow .2s ease,filter .2s ease;overflow:hidden}.framework-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);filter:brightness(1.05);color:inherit;text-decoration:none}.framework-card.cols-1{grid-column:span 1}.framework-card.cols-2{grid-column:span 2}.framework-card.cols-3{grid-column:span 3}.framework-card.cols-4{grid-column:span 4}.framework-card.gradient-teal-deep{background:var(--gradient-teal-deep);color:var(--board-white)}.framework-card.gradient-cyan-deep{background:var(--gradient-cyan-deep);color:var(--board-white)}.framework-card.gradient-coral-deep{background:var(--gradient-coral-deep);color:var(--board-white)}.framework-card.gradient-gold-deep{background:var(--gradient-gold-deep);color:var(--board-white)}.framework-card.gradient-slate-deep{background:var(--gradient-slate-deep);color:var(--board-white)}.framework-card.gradient-cyan-light{background:var(--gradient-cyan-light);color:var(--board-ink)}.framework-card.gradient-teal-light{background:var(--gradient-teal-light);color:var(--board-ink)}.framework-card.gradient-gold-light{background:var(--gradient-gold-light);color:var(--board-ink)}.framework-card.gradient-coral-light{background:var(--gradient-coral-light);color:var(--board-ink)}.framework-card.gradient-slate-light{background:var(--gradient-slate-light);color:var(--board-ink)}.framework-card.gradient-cyan-light h3,.framework-card.gradient-cyan-light p,.framework-card.gradient-teal-light h3,.framework-card.gradient-teal-light p,.framework-card.gradient-gold-light h3,.framework-card.gradient-gold-light p,.framework-card.gradient-coral-light h3,.framework-card.gradient-coral-light p,.framework-card.gradient-slate-light h3,.framework-card.gradient-slate-light p,.framework-card.gradient-cyan-light:hover h3,.framework-card.gradient-cyan-light:hover p,.framework-card.gradient-teal-light:hover h3,.framework-card.gradient-teal-light:hover p,.framework-card.gradient-gold-light:hover h3,.framework-card.gradient-gold-light:hover p,.framework-card.gradient-coral-light:hover h3,.framework-card.gradient-coral-light:hover p,.framework-card.gradient-slate-light:hover h3,.framework-card.gradient-slate-light:hover p{color:var(--board-ink)}.framework-card-content{position:relative;z-index:2;display:flex;flex-direction:column;flex:1;justify-content:flex-end}.framework-card-icon{position:absolute;top:1.5em;right:1.5em;font-size:2em;opacity:.7;z-index:1}.framework-card-image{position:absolute;top:0;left:0;right:0;bottom:0;z-index:0}.framework-card-image img{width:100%;height:100%;object-fit:cover;opacity:.3;border-radius:15px}.framework-card h3{font-size:1.2em;font-weight:var(--font-weight);margin:0 0 .5em;line-height:1.3;color:rgba(255,255,255,.85);position:relative;z-index:2;text-decoration:none}.framework-card p{font-family:var(--font-family-sans);font-size:.85em;margin:0;color:rgba(255,255,255,.85);position:relative;z-index:2;line-height:1.5;text-decoration:none}.framework-card:hover{text-decoration:none}a.framework-card.gradient-teal-deep,a.framework-card.gradient-teal-deep:hover,a.framework-card.gradient-cyan-deep,a.framework-card.gradient-cyan-deep:hover,a.framework-card.gradient-coral-deep,a.framework-card.gradient-coral-deep:hover,a.framework-card.gradient-gold-deep,a.framework-card.gradient-gold-deep:hover,a.framework-card.gradient-slate-deep,a.framework-card.gradient-slate-deep:hover{color:rgba(255,255,255,.85)!important}a.framework-card.gradient-cyan-light,a.framework-card.gradient-cyan-light:hover,a.framework-card.gradient-teal-light,a.framework-card.gradient-teal-light:hover,a.framework-card.gradient-gold-light,a.framework-card.gradient-gold-light:hover,a.framework-card.gradient-coral-light,a.framework-card.gradient-coral-light:hover,a.framework-card.gradient-slate-light,a.framework-card.gradient-slate-light:hover{color:var(--board-ink)!important}.hero-newsletter{background:var(--gradient-mario-blue);border-radius:15px;padding:2.5em;margin-bottom:0}.newsletter-content h2{font-size:var(--h2-font-size);font-weight:var(--font-weight);margin:0 0 .5em;color:var(--color)}.newsletter-content p{font-family:var(--font-family-sans);margin:0 0 1.5em;color:var(--color)}.newsletter-form{display:flex;gap:1em;max-width:100%}.newsletter-form input[type=email]{flex:1;margin-bottom:0;padding:.9em 1.2em;font-size:1em;border:2px solid transparent;border-radius:8px;background-color:#fff;transition:border-color .2s ease,box-shadow .2s ease}.newsletter-form input[type=email]:focus{border-color:var(--color);box-shadow:0 0 0 3px rgba(28,35,33,.1);outline:none}.newsletter-form input[type=email]::placeholder{color:var(--color-less)}.newsletter-form button{margin:0;white-space:nowrap;padding:.9em 2em;font-size:1em;font-family:var(--font-family-sans);font-weight:500;background-color:var(--color);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:background-color .2s ease,transform .1s ease;height:auto;line-height:1.4}.newsletter-form button:hover{background-color:#2d3a3a;transform:translateY(-1px)}.newsletter-form button:active{transform:translateY(0)}@media(max-width:1100px){.hero-page{width:576px;max-width:576px;margin:0 auto 3em}.hero-grid{grid-template-columns:repeat(2,1fr)}.hero-grid .hero-card:last-child{grid-column:span 2}.hero-grid .hero-card:last-child .hero-card-figure{aspect-ratio:16/9}.framework-grid{grid-template-columns:repeat(2,1fr)}.framework-card.cols-2{grid-column:span 2}.framework-card.cols-3,.framework-card.cols-4{grid-column:span 2}}@media(max-width:768px){.hero-page{width:calc(100% - 40px);max-width:calc(100% - 40px)}.hero-overlay h2{font-size:var(--h3-font-size)}.hero-grid{grid-template-columns:1fr;gap:1em}.hero-grid .hero-card:last-child{grid-column:span 1}.hero-grid .hero-card:last-child .hero-card-figure{aspect-ratio:4/3}.framework-grid{grid-template-columns:repeat(2,1fr)}.framework-card.cols-2,.framework-card.cols-3,.framework-card.cols-4{grid-column:span 2}.newsletter-form{flex-direction:column}.newsletter-form button{width:100%}}.super-footer{background-color:var(--color);color:var(--background-color);padding:2.5em 0 2em;margin-top:2em;clear:both;width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw}.super-footer-content{max-width:var(--width);margin:0 auto 2em;display:grid;grid-template-columns:1.4fr 1fr;gap:3em;align-items:start}.super-footer a{color:var(--background-color)}.super-footer a:hover{color:var(--accent)}.super-footer h3{font-family:var(--font-family);font-size:1em;font-weight:var(--font-weight);color:var(--background-color);margin:0 0 .75em}.super-footer p{font-family:var(--font-family-sans);font-size:var(--aside-font-size);margin:0 0 1em;line-height:1.6}.super-footer-about{display:flex;gap:1.25em;align-items:flex-start}.super-footer-about picture{display:block;flex-shrink:0}.super-footer-about picture img{width:80px;height:80px;border-radius:50%}.super-footer-about-content{flex:1}.super-footer-about-content p{margin:0 0 .75em}.super-footer-about section{margin-top:.5em}.super-footer-about section img{border-radius:0;margin-right:.5em}.super-footer-sidebar{display:flex;flex-direction:column;gap:1.5em}.super-footer-reading{padding:0}.super-footer-reading .reading-content{display:flex;gap:1em;align-items:flex-start}.super-footer-reading .reading-image{flex-shrink:0}.super-footer-reading picture{display:block;max-width:70px}.super-footer-reading img{width:70px;height:auto;border-radius:4px}.super-footer-reading p{margin:0;font-size:.75em}.super-footer-tags{padding:0}.super-footer-tags button{background:var(--gradient-teal-light);color:var(--board-ink);font-family:dm sans,sans-serif;font-size:.7rem;font-weight:500;padding:.35em .75em;margin:0 .25em .4em 0;border-radius:50px;border:none;cursor:pointer;transition:all .2s ease;line-height:1.4}.super-footer-tags button:hover{background:var(--gradient-cyan-light)}.super-footer-bar{max-width:var(--width);margin:0 auto;padding-top:1.5em;border-top:1px solid rgba(255,255,255,.15)}#super-footer-socials{margin-bottom:.5em}#super-footer-socials img{margin-right:.5em}#super-footer-socials svg{fill:var(--background-color)}#super-footer-socials a:hover svg{fill:var(--accent)}.super-footer-bar nav{font-family:var(--font-family-sans);font-size:.75em;margin-bottom:.5em}.super-footer-bar p{font-family:var(--font-family-sans);font-size:.75em;margin:0;opacity:.8}.super-footer-bar nav a{text-decoration:none}.super-footer-bar nav a:hover{text-decoration:underline}@media(max-width:1100px){.super-footer-content{width:576px;max-width:576px;grid-template-columns:1fr}.super-footer-bar{width:576px;max-width:576px}}@media(max-width:768px){.super-footer{padding:2em 20px}.super-footer-bar{width:100%;max-width:100%}.super-footer-content{width:100%;max-width:100%;grid-template-columns:1fr}.super-footer-about{flex-direction:column;align-items:flex-start}}