.article-layout{display:grid;grid-template-columns:260px minmax(0,1fr) 320px;gap:24px;padding:24px clamp(16px,2vw,32px) 40px;align-items:start}
.article-layout:focus{outline:none}
.article-toc{position:sticky;top:64px;overflow:hidden}
.article-toc ol,.article-mobile-progress ol{list-style:none;margin:0;padding:8px}
.article-toc a,.article-mobile-progress nav a{display:flex;gap:10px;align-items:center;padding:8px 10px;border:2px solid transparent;border-radius:6px;text-decoration:none;color:var(--ink);font-size:14px;font-weight:500;line-height:1.35;min-height:44px}
.article-toc a:hover,.article-mobile-progress nav a:hover{background:var(--soft)}
.article-toc a[aria-current=step],.article-mobile-progress nav a[aria-current=step]{background:var(--tint);border-color:var(--ink);font-weight:600}
.article-toc-number{display:grid;place-items:center;flex:none;width:24px;height:24px;border:2px solid var(--ink);border-radius:5px;background:var(--win);font:600 11px 'JetBrains Mono',monospace}
.article-toc-number.is-complete{background:#b8c79a}
.article-toc-note{margin:4px 16px 16px;color:var(--muted);font-size:12px;line-height:1.45}
.article-toc-progress{display:flex;gap:10px;align-items:center;margin:8px 16px 14px}.article-toc-progress>.mono{font-size:11px;white-space:nowrap}.article-progress-track{display:block;flex:1;height:11px;border:2px solid var(--ink);border-radius:3px;background:var(--win);overflow:hidden}.article-progress-track>span{display:block;width:0;height:100%;background:#d97757;transition:width .2s}
.article-window{min-width:0;overflow:hidden}
.article-window-title .window-bar{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.article-content{display:flex;flex-direction:column;padding:28px clamp(20px,2.3vw,36px) 36px}
.article-intro{margin-bottom:24px}
.article-breadcrumb{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:26px;font-size:12px;color:var(--muted)}
.article-breadcrumb a{color:var(--muted);text-decoration:none}
.article-breadcrumb a:hover{text-decoration:underline}
.article-kicker{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:12px}
.article-kicker img{flex:none}
.article-intro h1{font-size:clamp(40px,4vw,64px);font-weight:700;line-height:.98;letter-spacing:-.045em;margin:0 0 20px;text-wrap:balance;overflow-wrap:break-word}
.article-intro h1 em{font-family:'Source Serif 4',Georgia,serif;font-weight:400;color:#c2603f}
.article-lead{font-size:19px;line-height:1.5;margin:0 0 20px;max-width:680px}
.article-byline{display:flex;gap:10px;align-items:center;font-size:13px;line-height:1.5}
.article-byline>img{width:36px;height:36px;object-fit:cover;border:2px solid var(--ink);border-radius:50%}
.article-byline a{color:var(--ink);font-weight:600;text-decoration:none}
.article-byline-date{display:block;color:var(--muted);font-size:12px}
.article-video{position:relative;aspect-ratio:16/9;overflow:hidden;border:2px solid var(--ink);border-radius:8px;box-shadow:4px 4px 0 var(--ink);background:var(--soft)}
.article-video>img{display:block;object-fit:cover;width:100%;height:100%}
.article-video>iframe{display:block;border:0;width:100%;height:100%}
.article-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:88px;height:88px;border:2px solid var(--ink);border-radius:50%;box-shadow:4px 4px 0 var(--ink);color:var(--ink);background:#d97757;font-size:30px;cursor:pointer}
.article-play span{margin-left:5px}
.article-play:hover{background:#e68c6e}
.article-play:active{transform:translate(calc(-50% + 3px),calc(-50% + 3px));box-shadow:1px 1px 0 var(--ink)}
.article-video-label{position:absolute;left:10px;bottom:10px;padding:4px 7px;border:1px solid var(--ink);border-radius:4px;background:var(--win);font-size:10px}
.article-video-feedback{font-size:14px;line-height:1.5;background:var(--tint-yellow);padding:12px;border:2px solid var(--ink);border-radius:6px;margin:14px 0 0}
.article-chapters{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 34px}
.article-chapters a{display:flex;align-items:center;gap:6px;min-height:36px;padding:5px 10px;border:2px solid var(--ink);border-radius:6px;font:400 11px 'JetBrains Mono',monospace;text-decoration:none;color:var(--ink);background:var(--win)}
.article-chapters a:hover{background:var(--tint)}
.article-mobile-progress{display:none}
.article-body{max-width:820px;width:100%}
.article-demo-note{font-size:13px;line-height:1.5;color:var(--muted);padding:12px 14px;background:var(--soft);border-left:3px solid #e8c26a;margin:0 0 26px}
.article-demo-note .mono{display:block;font-size:10px;font-weight:600;color:var(--ink);margin-bottom:3px}
.article-step{padding:8px 0 44px;scroll-margin-top:68px}
.article-step-heading{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.article-step-number{display:grid;place-items:center;flex:none;width:44px;height:44px;border:2px solid var(--ink);border-radius:10px;background:var(--step-color);box-shadow:3px 3px 0 var(--ink);font:600 18px 'JetBrains Mono',monospace}
.article-step h2{font-size:30px;line-height:1.1;letter-spacing:-.03em;margin:0;font-weight:700}
.article-markdown{font-size:17px;line-height:1.65;overflow-wrap:anywhere}
.article-markdown p{margin:0 0 16px;text-wrap:pretty}
.article-markdown>ul{list-style:none;margin:0 0 18px;padding:0}
.article-markdown>ul>li{position:relative;padding-left:23px;margin-bottom:8px;font-size:16px;line-height:1.5}
.article-markdown>ul>li:before{content:'';position:absolute;left:0;top:7px;width:9px;height:9px;border:2px solid var(--ink);border-radius:2px;background:#d97757}
.article-markdown ol{padding-left:23px;margin:0 0 18px}
.article-markdown li p{margin-bottom:8px}
.article-markdown h3{font-size:22px;line-height:1.25;letter-spacing:-.02em;margin:24px 0 12px}
.article-markdown :not(pre)>code{font:500 .86em 'JetBrains Mono',monospace;color:var(--coral-ink);background:var(--soft);border-radius:3px;padding:2px 4px}
.article-markdown figure{margin:0 0 20px}
.article-markdown figure img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;border:2px solid var(--ink);border-radius:8px;background:var(--soft)}
.article-markdown figcaption{font:400 12px/1.55 'JetBrains Mono',monospace;color:var(--muted);margin-top:8px}
.article-code{border:2px solid var(--ink);border-radius:8px;overflow:hidden;background:#1f1e1b;color:#f0ebe0;margin-bottom:18px}
.article-code-bar{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:7px 12px;border-bottom:1px solid #ffffff1f;color:#c4bfb5;font:400 12px 'JetBrains Mono',monospace}
.article-code-bar button{border:1.5px solid #f0ebe0;border-radius:5px;background:transparent;color:#f0ebe0;padding:5px 10px;min-height:32px;min-width:86px;font:600 12px 'JetBrains Mono',monospace;cursor:pointer}
.article-code-bar button:hover{background:#d97757;border-color:#d97757;color:var(--ink)}
.article-code pre{margin:0;padding:14px 16px;white-space:pre-wrap;overflow-wrap:anywhere;tab-size:2}
.article-code code{font:400 14px/1.7 'JetBrains Mono',monospace}
.article-tip{display:flex;gap:14px;align-items:flex-start;margin:6px 0 20px}
.article-tip>.robot{flex:none;width:42px;margin-top:8px}
.article-tip-robot{height:44px}.article-tip-robot .robot-antenna{height:8px}.article-tip-robot .robot-head{width:40px;height:32px}.article-tip-robot .robot-neck,.article-tip-robot .robot-body,.article-tip-robot .robot-feet,.article-tip-robot .robot-ears{display:none}
.article-tip>div{flex:1;min-width:0;background:var(--tint-blue);border:2px solid var(--ink);border-radius:2px 12px 12px 12px;padding:12px 14px;font-size:15px;line-height:1.5}
.article-tip b{display:block;font:600 10px 'JetBrains Mono',monospace;margin-bottom:4px}
.article-tip p:last-child{margin-bottom:0}
.article-step-complete{display:flex;gap:10px;align-items:center;font-size:14px;min-height:44px;padding:9px 14px}
.article-complete-box{width:18px;height:18px;display:grid;place-items:center;flex:none;border:2px solid var(--ink);border-radius:4px;font-size:11px}
.article-step-complete[aria-pressed=true]{background:#b8c79a;box-shadow:none}
.article-step-complete[aria-pressed=true] .article-complete-box{background:var(--ink);color:#b8c79a}
.article-completion-message{background:var(--tint-green);border:2px solid var(--ink);border-radius:8px;padding:16px;margin:0 0 28px;font-size:16px;line-height:1.5}
.article-related{border-top:2px dashed var(--line);padding-top:30px}
.article-related>h2{font-size:28px;letter-spacing:-.03em;margin:0 0 18px}
.article-related>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}
.article-related-card{display:flex;flex-direction:column;gap:12px;border:2px solid var(--ink);border-radius:8px;box-shadow:3px 3px 0 var(--ink);background:var(--win);padding:14px;text-decoration:none;color:var(--ink);transition:transform .15s,box-shadow .15s}
.article-related-card:hover{color:var(--ink);transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink)}
.article-related-card h3{font-size:17px;line-height:1.2;margin:0;font-weight:700;letter-spacing:-.015em}
.article-related-card>.mono{font-size:11px;color:var(--muted);margin-top:auto}
.article-related-card>.mono span{float:right}
.article-brand-tile{display:grid;place-items:center;width:30px;height:30px;flex:none;border:2px solid var(--ink);border-radius:6px;background:#fff}
.article-aside{position:sticky;top:64px;display:grid;gap:20px;align-items:start}
.article-aside .window{overflow:hidden}
.article-needs{list-style:none;padding:14px 16px;margin:0;display:grid;gap:10px}
.article-needs li{display:flex;align-items:center;gap:10px;font-size:14px;line-height:1.35}
.article-quick{padding:4px 14px 12px}
.article-quick>div{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line)}
.article-quick>div:last-child{border-bottom:0}
.article-quick code{flex:1;font:600 12px/1.5 'JetBrains Mono',monospace;color:var(--coral-ink);overflow-wrap:anywhere;min-width:0}
.article-quick button{border:2px solid var(--ink);border-radius:6px;background:var(--win);padding:4px 8px;min-height:32px;min-width:72px;font:600 11px 'JetBrains Mono',monospace;cursor:pointer}
.article-quick button:hover{background:var(--tint)}
.article-help{padding:16px;border:2px solid var(--ink);border-radius:10px;box-shadow:5px 5px 0 var(--ink);background:#d97757}
.article-help h2{font-size:19px;line-height:1.2;margin:0 0 8px}
.article-help p{font-size:14px;line-height:1.45;margin:0 0 14px}
.article-help .button{font-size:13px;padding:8px 12px;box-shadow:none}
@media(min-width:900px) and (max-width:1239px){.article-layout{grid-template-columns:240px minmax(0,1fr)}.article-aside{position:static;grid-column:2;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}
@media(max-width:899px){.article-layout{display:block;padding:0 0 30px;background:var(--win)}.article-toc{display:none}.article-window{border:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible}.article-window-title{display:none}.article-content{padding:0 0 28px}.article-intro{padding:20px 16px 0;margin-bottom:20px;order:-1}.article-breadcrumb{display:none}.article-kicker{font-size:11px;margin-bottom:10px}.article-intro h1{font-size:clamp(32px,6.2vw,48px);line-height:1;letter-spacing:-.04em;margin-bottom:12px}.article-lead{font-size:16px;line-height:1.55;margin-bottom:16px}.article-byline{font-size:12px}.article-video-group{display:contents}.article-video{order:-2;border-width:0 0 2px;border-radius:0;box-shadow:none}.article-play{width:64px;height:64px;font-size:23px;box-shadow:3px 3px 0 var(--ink)}.article-video-label{font-size:9px;bottom:8px;left:8px}.article-chapters{display:none}.article-video-feedback{order:-1;margin:0 16px 16px}.article-mobile-progress{display:block;position:sticky;top:84px;z-index:15;margin:0 16px 22px;border:2px solid var(--ink);border-radius:10px;background:var(--tint);box-shadow:3px 3px 0 var(--ink)}.article-mobile-progress summary{display:flex;align-items:center;gap:12px;min-height:50px;padding:0 12px;cursor:pointer;list-style:none}.article-mobile-progress summary::-webkit-details-marker{display:none}.article-mobile-progress summary>.mono{font-size:12px;font-weight:600;white-space:nowrap}.article-progress-track{display:block;flex:1;height:11px;border:2px solid var(--ink);border-radius:3px;background:var(--win);overflow:hidden}.article-progress-track>span{display:block;width:0;height:100%;background:#d97757;transition:width .2s}.article-progress-chevron{font-size:20px}.article-mobile-progress[open] .article-progress-chevron{transform:rotate(180deg)}.article-mobile-progress nav{background:var(--win);border-top:2px solid var(--ink);max-height:55vh;overflow:auto;border-radius:0 0 8px 8px}.article-mobile-progress nav a{min-height:48px}.article-body{padding:0 16px;max-width:none}.article-step{padding:4px 0 36px;scroll-margin-top:156px}.article-step-heading{gap:12px;margin-bottom:16px}.article-step-number{width:40px;height:40px;border-radius:9px;font-size:16px;box-shadow:2px 2px 0 var(--ink)}.article-step h2{font-size:23px;line-height:1.15}.article-markdown{font-size:16px;line-height:1.6}.article-code code{font-size:13px}.article-code pre{padding:12px 14px}.article-code-bar{padding:6px 10px}.article-code-bar button{min-height:44px;min-width:86px}.article-tip{gap:10px}.article-tip>div{font-size:14px;padding:10px 12px}.article-tip b{font-size:9px}.article-tip>.robot{width:36px}.article-step-complete{justify-content:center;width:100%;min-height:52px;font-size:16px}.article-demo-note{font-size:12px;margin-bottom:22px}.article-related>div{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.article-aside{position:static;margin:0 16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.article-quick button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.article-related-card,.article-progress-track>span{transition:none}}
.article-layout--no-toc{grid-template-columns:minmax(0,1fr) 320px;max-width:1360px;margin-inline:auto}
.article-toc-extra-mark{flex:none;width:24px;text-align:center;font-size:20px;color:var(--muted)}
.article-verification{margin-top:14px;padding:10px 12px;border-left:3px solid #6a9bcc;background:var(--soft);font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.article-verification p{margin:0}.article-verification-method{color:var(--muted)}
.article-verification [data-tested-environment]{margin-top:8px}.article-verification ul{margin:4px 0 0;padding-left:20px}
.article-extra{padding:8px 0 36px;scroll-margin-top:68px}
.article-extra>h2,.article-supplement>h2{font-size:28px;line-height:1.15;letter-spacing:-.03em;margin:0 0 18px}
.article-supplement{margin-top:30px;padding-top:26px;border-top:2px dashed var(--line);overflow-wrap:anywhere;scroll-margin-top:68px}
.article-faq{margin:0 0 30px}.article-faq h3{font-size:20px;line-height:1.3;margin:22px 0 10px}
.article-faq .article-markdown{margin-bottom:16px}
.article-sources ol,.article-changes ol{margin:0;padding-left:22px;font-size:15px;line-height:1.55}
.article-sources li,.article-changes li{padding-left:4px;margin-bottom:18px}
.article-sources li:last-child,.article-changes li:last-child{margin-bottom:0}
.article-source-publisher,.article-source-checked{display:block;color:var(--muted);font-size:13px}
.article-sources li>p{margin:5px 0;font-size:14px}
.article-changes time{font-size:13px;color:var(--muted)}.article-changes .article-markdown{margin-top:4px;font-size:15px}
.article-needs li>span:last-child,.article-needs a{min-width:0;overflow-wrap:anywhere}
.article-video-fallback{font-size:14px;line-height:1.5}
@media(min-width:900px) and (max-width:1239px){.article-layout--no-toc{grid-template-columns:minmax(0,1fr)}.article-layout--no-toc .article-aside{grid-column:1}}
@media(max-width:899px){.article-verification{font-size:12px}.article-extra,.article-supplement{scroll-margin-top:156px}.article-extra{padding:4px 0 30px}.article-extra>h2,.article-supplement>h2{font-size:23px}.article-faq h3{font-size:19px}.article-video-fallback{margin-inline:16px}}
.article-video-meta{font-size:14px;line-height:1.5;margin:16px 0 24px;overflow-wrap:anywhere}.article-video-meta:empty{display:none}.article-video-meta p{margin:6px 0}.article-video-facts{font-size:12px;color:var(--muted)}
@media(max-width:899px){.article-video-meta{margin:0 16px 24px}}
/* Article links and small metadata retain the palette with readable contrast. */
.article-layout{--coral-ink:#9c472d;--muted:#5f5b52}
