/*
  PaperMod v8+
  License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
  Copyright (c) 2020 nanxiaobei and adityatelange
  Copyright (c) 2021-2026 adityatelange
*/
:root{--gap:24px;--content-gap:20px;--nav-width:1024px;--main-width:720px;--header-height:60px;--footer-height:60px;--radius:8px;--theme:rgb(255, 255, 255);--entry:rgb(255, 255, 255);--primary:rgb(30, 30, 30);--secondary:rgb(108, 108, 108);--tertiary:rgb(214, 214, 214);--content:rgb(31, 31, 31);--code-block-bg:rgb(28, 29, 33);--code-bg:rgb(245, 245, 245);--border:rgb(238, 238, 238);color-scheme:light}:root[data-theme=dark]{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51);color-scheme:dark}.list{background:var(--code-bg)}[data-theme=dark] .list{background:var(--theme)}*,::after,::before{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;overflow-y:scroll;-webkit-text-size-adjust:100%;text-size-adjust:100%}a,button,body,h1,h2,h3,h4,h5,h6{color:var(--primary)}body{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;font-size:18px;line-height:1.6;word-break:break-word;background:var(--theme)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section,table{display:block}h1,h2,h3,h4,h5,h6{line-height:1.2}h1,h2,h3,h4,h5,h6,p{margin-top:0;margin-bottom:0}ul{padding:0}a{text-decoration:none}body,figure,ul{margin:0}table{width:100%;border-collapse:collapse;border-spacing:0;overflow-x:auto;word-break:keep-all}button,input,textarea{padding:0;font:inherit;background:0 0;border:0}input,textarea{outline:0}button,input[type=button],input[type=submit]{cursor:pointer}input:-webkit-autofill,textarea:-webkit-autofill{box-shadow:0 0 0 50px var(--theme)inset}img{display:block;max-width:100%}.not-found{position:absolute;left:0;right:0;display:flex;align-items:center;justify-content:center;height:80%;font-size:160px;font-weight:700}.archive-posts{width:100%;font-size:16px}.archive-year{margin-top:40px}.archive-year:not(:last-of-type){border-bottom:2px solid var(--border)}.archive-month{display:flex;align-items:flex-start;padding:10px 0}.archive-month-header{margin:25px 0;width:200px}.archive-month:not(:last-of-type){border-bottom:1px solid var(--border)}.archive-entry{position:relative;padding:5px;margin:10px 0}.archive-entry-title{margin:5px 0;font-weight:400}.archive-count,.archive-meta{color:var(--secondary);font-size:14px}.footer,.top-link{font-size:12px;color:var(--secondary)}.footer{max-width:calc(var(--main-width) + var(--gap) * 2);margin:auto;padding:calc((var(--footer-height) - var(--gap))/2)var(--gap);text-align:center;line-height:24px}.footer span{margin-inline-start:1px;margin-inline-end:1px}.footer span:last-child{white-space:nowrap}.footer a{color:inherit;text-underline-offset:.25rem;text-decoration:underline}.top-link{position:fixed;bottom:4rem;right:2rem;z-index:99;background:var(--tertiary);width:2.5rem;height:2.5rem;padding:10px;border-radius:64px;transition:visibility .3s,opacity .3s cubic-bezier(.4,0,1,1)}.hidden{visibility:hidden;opacity:0}.top-link,.top-link svg{filter:drop-shadow(0 0 0 var(--theme))}.footer a:hover,.top-link:hover{color:var(--primary)}.header-nav{display:flex;flex-wrap:wrap;justify-content:space-between;max-width:calc(var(--nav-width) + var(--gap) * 2);margin:auto;line-height:var(--header-height);padding:0 var(--gap);column-gap:var(--gap)}.header-nav a{display:block}.logo,.menu{display:flex}.logo{align-items:center;column-gap:.55rem;flex-wrap:wrap}.logo a{font-size:24px;font-weight:700;display:flex;align-items:center;column-gap:.55rem}.logo a img,.logo a svg{pointer-events:none;border-radius:6px}.theme-toggle{padding:0 .4rem}[data-theme=dark] .moon{display:none}[data-theme=light] .sun{display:none}.logo-switches{display:inline-flex;gap:.4rem;align-items:inherit;min-height:stretch;flex-wrap:inherit}.logo-switches>*{min-height:inherit;align-items:center;display:inline-flex}.nav-sep{color:var(--secondary)}.lang-menu *{display:inherit;min-height:inherit;align-items:inherit}.lang-menu a{font-size:1rem;font-weight:500;padding:0 .4rem;display:inline-flex}.menu{list-style:none;word-break:keep-all;overflow-x:auto;white-space:nowrap;column-gap:var(--gap)}.menu a{font-size:16px}.menu .active{font-weight:500;text-decoration:underline;text-underline-offset:.3rem;text-decoration-thickness:2px}.main{position:relative;min-height:calc(100vh - var(--header-height) - var(--footer-height));max-width:calc(var(--main-width) + var(--gap) * 2);margin:auto;padding:var(--gap)}.page-header h1{font-size:40px}.pagination{display:flex}.pagination a{color:var(--theme);font-size:13px;line-height:36px;background:var(--primary);border-radius:calc(36px/2);padding:0 16px}.pagination .next{margin-inline-start:auto}.social-icons a{display:inline-flex;padding:10px}.social-icons a svg{height:26px;width:26px}code{direction:ltr}div.highlight,pre{position:relative}.copy-code{display:none;position:absolute;top:4px;right:4px;color:rgba(255,255,255,.8);background:rgba(78,78,78,.8);border-radius:var(--radius);padding:0 5px;font-size:14px;user-select:none}div.highlight:hover .copy-code,pre:hover .copy-code{display:block}.md-content h3,.md-content h4,.md-content h5,.md-content h6{margin:24px 0 16px}.md-content h1{margin:40px auto 32px;font-size:40px}.md-content h2{margin:32px auto 24px;font-size:32px}.md-content h3{font-size:24px}.md-content h4{font-size:16px}.md-content h5{font-size:14px}.md-content h6{font-size:12px}.md-content a:not(.anchor){text-underline-offset:.3rem;text-decoration:underline}.md-content del{text-decoration:line-through}.md-content dl:not(:last-child),.md-content ol:not(:last-child),.md-content p:not(:last-child),.md-content figure:not(:last-child),.md-content ul:not(:last-child){margin-bottom:var(--content-gap)}.md-content ol,.md-content ul{padding-inline-start:1.25rem}.md-content li{margin-top:.3rem}.md-content li p{margin-bottom:0}.md-content dl{display:flex;flex-wrap:wrap;margin:0}.md-content dt{width:25%;font-weight:700}.md-content dd{width:75%;margin-inline-start:0;padding-inline-start:10px}.md-content dd~dd,.md-content dt~dt{margin-top:10px}.md-content table{margin-bottom:var(--content-gap)}.md-content table th,.md-content table:not(.highlighttable,.highlight table,.gist .highlight) td{min-width:80px;padding:6px 13px;line-height:1.5;border:1px solid var(--border)}.md-content table th{text-align:start}.md-content table:not(.highlighttable) td code:only-child{margin:auto 0}.md-content .highlight table{border-radius:var(--radius)}.md-content .highlight:not(table){margin-bottom:var(--content-gap);background:var(--code-block-bg)!important;border-radius:var(--radius);direction:ltr}.md-content li>.highlight{margin-inline-end:0}.md-content ul pre{margin-inline-start:calc(var(--gap) * -2)}.md-content .highlight pre{margin:0}.md-content .highlighttable{table-layout:fixed}.md-content .highlighttable td:first-child{width:40px}.md-content .highlighttable td .linenodiv{padding-inline-end:0!important}.md-content .highlighttable td .highlight,.md-content .highlighttable td .linenodiv pre{margin-bottom:0}.post-content code{padding:.2rem .3rem;font-size:.78em;line-height:1.5;background:var(--code-bg);border-radius:.2rem}.md-content pre code{display:grid;margin:auto 0;padding:10px;color:#d5d5d6;background:var(--code-block-bg)!important;border-radius:var(--radius);overflow-x:auto;word-break:break-all}.md-content blockquote{margin:1rem 0;padding-inline-start:1rem;border-inline-start:.3rem solid var(--content)}.md-content hr{margin:30px 0;height:2px;background:var(--tertiary);border:0}.md-content iframe{max-width:100%}.md-content img{border-radius:var(--radius);margin:1rem 0}.md-content img[src*="#center"]{margin:1rem auto}.md-content figure.align-center{text-align:center}.md-content figure>figcaption{color:var(--primary);font-size:16px;font-weight:700;margin:8px 0 16px}.md-content figure>figcaption>p{color:var(--secondary);font-size:14px;font-weight:400}.md-content h1:hover .anchor,.md-content h2:hover .anchor,.md-content h3:hover .anchor,.md-content h4:hover .anchor,.md-content h5:hover .anchor,.md-content h6:hover .anchor{display:inline-flex;color:var(--secondary);margin-inline-start:.5em;font-weight:500;user-select:none}.anchor:hover{color:var(--content)!important}.md-content img.in-text{display:inline;margin:auto}mark{border-radius:2px;padding:0 2px}audio{display:block;width:100%;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;height:2.5rem;margin-bottom:var(--content-gap)}audio::-webkit-media-controls-enclosure{border-radius:0}video{border:1px solid var(--code-bg);border-radius:var(--radius);max-width:100%}.first-entry{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:320px;margin:var(--gap)0 calc(var(--gap) * 2)}.first-entry .entry-header{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.first-entry .entry-header h1{font-size:34px;line-height:1.3}.first-entry .entry-header h2{font-size:40px}.first-entry .entry-content{margin:14px 0;font-size:16px;-webkit-line-clamp:3}.first-entry .entry-footer{font-size:14px}.home-info .entry-content{--content-gap:0.5rem;-webkit-line-clamp:unset;margin:0}.home-info .social-icons a:first-of-type{padding-inline-start:0}.post-entry{position:relative;margin-bottom:var(--gap);padding:var(--gap);background:var(--entry);border-radius:var(--radius);transition:transform .25s ease;border:1px solid var(--border)}.post-entry:hover,.post-entry:focus-within{transform:translateY(-2px);border-color:var(--tertiary)}.tag-entry .entry-cover{display:none}.entry-header h2{font-size:24px;line-height:1.3}.entry-content{margin:8px 0;color:var(--secondary);font-size:14px;line-height:1.6;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.home-info .entry-content p{margin-block-start:1em;margin-block-end:1em}.entry-footer{color:var(--secondary);font-size:13px}.entry-link{position:absolute;left:0;right:0;top:0;bottom:0;border-radius:var(--radius)}.entry-hint{color:var(--secondary)}.entry-hint-parent{display:flex;justify-content:space-between}.entry-cover{font-size:14px;margin-bottom:var(--gap);text-align:center;display:flex;flex-direction:column;gap:.5rem}.entry-cover img{border-radius:var(--radius);width:100%;height:auto}.entry-cover a{text-underline-offset:.3rem;text-decoration:underline}.page-header,.post-header{margin:24px auto var(--content-gap)}.post-title{font-size:40px}.post-description{margin-top:10px}.post-meta{margin-top:5px}.post-meta,.breadcrumbs{color:var(--secondary);font-size:14px}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem}.breadcrumbs a{font-size:16px}.breadcrumbs svg{height:1em}.i18n_list{display:inline-flex}.post-meta .i18n_list li{list-style:none;margin:auto 3px}.post-meta a,.toc a:hover{text-underline-offset:.3rem;text-decoration:underline}.post-meta a{color:var(--secondary);text-decoration-style:dotted}details.toc{margin-bottom:var(--content-gap);background:var(--code-bg);border-radius:var(--radius);border:1px solid var(--border)}[data-theme=dark] details.toc{background:var(--entry)}details.toc summary{padding:.3rem 1.2rem;border-radius:var(--radius)}details summary{cursor:pointer;display:list-item;width:100%;margin-inline-start:0;user-select:none}details .title{display:inline;font-weight:500;margin-inline-start:.2rem}details{interpolate-size:allow-keywords}details::details-content{height:0;opacity:0;overflow:clip;transition:height 150ms ease,opacity 150ms ease,content-visibility 150ms allow-discrete}details[open]::details-content{height:auto;opacity:1}details .inner{margin:0 2.4rem;padding-bottom:.6rem}details li ul{margin-inline-start:var(--gap)}.post-content{color:var(--content);margin:30px 0}.post-footer{margin-top:var(--content-gap)}.post-footer>*{margin-bottom:10px}.post-tags{display:flex;flex-wrap:wrap;gap:10px}.post-tags li{display:inline-block}.post-tags a,.share-buttons,.paginav{border-radius:var(--radius);background:var(--code-bg);border:1px solid var(--border)}.post-tags a{display:block;padding:0 14px;color:var(--secondary);font-size:14px;line-height:34px;background:var(--code-bg)}.post-tags a:hover,.paginav a:hover{background:var(--border)}.share-buttons{padding:10px;display:flex;justify-content:center;overflow-x:auto;gap:10px}.share-buttons li,.share-buttons a{display:inline-flex}.share-buttons a:not(:last-of-type){margin-inline-end:12px}.paginav{display:flex;line-height:1.2}.paginav .title{letter-spacing:1px;text-transform:uppercase;font-size:.8rem;color:var(--secondary)}.paginav a{width:50%;display:flex;flex-direction:column;gap:.5rem;padding:.8rem;border-radius:var(--radius)}.paginav span:hover:not(.title){text-underline-offset:.2rem;text-decoration:underline}.paginav .next{margin-inline-start:auto;text-align:right}[dir=rtl] .paginav .next{text-align:left}h1>a>svg{display:inline}.buttons,.main .profile{display:flex;justify-content:center}.main .profile{align-items:center;min-height:calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2));text-align:center}.profile .profile_inner{display:flex;flex-direction:column;align-items:center;gap:1rem}.profile img{border-radius:50%}.buttons{flex-wrap:wrap;max-width:400px;gap:1rem}.button{background:var(--tertiary);border-radius:var(--radius);padding:.4rem .8rem}.searchbox input{padding:4px 10px;width:100%;color:var(--primary);font-weight:700;border:2px solid var(--tertiary);border-radius:var(--radius)}.searchResults li{list-style:none;border-radius:var(--radius);padding:10px 15px;position:relative;font-weight:500;display:flex;align-items:center;justify-content:space-between;background:var(--entry);transition:transform .25s ease;border:1px solid var(--border)}.searchResults{margin:var(--content-gap)0;width:100%;display:flex;flex-direction:column;gap:10px}.searchResults li:hover,.searchResults li:focus-within{transform:translateY(-2px);border-color:var(--tertiary)}.searchResults li .entry-link:focus{outline:2px solid var(--secondary);outline-offset:-2px}.terms-tags{display:flex;flex-wrap:wrap;gap:1em;margin-top:var(--content-gap)}.terms-tags li{display:inline-block;font-weight:500}.terms-tags a{display:block;padding:4px 10px;background:var(--tertiary);border-radius:var(--radius);transition:transform .1s}.bg{color:#cad3f5;background-color:#24273a}.chroma{color:#cad3f5;background-color:#24273a}.chroma .x{}.chroma .err{color:#ed8796}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#474733}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8087a2}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8087a2}.chroma .line{display:flex}.chroma .k{color:#c6a0f6}.chroma .kc{color:#f5a97f}.chroma .kd{color:#ed8796}.chroma .kn{color:#8bd5ca}.chroma .kp{color:#c6a0f6}.chroma .kr{color:#c6a0f6}.chroma .kt{color:#ed8796}.chroma .n{}.chroma .na{color:#8aadf4}.chroma .nb{color:#91d7e3}.chroma .bp{color:#91d7e3}.chroma .nc{color:#eed49f}.chroma .no{color:#eed49f}.chroma .nd{color:#8aadf4;font-weight:700}.chroma .ni{color:#8bd5ca}.chroma .ne{color:#f5a97f}.chroma .nf{color:#8aadf4}.chroma .fm{color:#8aadf4}.chroma .nl{color:#91d7e3}.chroma .nn{color:#f5a97f}.chroma .nx{}.chroma .py{color:#f5a97f}.chroma .nt{color:#c6a0f6}.chroma .nv{color:#f4dbd6}.chroma .vc{color:#f4dbd6}.chroma .vg{color:#f4dbd6}.chroma .vi{color:#f4dbd6}.chroma .vm{color:#f4dbd6}.chroma .l{}.chroma .ld{}.chroma .s{color:#a6da95}.chroma .sa{color:#ed8796}.chroma .sb{color:#a6da95}.chroma .sc{color:#a6da95}.chroma .dl{color:#8aadf4}.chroma .sd{color:#6e738d}.chroma .s2{color:#a6da95}.chroma .se{color:#8aadf4}.chroma .sh{color:#6e738d}.chroma .si{color:#a6da95}.chroma .sx{color:#a6da95}.chroma .sr{color:#8bd5ca}.chroma .s1{color:#a6da95}.chroma .ss{color:#a6da95}.chroma .m{color:#f5a97f}.chroma .mb{color:#f5a97f}.chroma .mf{color:#f5a97f}.chroma .mh{color:#f5a97f}.chroma .mi{color:#f5a97f}.chroma .il{color:#f5a97f}.chroma .mo{color:#f5a97f}.chroma .o{color:#91d7e3;font-weight:700}.chroma .ow{color:#91d7e3;font-weight:700}.chroma .p{}.chroma .c{color:#6e738d;font-style:italic}.chroma .ch{color:#6e738d;font-style:italic}.chroma .cm{color:#6e738d;font-style:italic}.chroma .c1{color:#6e738d;font-style:italic}.chroma .cs{color:#6e738d;font-style:italic}.chroma .cp{color:#6e738d;font-style:italic}.chroma .cpf{color:#6e738d;font-weight:700;font-style:italic}.chroma .g{}.chroma .gd{color:#ed8796;background-color:#363a4f}.chroma .ge{font-style:italic}.chroma .gr{color:#ed8796}.chroma .gh{color:#f5a97f;font-weight:700}.chroma .gi{color:#a6da95;background-color:#363a4f}.chroma .go{}.chroma .gp{}.chroma .gs{font-weight:700}.chroma .gu{color:#f5a97f;font-weight:700}.chroma .gt{color:#ed8796}.chroma .gl{text-decoration:underline}.chroma .w{}.chroma{background-color:unset!important}.chroma .hl{display:flex}.chroma .lnt{padding:0 0 0 12px}.highlight pre.chroma code{padding:8px 0}.highlight pre.chroma .line .cl,.chroma .ln{padding:0 10px}.chroma .lntd:last-of-type{width:100%}@media screen and (max-width:768px){:root{--gap:14px}.profile img{transform:scale(.85)}.first-entry{min-height:260px}.archive-month{flex-direction:column}.archive-year{margin-top:20px}.footer{padding:calc((var(--footer-height) - var(--gap) - 10px)/2)var(--gap)}}@media screen and (max-width:900px){.list .top-link{transform:translateY(-5rem)}}@media screen and (max-width:340px){.share-buttons{justify-content:unset}}@media(prefers-reduced-motion){.terms-tags a:active,.button:active,.post-entry:active,.top-link,.searchResults .focus,.searchResults li:active{transform:none}}:root{--brand-blue:#0e60c0;--brand-cyan:#00afef;--brand-green:#4db546;--brand-lime:#a8cf45;--st-bg:#f7f9fb;--st-surface:#ffffff;--st-ink:#14202b;--st-muted:#5b6b7a;--st-line:#dfe6ec;--st-accent:var(--brand-blue);--st-wash:rgba(0, 175, 239, .05);--st-wash-strong:rgba(0, 175, 239, .10);--st-serif:"Source Serif 4", Georgia, "Times New Roman", serif;--st-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--theme:var(--st-bg);--entry:var(--st-surface);--primary:var(--st-ink);--secondary:var(--st-muted);--tertiary:var(--st-line);--content:var(--st-ink);--border:var(--st-line);--code-bg:#eef3f7;--code-block-bg:#edf2f7;--radius:10px}.list{background:var(--theme)}html{font-size:16px}body{font-size:1rem}.post-title{font-size:2.1rem}.post-description{font-size:.95rem}.breadcrumbs a{font-size:.9rem}.menu a{font-size:1rem}.md-content h1{font-size:2.1rem}.md-content h5{font-size:.95rem}.md-content h6{font-size:.85rem}h1,h2,h3,h4,h5,h6,.post-title,.entry-header h2,.article-group h2{font-family:var(--st-serif);font-weight:600;letter-spacing:-.01em}.post-content h2{font-size:1.62rem;margin:2.6rem 0 .9rem}.post-content h3{font-size:1.28rem;margin:2rem 0 .7rem}.post-content h4{font-size:1.08rem;margin:1.6rem 0 .6rem}.post-title{line-height:1.15}.accent{font-style:italic;font-weight:400;color:var(--st-accent)}.eyebrow{display:flex;align-items:center;gap:.55rem;margin:0 0 1rem;font-family:var(--st-mono);font-size:.7rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--st-muted)}.eyebrow::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--brand-green)}.eyebrow.bare::before{display:none}.section-head{display:flex;align-items:baseline;gap:1rem;margin:0 0 1.4rem}.section-head h2{margin:0;font-size:1.45rem;white-space:nowrap}.section-head::after{content:"";order:1;flex:auto;height:1px;background:var(--st-line);transform:translateY(-.35em)}.section-head>:last-child{order:2}.arrow-link{display:inline-flex;align-items:center;gap:.45rem;font-size:.88rem;font-weight:600;color:var(--st-accent);text-decoration:none;white-space:nowrap}.arrow-link::after{content:"\2192";transition:transform .2s ease}.arrow-link:hover{text-decoration:underline;text-underline-offset:4px}.arrow-link:hover::after{transform:translateX(4px)}.num{font-family:var(--st-mono);font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--st-accent)}.num-muted{color:var(--st-muted)}.card{position:relative;border:1px solid var(--st-line);border-radius:var(--radius);background:var(--st-surface)}.card .card{background:var(--st-wash)}.card>:last-child{margin-bottom:0}:is(.feature-card,.mini-card,.course-card,.cta-band) h3{margin:0 0 .6rem;font-size:1.22rem}:is(.feature-card,.mini-card,.course-card,.cta-band) p{margin:0 0 .9rem;color:var(--st-muted);font-size:.95rem}.card-lg{padding:1.5rem 1.6rem}.card-md{padding:1.2rem 1.3rem}.card-sm{padding:.85rem 1.1rem}@media(max-width:640px){.card-lg{padding:1.1rem 1rem}.card-md{padding:1rem}}.card-link{overflow:hidden;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.card-link::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--brand-green),var(--brand-cyan),var(--brand-blue));transform:scaleX(0);transform-origin:left;transition:transform .35s ease}.card-link:hover{transform:translateY(-3px);border-color:transparent;box-shadow:0 10px 30px rgba(20,32,43,9%)}.card-link:hover::before{transform:scaleX(1)}.tone-success{--tone:var(--brand-green)}.tone-info{--tone:var(--brand-cyan)}.tone-warning{--tone:#d98300}.card.tone-success,.card.tone-info,.card.tone-warning{border-color:color-mix(in srgb,var(--tone) 40%,var(--st-line));background:color-mix(in srgb,var(--tone) 9%,var(--st-surface))}.card.note{border-left:3px solid var(--tone,var(--st-line))}.pill{display:inline-block;padding:.12rem .6rem;border:1px solid var(--st-line);border-radius:999px;background:var(--st-surface);font-family:var(--st-mono);font-size:.7rem;line-height:1.5;letter-spacing:.03em;color:var(--st-muted);text-decoration:none;white-space:nowrap}.pill-green{border-color:transparent;background:color-mix(in srgb,var(--brand-green) 20%,transparent);color:var(--st-ink)}.pill-lime{border-color:transparent;background:color-mix(in srgb,var(--brand-lime) 26%,transparent);color:var(--st-ink)}.pill-blue{border-color:transparent;background:color-mix(in srgb,var(--st-accent) 12%,transparent);color:var(--st-accent)}.pill-level{background:color-mix(in srgb,var(--lvl) 14%,transparent);border-color:color-mix(in srgb,var(--lvl) 40%,transparent);color:var(--st-ink)}a.pill-green:hover{background:color-mix(in srgb,var(--brand-green) 34%,transparent)}.label,.course-strip dt,.verify-facts dt{font-family:var(--st-mono);font-size:.7rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}:root{--st-header:color-mix(in srgb, var(--brand-blue) 62%, #000);--st-header-ink:#eaf1f8}.header{background:var(--st-header);border-bottom:none;position:sticky;top:0;z-index:100}html{scroll-padding-top:5rem}.header,.header a,.header button{color:var(--st-header-ink)}.header a:hover,.header button:hover{color:#fff}.header .menu .active{text-decoration-color:initial}.logo a{font-family:var(--st-serif);font-weight:600;font-size:1.3rem}.footer{border-top:1px solid var(--st-line);font-size:.85rem}.post-content a,.deprecation-notice a,.outline-cards a,.course-block-cert a,.register-note a,.class-page a:not(.btn){color:var(--st-accent);box-shadow:none;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--st-accent) 35%,transparent)}.post-content a:hover,.deprecation-notice a:hover,.outline-cards a:hover,.course-block-cert a:hover,.register-note a:hover,.class-page a:not(.btn):hover{text-decoration-color:initial}.post-content .anchor{color:var(--st-muted);text-decoration:none}.header-nav{align-items:center;row-gap:.3rem;padding-block:.9rem;line-height:1.3}.menu{overflow:visible;flex-wrap:wrap;align-items:center;row-gap:.3rem}.menu-toggle,.menu-button{display:none}@media(max-width:768px){.menu-toggle{display:block;position:absolute;width:1px;height:1px;opacity:0}.menu-button{display:flex;align-items:center;padding:.3rem;cursor:pointer}.menu-toggle:focus-visible+.menu-button{outline:2px solid currentColor}.menu-close,.menu-toggle:checked+.menu-button .menu-open{display:none}.menu-toggle:checked+.menu-button .menu-close{display:block}.menu{display:none}.menu-toggle:checked~.menu{display:flex;flex-basis:100%;flex-direction:column;align-items:flex-start}.menu a{padding:.5rem 0}}@media(max-width:560px){.section-head::after{display:none}.section-head{justify-content:space-between}.section-head h2{white-space:normal}}.site-footer{margin-top:3rem;border-top:none;background:var(--st-header);color:var(--st-header-ink);--st-ink:var(--st-header-ink);--st-muted:rgba(234, 241, 248, .72);--st-line:rgba(234, 241, 248, .18);--st-accent:#fff}.footer-inner,.footer-bar{max-width:var(--main-width);margin-inline:auto;padding-inline:var(--gap)}.footer-inner{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:2rem 2rem;padding-block:2.5rem 2rem}.footer-logo{display:block;width:140px;height:auto}.footer-address{margin:1.2rem 0 0;font-style:normal;font-size:.82rem;line-height:1.7;color:var(--st-muted)}.footer-address-label{display:block;margin-bottom:.35rem;font-family:var(--st-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}.footer-col-title{margin:0 0 .9rem;font-family:var(--st-mono);font-size:.7rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--st-muted)}.footer-col ul{margin:0;padding:0;list-style:none}.footer-col li{margin:0 0 .55rem}.footer-col a{font-size:.92rem;color:var(--st-ink);text-decoration:none}.footer-col a:hover{color:var(--st-accent);text-decoration:underline;text-underline-offset:3px}.footer-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1.5rem;padding-block:1.1rem 1.4rem;border-top:1px solid var(--st-line);font-family:var(--st-mono);font-size:.72rem;color:var(--st-muted)}.footer-policies{display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin:0;padding:0;list-style:none}.footer-bar a{color:var(--st-muted);text-decoration:none}.footer-bar a:hover{color:var(--st-accent);text-decoration:underline;text-underline-offset:3px}.footer-policies a{color:var(--st-muted);text-decoration:none}.footer-policies a:hover{color:var(--st-accent);text-decoration:underline;text-underline-offset:3px}@media(max-width:900px){.footer-inner{grid-template-columns:repeat(2,1fr)}.footer-brand{grid-column:1/-1}}@media(max-width:520px){.footer-inner{grid-template-columns:1fr;gap:2rem}.footer-bar{justify-content:flex-start}}.blog-post .post-body details.toc{margin:0 0 1.4rem;padding:0 0 .8rem;background:0 0;border:0;border-bottom:1px solid var(--st-line);border-radius:0}.blog-post .post-body details.toc summary{padding:.2rem 0}.blog-post .post-content img{display:block;max-width:min(100%,720px);height:auto;margin-inline:auto}.blog-post .post-content figure>figcaption,.post-content .figure-caption{max-width:720px;margin:.5rem auto 0;color:var(--st-muted);font-size:.88rem;font-weight:400;text-align:center}.post-content figure>img{height:auto}.blog-post .post-content figure>figcaption>p,.post-content .figure-caption>p{margin:0}.blog-post .post-content .photo-grid{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);gap:.8rem;max-width:720px;margin:0 auto var(--content-gap)}.blog-post .post-content .photo-grid figure{margin:0}.blog-post .post-content .photo-grid img{width:100%;aspect-ratio:4/3;object-fit:cover}.blog-post .post-content .photo-grid figcaption{margin-top:.35rem;color:var(--st-muted);font-size:.82rem;text-align:center}.blog-post .post-content .photo-grid figcaption p{margin:0}@media(max-width:560px){.blog-post .post-content .photo-grid{grid-template-columns:repeat(2,1fr)}}.blog-post .comments,.comments-archive{margin-top:1.6rem}.blog-post .comments h2{margin:0 0 .6rem;font-size:1.3rem}.comments-archive summary{cursor:pointer}.comments-archive summary h2{display:inline;margin:0;font-size:1.3rem}.comments-archive-note{margin:.8rem 0 0;color:var(--st-muted);font-size:.9rem}.comment-thread,.comment-replies{list-style:none;margin:0;padding:0}.comment-thread{display:grid;gap:.7rem;margin-top:1rem}.comment-thread>.comment{padding:.85rem 1rem;background:var(--st-wash);border-radius:var(--radius)}.comment-replies{margin:.8rem 0 0 .2rem;padding-left:1rem;border-left:2px solid color-mix(in srgb,var(--st-accent) 25%,var(--st-line))}.comment-replies>.comment+.comment{margin-top:.9rem}.comment-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;font-size:.86rem}.comment-head time{color:var(--st-muted);font-size:.82rem}.comment-body{margin-top:.3rem;font-size:.88rem;line-height:1.6;color:color-mix(in srgb,var(--st-ink) 82%,var(--st-surface));overflow-wrap:anywhere}.comment-body p{margin:0 0 .5rem}.comment-body p:last-child{margin-bottom:0}.comment-body a{color:var(--st-accent);text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--st-accent) 35%,transparent)}@media(max-width:640px){.comment-replies{margin-left:0;padding-left:.7rem}}.md-content pre code{color:var(--st-ink)}.md-content .highlight:not(table){border:1px solid color-mix(in srgb,var(--st-accent) 18%,var(--st-line));border-left:3px solid var(--st-accent)}.copy-code{color:var(--st-muted);background:var(--st-surface);border:1px solid var(--st-line)}.copy-code:hover{color:var(--st-ink)}.chroma{color:var(--st-ink)}.chroma [class]{color:inherit;background-color:initial;font-weight:inherit;font-style:inherit}.bg{}.chroma{-webkit-text-size-adjust:none}.chroma .err{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#dedede}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}.muted{color:var(--secondary);font-size:.9em}.post-description{display:none}.header-link{margin-top:.3rem;font-size:.95rem}.btn{display:inline-block;padding:.5rem 1.1rem;border-radius:999px;border:1px solid var(--st-line);text-decoration:none;white-space:nowrap;font-size:.88rem;font-weight:600;color:var(--st-ink);transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.btn-primary{background:var(--st-accent);color:#fff;border-color:transparent}.btn-neutral{background:#37424e;color:#fff;border-color:transparent}.btn-neutral:hover{background:#2b343e}.btn:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(20,32,43,.14)}.next-cohort{margin:1.5rem 0}.next-cohort h2{margin-top:0}.cohort-row{display:flex;flex-wrap:wrap;gap:.75rem 1.2rem;align-items:center;padding:.5rem 0}.cohort-when{font-weight:600}.course-block{margin:1.6rem 0}.course-block>h2{margin-top:0;margin-bottom:.9rem;font-size:1.55rem}.course-block>:last-child{margin-bottom:0}.outcomes{margin:0;padding-left:1.2rem}.outcomes li{margin:.35rem 0}.outline{margin:0;padding-left:1.4rem}.outline>li{margin:.5rem 0;font-weight:600}.outline-topics{margin:.35rem 0 .6rem;padding-left:1rem;list-style:none;font-weight:400}.outline-topics li{position:relative;margin:.2rem 0;color:var(--st-muted)}.outline-topics li::before{content:"";position:absolute;left:-.85rem;top:.55em;width:4px;height:4px;border-radius:50%;background:var(--st-line)}.eventbee-widget{margin:.8rem 0 2rem}.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-items:stretch;gap:1rem;margin-top:1.2rem}.mode-card{display:flex;flex-direction:column}.card.mode-card-lead{border-color:color-mix(in srgb,var(--st-accent) 35%,var(--st-line));background:var(--st-wash-strong)}.card.mode-card-closed{border-style:dashed;background:0 0;color:var(--st-muted)}.mode-card-closed h3{color:var(--st-muted)}.mode-card h3{margin:0 0 .9rem;font-size:1.05rem}.mode-features{list-style:none;margin:0 0 1.1rem;padding:0;font-size:.92rem}.mode-features li{position:relative;margin:.35rem 0;padding-left:1.5rem}.mode-features li::before{content:"";position:absolute;left:0;top:.28em;width:9px;height:5px;border-left:2px solid var(--brand-green);border-bottom:2px solid var(--brand-green);transform:rotate(-45deg)}.mode-price{margin:auto 0 1rem;font-family:var(--st-mono);font-size:1rem;color:var(--st-ink)}.mode-next{margin:auto 0 .35rem;font-size:.92rem;color:var(--st-muted)}.mode-next strong{color:var(--st-ink);font-weight:600}.mode-next+.mode-price{margin-top:0}.mode-card .btn{align-self:flex-start}.event-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.8rem;margin:0}.event-facts>div{padding:.9rem 1rem;border:1px solid var(--st-line);border-radius:var(--radius);background:var(--st-surface)}.event-facts dt{font-family:var(--st-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.event-facts dd{margin:.3rem 0 0;font-size:1.15rem;font-weight:600}.event-facts dd span{display:block;font-size:.85rem;font-weight:400;color:var(--st-muted)}.course-strip{display:flex;margin:0 0 2rem;padding:0;border:1px solid var(--st-line);border-left:4px solid var(--brand-blue)}.course-strip>div{flex:none;max-width:15rem;padding:1.1rem 1.4rem}.course-strip>.strip-prose{flex:1;max-width:none}.course-strip>div+div{border-left:1px solid var(--st-line)}.course-strip dd{margin:.35rem 0 0;line-height:1.5}.course-strip dd span{display:block;font-size:.88rem;color:var(--st-muted)}.course-strip>div:not(.strip-prose) dd{font-size:1.1rem;font-weight:600}.course-strip dd span{font-weight:400}.course-strip p,.course-strip ul{margin:0}.course-strip ul{padding-left:1.1rem}.course-strip a{color:var(--st-accent);text-decoration:underline;text-underline-offset:2px}.course-strip a:hover{text-decoration-thickness:2px}@media(max-width:720px){.course-strip{flex-direction:column}.course-strip>div{max-width:none}.course-strip>div+div{border-left:0;border-top:1px solid var(--st-line)}}.session-note{color:var(--st-muted);font-size:.92rem}.session-list{margin:1rem 0 2rem;border:1px solid var(--st-line);border-radius:var(--radius);background:var(--st-surface)}.session-week-group+.session-week-group{border-top:1px solid var(--st-line)}.session-list-weeks .session-week-group{display:grid;grid-template-columns:5.5rem 1fr;align-items:start}.session-week{padding:.85rem 0 0 1.1rem;font-family:var(--st-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.session-rows{margin:0;padding:.3rem 0;list-style:none}.session-row{display:grid;grid-template-columns:6rem 8.5rem 9rem auto;align-items:baseline;gap:.15rem 1rem;padding:.3rem 1.1rem}.session-num{font-family:var(--st-mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.session-day{font-weight:600;white-space:nowrap}.session-meta{display:contents}.session-narrow{display:none}.session-time{color:var(--st-muted);font-size:.92rem;white-space:nowrap}.session-local{display:inline-flex;align-items:center;gap:.4rem;justify-self:start;font-size:.88rem;font-weight:600;color:var(--st-accent);white-space:nowrap;text-decoration:underline;text-underline-offset:2px}.session-local:hover{text-decoration-thickness:2px}.session-local .card-icon{width:1rem;height:1rem;flex:none;align-self:center}@media(max-width:640px){.session-list-weeks .session-week-group{display:block}.session-week{padding-top:.7rem}.session-row{grid-template-columns:1.4rem 1fr;column-gap:.8rem}.session-wide{display:none}.session-narrow{display:inline}.session-meta{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:.15rem .9rem}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tech-logos{display:flex;gap:.4rem;align-items:center;margin:0 0 .7rem}.tech-logo{width:20px;height:20px;padding:4px;box-sizing:content-box;background:#fff;border:1px solid var(--st-line);border-radius:6px;object-fit:contain}.course-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin:1rem 0 2rem}.course-card{display:flex;flex-direction:column}.course-card-head{display:flex;align-items:flex-start;gap:.8rem;margin-bottom:.45rem}.course-card-head .tech-logos{display:flex;flex:none;gap:.35rem;margin:0 0 0 auto}.course-card h3{margin:0;font-size:1.12rem;line-height:1.35;min-height:calc(2 * 1.35em)}.course-card-link{color:inherit;text-decoration:none}.course-card-link::after{content:"";position:absolute;inset:0;border-radius:inherit}.course-card:hover .course-card-link{color:var(--st-accent)}.course-card-tagline{margin:0;color:var(--st-muted);font-size:.95rem;line-height:1.55;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;height:calc(3 * 1.55em)}.course-card-foot{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;margin-top:auto;padding-top:.9rem;border-top:1px solid var(--st-line);font-size:.86rem}.course-card>.course-card-tagline{margin-bottom:1.1rem}.course-card-facts{min-height:1.4em;color:var(--st-muted)}.course-card-level{margin:auto 0 .6rem}.course-card-level~.course-card-foot{margin-top:0}.course-card-foot a{position:relative;z-index:1}.course-card-next{display:block;min-height:1.6rem}.course-grid>.course-card:only-child{max-width:calc(50% - .5rem);justify-self:center;width:100%}@media(max-width:640px){.course-grid>.course-card:only-child{max-width:none}}.upcoming-courses{margin-top:2rem}.cohort-grid{display:flex;flex-direction:column;gap:.8rem;margin:1rem 0 2rem}.cohort-card{display:grid;grid-template-columns:11rem 1fr auto;gap:1.2rem;align-items:center}.cohort-when{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}.cohort-dates{margin:0;font-family:var(--st-mono);font-size:.8rem;color:var(--st-ink)}.cohort-card h3{margin:0 0 .2rem;font-size:1.08rem}.cohort-card h3 a{text-decoration:none;color:var(--st-ink)}.cohort-card h3 a:hover{color:var(--st-accent)}.cohort-meta{margin:0;font-size:.9rem;color:var(--secondary)}.cohort-act{text-align:right}.cohort-price{margin:0 0 .5rem;font-weight:600;white-space:nowrap}.cohort-buttons{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:1rem}@media(max-width:720px){.cohort-card{grid-template-columns:1fr;gap:.7rem}.cohort-act{text-align:left}.cohort-buttons{justify-content:flex-start}}.post-content a.btn{color:var(--st-ink);text-decoration:none}.post-content a.btn-primary{color:#fff}.post-content a.btn-neutral{color:#fff}.verify-card{position:relative;overflow:hidden;max-width:40rem;margin:2rem auto}.verify-card::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--brand-green),var(--brand-cyan),var(--brand-blue))}.certificate-search-label{display:block;margin-bottom:.6rem;font-family:var(--st-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--st-muted)}.certificate-search-row{display:flex;flex-wrap:wrap;gap:.6rem}.certificate-search input{flex:1 1 15rem;min-width:0;padding:.7rem .9rem;font-family:var(--st-mono);font-size:1rem;letter-spacing:.04em;color:var(--st-ink);background:var(--st-surface);border:1px solid var(--st-line);border-radius:var(--radius)}.certificate-search input::placeholder{color:var(--st-muted);opacity:.7}.certificate-search input:focus-visible{outline:2px solid var(--st-accent);outline-offset:1px;border-color:transparent}.certificate-search .btn{flex:none;padding:.7rem 1.4rem}#certificate-result{margin-top:1.3rem}#certificate-result:empty{margin:0}.verify-result{margin:0}.verify-invalid p{margin:.4rem 0 0}.verify-invalid p:first-child{margin-top:0}.verify-status{display:flex;align-items:center;gap:.9rem;margin-bottom:1.2rem}.verify-icon{flex:none;width:2.6rem;height:2.6rem;padding:.55rem;border-radius:50%;background:var(--brand-green);color:#fff}.verify-verdict{margin:0;font-family:var(--st-serif);font-size:1.35rem;font-weight:600;color:var(--st-ink)}.verify-issuer{margin:.1rem 0 0;color:var(--st-muted)}.verify-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem 1.5rem;margin:0;padding-top:1.1rem;border-top:1px solid color-mix(in srgb,var(--brand-green) 30%,var(--st-line))}.verify-facts .verify-wide{grid-column:1/-1}.verify-facts dd{margin:.2rem 0 0;font-size:1.05rem;font-weight:500}.verify-facts .verify-id{font-family:var(--st-mono)}.verify-checking{margin:0;color:var(--st-muted)}@media(max-width:560px){.verify-facts{grid-template-columns:1fr}}.steps{list-style:none;margin:1.6rem 0;padding:0}.step{position:relative;padding:0 0 1.6rem 3rem}.step:last-child{padding-bottom:0}.step::before{content:"";position:absolute;left:13px;top:1.3rem;bottom:0;width:2px;background:var(--st-line)}.step:last-child::before{display:none}.step>.step-num{position:absolute;left:8px;top:.55rem;width:12px;height:12px;border-radius:50%;background:var(--st-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--st-accent) 16%,transparent)}.step h3{margin:0 0 .35rem;font-size:1.05rem;line-height:1.6}.step>:last-child{margin-bottom:0}.cta-band{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center;margin:2rem 0}.cta-band .cta-text{margin:0;max-width:46rem}.cta-footer{display:flex;justify-content:center;margin:2.5rem 0 0}.gallery{display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:0;margin:1.5rem 0;padding-bottom:.6rem;-webkit-overflow-scrolling:touch}.gallery-item{flex:0 0 min(560px,85%);scroll-snap-align:start;margin:0}.gallery-item img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border:1px solid var(--st-line);border-radius:var(--radius)}.gallery .gallery-caption{margin:.5rem 0 0;font-size:.85rem;font-weight:400;color:var(--secondary);text-align:center}.gallery::-webkit-scrollbar{height:8px}.gallery::-webkit-scrollbar-thumb{background:var(--st-line);border-radius:999px}@media(prefers-reduced-motion:reduce){.gallery{scroll-behavior:auto}}.gallery-dots{display:flex;justify-content:center;gap:.5rem;margin-top:.9rem}.gallery-dots button{width:8px;height:8px;padding:0;border:0;border-radius:50%;cursor:pointer;background:var(--st-line);transition:background .2s ease,transform .2s ease}.gallery-dots button:hover{background:var(--st-muted)}.gallery-dots button[aria-current=true]{background:var(--st-accent);transform:scale(1.3)}.gallery-dots button::before{content:"";position:absolute;min-width:44px;min-height:44px;transform:translate(-50%,-50%)}.gallery-dots button{position:relative}.card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem}.card-index{display:flex;align-items:center;gap:.6rem;margin:0 0 1rem}.feature-card h3{display:flex;align-items:center;gap:.6rem;font-size:1.5rem}.card-icon{flex:none;width:1.35em;height:1.35em;color:var(--st-accent)}.feature-card p{font-size:1.05rem;line-height:1.65;margin-bottom:1.2rem}.feature-card p:last-child{margin-bottom:0}.features-grid .feature-card h3{align-items:flex-start;gap:.55rem;margin:0 0 .6rem;font-size:1.15rem;line-height:1.3}.features-grid .card-icon{width:1.25em;height:1.25em;margin-top:.02em}.features-grid .feature-card p{font-size:.98rem;line-height:1.6;margin-bottom:.8rem}.card-facts{margin:0 0 1.3rem;padding:.9rem 0 0;border-top:1px solid var(--st-line);list-style:none;font-family:var(--st-mono);font-size:.82rem;line-height:1.55;letter-spacing:.04em;color:var(--st-muted)}.card-facts li+li{margin-top:.45rem}.card-grid-3{grid-template-columns:repeat(3,1fr)}@media(max-width:900px){.card-grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.card-grid{grid-template-columns:1fr}}.contact-stack{display:grid;gap:1.25rem}.contact-card{display:grid;grid-template-columns:1fr 1fr;column-gap:2rem;row-gap:1rem;align-items:start}@media(max-width:720px){.contact-card{grid-template-columns:1fr}}.contact-card h3{margin-bottom:.6rem}.contact-card .contact-blurb{margin:0 0 1rem;color:var(--st-muted)}.contact-card .contact-who{margin:0;font-size:1rem;font-weight:500}.contact-lines{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.contact-lines li{margin:0}.post-content .contact-line,.contact-line{display:flex;align-items:center;gap:.85rem;padding:.6rem .75rem;border-radius:10px;border:1px solid var(--st-line);color:var(--st-ink);text-decoration:none;overflow-wrap:anywhere}.contact-line:hover{border-color:var(--st-accent);background:color-mix(in srgb,var(--st-accent) 6%,transparent)}.contact-badge{flex:none;display:grid;place-items:center;width:2.3rem;height:2.3rem;border-radius:50%;background:color-mix(in srgb,var(--st-accent) 12%,transparent)}.contact-badge .card-icon{width:1.1rem;height:1.1rem}@media(max-width:480px){.contact-card{padding:1.4rem 1.1rem}.post-content .contact-line,.contact-line{gap:.65rem;padding:.55rem .6rem;font-size:.95rem}}.contact-label{display:block}.contact-page .contact-stack{margin-bottom:1rem}.contact-page h2{margin:2.5rem 0 1rem}.social-follow{display:flex;flex-wrap:wrap;gap:.6rem;margin:0}.social-follow a{display:inline-flex;align-items:center;gap:.45rem;padding:.38rem .9rem;border-radius:999px;background:var(--mark,var(--st-accent));font-family:var(--st-mono);font-size:.76rem;color:#fff;text-decoration:none}.social-follow a:hover{background:color-mix(in srgb,var(--mark) 88%,#000)}.social-follow svg{flex:none;width:15px;height:15px}.social-follow strong{font-weight:600}.intro-media{display:flex;gap:1.5rem;align-items:flex-start;margin:0 0 1.5rem}.intro-media-text{flex:auto}.intro-media-text>:first-child{margin-top:0}.intro-media-aside{flex:none;width:440px;margin:0}.intro-media-aside>img{display:block;width:100%;height:auto;margin-inline:auto;border:1px solid var(--st-line);border-radius:var(--radius)}.intro-media .intro-media-caption{margin:.5rem 0 0;font-size:.82rem;font-weight:400;color:var(--secondary);text-align:center}.intro-media-aside .video-embed{margin:0}@media(max-width:720px){.intro-media{flex-direction:column;gap:1rem}.intro-media-aside{width:100%;max-width:440px}}.talk-grid{display:flex;flex-direction:column;gap:.7rem;margin:1.5rem 0}.talk-card{display:grid;grid-template-columns:11rem 1fr auto;gap:1.2rem;align-items:center}.talk-when{margin:0;font-family:var(--st-mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--st-muted)}.talk-card h3{margin:0;font-size:1.02rem;line-height:1.35}.talk-event{margin:.2rem 0 0;font-size:.9rem;color:var(--secondary)}.talk-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem 1rem;margin:0;font-size:.9rem}@media(max-width:720px){.talk-card{grid-template-columns:1fr;gap:.6rem}.talk-links{justify-content:flex-start}}.video-embed{margin:1.5rem 0}.video-frame{position:relative;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;background:var(--st-line)}.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.video-embed .video-caption{margin:.5rem 0 0;font-size:.9rem;font-weight:400;color:var(--secondary);text-align:center}.person{display:flex;gap:1.4rem;margin:1rem 0}.person .person-photo{flex:none;width:140px;height:140px;margin:0;border-radius:50%;object-fit:cover;border:1px solid var(--st-line)}.person-body>:first-child{margin-top:0}.person-body h3{margin:0 0 .15rem;font-size:1.15rem}.person-role{margin:0 0 .7rem}.person-body p:last-child{margin-bottom:0}.person-links{margin:0 0 .8rem;font-size:.85rem}.person-links a{display:inline-flex;align-items:center;gap:.35rem}.person-links svg{width:15px;height:15px;flex:none}@media(max-width:560px){.person{flex-direction:column;gap:.9rem}}.testimonial-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:stretch;gap:1rem;margin:1rem 0}.testimonial-grid:has(.testimonial-expand[open]){align-items:start}.testimonial{display:flex;flex-direction:column;margin:0}.testimonial blockquote{margin:0 0 1rem;padding:0;border:0;font-family:var(--st-serif);font-size:1rem;line-height:1.6}.testimonial blockquote{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:8;line-clamp:8;overflow:hidden;height:calc(8 * 1.6em)}.testimonial blockquote{order:1}.testimonial-expand{order:2}.testimonial figcaption{order:3}.testimonial-expand[open]~blockquote{-webkit-line-clamp:unset;line-clamp:unset;overflow:visible;height:auto}.testimonial-grid>.testimonial:only-child blockquote{-webkit-line-clamp:unset;line-clamp:unset;overflow:visible;height:auto}.testimonial-grid>.testimonial:only-child .testimonial-expand{display:none}.testimonial-expand summary,.testimonial-expand-spacer>span{display:inline-block;margin-bottom:1rem;cursor:pointer;list-style:none;font-family:var(--st-mono);font-size:.72rem;letter-spacing:.04em;color:var(--st-accent)}.testimonial-expand summary::-webkit-details-marker{display:none}.testimonial-expand summary:hover{text-decoration:underline}.testimonial-expand summary:focus-visible{outline:2px solid var(--st-accent);outline-offset:3px}.testimonial-expand:not([open]) .hint-less,.testimonial-expand[open] .hint-more{display:none}.testimonial-expand summary .hint-more::after{content:" +"}.testimonial-expand summary .hint-less::after{content:" \2212"}figure.testimonial>figcaption{display:flex;flex-direction:column;gap:.7rem;margin:auto 0 0;font-size:.9rem;font-weight:400}.testimonial-who-row{display:flex;gap:.7rem;align-items:center;min-height:4.2em}.testimonial-expand-spacer{visibility:hidden}@media(max-width:640px){.testimonial blockquote{height:auto;max-height:calc(8 * 1.6em)}.testimonial-expand[open]~blockquote{max-height:none}.testimonial-expand-spacer{display:none}.testimonial-who-row{min-height:0}}.testimonial-who{min-width:0}.testimonial-who .muted{display:inline-block;max-width:100%;vertical-align:bottom;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.testimonial-photo{border-radius:50%;flex:none;object-fit:cover}.testimonial-country .flag{display:inline-block;width:20px;height:15px;border-radius:2px;margin:0 .4rem 0 0;vertical-align:-2px;box-shadow:0 0 0 1px var(--st-line)}.testimonial-course .pill{max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}a.pill:hover{border-color:var(--st-accent);color:var(--st-ink)}.post-content a.pill{color:var(--st-muted);text-decoration:none}.post-content a.pill:hover{color:var(--st-ink)}.callout{border-left:3px solid var(--st-line);margin:1.2rem 0}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.card.deprecation-notice{--warn:#d98300;display:flex;gap:.8rem;align-items:flex-start;border:1px solid color-mix(in srgb,var(--warn) 45%,transparent);border-left:5px solid var(--warn);background:color-mix(in srgb,var(--warn) 12%,var(--st-wash));padding:1rem 1.3rem;margin:1.2rem 0 1.8rem;font-size:1.05rem;font-weight:500;color:var(--st-ink)}.deprecation-notice::before{content:"!";flex:none;display:grid;place-items:center;width:1.5rem;height:1.5rem;margin-top:.05rem;border-radius:50%;background:var(--warn);color:#fff;font-weight:700;font-size:.95rem;line-height:1}.deprecation-notice p{margin:0}.deprecation-notice p+p{margin-top:.5rem}.table-wrap{overflow-x:auto;margin:1rem 0}.table-wrap table{width:100%;border-collapse:collapse}.table-wrap th,.table-wrap td,.post-content th,.post-content td{padding:.5rem .75rem;text-align:left}.table-wrap thead th,.post-content thead th{border-bottom:1px solid var(--st-line);font-weight:500;font-family:var(--st-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.table-wrap tbody tr+tr td,.post-content tbody tr+tr td{border-top:1px solid var(--st-line)}.post-content table{border-collapse:collapse}.modules ul{margin:0;padding-left:1.1rem}.past-classes summary{cursor:pointer}.past-grid{display:flex;flex-direction:column;gap:.4rem;margin:1rem 0 0}.past-card{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.past-what{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .7rem}.past-card h3{margin:0;font-size:.95rem;line-height:1.35}.past-card h3 a{text-decoration:none;color:var(--st-ink)}.past-card h3 a:hover{color:var(--st-accent)}.past-when{margin:0;font-family:var(--st-mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--st-muted)}.past-where{margin:0;font-size:.82rem;color:var(--secondary);white-space:nowrap;flex:none}.article-group{margin:0 0 2.5rem}.article-group h2{margin-bottom:.6rem}.article-group h2 a{text-decoration:none}.article-group h2 a:hover{text-decoration:underline;text-underline-offset:4px}.article-entries{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem}.article-entries .post-entry{margin:0;background:var(--st-wash);border:1px solid var(--st-line);border-radius:var(--radius)}.article-entries .entry-header h2{font-size:1.08rem;margin:0}.article-entries .entry-content{margin:.5rem 0 0;font-size:.92rem}.article-entries .entry-footer{margin-top:.5rem;font-size:.82rem;color:var(--secondary)}.class-page .event-facts{margin:0 0 1.6rem}.class-page>h2{margin:2rem 0 .4rem}.class-top{display:grid;grid-template-columns:3fr 2fr;gap:1rem;margin:0 0 1.6rem}.class-top>.course-block{margin:0}@media(max-width:720px){.class-top{grid-template-columns:1fr}}.class-zoom{display:flex;flex-wrap:wrap;gap:.8rem;margin:0 0 1.1rem}.class-zoom>div{padding:.6rem .9rem;border:1px solid var(--st-line);border-radius:var(--radius);background:var(--st-wash)}.class-zoom dt,.participant-country{font-family:var(--st-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.class-zoom dd{margin:.2rem 0 0;font-family:var(--st-mono);font-size:1.15rem;font-weight:600}.class-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin:0}.class-people{list-style:none;margin:0;padding:0;display:grid;gap:1rem}.class-people .muted{font-size:.85rem}.class-md{overflow-wrap:anywhere}.class-md>:first-child{margin-top:0}.class-md>:last-child{margin-bottom:0}.class-md ul,.class-md ol{padding-left:1.2rem}.class-md li+li{margin-top:.35rem}.class-md code{font-size:.88em}.class-md img{display:block;max-width:100%;height:auto;margin:.6rem 0;border:1px solid var(--st-line);border-radius:var(--radius)}.class-md h3{margin:1.4rem 0 .5rem;font-size:1.15rem}.class-md h4{margin:1rem 0 .4rem;font-size:1rem}.class-md table{display:block;overflow-x:auto;width:100%;border-collapse:collapse;font-size:.92rem}.class-md th,.class-md td{padding:.55rem .75rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--st-line)}.class-md thead th{font-family:var(--st-mono);font-size:.7rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.class-md .callout{margin:1rem 0 0}.class-block-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem;margin-bottom:.9rem}.class-block-head h2{margin:0;font-size:1.55rem}.class-join-tip{margin:1rem 0 0;font-size:.85rem}.class-photos{display:grid;gap:1rem}.class-photos img{display:block;width:100%;height:auto;border:1px solid var(--st-line);border-radius:var(--radius)}.participant-grid{list-style:none;margin:1rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.7rem}.participant{display:flex;flex-direction:column;gap:.2rem;overflow-wrap:anywhere}.participant-contact{font-size:.88rem;color:var(--st-muted)}.participant-contact p{margin:0}.participant-country{display:flex;align-items:center;gap:.45rem;margin-top:auto;padding-top:.3rem}.participant-country .flag{flex:none;width:20px;height:15px;border-radius:2px;box-shadow:0 0 0 1px var(--st-line)}.class-after{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}.class-after li{display:flex;gap:.7rem;align-items:baseline}.class-after li>span:last-child{flex:1}.class-after .tag{flex:none;min-width:7.5rem;text-align:center}.outline-cards{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}.outline-module h3{margin:0 0 .5rem;font-size:1.12rem}.outline-module h3 p{margin:0;display:inline}.outline-module>.class-md ul{margin:0}.outline-assignment{margin-left:1.5rem}.outline-assignment .class-md ul{margin:.3rem 0 0}.outline-label{margin-bottom:.25rem}.outline-assignment-title{font-weight:600}.outline-assignment-title p{margin:0;display:inline}.submit-cards{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}.submit-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:0}.submit-card-title{font-weight:600}.submit-card .btn{flex:none}@media(max-width:500px){.submit-card{flex-direction:column;align-items:flex-start}}@media(max-width:500px){.outline-assignment{margin-left:.6rem}}.outline-cards .class-md ul{list-style:disc}.outline-module .class-md>p:has(>strong:only-child){margin:.6rem 0 .2rem;font-family:var(--st-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.outline-module .class-md>p:has(>strong:only-child) strong{font-weight:500}.legal .post-content{font-size:.86rem;line-height:1.6;color:var(--st-muted);text-align:justify;hyphens:auto;-webkit-hyphens:auto}.legal .post-content h2,.legal .post-content h3{margin:1.6rem 0 .4rem;font-family:inherit;font-size:.95rem;font-weight:700;letter-spacing:0;color:var(--st-ink);text-align:left}.legal .post-content>p,.legal .post-content li{text-align:justify;margin-bottom:.6rem}.legal .post-content ul{margin:0 0 1rem;padding-left:1.3rem}.home{--home-measure:46rem}.home .hero{position:relative;padding:2.25rem 0 1.75rem;text-align:center}.home .hero .eyebrow,.home .social-follow,.home .hero-tech{justify-content:center}.home .hero .eyebrow{color:var(--st-ink)}.home .hero-tech{margin:0;gap:.5rem}.home .hero-tech .tech-logo{width:26px;height:26px}.home .hero::before{content:"";position:absolute;inset:0 0 30% 0;z-index:0;background-image:radial-gradient(color-mix(in srgb,var(--st-accent) 22%,transparent) 1.2px,transparent 1.2px);background-size:22px 22px;-webkit-mask-image:radial-gradient(ellipse 70% 70% at 50% 40%,#000,transparent 75%);mask-image:radial-gradient(ellipse 70% 70% at 50% 40%,#000,transparent 75%)}.home .hero::after{content:"";position:absolute;inset:-1rem 0;z-index:0;background:radial-gradient(ellipse 50% 55% at 50% 50%,color-mix(in srgb,var(--st-bg) 85%,transparent),transparent 100%);pointer-events:none}.home .hero>*{position:relative;z-index:1}.home .hero-title{margin:0 0 1.5rem;font-family:var(--st-serif);font-size:clamp(2.4rem,6vw,3.9rem);font-weight:600;line-height:1.08;letter-spacing:-.02em}.home .hero-lede{margin:0 auto 1.8rem;max-width:34rem;font-size:1.05rem;line-height:1.65;color:var(--st-ink);text-align:center}.home .hero-lede p{margin:0}.home .hero-lede p+p{margin-top:.8rem}.home .social-follow{margin:0 0 1.5rem}@media(max-width:720px){.home .hero{padding:1.25rem 0 1rem}.home .hero-title{font-size:2.05rem;margin-bottom:1rem}.home .hero .eyebrow{font-size:.62rem;letter-spacing:.06em}.home .hero-lede{font-size:1rem;margin-bottom:1.2rem}}.home .card-grid{margin:0 0 2.5rem}.home .home-section{margin:0 0 2.5rem}.home .row-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--st-line)}.home .row{display:grid;grid-template-columns:1fr auto auto;align-items:baseline;gap:.4rem 1rem;padding:.95rem .5rem;border-bottom:1px solid var(--st-line);position:relative;transition:background .2s ease}.home .row-link .row-title::after{content:"";position:absolute;inset:0}.home .row-link:hover{background:var(--st-wash)}.home .row-title{font-family:var(--st-serif);font-size:1.05rem;font-weight:600;text-decoration:none;color:var(--st-ink)}.home .row-link:hover .row-title{color:var(--st-accent)}.home .row:not(.row-link) .row-title{font-weight:500;color:var(--st-muted)}.home .row-meta{font-family:var(--st-mono);font-size:.76rem;color:var(--st-muted);white-space:nowrap}@media(max-width:640px){.home .row{grid-template-columns:1fr}.home .row-meta,.home .row-tag{grid-column:1;justify-self:start}}.home .mini-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}.home .mini-card{display:flex;flex-direction:column;padding:1.3rem 1.3rem 1.4rem;text-decoration:none}.home .mini-top{display:flex;align-items:flex-start;gap:.8rem}.home .mini-top .tech-logos{flex:none;margin-left:auto}.home .mini-level{margin-top:auto;padding-top:.6rem}.home .mini-card .tech-logo{width:18px;height:18px;padding:3px}.home .mini-card h3{margin:0;font-size:1.08rem;color:var(--st-ink)}.home .mini-card:hover h3{color:var(--st-accent)}:root{--main-width:1000px;--nav-width:1200px;--prose-width:var(--main-width)}.post-single{max-width:var(--prose-width);margin-inline:auto}.post-single.wide{max-width:none}.path-step[data-level=beginner]{--lvl:var(--brand-green)}.path-step[data-level=intermediate]{--lvl:var(--brand-cyan)}.path-step[data-level=advanced]{--lvl:var(--st-accent)}.path-jump{display:flex;flex-wrap:wrap;gap:.6rem;margin:1.5rem 0 2.5rem}.path-jump a{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem .9rem .4rem .45rem;border:1px solid var(--st-line);border-radius:999px;background:var(--st-surface);font-family:var(--st-mono);font-size:.78rem;color:var(--st-ink)}.path-jump a:hover{border-color:var(--st-accent)}.path-jump .tech-logo,.path h2 .tech-logo{border:none}.path{margin:0 0 3.5rem}.path h2{display:flex;align-items:center;gap:.6rem;scroll-margin-top:5rem}.path-note{margin:1.4rem 0 0;color:var(--st-muted);font-size:.95rem}.path-steps{list-style:none;margin:1.6rem 0 0;padding:0}.path-step{position:relative;padding:0 0 1.1rem 2.4rem}.path-step::before{content:"";position:absolute;left:7px;top:.9rem;bottom:0;width:2px;background:var(--st-line)}.path-step:last-child::before{display:none}.path-step::after{content:"";position:absolute;left:0;top:.45rem;width:16px;height:16px;border-radius:50%;background:var(--lvl);box-shadow:0 0 0 4px color-mix(in srgb,var(--lvl) 18%,transparent)}.path-step[data-kind=resource]{padding-left:5.4rem}.path-step[data-kind=resource]::after{left:3px;top:.55rem;width:10px;height:10px;box-shadow:none}.path-step[data-kind=resource] .step-branch{position:absolute;left:7px;top:1.1rem;width:calc(5.4rem - 7px);height:1.3rem;border-left:2px solid var(--st-line);border-bottom:2px solid var(--st-line);border-bottom-left-radius:14px}.path-step[data-kind=resource] .step-card{padding:.7rem 1.15rem .7rem .9rem;border-left-width:2px}.path-step[data-kind=resource] .step-title{font-size:.92rem;line-height:1.5}.path-step[data-kind=resource] .pill{padding:.1rem .45rem;font-size:.66rem}@media(max-width:640px){.path-step[data-kind=resource]{padding-left:2.4rem}.path-step[data-kind=resource]::after{left:3px}.path-step[data-kind=resource] .step-branch{display:none}}.step-card{border-left:3px solid var(--lvl)}.path-step[data-kind=course] .step-card{background:color-mix(in srgb,var(--lvl) 10%,var(--st-surface));border-color:color-mix(in srgb,var(--lvl) 22%,var(--st-line));border-left-color:var(--lvl)}.step-top{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:0 0 .55rem}.step-time{font-family:var(--st-mono);font-size:.72rem;letter-spacing:.04em;color:var(--st-muted);white-space:nowrap}.step-title{font-size:1rem;line-height:1.55}.step-live{margin:.45rem 0 0;font-size:.8rem;color:var(--st-muted)}.step-live a{color:inherit;text-decoration:underline;text-underline-offset:2px;text-decoration-color:color-mix(in srgb,var(--st-muted) 50%,transparent)}.step-live a:hover{color:var(--st-accent);text-decoration-color:initial}.open-banner{margin:0 0 2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--st-line);text-align:center}.open-text{margin:0 auto;max-width:46rem;font-size:1.05rem;line-height:1.65}.open-text+.open-text{margin-top:.6rem}.open-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr));gap:.8rem;margin:1.6rem 0 0}.open-tile{display:flex;flex-direction:column;align-items:center;gap:.3rem}.post-content a.open-tile{color:var(--st-ink);text-decoration:none}.open-n{font-family:var(--st-serif);font-size:2rem;font-weight:600;line-height:1.1;color:var(--st-ink)}.open-name{margin-top:.2rem;font-size:.9rem;line-height:1.35;color:var(--st-accent)}.open-name-plain{color:var(--st-muted)}.open-license{margin:1.4rem 0 0;font-size:.92rem;color:var(--st-muted)}.open-license abbr{text-decoration:none;font-weight:600;color:var(--st-ink)}@media(max-width:640px){.open-n{font-size:1.6rem}}.testimonials-toc-wrap{display:none}@media(min-width:900px){.testimonials-layout{display:grid;grid-template-columns:1fr 220px;gap:2rem}.testimonials-toc-wrap{display:block}.testimonials-toc{position:sticky;top:5rem;padding:1rem 1.1rem;border:1px solid var(--st-line);border-radius:var(--radius);background:var(--st-surface);max-height:calc(100vh - 7rem);overflow-y:auto}.testimonials-toc-title{display:block;margin-bottom:.6rem;font-family:var(--st-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--st-muted)}.testimonials-toc ul{list-style:none;margin:0;padding:0}.testimonials-toc li+li{border-top:1px solid var(--st-line)}.testimonials-toc a{display:block;padding:.45rem 0;font-size:.88rem;line-height:1.35;color:var(--st-ink)}.testimonials-toc a:hover{color:var(--st-accent)}}.testimonials-layout h2{scroll-margin-top:5rem}:root{--backdrop-home:url("../../images/backdrop/hero14.jpg");--backdrop-contact:url("../../images/backdrop/hero1.jpg");--backdrop-default:url("../../images/backdrop/hero1.jpg")}#top{position:relative}#top::before{content:"";position:fixed;inset:0;z-index:-1;background-image:linear-gradient(rgba(247,249,251,.8),rgba(247,249,251,.8)),var(--backdrop-default);background-size:cover;background-position:50% 0;background-repeat:no-repeat}#top:has(.home)::before{background-image:linear-gradient(rgba(247,249,251,.6),rgba(247,249,251,.7)),var(--backdrop-home)}#top:has(.contact-page)::before{background-image:linear-gradient(rgba(247,249,251,.7),rgba(247,249,251,.7)),var(--backdrop-contact)}:root{--st-wash:color-mix(in srgb, var(--st-bg) 78%, transparent);--st-wash-strong:color-mix(in srgb, var(--st-bg) 90%, transparent)}.post-header,.page-header{background:var(--st-wash-strong);border:1px solid var(--st-line);border-radius:var(--radius);padding:1.5rem 1.75rem 1.75rem}.home .row-list{background:var(--st-wash);border:1px solid var(--st-line);border-radius:var(--radius);padding-inline:1.1rem}.home .row:last-child{border-bottom:none}.home .row-link:hover{background:var(--st-wash-strong)}.post-header,.page-header{text-align:center}.post-header .breadcrumbs,.page-header .breadcrumbs{justify-content:center}.post-header .entry-hint-parent,.page-header .entry-hint-parent{justify-content:center}.post-content>h2,.post-content>h3,.post-content>h4{text-align:center}.section-head{flex-direction:column;align-items:center;gap:.6rem}.section-head::after{flex:none;width:3rem;transform:none}h2:has(+.course-grid){text-align:center}.upcoming-courses h2,.upcoming-courses>p{text-align:center}.path{max-width:var(--home-measure,46rem);margin-inline:auto}.path h2{justify-content:center;text-align:center}.path-jump{justify-content:center}.post-content>p{text-align:center}.blog-post .post-content>p{text-align:left}h2:has(+.social-follow){text-align:center}.contact-page .social-follow{justify-content:center}