@charset "UTF-8";/*!* Article surface — The Banded Sheet.
* Direction contract: .impeccable/surfaces/layouts-default-single-html.md
* Scoped to body.article-surface so no other surface inherits it.
* Tokens come from _canon.scss, shared with the homepage.*//*!* Canon surface tokens — shared by the migrated surfaces (homepage, article).
* Import into a surface stylesheet and include the mixins on that surface's
* scope element, so the palette, ramp and elevation have one source of truth.*/.article-surface{--h-ground:#fafafa;--h-sheet:#ffffff;--h-fill:#f4f5f7;--h-fill-strong:#eceef1;--h-ink:#0f1115;--h-ink-2:#4b5563;--h-ink-3:#6b7280;--h-line:#e6e8ec;--h-line-strong:#d3d7de;--h-accent:#2563eb;--h-accent-ink:#ffffff;--h-accent-soft:#eef4ff;--h-r-control:8px;--h-r-panel:12px;--h-e1:0 1px 2px rgba(15, 17, 21, 0.04), 0 1px 3px rgba(15, 17, 21, 0.06);--h-e2:0 2px 4px rgba(15, 17, 21, 0.05), 0 12px 28px rgba(15, 17, 21, 0.08);--h-font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--h-prose:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--h-mono:ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace;--progress-accent:var(--h-accent);--h-measure:68ch;font-family:var(--h-font);background:var(--h-ground);color:var(--h-ink);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;caret-color:var(--h-accent);scrollbar-color:var(--h-line-strong)transparent}.article-surface ::selection{background:var(--h-accent-soft);color:var(--h-ink)}.article-surface ::-webkit-scrollbar-thumb{background-color:var(--h-line-strong);border-radius:6px}.article-surface ::-webkit-scrollbar-thumb:hover{background-color:var(--h-ink-3)}.article-surface ::-webkit-scrollbar-track{background-color:transparent}.article-surface a{text-underline-offset:3px;text-decoration-thickness:1px}.article-surface :focus-visible{outline:2px solid var(--h-accent);outline-offset:2px;border-radius:var(--h-r-control)}[data-scheme=dark] .article-surface{--h-ground:#0b0d10;--h-sheet:#14171c;--h-fill:#1c2027;--h-fill-strong:#232830;--h-ink:#f2f4f7;--h-ink-2:#a7aeb8;--h-ink-3:#8b95a3;--h-line:#232a33;--h-line-strong:#2e3641;--h-accent:#7ba2ff;--h-accent-ink:#0b0d10;--h-accent-soft:#17233f;--h-e1:0 1px 2px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.35);--h-e2:0 2px 6px rgba(0, 0, 0, 0.45), 0 14px 30px rgba(0, 0, 0, 0.5)}.article-surface .main-container{max-width:1440px;padding:36px var(--h-gutter)0;gap:var(--h-gap);align-items:flex-start;align-content:flex-start}.article-surface .main-container>.left-sidebar{flex:0 0 var(--h-rail);max-width:var(--h-rail);position:sticky;top:36px;padding:0;gap:22px;--sidebar-avatar-size:76px;--sidebar-element-separation:14px}.article-surface .right-sidebar{flex:0 0 var(--h-side);max-width:var(--h-side);gap:20px;padding-top:0}.article-surface .main{gap:22px;padding-top:0}.article-surface .left-sidebar{font-family:var(--h-font);font-size:15px;line-height:1.5;letter-spacing:normal}.article-surface .left-sidebar .hamburger{display:none}.article-surface .left-sidebar header{gap:14px;box-shadow:none}.article-surface .left-sidebar header{order:1}.article-surface .left-sidebar .site-avatar .site-logo{box-shadow:var(--h-e1)}.article-surface .left-sidebar .social-menu{order:3;gap:14px}.article-surface .left-sidebar .social-menu svg{width:18px;height:18px;stroke:var(--h-ink-3);stroke-width:1.6;transition:stroke .15s ease}.article-surface .left-sidebar .social-menu a:hover svg,.article-surface .left-sidebar .social-menu a:focus-visible svg{stroke:var(--h-accent)}.article-surface .left-sidebar .menu{order:2;flex-grow:0;gap:14px;background:0 0;box-shadow:none;padding:0;margin:0;font-size:13px;overflow:visible}.article-surface .left-sidebar .menu li a{color:var(--h-ink-3);gap:14px;transition:color .15s ease}.article-surface .left-sidebar .menu li a:hover,.article-surface .left-sidebar .menu li a:focus-visible{color:var(--h-ink)}.article-surface .left-sidebar .menu li.current a{color:var(--h-accent);font-weight:500}.article-surface .left-sidebar .menu li svg{width:18px;height:18px;stroke-width:1.6}.article-surface .left-sidebar .menu-bottom-section{order:4}.article-surface .left-sidebar #dark-mode-toggle{color:var(--h-ink-3);gap:14px;font-size:13px;transition:color .15s ease}.article-surface .left-sidebar #dark-mode-toggle:hover{color:var(--h-ink)}.article-surface .left-sidebar .site-description{display:none}[data-scheme=dark] .article-surface .left-sidebar #dark-mode-toggle{color:var(--h-accent);font-weight:500}.article-surface .article-sheet{background:var(--h-sheet);border-radius:var(--h-r-panel);box-shadow:var(--h-e1);overflow:hidden}.article-surface .article-band{margin:0;position:relative;background:var(--h-fill)}.article-surface .article-band img{display:block;width:100%;height:260px;object-fit:cover}.article-surface .band-credit{position:absolute;right:14px;bottom:10px;font-size:11px;font-weight:500;letter-spacing:.02em;color:rgba(255,255,255,.78);text-shadow:0 1px 2px rgba(0,0,0,.35)}.article-surface .band-credit a{color:inherit;text-decoration:underline}.article-surface .article-head{padding:26px 30px 0}.article-surface .meta-chips{display:inline-flex;gap:8px;flex-wrap:wrap}.article-surface .chip{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--h-accent-ink);background:var(--h-accent);padding:4px 10px;border-radius:6px;transition:filter .15s ease}.article-surface .chip:hover,.article-surface .chip:focus-visible{filter:brightness(1.08)}.article-surface .article-title{font-family:var(--h-font);font-size:30px;font-weight:700;line-height:1.16;letter-spacing:-.02em;margin:14px 0 0;max-width:30ch;color:var(--h-ink)}.article-surface .article-standfirst{font-family:var(--h-prose);font-size:18px;line-height:1.5;color:var(--h-ink-2);margin:12px 0 0;max-width:58ch}.article-surface .article-meta{margin-top:18px;padding:10px 0;border-top:1px solid var(--h-ink);border-bottom:1px solid var(--h-line);display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:12.5px;color:var(--h-ink-3);font-variant-numeric:tabular-nums}.article-surface .article-meta .sep{color:var(--h-line-strong)}.article-surface .article-meta a:not(.chip){color:var(--h-accent)}.article-surface .meta-chips a.chip{color:var(--h-accent-ink)}.article-surface .article-meta .langs{display:inline-flex;gap:8px}.article-surface .article-meta--note{flex-direction:column;align-items:stretch;gap:6px}.article-surface .note-line{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:30px;row-gap:6px;margin:0}.article-surface .note-field{display:inline-flex;align-items:baseline;gap:7px;min-width:0}.article-surface .note-field--sources{margin-left:auto}.article-surface .note-label{margin:0;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--h-ink-3)}.article-surface .note-value{margin:0;font-size:12.5px;color:var(--h-ink-2)}.article-surface .note-state{font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--h-ink)}.article-surface .note-cluster{color:var(--h-accent)}.article-surface .note-cluster:hover,.article-surface .note-cluster:focus-visible{text-decoration:underline;text-underline-offset:3px}.article-surface .note-tended,.article-surface .note-sources{font-variant-numeric:tabular-nums}.article-surface .note-tended.is-fresh{color:var(--h-accent)}.article-surface .note-submeta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:12.5px;font-variant-numeric:tabular-nums}.article-surface .note-submeta .sep{display:none}.article-surface .note-submeta>*+*::before{content:"·";color:var(--h-line-strong);margin-right:8px}.article-surface .article-series{margin:22px 30px 0;padding:16px 18px;background:var(--h-fill);border-radius:var(--h-r-control)}.article-surface .series-label{display:block;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--h-ink-3);margin-bottom:10px}.article-surface .series-parts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:13.5px;color:var(--h-ink-2)}.article-surface .series-parts .part{display:inline-block;min-width:58px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--h-ink-3)}.article-surface .series-parts .current{color:var(--h-ink);font-weight:600}.article-surface .series-parts a{color:var(--h-ink-2)}.article-surface .series-parts a:hover,.article-surface .series-parts a:focus-visible{color:var(--h-ink)}.article-surface .article-body{padding:24px 30px 30px}.article-surface .article-content{font-family:var(--h-prose);font-size:17px;line-height:1.85;color:var(--h-ink);padding:0;margin:0}.article-surface .article-content blockquote,.article-surface .article-content figure,.article-surface .article-content .highlight,.article-surface .article-content pre,.article-surface .article-content .gallery,.article-surface .article-content .video-wrapper,.article-surface .article-content .table-wrapper,.article-surface .article-content .s_video_simple{margin-left:0;margin-right:0;width:auto}.article-surface .article-content>p,.article-surface .article-content>ul,.article-surface .article-content>ol,.article-surface .article-content>dl,.article-surface .article-content>h1,.article-surface .article-content>h2,.article-surface .article-content>h3,.article-surface .article-content>h4,.article-surface .article-content>h5,.article-surface .article-content>h6,.article-surface .article-content>blockquote{max-width:var(--h-measure)}.article-surface .article-content>p{margin:1.35em 0}.article-surface .article-content h1,.article-surface .article-content h2,.article-surface .article-content h3,.article-surface .article-content h4,.article-surface .article-content h5,.article-surface .article-content h6{font-family:var(--h-font);color:var(--h-ink);letter-spacing:-.014em;margin-inline-start:0;padding-inline-start:0}.article-surface .article-content h2{font-size:22px;font-weight:600;line-height:1.3;margin:38px 0 12px}.article-surface .article-content h3{font-size:18px;font-weight:600;line-height:1.35;margin:30px 0 10px}.article-surface .article-content h4,.article-surface .article-content h5,.article-surface .article-content h6{font-size:15px;font-weight:600;line-height:1.4;margin:24px 0 8px}.article-surface .article-content h2:first-child,.article-surface .article-content h3:first-child{margin-top:0}.article-surface .article-content .header-link{color:var(--h-ink-3);opacity:0;transition:opacity .15s ease}.article-surface .article-content .header-link svg{width:16px;height:16px;vertical-align:baseline}.article-surface .article-content h1:hover .header-link,.article-surface .article-content h2:hover .header-link,.article-surface .article-content h3:hover .header-link,.article-surface .article-content h4:hover .header-link,.article-surface .article-content .header-link:focus-visible{opacity:1}.article-surface .article-content a{color:var(--h-accent);text-decoration:none}.article-surface .article-content a:hover,.article-surface .article-content a:focus-visible{text-decoration:underline}.article-surface .article-content a.link{box-shadow:none;text-decoration:underline;text-decoration-color:var(--h-line-strong);transition:text-decoration-color .15s ease}.article-surface .article-content a.link:hover{text-decoration-color:var(--h-accent)}.article-surface .article-content strong{font-weight:700}.article-surface .article-content ul,.article-surface .article-content ol{padding-inline-start:1.3em;margin:1.35em 0}.article-surface .article-content li{margin:.4em 0}.article-surface .article-content li::marker{color:var(--h-ink-3)}.article-surface .article-content code{font-family:var(--h-mono);font-size:.86em;color:var(--h-ink);background:var(--h-fill);padding:2px 5px;border-radius:4px}.article-surface .article-content pre,.article-surface .article-content .highlight{background:var(--h-fill);border:1px solid var(--h-line);border-radius:var(--h-r-control);margin:1.4em 0;padding:16px 18px;overflow-x:auto}.article-surface .article-content pre{font-family:var(--h-mono);font-size:13.5px;line-height:1.65;color:var(--h-ink);word-break:normal}.article-surface .article-content pre code{background:0 0;border:none;padding:0;font-size:inherit;color:inherit}.article-surface .article-content .highlight{padding:16px 18px;position:relative}.article-surface .article-content .highlight pre{margin:0;padding:0;border:0;background:0 0}.article-surface .article-content .chroma .lnt,.article-surface .article-content .chroma .ln{color:var(--h-ink-2)}.article-surface .article-content .chroma{background:0 0;color:var(--h-ink)}.article-surface .copyCodeButton{position:absolute;top:8px;right:8px;background:var(--h-sheet);border:1px solid var(--h-line);box-shadow:none;border-radius:6px;padding:5px 9px;font-family:var(--h-font);font-size:11px;font-weight:500;letter-spacing:.03em;color:var(--h-ink-2);cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease,color .15s ease}.article-surface .highlight:hover .copyCodeButton,.article-surface .copyCodeButton:focus-visible{opacity:1}.article-surface .copyCodeButton:hover{background:var(--h-fill);color:var(--h-ink)}.article-surface .article-content .table-wrapper{margin:1.4em 0;padding:0;overflow-x:auto;display:block;border:1px solid var(--h-line);border-radius:var(--h-r-control)}.article-surface .article-content table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.55;margin:0;font-variant-numeric:tabular-nums}.article-surface .article-content th,.article-surface .article-content td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--h-line);vertical-align:top}.article-surface .article-content th{font-family:var(--h-font);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--h-ink-3);border-bottom-color:var(--h-line-strong)}.article-surface .article-content tbody tr:last-child td{border-bottom:0}.article-surface .article-content tbody tr:nth-child(even){background:0 0}.article-surface .article-content blockquote{position:relative;margin:1.4em 0;padding:2px 0 2px 20px;border-inline-start:2px solid var(--h-line-strong);background:0 0;color:var(--h-ink-2)}.article-surface .article-content blockquote p{margin:.6em 0}.article-surface .article-content blockquote .cite{display:block;text-align:right;font-size:.8em;color:var(--h-ink-3)}.article-surface .custom-box{display:flex;gap:12px;padding:14px 18px;margin:1.4em 0;border-radius:6px;border-left:4px solid;font-family:var(--h-prose);font-size:15px;line-height:1.65;color:var(--h-ink);max-width:none}.article-surface .custom-box-content>:first-child{margin-top:0}.article-surface .custom-box-content>:last-child{margin-bottom:0}.article-surface .custom-box-icon{flex-shrink:0;line-height:1.65}.article-surface .custom-box-info{border-left-color:#3498db;background:color-mix(in srgb,#3498db 8%,var(--h-sheet))}.article-surface .custom-box-warning{border-left-color:#f39c12;background:color-mix(in srgb,#f39c12 8%,var(--h-sheet))}.article-surface .custom-box-alert{border-left-color:#e74c3c;background:color-mix(in srgb,#e74c3c 8%,var(--h-sheet))}.article-surface .custom-box-tip{border-left-color:#2ecc71;background:color-mix(in srgb,#2ecc71 8%,var(--h-sheet))}.article-surface .custom-box-ai{border-left-color:#8e44ad;background:color-mix(in srgb,#8e44ad 8%,var(--h-sheet))}.article-surface .article-content figure{margin:1.6em 0;text-align:center}.article-surface .article-content figure img{border-radius:var(--h-r-control)}.article-surface .article-content figcaption{font-family:var(--h-font);font-size:12.5px;color:var(--h-ink-3);margin-top:9px}.article-surface .article-content img{max-width:100%;height:auto}.article-surface .article-content hr{width:100%;max-width:var(--h-measure);margin:38px 0;background:var(--h-line);height:1px;border:0;opacity:1}.article-surface .article-foot{padding:22px 30px 28px;border-top:1px solid var(--h-line);display:flex;flex-direction:column;gap:18px}.article-surface .article-share{display:flex;flex-direction:column;gap:6px}.article-surface .article-share>div{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.article-surface .article-foot .share-on-title,.article-surface .article-foot .subscribe-title{display:block;font-family:var(--h-font);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--h-ink-3);margin:0}.article-surface .article-share .resp-sharing-button__link,.article-surface .article-share .resp-subscribe-button__link{display:inline-block;text-decoration:none;color:inherit;margin:0}.article-surface .article-share .resp-sharing-button,.article-surface .article-share .resp-subscribe-button{display:inline-flex;align-items:center;gap:7px;font-family:var(--h-font);font-size:12.5px;font-weight:500;line-height:1;color:var(--h-ink-2);background-color:transparent;border:1px solid var(--h-line);border-radius:var(--h-r-control);padding:8px 12px;transition:background .15s ease,color .15s ease,border-color .15s ease}.article-surface .article-share .resp-sharing-button:hover,.article-surface .article-share .resp-sharing-button:focus-visible,.article-surface .article-share .resp-subscribe-button:hover,.article-surface .article-share .resp-subscribe-button:focus-visible{background-color:var(--h-fill);color:var(--h-ink);border-color:var(--h-line-strong)}.article-surface .article-share .resp-sharing-button__icon,.article-surface .article-share .resp-subscribe-button__icon{display:inline-flex;stroke:currentColor;fill:none}.article-surface .article-share .resp-sharing-button__icon--solid,.article-surface .article-share .resp-subscribe-button__icon--solid{fill:currentColor;stroke:none}.article-surface .article-share svg{width:14px;height:14px;margin:0;vertical-align:middle}.article-surface .article-tags{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.article-surface .article-tags a{font-size:12.5px;font-weight:500;color:var(--h-ink-2);background:var(--h-fill);border-radius:6px;padding:6px 12px;transition:background .15s ease,color .15s ease}.article-surface .article-tags a:hover,.article-surface .article-tags a:focus-visible{background:var(--h-fill-strong);color:var(--h-ink)}.article-surface .article-lastmod{font-size:12.5px;color:var(--h-ink-3)}.article-surface .comments-container,.article-surface .giscus{margin-top:22px}.article-surface .site-footer{margin-top:22px;padding:24px 0 40px;border-top:1px solid var(--h-line);font-size:12.5px;color:var(--h-ink-3);display:flex;flex-direction:column;gap:6px}.article-surface .site-footer::before{display:none}.article-surface .site-footer .copyright{color:var(--h-ink);font-weight:600;margin-bottom:2px}.article-surface .site-footer .powerby{color:var(--h-ink-3);font-size:12.5px;font-weight:400}.article-surface .site-footer a{color:var(--h-ink-2)}.article-surface .site-footer a:hover,.article-surface .site-footer a:focus-visible{color:var(--h-ink)}.article-surface .right-sidebar .widget{background:var(--h-sheet);border-radius:var(--h-r-panel);box-shadow:var(--h-e1);padding:18px 20px;display:flex;flex-direction:column;gap:12px}.article-surface .right-sidebar .widget-icon{display:none}.article-surface .right-sidebar .widget-title,.article-surface .right-sidebar .section-title{font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--h-ink-3);margin:0;display:block}.article-surface .right-sidebar .article-list--mini{background:0 0;box-shadow:none;border-radius:0;--image-size:40px}.article-surface .right-sidebar .article-list--mini article>a{padding:10px 0;gap:12px}.article-surface .right-sidebar .article-list--mini article:not(:last-of-type){border-bottom:1px solid var(--h-line)}.article-surface .right-sidebar .article-list--mini .article-details{min-height:0;gap:0}.article-surface .right-sidebar .article-list--mini .article-title{font-size:13px;font-weight:500;line-height:1.4;color:var(--h-ink-2)}.article-surface .right-sidebar .article-list--mini article>a:hover .article-title,.article-surface .right-sidebar .article-list--mini article>a:focus-visible .article-title{color:var(--h-ink)}.article-surface .right-sidebar .article-list--mini .article-image img{width:var(--image-size);height:var(--image-size);border-radius:6px;object-fit:cover}@media(max-width:1023px){.article-surface .main-container{flex-wrap:wrap}.article-surface .main-container .right-sidebar{display:flex;flex:1 1 100%;max-width:none;order:3;flex-direction:row;flex-wrap:wrap;gap:20px;margin-top:8px;align-content:flex-start}.article-surface .main-container .right-sidebar>.widget{flex:1 1 260px}.article-surface .main-container>.main{flex:1 1 100%}.article-surface .article-band img{height:220px}}@media(max-width:767px){.article-surface .main-container{padding-top:24px}.article-surface .main-container>.left-sidebar,.article-surface .main-container>.main,.article-surface .main-container .right-sidebar{flex:none;width:100%}.article-surface .main-container>.left-sidebar{position:static;max-width:none;min-height:auto}.article-surface .left-sidebar .hamburger{display:inline-block}.article-surface .article-band img{height:180px}.article-surface .article-head,.article-surface .article-body,.article-surface .article-foot{padding-left:20px;padding-right:20px}.article-surface .article-series{margin-left:20px;margin-right:20px}.article-surface .article-title{font-size:24px;max-width:none}.article-surface .article-standfirst{font-size:16.5px}.article-surface .note-line{display:grid;grid-template-columns:minmax(0,1fr)auto;column-gap:14px;row-gap:5px}.article-surface .note-field--topics{grid-column:1/-1}.article-surface .note-field--sources{margin-left:0;grid-column:2;justify-self:end}.article-surface .article-content{font-size:16.5px}.article-surface .article-content h2{font-size:20px}}@media(prefers-reduced-motion:reduce){.article-surface *{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media(min-width:768px) and (max-width:1023px){.article-surface .main-container{flex-direction:row}.article-surface .main-container>.main{flex:1;min-width:0}}