@font-face{font-family:Guide Inter;src:url('/fonts/book/inter-v20-latin-400-800-3100e775e8.woff2') format('woff2');font-weight:400 800;font-style:normal;font-display:swap}
@font-face{font-family:Guide Mono;src:url('/fonts/book/ibm-plex-mono-v20-latin-400-08949f728d.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Guide Code;src:url('/fonts/guides/source-code-pro-v11-500-2bdd9410.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}

.eg-page{
  --eg-ink:#192c3b;--eg-text:#354754;--eg-muted:#61717e;--eg-accent:#036a9b;
  --eg-rule:#d5dfe5;--eg-surface:#f1f5f7;--eg-paper:#fff;--eg-navy:#182c3b;
  --eg-mono:'Guide Mono',monospace;--eg-sans:'Guide Inter',sans-serif;
  --eg-code-font:'Guide Code',Consolas,'Ubuntu Mono',Menlo,'DejaVu Sans Mono',monospace;
  --eg-inline-font:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --eg-code-bg:#1d1f21;--eg-code-fg:#c5c8c6;--eg-inline-code:#1f6b3a;--eg-inline-code-bg:#e8f5ec;
  --tg-text:var(--eg-text);--tg-text-strong:var(--eg-ink);--tg-muted:var(--eg-muted);--tg-border:var(--eg-rule);
  margin:0;background:var(--eg-paper);color:var(--eg-text);font-family:var(--eg-sans);font-size:17px;line-height:1.7;
}
.eg-page *{box-sizing:border-box}
.eg-page ::selection{background:#c4e8f9;color:var(--eg-ink)}
.eg-page a{color:inherit;text-decoration:none;text-underline-offset:4px}
.eg-page a:hover{text-decoration:underline}
.eg-page :focus-visible{outline:3px solid #1588b7;outline-offset:5px}
.eg-page button,.eg-page summary{font:inherit;cursor:pointer}
.eg-page h1,.eg-page h2,.eg-page h3{color:var(--eg-ink);font-family:var(--eg-sans);text-wrap:balance}
.eg-page h1,.eg-page h2,.eg-page h3,.eg-page p,.eg-page ol,.eg-page dl,.eg-page dd{margin:0}
.eg-page [id]{scroll-margin-top:105px}
.eg-shell{width:calc(100% - 112px);max-width:1168px;margin-inline:auto}
.eg-skip{position:fixed;top:-80px;left:20px;padding:12px 20px;background:white;z-index:100}
.eg-skip:focus{top:10px}
.eg-opening{background:var(--eg-surface);border-bottom:1px solid var(--eg-rule);padding:33px 0 38px}
.eg-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px 13px;font-size:13px;margin-bottom:31px;color:var(--eg-muted)}
.eg-breadcrumb a{color:var(--eg-accent);padding-block:6px}
.eg-title-grid{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:64px;align-items:end}
.eg-page h1{font-size:68px;font-weight:700;letter-spacing:-.04em;line-height:1.06}
.eg-page h1>span{display:block;font-size:30px;line-height:1.28;font-weight:450;letter-spacing:-.025em;margin-top:14px}
.eg-introduction{font-size:18px;line-height:1.75;max-width:760px;margin-top:24px!important}
.eg-byline{display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:center;font-size:12px;padding-bottom:5px}
.eg-byline img{height:42px;width:42px;object-fit:cover;border-radius:50%;filter:grayscale(1)}
.eg-byline a{font-size:13px;font-weight:650;color:var(--eg-ink);display:block}
.eg-byline span{display:block;font-size:11px;color:var(--eg-muted);margin-top:2px;white-space:nowrap}
.eg-byline dl{grid-column:1/-1;padding-top:17px;margin-top:10px;border-top:1px solid var(--eg-rule)}
.eg-byline dl>div+div{margin-top:12px}
.eg-byline dt{font-size:11px;color:var(--eg-muted)}
.eg-byline dd{font-size:13px;font-weight:500;color:var(--eg-ink)}

.eg-reading-layout{display:grid;grid-template-columns:220px minmax(0,680px);gap:64px;padding-top:62px;padding-bottom:80px;justify-content:start}
.eg-sidebar{min-width:0}
.eg-sticky{position:sticky;top:115px;max-height:calc(100dvh - 140px);overflow:auto;padding:3px 10px 12px 0;scrollbar-width:thin;scrollbar-color:#c0cdd7 transparent}
.eg-sidebar h2{font-size:13px;font-weight:650;margin-bottom:17px}
.eg-sidebar ol,.eg-mobile-toc ol{padding:0;list-style:none}
.eg-sidebar li+li{margin-top:3px}
.eg-sidebar li a{display:block;font-size:13px;line-height:1.55;padding:8px 12px;color:var(--eg-muted);border-left:1px solid var(--eg-rule);transition:color .18s,background-color .18s}
.eg-sidebar li a:hover{color:var(--eg-accent);background:#f3f7fa;text-decoration:none}
.eg-sidebar li a[aria-current="location"]{color:var(--eg-accent);font-weight:600;border-color:var(--eg-accent);background:#eef6fa}
.eg-back-top{display:inline-block;font-size:12px;color:var(--eg-muted)!important;margin:20px 12px 0;padding-block:8px}
.eg-mobile-toc{display:none}
.eg-article-column{min-width:0}
.eg-article{font-size:17px;line-height:1.7;overflow-wrap:break-word;outline:none}
.eg-article p{margin:0 0 24px}
.eg-article>p:first-child{font-size:18px;line-height:1.8;color:var(--eg-ink)}
.eg-article strong{font-weight:650;color:var(--eg-ink)}
.eg-article h2{font-size:30px;line-height:1.25;letter-spacing:-.03em;font-weight:650;margin:60px 0 22px}
.eg-article h3{font-size:21px;line-height:1.4;letter-spacing:-.02em;font-weight:650;margin:35px 0 16px}
.eg-article a{color:var(--eg-accent);text-decoration:underline;text-decoration-thickness:1px}
.eg-article a:hover{text-decoration-thickness:2px}
.eg-article ul{list-style:disc;padding-left:22px;margin:0 0 28px}
.eg-article li{padding-left:5px;margin-bottom:14px}
.eg-article li::marker{color:#718b9d;font-size:.8em}
.eg-article :not(pre)>code,.eg-introduction code,.eg-next p code{font-family:var(--eg-inline-font);font-size:.85em;font-weight:400;font-variant-ligatures:none;background:var(--eg-inline-code-bg);color:var(--eg-inline-code);padding:.15em .4em;border-radius:4px;overflow-wrap:anywhere}
.eg-article .tg-note,.eg-article .tg-caution{background:var(--eg-surface);padding:24px 28px;margin:32px 0}
.eg-article .tg-caution{background:#faf4e7}
.eg-article .tg-note p,.eg-article .tg-caution p{font-size:16px;line-height:1.8;margin:0}
.eg-article .tg-note p+p,.eg-article .tg-caution p+p{margin-top:8px}
.eg-article .tg-note-heading,.eg-article .tg-caution-heading{font-weight:650;color:var(--eg-ink)}
/* Approved guide code blocks: Source Code Pro and the adapted Rust palette. */
.eg-article .code-block-wrapper{position:relative;border-radius:0;background:var(--eg-code-bg);color:var(--eg-code-fg);margin:32px 0}
.eg-article .code-header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 24px 0 16px;background:var(--eg-code-bg);min-height:44px}
.eg-article .code-label{font-family:var(--eg-sans);font-size:14px;font-weight:400;letter-spacing:.5px;color:#969896}
.eg-article .code-header button{position:relative;flex-shrink:0;width:24px;min-height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:#969896;border:0;border-radius:4px;background:transparent;line-height:1.2}
.eg-article .code-header button:hover{color:#c5c8c6}
.eg-article .code-header button[aria-pressed="true"]{background:#282e35;color:#81a2be}
.eg-article .code-header .copy-button.copied{color:#b5bd68}
.eg-article .code-header button:focus-visible{outline:2px solid #a0a0a0;outline-offset:3px}
.eg-article .code-header button svg{display:block;width:14px;height:14px;fill:currentColor}
.eg-article .code-header .wrap-toggle-button svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.eg-article .code-header button::after{content:attr(data-tooltip);position:absolute;top:calc(100% + 6px);right:50%;transform:translateX(50%);background:#1a1a1a;color:#e4e4e7;border:1px solid #3a3a3a;border-radius:4px;padding:3px 8px;font:12px/1.4 var(--eg-sans);white-space:nowrap;opacity:0;pointer-events:none;z-index:10}
.eg-article .code-header button:hover::after,.eg-article .code-header button:focus-visible::after{opacity:1}
.eg-article pre{margin:0;padding:16px 16px 20px;overflow-x:auto;background:var(--eg-code-bg);color:var(--eg-code-fg);font-family:var(--eg-code-font);font-size:15px;font-weight:500;font-variant-ligatures:none;line-height:1.5;direction:ltr;white-space:pre;tab-size:4;scrollbar-width:thin;scrollbar-color:#4a5568 #1a1d1f}
.eg-article pre code{font:inherit;background:none;color:inherit;text-shadow:none;white-space:pre;padding:0;border-radius:0}
.eg-article pre.soft-wrap,.eg-article pre.soft-wrap code{white-space:pre-wrap;overflow-wrap:anywhere}
.eg-article pre::-webkit-scrollbar{height:12px}
.eg-article pre::-webkit-scrollbar-track{background:#1a1a1a}
.eg-article pre::-webkit-scrollbar-thumb{background:#4a5568;border-radius:6px;border:2px solid #1a1d1f}
.eg-article pre::-webkit-scrollbar-thumb:hover{background:#a47dcf}
.eg-article .token.comment,.eg-article .token.prolog,.eg-article .token.doctype,.eg-article .token.cdata{color:#969896}
.eg-article .token.keyword{color:#b294bb}
.eg-article .token.string{color:#b5bd68}
.eg-article .token.number,.eg-article .token.builtin,.eg-article .token.boolean{color:#de935f}
.eg-article .token.class-name{color:#f0c674}
.eg-article .token.function{color:#7aa6da}
.eg-article .token.variable{color:#cc6666}
.eg-article .token.operator,.eg-article .token.punctuation{color:#c5c8c6}
.eg-article table{border-collapse:collapse;width:100%;margin:28px 0;font-size:14px;line-height:1.7;text-align:left}
.eg-article th{background:var(--eg-navy);color:#fff;font-weight:600;padding:16px;vertical-align:top}
.eg-article th:first-child{width:25%}
.eg-article td{padding:19px 16px;border-bottom:1px solid var(--eg-rule);vertical-align:top}
.eg-article td:first-child{font-weight:600;color:var(--eg-ink)}
.eg-article tbody tr:nth-child(even){background:#f5f8fa}
.eg-next{display:grid;grid-template-columns:1fr 220px;gap:40px;background:#edf4f8;border-top:2px solid #8dbad0;padding:32px;margin-top:60px}
.eg-next h2{font-size:25px;font-weight:650;line-height:1.25;letter-spacing:-.025em;margin-bottom:15px}
.eg-next p{font-size:15px;line-height:1.75}
.eg-button{display:inline-flex;align-items:center;gap:20px;background:var(--eg-navy);color:#fff!important;font-size:13px;font-weight:550;border-radius:4px;padding:12px 17px;min-height:46px;margin-top:22px}
.eg-button:hover{background:#2d5066;text-decoration:none!important}
.eg-book-link{align-self:center;font-size:12px;line-height:1.5;border-left:1px solid #bfd2df;padding-left:26px;color:var(--eg-ink)!important}
.eg-book-link strong{display:block;font-size:20px;font-weight:650;letter-spacing:-.025em;margin-top:5px}
.eg-book-link>span{display:block;font-size:12px;color:var(--eg-accent);margin-top:15px}
.eg-related{margin-top:46px}
.eg-related h2{font-size:19px;font-weight:600;margin-bottom:20px}
.eg-related>a{display:grid;grid-template-columns:1fr 24px;column-gap:16px;padding:20px 0;border-top:1px solid var(--eg-rule);font-size:17px;color:var(--eg-ink)}
.eg-related>a>span:nth-child(2){font-size:14px;color:var(--eg-muted);grid-row:2}
.eg-related>a>.eg-arrow{grid-column:2;grid-row:1/3;align-self:center;color:var(--eg-accent)}
.eg-related>a:hover{text-decoration:none;color:var(--eg-accent)}
.eg-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}

@media(min-width:1440px){.eg-title-grid{grid-template-columns:minmax(0,1fr) 220px;gap:90px}.eg-opening{padding-top:40px}.eg-page h1{font-size:76px}.eg-introduction{font-size:19px}.eg-byline a{font-size:14px}}
@media(max-width:1100px){.eg-shell{width:calc(100% - 64px)}.eg-title-grid{gap:36px;grid-template-columns:minmax(0,1fr) 175px}.eg-page h1{font-size:56px}.eg-page h1>span{font-size:26px}.eg-reading-layout{grid-template-columns:185px minmax(0,680px);gap:40px}.eg-next{grid-template-columns:1fr}.eg-book-link{display:none}}
@media(max-width:850px){.eg-shell{width:calc(100% - 48px)}.eg-title-grid{grid-template-columns:1fr;gap:25px}.eg-byline{display:flex;flex-wrap:wrap;gap:12px}.eg-byline dl{display:flex;gap:25px;padding:0;margin:0 0 0 auto;border:0}.eg-byline dl>div+div{margin:0}.eg-reading-layout{display:block;padding-top:28px}.eg-sidebar{display:none}.eg-mobile-toc{display:block;border-block:1px solid var(--eg-rule);margin-bottom:34px;font-size:14px}.eg-mobile-toc summary{padding:15px 0;font-weight:600;min-height:50px;color:var(--eg-ink)}.eg-mobile-toc nav{padding-bottom:17px}.eg-mobile-toc li a{padding:9px 0;display:block;min-height:44px;color:var(--eg-accent)}.eg-article-column{max-width:680px;margin-inline:auto}.eg-next{grid-template-columns:1fr 220px}.eg-book-link{display:block}}

@media(max-width:540px){.eg-shell{width:calc(100% - 40px)}.eg-opening{padding-top:20px;padding-bottom:27px}.eg-breadcrumb{font-size:12px;margin-bottom:24px;gap:10px}.eg-page h1{font-size:43px;line-height:1.06;max-width:350px;letter-spacing:-.04em}.eg-page h1>span{font-size:24px;line-height:1.35;letter-spacing:-.025em;margin-top:13px}.eg-introduction{font-size:16px;line-height:1.75;margin-top:20px!important}.eg-byline{align-items:center;row-gap:17px}.eg-byline img{width:36px;height:36px}.eg-byline dl{flex-basis:100%;margin:0;gap:27px}.eg-byline dl>div{display:flex;align-items:baseline;gap:8px}.eg-byline dt,.eg-byline dd{font-size:11px}.eg-reading-layout{padding-top:24px;padding-bottom:48px}.eg-article{font-size:16px;line-height:1.85}.eg-article>p:first-child{font-size:17px}.eg-article h2{font-size:27px;line-height:1.3;margin-top:44px;margin-bottom:18px}.eg-article h3{font-size:20px}.eg-article .tg-note,.eg-article .tg-caution{padding:20px}.eg-article .tg-note p,.eg-article .tg-caution p{font-size:15px}.eg-article .code-header{padding:0 16px;min-height:44px}.eg-article .code-header button{width:44px;min-height:44px}.eg-article table{font-size:13px;line-height:1.65}.eg-article .tg-table-stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.eg-article .tg-table-stack tbody,.eg-article .tg-table-stack tr,.eg-article .tg-table-stack td{display:block}.eg-article .tg-table-stack tr{padding:14px 16px;border-top:1px solid var(--eg-rule)}.eg-article .tg-table-stack td{padding:5px 0;border:0}.eg-article .tg-table-stack td:first-child{font-size:15px;margin-bottom:7px}.eg-article .tg-table-stack td[data-label]::before{content:attr(data-label);display:block;font-size:12px;font-weight:650;color:var(--eg-accent);margin-bottom:2px}.eg-next{padding:25px;grid-template-columns:1fr;gap:28px;margin-top:44px}.eg-next h2{font-size:25px}.eg-book-link{border-left:0;border-top:1px solid #bfd2df;padding:22px 0 0}.eg-book-link strong{font-size:19px}.eg-related>a{font-size:16px}.eg-related>a>span:nth-child(2){font-size:13px}}
@media(prefers-reduced-motion:reduce){.eg-page *{scroll-behavior:auto!important;transition:none!important}}

.eg-arrow{flex-shrink:0;vertical-align:middle}
.eg-book-link>span{display:flex;align-items:center;gap:8px}

/* Shared guide content, including the multi-part testing guide. */
.eg-page h1.eg-title-long{font-size:56px}
.eg-introduction a,.eg-next p a{color:var(--eg-accent);text-decoration:underline}
.eg-introduction strong{font-weight:600}
.eg-article>h2:first-child{margin-top:0}
.eg-article ol{list-style:decimal;padding-left:24px;margin:0 0 28px}
.eg-article li>p{margin-bottom:12px}
.eg-article img,.eg-article svg{max-width:100%;height:auto}
.eg-article figure{margin:32px 0}
.eg-article figcaption{font-size:14px;line-height:1.6;color:var(--eg-muted)}
.eg-article figcaption strong{font-size:16px!important;font-weight:550}
.eg-article blockquote{margin:28px 0;padding:0 24px;border-left:1px solid var(--eg-rule);color:var(--eg-muted)}
.eg-article .tg-details{margin:28px 0;border-block:1px solid var(--eg-rule)}
.eg-article .tg-details summary{padding:16px 0;color:var(--eg-ink);font-weight:600}
.eg-article .tg-details-body{padding:0 0 4px}
.eg-article .guide-end-rule{margin:36px 0 24px;border:0;border-top:1px solid var(--eg-rule)}
.eg-article .guide-next-step-label{font-weight:600}
.eg-table-scroll{overflow-x:auto;max-width:100%;scrollbar-width:thin;scrollbar-color:#b6c4ce transparent}
.eg-article .c2p-table th{color:white}
.eg-page .c2p-field-label,.eg-page .c2p-table th{font-family:var(--eg-sans)}
.eg-page .c2p-input{font-family:var(--eg-mono)}
.eg-article .c2p-examples button{min-height:44px}
.eg-series-nav{margin-bottom:28px;padding-bottom:22px;border-bottom:1px solid var(--eg-rule)}
.eg-sidebar li a[aria-current="page"]{color:var(--eg-ink);font-weight:600;background:var(--eg-surface);border-color:#8496a2}
.eg-mobile-toc li a[aria-current="page"]{font-weight:650;text-decoration:underline}
.eg-mobile-series{margin-bottom:16px}
.eg-completion{display:flex;justify-content:flex-end;margin-top:36px}
.eg-completion button{background:var(--eg-paper);border:1px solid #9aaebc;border-radius:4px;min-height:44px;padding:10px 16px;font-size:14px;color:var(--eg-ink)}
.eg-completion button:hover,.eg-completion button[aria-pressed="true"]{background:var(--eg-surface);border-color:var(--eg-ink)}
.eg-part-navigation{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:28px;border-block:1px solid var(--eg-rule);padding:24px 0}
.eg-part-navigation a{display:grid;grid-template-columns:1fr 16px;gap:6px 12px;align-content:start;color:var(--eg-ink)}
.eg-part-navigation .eg-part-next{grid-column:2}
.eg-part-navigation .eg-part-prev{grid-column:1}
.eg-part-navigation span{grid-column:1/-1;font-size:12px;color:var(--eg-muted)}
.eg-part-navigation strong{font-size:15px;font-weight:550}
.eg-part-navigation svg{align-self:center}
.eg-article .code-header>div{flex-shrink:0}
.eg-article .code-label{min-width:0;overflow-wrap:anywhere}
@media(max-width:1100px){.eg-page h1.eg-title-long{font-size:48px}}
@media(max-width:540px){
  .eg-page h1.eg-title-long{font-size:36px}
  .eg-breadcrumb{font-size:12px}
  .eg-part-navigation{gap:20px}
  .eg-part-navigation strong{font-size:14px}
  .eg-article .tg-table:not(.tg-table-stack),.eg-article .c2p-table{min-width:480px}
  .eg-article figcaption strong{font-size:15px!important}
}

/* Live text preserves the comparison at small widths and browser zoom. */
.eg-article .eg-framework-comparison{margin:36px 0 0}
/* Name the comparison for assistive technology without adding a visible heading. */
.eg-framework-comparison figcaption{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.eg-article .eg-framework-comparison table{table-layout:fixed;border-collapse:separate;border-spacing:12px 10px;width:calc(100% + 24px);margin:-10px -12px 0;font-size:15px;line-height:1.45}
.eg-article .eg-framework-comparison thead{position:static;display:table-header-group;width:auto;height:auto;overflow:visible;clip-path:none}
.eg-article .eg-framework-comparison tbody{display:table-row-group}
.eg-article .eg-framework-comparison tr{display:table-row;background:none;padding:0;border:0}
.eg-article .eg-framework-comparison th{width:50%;padding:0 0 4px;background:none;color:var(--eg-ink);text-align:center;font-size:17px;font-weight:650}
.eg-article .eg-framework-comparison td{display:table-cell;padding:0;border:0;font-size:15px;font-weight:400;vertical-align:top;height:1px}
.eg-feature{display:flex;flex-direction:column;justify-content:center;gap:4px;height:100%;min-height:76px;padding:13px 14px;text-align:center;border:1px dashed #8496a2;border-radius:6px;background:var(--eg-paper);line-height:1.45}
.eg-feature strong{font-size:15px;font-weight:600}
.eg-feature span{font-size:14px;color:var(--eg-text)}
.eg-feature-included{background:#f5f7f8;border-style:solid;border-color:#c3cdd4}
.eg-feature-included strong{color:var(--eg-ink)}
.eg-feature-included span{color:var(--eg-text)}
.eg-feature-shared{height:auto;min-height:0;margin-top:2px;padding:15px 20px}
@media(max-width:540px){
  .eg-article .eg-framework-comparison{margin-top:28px}
  .eg-article .eg-framework-comparison table{border-spacing:8px;width:calc(100% + 16px);margin:-8px -8px 0}
  .eg-article .eg-framework-comparison td{font-size:14px}
  .eg-feature{min-height:92px;padding:12px 8px}
  .eg-feature strong{font-size:14px}
  .eg-feature-shared{min-height:0;padding:14px 16px}
}

/* Blog articles (blog-article.njk). Their authored end-of-article call to
   action (.book-cta) and policy callouts (blockquote) in the reader palette. */
.eg-article blockquote{background:#faf4e7;padding:24px 28px;margin:32px 0;color:var(--eg-text)}
.eg-article blockquote p{font-size:16px;line-height:1.8;margin:0}
.eg-article blockquote p+p{margin-top:8px}
.eg-article blockquote strong{color:var(--eg-ink)}
.eg-article .book-cta{background:#edf4f8;border-top:2px solid #8dbad0;padding:32px;margin:60px 0 0}
.eg-article .book-cta h3{font-size:22px;font-weight:650;line-height:1.3;letter-spacing:-.02em;margin:0 0 12px;color:var(--eg-ink)}
.eg-article .book-cta p{font-size:15px;line-height:1.75;margin:0 0 10px}
.eg-article .book-cta p a{color:var(--eg-accent);text-decoration:underline}
.eg-article .book-cta>a{display:inline-flex;align-items:center;gap:12px;background:var(--eg-navy);color:#fff;font-size:13px;font-weight:550;border-radius:4px;padding:12px 17px;min-height:46px;margin-top:12px;text-decoration:none}
.eg-article .book-cta>a:hover{background:#2d5066;text-decoration:none}
.eg-article .book-cta .book-cta-free{font-size:13px;color:var(--eg-muted);margin:14px 0 0}
@media(max-width:540px){.eg-article .book-cta{padding:25px}.eg-article blockquote{padding:20px}.eg-article blockquote p{font-size:15px}}

/* Index pages (guide-index.njk, currently /free/): the guide opening band,
   then labelled sections of cards beside a sticky pricing card. */
.eg-index-eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--eg-accent);margin-bottom:10px!important}
.eg-page h1.eg-index-title{font-size:56px}
.eg-index-layout{padding-top:56px;padding-bottom:80px}
.eg-index-layout:focus{outline:none}
.eg-index-grid{display:grid;grid-template-columns:minmax(0,760px) 320px;gap:64px;align-items:start;justify-content:space-between}
.eg-index-note{font-size:15px;color:var(--eg-muted);margin-top:6px!important}
.eg-free-section+.eg-free-section{margin-top:64px;padding-top:56px;border-top:1px solid var(--eg-rule)}
.eg-free-section h2{font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1.3}
.eg-free-section .eg-index-note{margin-bottom:24px!important}
.eg-free-card{display:flex;flex-direction:column;gap:8px;padding:24px 26px;margin-top:16px;border:1px solid var(--eg-rule);border-radius:10px;background:#fff;color:var(--eg-ink);box-shadow:0 1px 2px rgba(24,44,59,.05);transition:border-color .15s ease,box-shadow .15s ease}
.eg-page .eg-free-card:hover{text-decoration:none;border-color:#8dbad0;box-shadow:0 4px 14px rgba(24,44,59,.08)}
.eg-free-card:focus-visible{outline:3px solid #38bdf8;outline-offset:3px}
.eg-free-labels{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.eg-free-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--eg-accent)}
.eg-index-single{max-width:760px}
.eg-index-single>.eg-free-card:first-child{margin-top:0}
.eg-free-label--topic{color:var(--eg-muted)}
.eg-free-date{margin-left:auto;font-size:12px;font-weight:500;color:var(--eg-muted)}
.eg-free-label--free{color:#1f6b3a;background:#e8f5ec;border:1px solid #bfe3cb;border-radius:999px;padding:1px 8px;font-size:10px}
.eg-free-title{font-size:19px;font-weight:650;letter-spacing:-.015em;line-height:1.35}
.eg-free-text{font-size:15px;line-height:1.7;color:var(--eg-muted);overflow-wrap:break-word}
.eg-free-title{overflow-wrap:break-word}
.eg-free-cta{margin-top:6px;font-size:14px;font-weight:650;color:var(--eg-accent)}
.eg-free-card:hover .eg-free-cta{text-decoration:underline;text-underline-offset:3px}
.eg-index-aside{position:static}
/* Stick only where the whole card (including its buttons) fits on screen. */
@media(min-width:851px) and (min-height:900px){.eg-index-aside{position:sticky;top:110px}}
.eg-price-card{border:1px solid var(--eg-rule);border-radius:10px;overflow:hidden;background:#fff;box-shadow:0 10px 30px rgba(24,44,59,.12)}
.eg-price-top{background:linear-gradient(118deg,#05090d 0%,#081019 50%,#102733 100%);color:#fff;padding:22px 24px}
.eg-page .eg-price-list{display:grid;gap:16px;margin:0!important;padding:0;list-style:none;color:var(--eg-ink);font-size:14px;line-height:1.45}
.eg-page .eg-price-list li{position:relative;margin:0;padding-left:20px}
.eg-page .eg-price-list li::before{content:"";position:absolute;left:0;top:.45em;width:8px;height:8px;border-radius:50%;background:#38bdf8}
.eg-price-actions{display:flex;flex-direction:column;gap:10px;margin-top:24px}
.eg-page .eg-price-button.eg-price-button--secondary{background:#fff;color:var(--eg-ink);border:1px solid #9fb4c2}
.eg-page .eg-price-button.eg-price-button--secondary:hover{background:#f1f5f7;border-color:var(--eg-ink)}
.eg-price-eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#7dd3fc}
.eg-price-amount{display:flex;align-items:flex-end;gap:8px;margin-top:12px!important}
.eg-price-amount span{font-size:40px;font-weight:700;letter-spacing:-.03em;line-height:1}
.eg-price-amount small{font-size:13px;line-height:1.3;color:#c3d3de;padding-bottom:2px}
.eg-price-intro{font-size:14px;line-height:1.6;color:#c3d3de;margin-top:10px!important}
.eg-price-body{padding:24px}
.eg-page .eg-price-button{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:6px;background:#38bdf8;color:#0b1b26;font-size:15px;font-weight:700}
.eg-page .eg-price-button:hover{background:#7dd3fc;text-decoration:none}
.eg-price-button:focus-visible{outline:3px solid var(--eg-navy);outline-offset:3px}
/* Legal pages (/terms/, /privacy/): numbered sections in the 760px reading column. */
.eg-legal-updated,.eg-legal{max-width:760px}
.eg-legal-updated{margin-bottom:8px!important;font-size:14px;color:var(--eg-muted)}
.eg-legal{font-size:16px;line-height:1.75;color:var(--eg-text);overflow-wrap:break-word}
.eg-legal section{padding-top:32px}
.eg-legal section+section{margin-top:32px;border-top:1px solid var(--eg-rule)}
.eg-page .eg-legal h2{margin-bottom:12px;font-size:21px;font-weight:650;letter-spacing:-.015em;line-height:1.35;color:var(--eg-ink)}
.eg-legal p+p,.eg-legal p+ul,.eg-legal ul+p,.eg-legal p+.eg-legal-table,.eg-legal .eg-legal-table+p{margin-top:12px!important}
.eg-legal ul{padding-left:24px;list-style:disc}
.eg-legal li+li{margin-top:8px}
.eg-legal strong{font-weight:600;color:var(--eg-ink)}
.eg-legal a{color:var(--eg-accent);font-weight:500;text-decoration:underline;text-underline-offset:3px}
.eg-legal-table{overflow-x:auto}
.eg-legal table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.6}
.eg-legal th,.eg-legal td{padding:12px;border:1px solid var(--eg-rule);text-align:left;vertical-align:top}
.eg-legal th{font-weight:600;color:var(--eg-ink);background:var(--eg-surface)}
/* Projects page (/projects/): two columns of project cards beside the edition card. */
.eg-project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.eg-project-card{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--eg-rule);border-radius:10px;background:#fff;box-shadow:0 1px 2px rgba(24,44,59,.05)}
.eg-project-image{aspect-ratio:16/10;background:#000}
.eg-project-image img{display:block;width:100%;height:100%;object-fit:contain}
.eg-project-body{display:flex;flex:1;flex-direction:column;padding:20px 22px 22px}
.eg-project-number{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--eg-accent)}
.eg-page .eg-project-body h2{margin-top:4px;font-size:18px;font-weight:650;letter-spacing:-.015em;line-height:1.35;color:var(--eg-ink)}
.eg-project-body>p:not(.eg-project-number){margin-top:8px!important;font-size:14px;line-height:1.65;color:var(--eg-muted)}
.eg-project-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:18px}
.eg-project-tags{display:flex;flex-wrap:wrap;gap:6px}
.eg-project-tags span{padding:3px 8px;border:1px solid #e2e8f0;border-radius:999px;background:#f8fafc;font-size:11px;font-weight:600;color:var(--eg-muted)}
.eg-project-chapter{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--eg-ink);white-space:nowrap}
@media(max-width:640px){.eg-project-grid{grid-template-columns:minmax(0,1fr)}}
/* Contact page (/contact/): the form in a white card under the opening band. */
.eg-contact{max-width:560px}
.eg-contact-form{padding:32px;border:1px solid var(--eg-rule);border-radius:10px;background:#fff;box-shadow:0 1px 2px rgba(24,44,59,.05)}
.eg-contact-honeypot{display:none}
.eg-contact-field+.eg-contact-field{margin-top:20px}
.eg-contact-field label{display:block;margin-bottom:8px;font-size:14px;font-weight:600;color:var(--eg-ink)}
.eg-contact-required{color:#b91c1c}
.eg-contact-field input,.eg-contact-field select,.eg-contact-field textarea{display:block;width:100%;padding:12px 14px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:var(--eg-ink);font:inherit;font-size:16px;line-height:1.5}
.eg-contact-field textarea{resize:vertical}
.eg-contact-field select{appearance:none;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2361717e' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}
.eg-contact-field input::placeholder,.eg-contact-field textarea::placeholder{color:#94a3b8}
.eg-contact-field input:focus,.eg-contact-field select:focus,.eg-contact-field textarea:focus{outline:none;border-color:#0369a1;box-shadow:0 0 0 3px rgba(3,105,161,.15)}
.eg-contact-hint{margin-top:6px!important;font-size:13px;color:var(--eg-muted)}
.eg-page .eg-contact-submit{display:block;width:100%;min-height:48px;margin-top:24px;border:0;border-radius:6px;background:#9fbfe3;color:#081019;font:inherit;font-size:15px;font-weight:700;cursor:pointer;transition:background-color .15s ease}
.eg-contact-submit:hover{background:#bdd3ea}
.eg-contact-submit:focus-visible{outline:3px solid var(--eg-navy);outline-offset:3px}
.eg-contact-email{margin-top:32px;padding-top:28px;border-top:1px solid var(--eg-rule);font-size:15px;color:var(--eg-text)}
.eg-contact-email p:first-child{margin-bottom:4px!important;font-size:14px;color:var(--eg-muted)}
.eg-contact-email a{color:var(--eg-accent);font-weight:600}
.eg-contact-thanks{display:flex;flex-direction:column;align-items:flex-start;gap:16px;font-size:15px;line-height:1.7;color:var(--eg-text)}
.eg-contact-thanks strong{font-weight:600;color:var(--eg-ink)}
.eg-contact-check{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:#e0eefa;color:#0369a1}
.eg-page .eg-contact-thanks .eg-price-button{align-self:stretch;margin-top:8px;background:#9fbfe3;color:#081019}
.eg-page .eg-contact-thanks .eg-price-button:hover{background:#bdd3ea}
.eg-page .eg-contact-secondary{align-self:center;font-size:14px;font-weight:500;color:var(--eg-muted)}
.eg-page .eg-contact-secondary:hover{color:var(--eg-ink)}
/* Members dashboard (/app/): the page script toggles .hidden on the owner tool,
   lock badges and arrows, so those rules must yield to .hidden. */
.eg-dash{max-width:760px}
.eg-dash-toolbar{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px}
.eg-dash-toolbar p{flex:1 1 320px;font-size:16px;line-height:1.7;color:var(--eg-text)}
.eg-page .eg-dash-logout{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;font-size:14px;font-weight:600;color:var(--eg-text)}
.eg-page .eg-dash-logout:hover{border-color:var(--eg-ink);color:var(--eg-ink)}
.eg-dash-eyebrow{display:block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--eg-accent)}
.eg-dash-owner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;padding:16px 20px;border:1px solid #9fbfe3;border-radius:10px;background:#f1f6fb;color:var(--eg-accent)}
.eg-dash-owner.hidden{display:none}
.eg-page .eg-dash-owner:hover{text-decoration:none;border-color:var(--eg-accent)}
.eg-dash-owner-title{display:block;margin-top:2px;font-size:15px;font-weight:650;color:var(--eg-ink)}
.eg-dash-part{margin-top:24px;overflow:hidden;border:1px solid var(--eg-rule);border-radius:10px;background:#fff;box-shadow:0 1px 2px rgba(24,44,59,.05)}
.eg-dash-part-head{padding:18px 22px;border-bottom:1px solid var(--eg-rule);background:var(--eg-surface)}
.eg-page .eg-dash-part-head h2{margin-top:4px;font-size:18px;font-weight:650;letter-spacing:-.015em;line-height:1.35;color:var(--eg-ink)}
.eg-dash-row{display:flex;align-items:center;gap:16px;padding:14px 22px;color:var(--eg-ink);transition:background-color .15s ease}
.eg-dash-rows .eg-dash-row+.eg-dash-row{border-top:1px solid #edf2f5}
.eg-page .eg-dash-row:hover{text-decoration:none;background:#f8fafc}
.eg-dash-num{flex:0 0 24px;font-size:13px;font-weight:700;color:#94a3b8;font-variant-numeric:tabular-nums}
.eg-dash-title{flex:1;min-width:0;font-size:15px;font-weight:500;line-height:1.45}
.eg-dash-lock{flex:none;padding:3px 8px;border-radius:4px;background:#f1f5f9;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748b}
.eg-dash-arrow{flex:none;color:#cbd5e1;transition:color .15s ease}
.eg-dash-row:hover .eg-dash-arrow{color:var(--eg-accent)}
.eg-dash-lock.hidden,.eg-dash-arrow.hidden{display:none}
.eg-dash-appendix{border-color:#9fbfe3;background:#f1f6fb}
.eg-dash-appendix .eg-dash-row{align-items:center;padding:18px 22px}
.eg-dash-appendix-copy{flex:1;min-width:0}
.eg-dash-appendix-title{display:block;margin-top:4px;font-size:18px;font-weight:650;line-height:1.35;color:var(--eg-ink)}
.eg-dash-appendix-text{display:block;margin-top:4px;font-size:14px;line-height:1.6;color:var(--eg-muted)}
.eg-dash-appendix .eg-dash-arrow{color:var(--eg-accent)}
.eg-dash-help{margin-top:32px!important;padding-top:24px;border-top:1px solid var(--eg-rule);font-size:15px;color:var(--eg-muted)}
.eg-dash-help a{margin-left:4px;color:var(--eg-accent);font-weight:600;text-decoration:underline;text-underline-offset:3px}
@media(max-width:540px){.eg-dash-row{padding:14px 16px;gap:12px}.eg-dash-part-head{padding:16px}}
/* 404 page: two buttons and a book line under the opening band. */
.eg-notfound{max-width:560px}
.eg-notfound-actions{display:flex;flex-wrap:wrap;gap:12px}
.eg-page .eg-notfound-actions .eg-price-button{flex:1 1 200px;padding-inline:24px;background:#9fbfe3;color:#081019}
.eg-page .eg-notfound-actions .eg-price-button:hover{background:#bdd3ea}
.eg-page .eg-notfound-actions .eg-price-button--secondary{background:#fff;color:var(--eg-ink);border:1px solid #9fb4c2}
.eg-page .eg-notfound-actions .eg-price-button--secondary:hover{background:#f1f5f7;border-color:var(--eg-ink)}
.eg-notfound-note{margin-top:28px!important;font-size:15px;line-height:1.7;color:var(--eg-muted)}
.eg-notfound-note a{color:var(--eg-accent);font-weight:600;text-decoration:underline;text-underline-offset:3px}
/* Sign-in page (/login/): three states that the page script swaps with .hidden. */
.eg-signin{font-size:15px;line-height:1.7;color:var(--eg-text)}
.eg-signin.hidden{display:none}
.eg-page .eg-signin h2{font-size:22px;font-weight:650;letter-spacing:-.015em;line-height:1.3;color:var(--eg-ink)}
.eg-signin>p{margin-top:8px!important}
.eg-signin .eg-contact-field{margin-top:24px}
.eg-signin strong{font-weight:600;color:var(--eg-ink)}
.eg-page .eg-contact-submit:disabled{cursor:not-allowed;background:#cbd5e1;color:#475569}
.eg-signin-error{margin-top:14px!important;font-size:14px;color:#b91c1c}
.eg-signin-error.hidden{display:none}
.eg-signin-foot{margin-top:24px!important;padding-top:20px;border-top:1px solid var(--eg-rule);text-align:center;font-size:14px;color:var(--eg-muted)}
.eg-signin-foot a{color:var(--eg-accent);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.eg-signin-state{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.eg-signin-state>p{margin-top:0!important}
.eg-signin-note{font-size:13px;color:var(--eg-muted)}
.eg-page .eg-signin-state .eg-price-button{align-self:stretch;margin-top:8px;background:#9fbfe3;color:#081019}
.eg-page .eg-signin-state .eg-price-button:hover{background:#bdd3ea}
@media(max-width:540px){.eg-contact-form{padding:22px}}
@media(max-width:1100px){.eg-index-grid{grid-template-columns:minmax(0,1fr) 280px;gap:40px}.eg-page h1.eg-index-title{font-size:46px}}
@media(max-width:850px){.eg-index-grid{grid-template-columns:minmax(0,1fr);gap:48px}.eg-index-aside{max-width:420px}.eg-index-layout{padding-top:36px}}
@media(max-width:540px){.eg-page h1.eg-index-title{font-size:38px;line-height:1.1}.eg-free-card{padding:20px}.eg-free-title{font-size:18px}.eg-free-text{font-size:14px}.eg-free-section h2{font-size:21px}}
