@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");

/* tokens (shared contract) */
:root{--canvas:#fff;--ink:#111;--ink-100:#000;--ink-60:rgba(0,0,0,.6);--ink-44:rgba(0,0,0,.44);
--hair:rgba(0,0,0,.12);--face:rgba(0,0,0,.03);--face-2:rgba(0,0,0,.06);--invert-bg:#000;--invert-ink:#fff;
--sans:"Inter","Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;
--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;}
@media (prefers-color-scheme:dark){:root{--canvas:#000;--ink:#eee;--ink-100:#fff;--ink-60:rgba(255,255,255,.62);
--ink-44:rgba(255,255,255,.44);--hair:rgba(255,255,255,.16);--face:rgba(255,255,255,.05);--face-2:rgba(255,255,255,.1);
--invert-bg:#fff;--invert-ink:#000;}}

/* base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.8;font-weight:400;word-break:keep-all;overflow-wrap:anywhere;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1}
@media (max-width:600px){body{font-size:16.5px}}
::selection{background:var(--invert-bg);color:var(--invert-ink)}
.wrap{padding-top:24px;padding-bottom:64px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
@media (min-width:768px){.wrap{padding-left:32px;padding-right:32px}}
.doc{min-width:0;max-width:100%}

/* headings */
h1,h2,h3,h4{color:var(--ink-100);font-family:var(--sans);line-height:1.3;margin:0}
h1{font-size:clamp(32px,6.4vw,46px);font-weight:700;letter-spacing:-.03em;line-height:1.15;margin:.2em 0 .6em}
h2{font-size:clamp(22px,4vw,27px);font-weight:700;letter-spacing:-.02em;margin:2.4em 0 .7em;padding-top:.9em;border-top:1px solid var(--hair)}
h1+section>h2:first-child,h1+h2{margin-top:1.2em}
h3{font-size:20px;font-weight:600;letter-spacing:-.01em;margin:1.9em 0 .55em}
h4{font-size:17px;font-weight:600;margin:1.6em 0 .45em}
h1 a,h2 a,h3 a,h4 a{color:inherit;text-decoration:none}

/* flow */
p{margin:0 0 1.1em}
ul,ol{margin:0 0 1.2em;padding-left:1.4em}
li{margin:.3em 0}
li>p{margin:0 0 .5em}
li>ul,li>ol{margin:.35em 0 .5em}
ul li::marker{color:var(--ink-60)}
ol li::marker{color:var(--ink-60);font-weight:600;font-variant-numeric:tabular-nums}
blockquote{margin:1.4em 0;padding:.1em 0 .1em 1.1em;border-left:2px solid var(--ink-100);color:var(--ink)}
blockquote>div>:last-child,blockquote>:last-child{margin-bottom:0}
hr{border:0;border-top:1px solid var(--hair);margin:2.4em 0}
strong,b{font-weight:600;color:var(--ink-100)}
em{font-style:italic}
small{font-size:13px;color:var(--ink-60)}
img{max-width:100%;height:auto}

/* links */
a{color:var(--ink-100);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em;transition:text-decoration-thickness 180ms ease-out,opacity 180ms ease-out}
a:hover{text-decoration-thickness:2px}
a:focus-visible{outline:2px solid currentColor;outline-offset:2px}

/* toc additions (seed untouched) */
.toc-list ol ol a{padding-left:36px}
.toc-part>span{display:block;margin-top:14px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-60);line-height:1.6}
.toc-list a[aria-current="page"]{color:var(--ink-100);font-weight:600}

/* page skeleton */
.bk-head{margin:0 0 28px}
.bk-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 16px;padding:4px 0;border-bottom:1px solid var(--hair)}
.bk-home{display:inline-flex;align-items:center;gap:.4em;min-height:44px;font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--ink-100);text-decoration:none}
.bk-home span{font-weight:500;color:var(--ink-60)}
.bk-home:hover{text-decoration:none;opacity:.72}
.bk-links{display:flex;flex-wrap:wrap;gap:0 18px}
.bk-links a{display:inline-flex;align-items:center;min-height:44px;font-size:13px;font-weight:500;color:var(--ink-60);text-decoration:none;transition:color 180ms ease-out}
.bk-links a:hover{color:var(--ink-100);text-decoration:underline;text-decoration-thickness:1px}
.eyebrow{margin:18px 0 0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;line-height:1.5;color:var(--ink-60)}

.pager{display:grid;grid-template-columns:1fr;gap:12px;margin:64px 0 0}
@media (min-width:640px){.pager{grid-template-columns:1fr 1fr}.pager .next{grid-column:2}}
.pager a{display:flex;flex-direction:column;gap:2px;min-height:44px;padding:16px 18px;border:1px solid var(--hair);background:var(--canvas);color:var(--ink-100);text-decoration:none;transition:background-color 180ms ease-out,color 180ms ease-out,border-color 180ms ease-out}
.pager .next{text-align:right;align-items:flex-end}
.pager a span{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-60)}
.pager a b{font-size:17px;font-weight:600;line-height:1.45;color:var(--ink-100)}
.pager a:hover,.pager a:focus-visible{background:var(--invert-bg);color:var(--invert-ink);border-color:var(--invert-bg)}
.pager a:hover :where(span,b),.pager a:focus-visible :where(span,b){color:var(--invert-ink)}
.pager a:focus-visible{outline:2px solid var(--ink-100);outline-offset:2px}

.colophon{margin:48px 0 0;padding-top:20px;border-top:1px solid var(--hair);font-size:13px;line-height:1.7;color:var(--ink-60)}
.colophon p{margin:0 0 .6em}
.colophon a{color:inherit;text-decoration:underline;text-decoration-thickness:1px}
.colophon a:hover{color:var(--ink-100)}

/* link preview tooltip (link skill contract, mono) */
a.link-preview{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em;position:relative;cursor:pointer}
a.link-preview:hover{text-decoration-thickness:2px}
a.link-preview:focus-visible{outline:2px solid currentColor;outline-offset:2px}
a.link-preview::after{content:attr(data-link-type) "\A" attr(data-link-summary);white-space:pre-line;position:absolute;left:0;bottom:calc(100% + 8px);z-index:50;min-width:220px;max-width:min(360px,80vw);padding:10px 12px;border-radius:0;background:var(--invert-bg);color:var(--invert-ink);font-family:var(--sans);font-size:12px;line-height:1.45;font-weight:400;font-style:normal;letter-spacing:0;text-transform:none;text-align:left;text-decoration:none;word-break:keep-all;overflow-wrap:anywhere;box-shadow:none;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity 180ms ease-out,transform 180ms ease-out}
a.link-preview:hover::after,a.link-preview:focus::after,a.link-preview:focus-visible::after{opacity:1;transform:translateY(0)}
a.link-preview:not(:hover):not(:focus):not(:focus-visible)::after{display:none}


/* motion */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:0s!important;animation-duration:0s!important;scroll-behavior:auto!important}}

/* print */
@media print{
.toc,.toc-mnav,.mn-pop,.mn-handle,.pager,.bk-links{display:none!important}
:root{--canvas:#fff;--ink:#000;--ink-100:#000;--ink-60:rgba(0,0,0,.7);--ink-44:rgba(0,0,0,.55);--hair:rgba(0,0,0,.25);--invert-bg:#000;--invert-ink:#fff}
body{background:#fff;color:#000;font-size:11pt;line-height:1.6}
.wrap{margin:0!important;padding:0!important}
a.link-preview::after{display:none!important}
h1,h2,h3,h4{break-after:avoid}
pre,blockquote,figure,table{break-inside:avoid}
}
/* code blocks */
.doc div[class^="highlight-"],.doc div[class*=" highlight-"]{margin:1.4em 0;max-width:100%}
.doc .highlight{border:1px solid var(--hair);background:var(--face);max-width:100%}
.doc .highlight pre{margin:0;padding:16px 18px;overflow-x:auto;font-family:var(--mono);font-size:14px;line-height:1.6;color:var(--ink-100);background:none;white-space:pre;word-break:normal;overflow-wrap:normal;tab-size:4}
.doc .literal-block-wrapper{margin:1.4em 0;max-width:100%}
.doc .literal-block-wrapper div[class^="highlight-"]{margin:0}
.doc pre:not(.highlight pre){margin:1.4em 0;padding:16px 18px;overflow-x:auto;border:1px solid var(--hair);background:var(--face);font-family:var(--mono);font-size:14px;line-height:1.6}
.highlight .k,.highlight .kn,.highlight .kd,.highlight .kr,.highlight .kc,.highlight .kt,.highlight .k-Conditional,.highlight .nf,.highlight .bp,.highlight .ow{font-weight:600;font-style:normal}
.highlight .c,.highlight .c1,.highlight .cm,.highlight .cs,.highlight .ch{color:var(--ink-60);font-style:italic}
.highlight .c-PreProc,.highlight .cp{color:var(--ink-44);font-style:normal}
.highlight .s,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sd,.highlight .se{color:var(--ink-100);font-style:normal;text-decoration:none}
.highlight .m,.highlight .mi,.highlight .mf,.highlight .mh{color:var(--ink-100)}
.highlight .nt{font-weight:600;text-decoration:underline dotted;text-underline-offset:.2em}
.highlight .linenos,.highlight .lineno{color:var(--ink-44);user-select:none;-webkit-user-select:none;margin-right:1em;display:inline-block;min-width:2ch;text-align:right}
.highlight .gi{font-weight:600;background:var(--face-2);display:inline-block;min-width:100%}
.highlight .gd{color:var(--ink-44);text-decoration:line-through}
.highlight .gu,.highlight .gh{color:var(--ink-60);font-style:italic}
.doc .code-block-caption{margin:0;padding:6px 0 0;font-size:12px;line-height:1.5;color:var(--ink-60)}
.doc .code-block-caption a{color:inherit}
.doc .code-block-caption code{font-size:12px}

/* inline code, kbd */
.doc :not(pre)>code,.doc code.literal{font-family:var(--mono);font-size:.9em;background:var(--face-2);color:inherit;padding:.1em .35em;border-radius:0;overflow-wrap:anywhere;word-break:normal}
.doc .code-block-caption code{background:none;padding:0}
.doc kbd{font-family:var(--mono);font-size:.85em;border:1px solid var(--hair);padding:.05em .4em;border-radius:0;background:none;color:inherit;white-space:nowrap}

/* admonitions */
.doc .admonition{margin:1.6em 0;padding:4px 0 4px 18px;border-left:2px solid var(--ink-100);background:none}
.doc .admonition>:last-child{margin-bottom:0}
.doc .admonition-title{margin:0 0 .5em;font-size:12px;font-weight:600;line-height:1.5;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-100)}
.doc .admonition.note>.admonition-title{color:var(--ink-60)}
.doc .admonition.tip>.admonition-title::before{content:"\2192\00a0"}
.doc .admonition.warning>.admonition-title{display:inline-block;padding:2px 8px;background:var(--invert-bg);color:var(--invert-ink)}
.doc .admonition.seealso{border-left:1px dashed var(--ink-100)}
.doc .admonition.admonition-troubleshooting{border:1px solid var(--hair);padding:14px 18px}
.doc .admonition.exercise{border:1px solid var(--ink-100);padding:16px 18px}
.doc .admonition.exercise>.admonition-title{color:var(--ink-100)}
.doc .admonition blockquote{margin:1em 0 0;padding:0;border:0}

/* solution details */
.doc details.solution,.doc details.hiddencontent{margin:1em 0}
.doc details>summary{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--ink-100);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;list-style:none;user-select:none;touch-action:manipulation;transition:background-color .2s ease,color .2s ease}
.doc details>summary::-webkit-details-marker{display:none}
.doc details>summary::before{content:"\25B8\00a0"}
.doc details[open]>summary::before{content:"\25BE\00a0"}
.doc details>summary:hover{background:var(--invert-bg);color:var(--invert-ink)}
.doc details>summary:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.doc details[open]>summary{margin-bottom:12px}

/* figures, images */
.doc img{max-width:100%;height:auto}
.doc figure{margin:1.8em 0;text-align:center}
.doc figure img{border:1px solid var(--hair);display:block;margin:0 auto}
.doc figcaption,.doc figcaption p{margin:.6em 0 0;font-size:13px;color:var(--ink-60);text-align:center}
.doc div.graphviz{margin:1.8em 0;text-align:center;overflow-x:auto}
.doc img.graphviz{background:#fff;padding:8px;border:1px solid var(--hair);display:inline-block}

/* tables */
.doc table{border-collapse:collapse;margin:1.4em 0;max-width:100%;display:block;overflow-x:auto;width:max-content;font-size:15px}
.doc th,.doc td{padding:8px 12px;border-bottom:1px solid var(--hair);text-align:left;vertical-align:top}
.doc th{font-size:13px;font-weight:600;color:var(--ink-60);border-bottom-color:var(--ink-44)}
.doc td>p,.doc th>p{margin:0}

/* footnotes */
.doc a.footnote-reference{font-size:11px;vertical-align:super;line-height:0;text-decoration:none;padding:0 .1em}
.doc a.footnote-reference:hover{text-decoration:underline}
.doc dl.footnote{display:grid;grid-template-columns:2.5em 1fr;gap:4px 8px;margin:2em 0 0;padding-top:12px;border-top:1px solid var(--hair);font-size:14px;color:var(--ink-60)}
.doc dl.footnote dt{grid-column:1;margin:0;font-weight:400}
.doc dl.footnote dd{grid-column:2;margin:0}
.doc dl.footnote dd p{margin:0 0 .4em}
.doc dl.footnote a{color:inherit}

/* definition lists */
.doc dl.glossary dt{font-size:17px;font-weight:600;margin:1.2em 0 .3em}
.doc dl.glossary dd{margin:0 0 1em}
.doc dl.simple dt{font-weight:600;margin:.8em 0 .2em}
.doc dl.simple dd{margin:0 0 .6em 1.2em}
.doc dl.option-list dt{margin:.8em 0 .2em}
.doc .option{font-family:var(--mono);font-size:.9em;font-weight:600}

/* misc blocks */
.doc p.rubric{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-60);margin:2em 0 .6em}
.doc .line-block{margin:1em 0}
.doc .line-block .line{min-height:1.8em}
.doc .toctree-wrapper{margin:1.4em 0}
.doc .toctree-wrapper ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair)}
.doc .toctree-wrapper li{margin:0;border-bottom:1px solid var(--hair)}
.doc .toctree-wrapper a{display:block;padding:10px 0;min-height:44px;box-sizing:border-box;text-decoration:none;color:var(--ink-100);font-weight:500}
.doc .toctree-wrapper a:hover{text-decoration:underline}
.doc .toctree-wrapper ul ul{border-top:0;padding-left:18px}

/* math */
.doc .math{display:inline-block;white-space:nowrap;font-variant-numeric:tabular-nums}
.doc .eq{display:block;text-align:center;overflow-x:auto;white-space:nowrap;margin:1.2em 0;font-variant-numeric:tabular-nums}
.doc .frac{display:inline-block;vertical-align:middle;text-align:center}
.doc .frac>span{display:block;padding:0 .3em}
.doc .frac .den{border-top:1px solid currentColor}

/* ko-note (inverted) */
.doc .ko-note{margin:0 0 2em;padding:16px 20px;background:var(--invert-bg);color:var(--invert-ink)}
.doc .ko-note :where(p,li,td,th,strong,em,a,code,span,dt,dd,div,kbd){color:var(--invert-ink)}
.doc .ko-note code{background:none;border:1px solid var(--invert-ink)}
.doc .ko-note>:last-child{margin-bottom:0}
.doc .ko-note .ko-note-title{margin:0 0 .5em;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.doc .ko-note a:focus-visible{outline:2px solid var(--invert-ink);outline-offset:2px}

/* translator note, button chip */
.doc .tn{font-size:13px;color:var(--ink-60)}
.doc .btn{display:inline-block;font-size:12px;font-weight:600;line-height:1.4;padding:1px 8px;border:1px solid var(--ink-100);border-radius:0;white-space:nowrap}

/* book contents (cover) */
.book-contents{margin:2em 0}
.bc-grid{display:grid;grid-template-columns:1fr;gap:0 32px;border-top:1px solid var(--hair)}
@media (min-width:720px){.bc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1080px){.bc-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.bc-part{padding:16px 0 20px;border-bottom:1px solid var(--hair);min-width:0}
.bc-name{margin:0 0 10px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-60)}
.bc-part ol,.bc-part ul{list-style:none;margin:0;padding:0}
.bc-part li{margin:0}
.bc-part a{display:block;padding:6px 0;min-height:32px;text-decoration:none;color:var(--ink-100);font-weight:500}
.bc-part a:hover{text-decoration:underline}
.book-contents .en{display:block;font-size:12px;font-weight:400;color:var(--ink-60)}

@media (prefers-reduced-motion:reduce){.doc details>summary{transition:none}}
@media print{.doc .highlight pre{white-space:pre-wrap;overflow:visible}.doc table{display:table;width:auto}.doc .ko-note{border:1px solid #000;background:none;color:#000}.doc .ko-note :where(p,span,a,div,strong,em,code){color:#000}}
/* 3a: summary lede */
.sum-page .dek{font-size:20px;line-height:1.6;color:var(--ink-60);margin:8px 0 16px;max-width:40em}
.byline{font-size:13px;line-height:1.6;color:var(--ink-60);margin:0 0 32px}
.blocklabel{display:block;margin:56px 0 16px;padding-top:12px;border-top:2px solid var(--ink-100);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-100)}

/* 3a: exec inverted panel */
.exec{background:var(--invert-bg);color:var(--invert-ink);padding:26px 28px;margin:24px 0 32px;border-radius:0}
.exec :where(p,li,strong,em,a,code,span){color:var(--invert-ink)}
.exec > :first-child{margin-top:0}
.exec > :last-child{margin-bottom:0}
.exec a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}
.exec a:hover{text-decoration-thickness:2px}
.exec a:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.exec code{background:rgba(255,255,255,.14)}
@media (prefers-color-scheme:dark){.exec code{background:rgba(0,0,0,.08)}}
.exec .cell{background:var(--canvas);color:var(--ink)}
.exec .cell :where(p,li,strong,em,a,code,span){color:var(--ink)}

/* 3a: chain of steps */
.chain{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 24px;padding:0;list-style:none}
.chain > span{display:inline-block;padding:4px 10px;border:1px solid var(--hair);font-size:14px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.chain > span + span::before{content:"\2192";display:inline-block;margin:0 10px 0 -2px;color:var(--ink-44);font-weight:400}

/* 3a: grid + cell */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0;border-top:1px solid var(--hair);border-left:1px solid var(--hair);margin:16px 0 32px}
.cell{background:var(--canvas);color:var(--ink);padding:18px;min-width:0;border-right:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.cell > :first-child{margin-top:0}
.cell > :last-child{margin-bottom:0}
.cell > strong:first-child{display:block;font-weight:600;margin-bottom:6px;color:var(--ink-100)}
.cell p{font-size:15px;line-height:1.7}

/* 3a: book map */
.map{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;margin:16px 0 40px}
.map-part{border-top:2px solid var(--ink-100);padding-top:12px;min-width:0}
.map-name{display:block;margin:0 0 10px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-60)}
.map ol{margin:0;padding-left:1.4em;font-size:14.5px;line-height:1.6}
.map li{margin:0 0 6px}
.map li::marker{color:var(--ink-44)}
.map a{font-weight:600;color:var(--ink-100);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em;transition:text-decoration-thickness 150ms ease}
.map a:hover{text-decoration-thickness:2px}
.map a:focus-visible{outline:2px solid currentColor;outline-offset:2px}

/* 3a: numbered questions */
ol.q{list-style:none;counter-reset:q;padding-left:0;margin:16px 0 32px}
ol.q > li{counter-increment:q;position:relative;padding-left:2.4em;margin:0 0 12px}
ol.q > li::before{content:counter(q,decimal-leading-zero);position:absolute;left:0;top:0;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-100)}

/* 3a: key-value */
.kv{display:grid;grid-template-columns:12em 1fr;gap:0 24px;margin:16px 0 32px;border-top:1px solid var(--hair)}
.kv > *{margin:0;padding:10px 0;border-bottom:1px solid var(--hair);min-width:0;overflow-wrap:anywhere}
.kv > :nth-child(odd){font-weight:600;color:var(--ink-100)}
@media (max-width:640px){.kv{grid-template-columns:1fr}.kv > :nth-child(odd){padding-bottom:0;border-bottom:0}}

/* 3a: stat + pull */
.stat{display:block;font-size:32px;font-weight:700;line-height:1.15;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink-100)}
.stat > span,.stat small{display:block;margin-top:4px;font-size:12px;font-weight:500;letter-spacing:.04em;line-height:1.4;color:var(--ink-60)}
.pull{margin:32px 0;padding:0 0 0 20px;border-left:2px solid var(--ink-100);font-size:24px;font-weight:600;line-height:1.45;letter-spacing:-.01em;color:var(--ink-100)}
.pull > :last-child{margin-bottom:0}

@media (prefers-reduced-motion:reduce){.map a{transition:none}}
/* concept cards */
article.concept{border:1px solid var(--hair);border-radius:0;background:var(--canvas);color:var(--ink);padding:22px 24px;margin:0 0 20px;scroll-margin-top:24px;min-width:0}
.concept h3{font-size:20px;font-weight:600;line-height:1.35;letter-spacing:-.01em;margin:0 0 8px;color:var(--ink-100)}
.concept h3 .en{font-size:13px;font-weight:400;letter-spacing:0;color:var(--ink-60);margin-left:8px}
.gist{font-size:16px;font-weight:600;line-height:1.6;margin:0 0 12px;color:var(--ink-100)}
.concept ul{font-size:15px;line-height:1.7;margin:0 0 12px;padding-left:1.2em}
.concept ul li{margin:0 0 4px}
.pit{font-size:15px;line-height:1.7;border-left:2px dotted var(--ink-100);padding:4px 0 4px 12px;margin:12px 0}
.pit strong{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-right:6px}
.goto{font-size:13px;line-height:1.6;color:var(--ink-60);margin:12px 0 0}
.goto a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em;transition:text-decoration-thickness .2s ease}
.goto a:hover{color:var(--ink-100);text-decoration-thickness:2px}
.goto a:focus-visible,.fc-ref a:focus-visible{outline:2px solid currentColor;outline-offset:2px}

/* cheat sheet */
table.cheat{width:100%;border-collapse:collapse;font-size:14px;line-height:1.55;margin:16px 0 24px}
table.cheat th{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-60);text-align:left;vertical-align:bottom;padding:8px 10px;border-bottom:1px solid var(--ink-100)}
table.cheat td{padding:8px 10px;border-bottom:1px solid var(--hair);vertical-align:top;overflow-wrap:anywhere}
table.cheat td code{white-space:normal;overflow-wrap:anywhere}
@media (max-width:720px){table.cheat{display:block;overflow-x:auto;max-width:100%}}

/* fact check */
.fc{margin:40px 0}
.fc-summary{display:grid;grid-template-columns:64px 1fr;gap:20px;align-items:center;border:1px solid var(--hair);padding:20px;margin:0 0 16px;min-width:0}
.fc-summary > *{min-width:0}
.fc-summary p{margin:0}
.fc-grade{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0;background:var(--invert-bg);color:var(--invert-ink);font-size:48px;font-weight:700;line-height:1;letter-spacing:-.03em}
.fc-item{display:grid;grid-template-columns:5.5em 1fr;column-gap:14px;row-gap:4px;align-items:start;padding:14px 0;border-top:1px solid var(--hair)}
.fc-item:last-child{border-bottom:1px solid var(--hair)}
.fc-item > *{min-width:0;margin:0}
.fc-item > *:not(.fc-v){grid-column:2}
.fc-v{grid-column:1;grid-row:1 / span 3;justify-self:start;display:inline-block;font-size:12px;font-weight:600;line-height:1.4;letter-spacing:.02em;text-align:center;padding:2px 6px;border:1px solid transparent;border-radius:0;background:transparent;color:var(--ink-100);white-space:nowrap}
.fc-v.v-fact{background:var(--invert-bg);color:var(--invert-ink);border-color:var(--invert-bg)}
.fc-v.v-part{border:1px solid var(--ink-100)}
.fc-v.v-unsure{border:1px dashed var(--ink-100)}
.fc-v.v-false{border:1px solid var(--ink-60);color:var(--ink-60);text-decoration:line-through}
.fc-claim{font-weight:600;line-height:1.6;color:var(--ink-100)}
.fc-ref{font-size:13px;line-height:1.6;color:var(--ink-60);overflow-wrap:anywhere}
.fc-ref a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em;overflow-wrap:anywhere}
.fc-ref a:hover{color:var(--ink-100)}

/* next */
.sum-next{border-top:1px solid var(--hair);margin-top:48px;padding-top:24px}

@media (max-width:480px){article.concept{padding:18px 16px}.fc-summary{grid-template-columns:56px 1fr;gap:14px;padding:16px}.fc-grade{width:56px;height:56px;font-size:40px}}
@media (prefers-reduced-motion:reduce){.goto a{transition:none}}
@media print{article.concept{break-inside:avoid}.fc-grade,.fc-v.v-fact{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

.fc-summary > *:not(.fc-grade){grid-column:2;min-width:0}
.fc-summary > .fc-grade{grid-column:1;grid-row:1 / span 3;align-self:start}
