/* Vibe Code — giáo trình. Nền sáng, chữ đen, không trang trí thừa. */
:root{
  --bg:#ffffff; --bg2:#f6f4ee; --bg3:#f1f0eb;
  --ink:#17191f; --ink2:#3a3d48; --ink3:#6e717d;
  --line:#e2dfd5; --line2:#d5d1c5;
  --acc:#0e7c86; --acc-bg:#e7f4f4;
  --warn:#8a5a00; --warn-bg:#fff0c8;
  --bad:#b3261e; --bad-bg:#fbeceb;
  --info:#2f55d4; --info-bg:#edf1fd;
  --ok:#12744c; --ok-bg:#e8f5ee;
  --cf:#f38020;
  --code-bg:#f6f4ee;
  --w:1380px; --side:276px; --toc:214px;
  --f: "Be Vietnam Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --fm: "SFMono-Regular", ui-monospace, Consolas, "Liberation Mono", Menlo, monospace;
}
[data-theme="dark"]{
  --bg:#14161a; --bg2:#1b1e23; --bg3:#23262c;
  --ink:#ecebe7; --ink2:#b6b8bf; --ink3:#8a8d97;
  --line:#2d3037; --line2:#3b3f47;
  --acc:#56c8ce; --acc-bg:#102527;
  --warn:#e3b964; --warn-bg:#2a2214;
  --bad:#e89a93; --bad-bg:#2b1a19;
  --info:#8aa6f0; --info-bg:#161c2e;
  --ok:#5cc08d; --ok-bg:#112419;
  --cf:#f38020;
  --code-bg:#1b1e23;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.68 var(--f);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;height:auto}
a{color:inherit}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:2px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;z-index:60;background:var(--ink);color:var(--bg);padding:8px 12px}

/* ---------------- top bar ---------------- */
.top{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:14px;
  height:56px;padding:0 18px;background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;font-weight:650;letter-spacing:-.01em}
.logo{display:grid;place-items:center;width:26px;height:26px;border-radius:6px;
  background:var(--ink);color:var(--bg);font:600 13px/1 var(--fm)}
.bname{font-size:15.5px;white-space:nowrap}
.t-btn{display:grid;place-items:center;width:34px;height:34px;border:1px solid transparent;
  border-radius:8px;background:none;color:var(--ink2);cursor:pointer}
.t-btn:hover{background:var(--bg3);color:var(--ink)}
.menu-btn{display:none}
.search-open{flex:1;max-width:400px;display:flex;align-items:center;gap:8px;height:34px;
  padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:var(--bg2);
  color:var(--ink3);font:400 13.5px/1 var(--f);cursor:pointer;text-align:left}
.search-open:hover{border-color:var(--ink3)}
.search-open span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
kbd{font:500 11px/1.5 var(--fm);border:1px solid var(--line2);border-bottom-width:2px;
  border-radius:4px;padding:1px 5px;color:var(--ink3);background:var(--bg)}
.top-links{display:flex;gap:4px;margin-left:auto}
.top-links a{padding:7px 10px;border-radius:7px;font-size:14px;color:var(--ink2);text-decoration:none}
.top-links a:hover{background:var(--bg3);color:var(--ink)}
[data-theme="light"] .i-moon,[data-theme="dark"] .i-sun{display:none}

/* ---------------- shell ---------------- */
.shell{display:grid;grid-template-columns:var(--side) minmax(0,1fr) var(--toc);
  gap:0;max-width:var(--w);margin:0 auto}
.side{border-right:1px solid var(--line)}
.side-in{position:sticky;top:56px;max-height:calc(100vh - 56px);overflow-y:auto;
  padding:22px 16px 60px;scrollbar-width:thin}
.nav-grp{border-bottom:1px solid var(--line)}
.nav-grp:last-child{border-bottom:0}
.nav-grp>summary{display:flex;align-items:baseline;gap:8px;padding:11px 6px;cursor:pointer;
  font-weight:600;font-size:13.5px;letter-spacing:-.005em;list-style:none}
.nav-grp>summary::-webkit-details-marker{display:none}
.nav-grp>summary::after{content:"+";margin-left:auto;color:var(--ink3);font-weight:400}
.nav-grp[open]>summary::after{content:"\2013"}
.nav-grp>summary em{font-style:normal;font-size:11px;color:var(--ink3);
  text-transform:uppercase;letter-spacing:.06em}
.nav-grp ul{margin:0 0 10px;padding:0;list-style:none}
.nav-grp li a{display:block;padding:6px 10px;border-radius:6px;font-size:14px;
  color:var(--ink2);text-decoration:none}
.nav-grp li a:hover{background:var(--bg3);color:var(--ink)}
.nav-grp li a.on{background:var(--acc-bg);color:var(--acc);font-weight:600}

/* ---------------- doc ---------------- */
.doc-in{max-width:760px;padding:30px 42px 80px}
.crumb{display:flex;gap:8px;font-size:13px;color:var(--ink3);margin-bottom:14px}
.crumb a{text-decoration:none}
.crumb a:hover{color:var(--ink)}
.doc h1{margin:0 0 10px;font-size:clamp(28px,4.4vw,38px);line-height:1.2;
  letter-spacing:-.022em;font-weight:680}
.lead{margin:0 0 18px;font-size:18px;line-height:1.6;color:var(--ink2)}
.metabar{display:flex;align-items:center;gap:10px;padding-bottom:22px;margin-bottom:26px;
  border-bottom:1px solid var(--line)}
.lv,.est{font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink3)}
.lv{padding:3px 9px;border:1px solid var(--line2);border-radius:99px;color:var(--ink2)}
.doc h2{margin:48px 0 14px;font-size:24px;line-height:1.3;letter-spacing:-.016em;font-weight:660;
  padding-top:6px;border-top:1px solid var(--line)}
.doc h3{margin:32px 0 10px;font-size:18.5px;line-height:1.35;letter-spacing:-.01em;font-weight:650}
.doc h4{margin:24px 0 8px;font-size:16px;font-weight:650}
.doc p{margin:0 0 16px}
.doc ul,.doc ol{margin:0 0 18px;padding-left:22px}
.doc li{margin:0 0 7px}
.doc li>ul,.doc li>ol{margin:7px 0 4px}
.doc strong{font-weight:650}
.doc a{color:var(--acc);text-decoration:underline;text-decoration-thickness:1px;
  text-underline-offset:2.5px}
.doc hr{height:1px;border:0;background:var(--line);margin:34px 0}
.doc blockquote{margin:0 0 20px;padding:2px 0 2px 18px;border-left:2px solid var(--line2);
  color:var(--ink2);font-style:italic}
code{font:500 .875em/1.5 var(--fm);background:var(--bg3);padding:.14em .38em;
  border-radius:4px;word-break:break-word}
pre{margin:0 0 20px;padding:14px 16px;background:var(--code-bg);border:1px solid var(--line);
  border-radius:9px;overflow-x:auto;font-size:13.4px;line-height:1.62}
pre code{background:none;padding:0;font-weight:400;font-size:13.4px}
.codehilite{margin:0 0 20px}
.codehilite pre{margin:0}
table{width:100%;border-collapse:collapse;margin:0 0 22px;font-size:14.6px;display:block;overflow-x:auto}
th,td{padding:9px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}
th{background:var(--bg2);font-weight:620;white-space:nowrap}

/* ---------------- callouts (không dùng viền trái bo tròn) ---------------- */
.cal{margin:0 0 22px;padding:15px 18px;border:1px solid var(--line);border-radius:10px;background:var(--bg2)}
.cal-head{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:9px;
  font-weight:650;font-size:15px}
.cal-tag{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  padding:3px 8px;border-radius:5px}
.cal-who{font-size:12.5px;font-weight:400;color:var(--ink3)}
.cal-body>*:last-child{margin-bottom:0}
.cal-body{font-size:15.4px}
.cal-insight{background:var(--info-bg);border-color:color-mix(in srgb,var(--info) 22%,transparent)}
.cal-insight .cal-tag{background:color-mix(in srgb,var(--info) 16%,transparent);color:var(--info)}
.cal-doithuong{background:var(--bg2)}
.cal-doithuong .cal-tag{background:var(--bg3);color:var(--ink2)}
.cal-taylam{background:var(--acc-bg);border-color:color-mix(in srgb,var(--acc) 24%,transparent)}
.cal-taylam .cal-tag{background:color-mix(in srgb,var(--acc) 16%,transparent);color:var(--acc)}
.cal-review{background:var(--bg2);border-color:var(--line2)}
.cal-review .cal-tag{background:var(--ink);color:var(--bg)}
.cal-bay{background:var(--bad-bg);border-color:color-mix(in srgb,var(--bad) 24%,transparent)}
.cal-bay .cal-tag{background:color-mix(in srgb,var(--bad) 15%,transparent);color:var(--bad)}
.cal-luu{background:var(--warn-bg);border-color:color-mix(in srgb,var(--warn) 26%,transparent)}
.cal-luu .cal-tag{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn)}
.cal-baitap{background:var(--bg2);border-color:var(--line2);border-style:dashed}
.cal-baitap .cal-tag{background:var(--bg3);color:var(--ink2)}

/* ---------------- pager ---------------- */
.pager{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:54px}
.pg{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border:1px solid var(--line);
  border-radius:10px;text-decoration:none}
.pg:hover{border-color:var(--ink3);background:var(--bg2)}
.pg span{font-size:12px;color:var(--ink3)}
.pg strong{font-weight:620;font-size:15px;letter-spacing:-.008em}
.pg.next{text-align:right;grid-column:2}
.pg.prev{grid-column:1}

/* ---------------- toc ---------------- */
.toc{padding:30px 18px 60px}
.toc>*{position:sticky;top:76px}
.toc-t{font-size:12px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ink3);margin-bottom:10px}
.toc ul{position:sticky;top:106px;margin:0;padding:0;list-style:none;max-height:calc(100vh - 140px);
  overflow-y:auto}
.toc li a{display:block;padding:4px 0;font-size:13.2px;line-height:1.45;color:var(--ink3);
  text-decoration:none}
.toc li.d2 a{padding-left:12px;font-size:12.8px}
.toc li a:hover{color:var(--ink)}
.toc li a.on{color:var(--acc);font-weight:600}

/* ---------------- home ---------------- */
.home{max-width:1080px;margin:0 auto;padding:0 22px 70px}
.hero{padding:66px 0 48px;border-bottom:1px solid var(--line)}
.kick{margin:0 0 16px;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
.hero h1{margin:0 0 18px;font-size:clamp(32px,6vw,56px);line-height:1.1;letter-spacing:-.03em;font-weight:700}
.hero h1 b{font-weight:700;color:var(--acc)}
.sub{margin:0 0 28px;max-width:62ch;font-size:18.5px;line-height:1.6;color:var(--ink2)}
.cta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:44px}
.b1,.b2{padding:12px 22px;border-radius:9px;text-decoration:none;font-weight:600;font-size:15.5px}
.b1{background:var(--ink);color:var(--bg)}
.b1:hover{opacity:.86}
.b2{border:1px solid var(--line2);color:var(--ink)}
.b2:hover{background:var(--bg2)}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:22px;margin:0}
.facts dt{font-size:27px;font-weight:700;letter-spacing:-.02em}
.facts dd{margin:3px 0 0;font-size:14px;color:var(--ink2);line-height:1.45}
.band{padding:52px 0 0}
.band h2{margin:0 0 8px;font-size:clamp(23px,3.4vw,30px);letter-spacing:-.02em;font-weight:670}
.band-sub{margin:0 0 26px;color:var(--ink2);max-width:60ch}
.roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(224px,1fr));gap:16px;margin-top:24px}
.roles>div{padding:18px;border:1px solid var(--line);border-radius:11px;background:var(--bg2)}
.roles h4{margin:0 0 7px;font-size:15.5px;font-weight:650}
.roles p{margin:0;font-size:14.4px;line-height:1.55;color:var(--ink2)}
.lvgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(286px,1fr));gap:16px}
.lvcard{display:flex;flex-direction:column;padding:20px;border:1px solid var(--line);border-radius:12px}
.lvcard:hover{border-color:var(--ink3)}
.lvh em{font-style:normal;font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink3)}
.lvh h3{margin:5px 0 13px;font-size:18px;letter-spacing:-.012em;font-weight:650}
.lvcard ul{flex:1;margin:0 0 14px;padding:0;list-style:none}
.lvcard li{margin:0 0 2px}
.lvcard li a{display:block;padding:4px 0;font-size:14.4px;color:var(--ink2);text-decoration:none}
.lvcard li a:hover{color:var(--acc);text-decoration:underline;text-underline-offset:2.5px}
.lvgo{font-size:14px;font-weight:600;color:var(--acc);text-decoration:none}
.lvgo:hover{text-decoration:underline;text-underline-offset:3px}
.foot{margin-top:66px;padding-top:24px;border-top:1px solid var(--line);font-size:13.5px;color:var(--ink3)}
.foot p{margin:0 0 6px}
.foot-s{max-width:72ch;line-height:1.55}

/* ---------------- search box ---------------- */
.sdim{position:fixed;inset:0;z-index:50;background:rgba(10,10,12,.46)}
.sbox{position:fixed;inset:0;z-index:51;display:flex;justify-content:center;
  align-items:flex-start;padding:72px 16px}
.sbox[hidden],.sdim[hidden]{display:none}
.sbox-in{width:100%;max-width:620px;background:var(--bg);border:1px solid var(--line2);
  border-radius:13px;box-shadow:0 20px 60px rgba(0,0,0,.22);overflow:hidden}
.sbox input{width:100%;padding:16px 18px;border:0;border-bottom:1px solid var(--line);
  background:none;color:var(--ink);font:400 16.5px/1.4 var(--f)}
.sbox input:focus{outline:none}
.sres{max-height:min(54vh,420px);overflow-y:auto}
.sres a{display:block;padding:11px 18px;border-bottom:1px solid var(--line);text-decoration:none}
.sres a:last-child{border-bottom:0}
.sres a:hover,.sres a.on{background:var(--acc-bg)}
.sres b{display:block;font-size:15px;font-weight:620;margin-bottom:2px}
.sres span{display:block;font-size:12.6px;color:var(--ink3)}
.sres mark{background:color-mix(in srgb,var(--acc) 22%,transparent);color:inherit;padding:0 1px}
.sres .none{padding:20px 18px;color:var(--ink3);font-size:14.5px}
.sfoot{padding:9px 18px;border-top:1px solid var(--line);background:var(--bg2);
  font-size:12px;color:var(--ink3)}

/* ---------------- responsive ---------------- */
@media (max-width:1180px){
  .shell{grid-template-columns:var(--side) minmax(0,1fr)}
  .toc{display:none}
  .doc-in{padding:30px 34px 70px}
}
@media (max-width:860px){
  .top-links{display:none}
  .menu-btn{display:grid}
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:fixed;inset:56px auto 0 0;z-index:38;width:290px;max-width:84vw;
    background:var(--bg);border-right:1px solid var(--line2);transform:translateX(-102%);
    transition:transform .2s ease;visibility:hidden}
  body.nav-on .side{transform:none;visibility:visible}
  body.nav-on::after{content:"";position:fixed;inset:56px 0 0;z-index:37;background:rgba(10,10,12,.4)}
  .side-in{max-height:none;height:100%}
  .doc-in{padding:22px 18px 60px}
  .doc h1{font-size:27px}
  .lead{font-size:16.5px}
  .doc h2{margin:38px 0 12px;font-size:21px}
  .pager{grid-template-columns:1fr}
  .pg.next{grid-column:1;text-align:left}
  .hero{padding:40px 0 34px}
  .band{padding:40px 0 0}
  .search-open kbd{display:none}
  .sbox{padding:12px}
  table{font-size:13.8px}
}
/* vung cham >=44px tren dien thoai (luat UX cua chinh giao trinh) */
@media (max-width:860px){
  .nav-grp li a{min-height:44px;display:flex;align-items:center;padding:8px 10px}
  .nav-grp>summary{min-height:46px;align-items:center}
  .t-btn{width:42px;height:42px}
  .brand{flex:none}
  .top{gap:10px;padding:0 12px}
  .search-open{height:40px}
  .toc li a{min-height:40px;display:flex;align-items:center}
  .copy{min-height:36px;padding:6px 12px!important}
  .b1,.b2{min-height:48px;display:inline-flex;align-items:center}
  .lvgo{min-height:44px;display:inline-flex;align-items:center}
}
@media (hover:none){
  .copy{opacity:1!important}
}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}}
@media print{.top,.side,.toc,.pager,.sbox,.sdim{display:none}.shell{display:block}
  .doc-in{max-width:none;padding:0}}

/* ---------------- banner so do ---------------- */
.banner{margin:0;padding:0}
.banner a{display:block;border:1px solid var(--line2);border-radius:14px;overflow:hidden;
  background:#f6f4ee;line-height:0}
.banner a:hover{border-color:var(--ink3)}
.banner img{width:100%;height:auto;display:block}
[data-theme="dark"] .banner img{filter:brightness(.94) contrast(1.02)}
.banner figcaption{margin-top:10px;font-size:13.4px;line-height:1.55;color:var(--ink3);line-height:1.55}
.banner figcaption a{color:var(--acc);text-decoration:none;font-weight:600}
.banner figcaption a:hover{text-decoration:underline;text-underline-offset:3px}
.banner-doc{margin:0 0 28px}
@media (min-width:861px){
  .banner-doc{margin-left:-42px;margin-right:-42px}
  .banner-doc figcaption{margin-left:42px;margin-right:42px}
}
.hero-2{padding:34px 0 0;border-bottom:1px solid var(--line)}
.hero.hero-2{padding-bottom:44px}
.home>.hero:first-of-type{border-bottom:0;padding-bottom:34px}
@media (max-width:860px){
  .banner figcaption{font-size:13px}
  .hero-2{padding-top:26px}
}

/* ---------------- so do Vibe Stack ---------------- */
.vstack{margin:0 0 26px;padding:18px;border:1px solid var(--line2);border-radius:12px;background:var(--bg2)}
.vstack svg{display:block;width:100%;height:auto}
.vstack figcaption{margin-top:12px;font-size:13.4px;line-height:1.55;color:var(--ink3)}
.vlegend{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0 0 22px;padding:0;list-style:none;font-size:14px}
.vlegend li{display:flex;align-items:center;gap:7px;color:var(--ink2)}
.vlegend i{width:11px;height:11px;border-radius:3px;flex:none}
.vlegend .ok{background:var(--ok)}
.vlegend .need{background:var(--warn)}
.tag-ok,.tag-need{display:inline-block;padding:1px 7px;border-radius:5px;font-size:12px;font-weight:600;
  white-space:nowrap}
.tag-ok{background:var(--ok-bg);color:var(--ok)}
.tag-need{background:var(--warn-bg);color:var(--warn)}

/* pygments */
pre { line-height: 125%; }
td.linenos .normal { color: #666666; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #666666; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.codehilite .hll { background-color: #ffffcc }
.codehilite { background: #f0f0f0; }
.codehilite .c { color: #60A0B0; font-style: italic } /* Comment */
.codehilite .err { border: 1px solid #F00 } /* Error */
.codehilite .k { color: #007020; font-weight: bold } /* Keyword */
.codehilite .o { color: #666 } /* Operator */
.codehilite .ch { color: #60A0B0; font-style: italic } /* Comment.Hashbang */
.codehilite .cm { color: #60A0B0; font-style: italic } /* Comment.Multiline */
.codehilite .cp { color: #007020 } /* Comment.Preproc */
.codehilite .cpf { color: #60A0B0; font-style: italic } /* Comment.PreprocFile */
.codehilite .c1 { color: #60A0B0; font-style: italic } /* Comment.Single */
.codehilite .cs { color: #60A0B0; background-color: #FFF0F0 } /* Comment.Special */
.codehilite .gd { color: #A00000 } /* Generic.Deleted */
.codehilite .ge { font-style: italic } /* Generic.Emph */
.codehilite .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.codehilite .gr { color: #F00 } /* Generic.Error */
.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.codehilite .gi { color: #00A000 } /* Generic.Inserted */
.codehilite .go { color: #888 } /* Generic.Output */
.codehilite .gp { color: #C65D09; font-weight: bold } /* Generic.Prompt */
.codehilite .gs { font-weight: bold } /* Generic.Strong */
.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.codehilite .gt { color: #04D } /* Generic.Traceback */
.codehilite .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.codehilite .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.codehilite .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.codehilite .kp { color: #007020 } /* Keyword.Pseudo */
.codehilite .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.codehilite .kt { color: #902000 } /* Keyword.Type */
.codehilite .m { color: #40A070 } /* Literal.Number */
.codehilite .s { color: #4070A0 } /* Literal.String */
.codehilite .na { color: #4070A0 } /* Name.Attribute */
.codehilite .nb { color: #007020 } /* Name.Builtin */
.codehilite .nc { color: #0E84B5; font-weight: bold } /* Name.Class */
.codehilite .no { color: #60ADD5 } /* Name.Constant */
.codehilite .nd { color: #555; font-weight: bold } /* Name.Decorator */
.codehilite .ni { color: #D55537; font-weight: bold } /* Name.Entity */
.codehilite .ne { color: #007020 } /* Name.Exception */
.codehilite .nf { color: #06287E } /* Name.Function */
.codehilite .nl { color: #002070; font-weight: bold } /* Name.Label */
.codehilite .nn { color: #0E84B5; font-weight: bold } /* Name.Namespace */
.codehilite .nt { color: #062873; font-weight: bold } /* Name.Tag */
.codehilite .nv { color: #BB60D5 } /* Name.Variable */
.codehilite .ow { color: #007020; font-weight: bold } /* Operator.Word */
.codehilite .w { color: #BBB } /* Text.Whitespace */
.codehilite .mb { color: #40A070 } /* Literal.Number.Bin */
.codehilite .mf { color: #40A070 } /* Literal.Number.Float */
.codehilite .mh { color: #40A070 } /* Literal.Number.Hex */
.codehilite .mi { color: #40A070 } /* Literal.Number.Integer */
.codehilite .mo { color: #40A070 } /* Literal.Number.Oct */
.codehilite .sa { color: #4070A0 } /* Literal.String.Affix */
.codehilite .sb { color: #4070A0 } /* Literal.String.Backtick */
.codehilite .sc { color: #4070A0 } /* Literal.String.Char */
.codehilite .dl { color: #4070A0 } /* Literal.String.Delimiter */
.codehilite .sd { color: #4070A0; font-style: italic } /* Literal.String.Doc */
.codehilite .s2 { color: #4070A0 } /* Literal.String.Double */
.codehilite .se { color: #4070A0; font-weight: bold } /* Literal.String.Escape */
.codehilite .sh { color: #4070A0 } /* Literal.String.Heredoc */
.codehilite .si { color: #70A0D0; font-style: italic } /* Literal.String.Interpol */
.codehilite .sx { color: #C65D09 } /* Literal.String.Other */
.codehilite .sr { color: #235388 } /* Literal.String.Regex */
.codehilite .s1 { color: #4070A0 } /* Literal.String.Single */
.codehilite .ss { color: #517918 } /* Literal.String.Symbol */
.codehilite .bp { color: #007020 } /* Name.Builtin.Pseudo */
.codehilite .fm { color: #06287E } /* Name.Function.Magic */
.codehilite .vc { color: #BB60D5 } /* Name.Variable.Class */
.codehilite .vg { color: #BB60D5 } /* Name.Variable.Global */
.codehilite .vi { color: #BB60D5 } /* Name.Variable.Instance */
.codehilite .vm { color: #BB60D5 } /* Name.Variable.Magic */
.codehilite .il { color: #40A070 } /* Literal.Number.Integer.Long */
pre { line-height: 125%; }
td.linenos .normal { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
[data-theme="dark"] .codehilite .hll { background-color: #6e7681 }
[data-theme="dark"] .codehilite { background: #0d1117; color: #E6EDF3 }
[data-theme="dark"] .codehilite .c { color: #8B949E; font-style: italic } /* Comment */
[data-theme="dark"] .codehilite .err { color: #F85149 } /* Error */
[data-theme="dark"] .codehilite .esc { color: #E6EDF3 } /* Escape */
[data-theme="dark"] .codehilite .g { color: #E6EDF3 } /* Generic */
[data-theme="dark"] .codehilite .k { color: #FF7B72 } /* Keyword */
[data-theme="dark"] .codehilite .l { color: #A5D6FF } /* Literal */
[data-theme="dark"] .codehilite .n { color: #E6EDF3 } /* Name */
[data-theme="dark"] .codehilite .o { color: #FF7B72; font-weight: bold } /* Operator */
[data-theme="dark"] .codehilite .x { color: #E6EDF3 } /* Other */
[data-theme="dark"] .codehilite .p { color: #E6EDF3 } /* Punctuation */
[data-theme="dark"] .codehilite .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */
[data-theme="dark"] .codehilite .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */
[data-theme="dark"] .codehilite .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */
[data-theme="dark"] .codehilite .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */
[data-theme="dark"] .codehilite .c1 { color: #8B949E; font-style: italic } /* Comment.Single */
[data-theme="dark"] .codehilite .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */
[data-theme="dark"] .codehilite .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */
[data-theme="dark"] .codehilite .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */
[data-theme="dark"] .codehilite .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
[data-theme="dark"] .codehilite .gr { color: #FFA198 } /* Generic.Error */
[data-theme="dark"] .codehilite .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */
[data-theme="dark"] .codehilite .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */
[data-theme="dark"] .codehilite .go { color: #8B949E } /* Generic.Output */
[data-theme="dark"] .codehilite .gp { color: #8B949E } /* Generic.Prompt */
[data-theme="dark"] .codehilite .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */
[data-theme="dark"] .codehilite .gu { color: #79C0FF } /* Generic.Subheading */
[data-theme="dark"] .codehilite .gt { color: #FF7B72 } /* Generic.Traceback */
[data-theme="dark"] .codehilite .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */
[data-theme="dark"] .codehilite .kc { color: #79C0FF } /* Keyword.Constant */
[data-theme="dark"] .codehilite .kd { color: #FF7B72 } /* Keyword.Declaration */
[data-theme="dark"] .codehilite .kn { color: #FF7B72 } /* Keyword.Namespace */
[data-theme="dark"] .codehilite .kp { color: #79C0FF } /* Keyword.Pseudo */
[data-theme="dark"] .codehilite .kr { color: #FF7B72 } /* Keyword.Reserved */
[data-theme="dark"] .codehilite .kt { color: #FF7B72 } /* Keyword.Type */
[data-theme="dark"] .codehilite .ld { color: #79C0FF } /* Literal.Date */
[data-theme="dark"] .codehilite .m { color: #A5D6FF } /* Literal.Number */
[data-theme="dark"] .codehilite .s { color: #A5D6FF } /* Literal.String */
[data-theme="dark"] .codehilite .na { color: #E6EDF3 } /* Name.Attribute */
[data-theme="dark"] .codehilite .nb { color: #E6EDF3 } /* Name.Builtin */
[data-theme="dark"] .codehilite .nc { color: #F0883E; font-weight: bold } /* Name.Class */
[data-theme="dark"] .codehilite .no { color: #79C0FF; font-weight: bold } /* Name.Constant */
[data-theme="dark"] .codehilite .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */
[data-theme="dark"] .codehilite .ni { color: #FFA657 } /* Name.Entity */
[data-theme="dark"] .codehilite .ne { color: #F0883E; font-weight: bold } /* Name.Exception */
[data-theme="dark"] .codehilite .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */
[data-theme="dark"] .codehilite .nl { color: #79C0FF; font-weight: bold } /* Name.Label */
[data-theme="dark"] .codehilite .nn { color: #FF7B72 } /* Name.Namespace */
[data-theme="dark"] .codehilite .nx { color: #E6EDF3 } /* Name.Other */
[data-theme="dark"] .codehilite .py { color: #79C0FF } /* Name.Property */
[data-theme="dark"] .codehilite .nt { color: #7EE787 } /* Name.Tag */
[data-theme="dark"] .codehilite .nv { color: #79C0FF } /* Name.Variable */
[data-theme="dark"] .codehilite .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */
[data-theme="dark"] .codehilite .pm { color: #E6EDF3 } /* Punctuation.Marker */
[data-theme="dark"] .codehilite .w { color: #6E7681 } /* Text.Whitespace */
[data-theme="dark"] .codehilite .mb { color: #A5D6FF } /* Literal.Number.Bin */
[data-theme="dark"] .codehilite .mf { color: #A5D6FF } /* Literal.Number.Float */
[data-theme="dark"] .codehilite .mh { color: #A5D6FF } /* Literal.Number.Hex */
[data-theme="dark"] .codehilite .mi { color: #A5D6FF } /* Literal.Number.Integer */
[data-theme="dark"] .codehilite .mo { color: #A5D6FF } /* Literal.Number.Oct */
[data-theme="dark"] .codehilite .sa { color: #79C0FF } /* Literal.String.Affix */
[data-theme="dark"] .codehilite .sb { color: #A5D6FF } /* Literal.String.Backtick */
[data-theme="dark"] .codehilite .sc { color: #A5D6FF } /* Literal.String.Char */
[data-theme="dark"] .codehilite .dl { color: #79C0FF } /* Literal.String.Delimiter */
[data-theme="dark"] .codehilite .sd { color: #A5D6FF } /* Literal.String.Doc */
[data-theme="dark"] .codehilite .s2 { color: #A5D6FF } /* Literal.String.Double */
[data-theme="dark"] .codehilite .se { color: #79C0FF } /* Literal.String.Escape */
[data-theme="dark"] .codehilite .sh { color: #79C0FF } /* Literal.String.Heredoc */
[data-theme="dark"] .codehilite .si { color: #A5D6FF } /* Literal.String.Interpol */
[data-theme="dark"] .codehilite .sx { color: #A5D6FF } /* Literal.String.Other */
[data-theme="dark"] .codehilite .sr { color: #79C0FF } /* Literal.String.Regex */
[data-theme="dark"] .codehilite .s1 { color: #A5D6FF } /* Literal.String.Single */
[data-theme="dark"] .codehilite .ss { color: #A5D6FF } /* Literal.String.Symbol */
[data-theme="dark"] .codehilite .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */
[data-theme="dark"] .codehilite .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */
[data-theme="dark"] .codehilite .vc { color: #79C0FF } /* Name.Variable.Class */
[data-theme="dark"] .codehilite .vg { color: #79C0FF } /* Name.Variable.Global */
[data-theme="dark"] .codehilite .vi { color: #79C0FF } /* Name.Variable.Instance */
[data-theme="dark"] .codehilite .vm { color: #79C0FF } /* Name.Variable.Magic */
[data-theme="dark"] .codehilite .il { color: #A5D6FF } /* Literal.Number.Integer.Long */