.entry-home-trigger,.entry-selector-dialog__close{width:2.4rem;height:2.4rem;color:var(--ink);border:1px solid var(--border);background:0 0;border-radius:3px;place-items:center;padding:0;display:inline-grid}.entry-home-trigger{font-size:1.08rem}.entry-home-trigger:hover,.entry-selector-dialog__close:hover{color:var(--accent-strong);background:var(--interactive-hover);border-color:var(--border-strong)}.entry-selector-dialog{width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--ink);background:color-mix(in srgb, var(--paper) 64%, transparent);opacity:0;border:0;place-items:center;margin:0;padding:1rem;transition:opacity .18s,background-color .18s;display:grid;inset:0;overflow:hidden}.entry-selector-dialog:not([open]){display:none}.entry-selector-dialog::backdrop{backdrop-filter:blur(10px);background:#07110d9e}.entry-selector-dialog[data-state=open]{opacity:1}.entry-selector-dialog__panel{width:min(82rem,100%);height:min(45rem,100%);color:var(--ink);background:var(--paper);border:1px solid var(--border-strong);opacity:0;grid-template-rows:auto minmax(0,1fr);transition:opacity .18s,transform .18s;display:grid;overflow:hidden;transform:translateY(1rem)scale(.985);box-shadow:0 2rem 6rem #00000057}.entry-selector-dialog[data-state=open] .entry-selector-dialog__panel{opacity:1;transform:translateY(0)scale(1)}.entry-selector-dialog__header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-height:4rem;padding:.7rem 1rem .7rem 1.4rem;display:flex}.entry-selector-dialog__header p{color:var(--ink-soft);font-family:var(--font-code);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.65rem;font-weight:720}.entry-selector-dialog__close{font-size:1rem}.entry-selector-dialog__body{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid;overflow:auto}.entry-selector-dialog .entry-intro{padding:clamp(2.2rem,5vh,3.8rem) clamp(1.5rem,4vw,4rem) 1.8rem}.entry-selector-dialog .entry-intro h1{margin-top:.9rem;font-size:clamp(2.7rem,4.6vw,4.7rem)}.entry-selector-dialog .entry-intro__summary{margin-top:1rem;font-size:.98rem}.entry-selector-dialog .entry-choice{align-content:center;gap:1rem 0;padding:clamp(2.5rem,6vh,4.5rem) clamp(1.5rem,4vw,4rem)}.entry-selector-dialog .entry-choice__title{padding-left:clamp(.5rem,1.5vw,1.4rem);font-size:clamp(3.2rem,6vw,6rem)}body.entry-selector-is-open{overflow:hidden}@media (width<=760px){.entry-selector-dialog{padding:.5rem}.entry-selector-dialog__panel{height:100%}.entry-selector-dialog__body{grid-template-rows:auto auto}.entry-selector-dialog .entry-intro{padding:2rem 1rem 1.6rem}.entry-selector-dialog .entry-intro h1{max-width:10ch;font-size:clamp(2.55rem,12vw,3.7rem)}.entry-selector-dialog .entry-options{border-top:1px solid var(--border-strong);grid-template-columns:1fr}.entry-selector-dialog .entry-choice{min-height:12rem;padding:1.8rem 1rem}.entry-selector-dialog .entry-choice:first-child{border-right:0;border-bottom:1px solid var(--border-strong)}.entry-selector-dialog .entry-choice__title{font-size:clamp(2.9rem,15vw,4.3rem)}}@media (prefers-reduced-motion:reduce){.entry-selector-dialog,.entry-selector-dialog__panel{transition:none}}.course-article,.course-overview{font-family:var(--font-content);font-size:1.04rem;line-height:1.72}.course-article__header,.course-overview__header{border-bottom:1px solid var(--border);margin-bottom:2.2rem;padding-bottom:1.25rem}.course-article__kicker,.course-overview__kicker{color:var(--accent);font-family:var(--font-interface);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .45rem;font-size:.76rem;font-weight:760}.course-article h1,.course-overview h1{max-width:22ch;font-family:var(--font-content);letter-spacing:-.025em;margin:0;font-size:clamp(2.1rem,4.5vw,3.35rem);font-weight:620;line-height:1.08}.course-article__lead,.course-overview__lead{max-width:64ch;color:var(--ink-soft);margin:1.1rem 0 0;font-size:1.12rem;line-height:1.62}.course-article p,.course-article li,.course-overview p,.course-overview li{max-width:74ch}.course-article p,.course-overview p{margin:.75rem 0 1rem}.course-article ul,.course-article ol,.course-overview ul,.course-overview ol{padding-left:1.4rem}.course-article li+li,.course-overview li+li{margin-top:.32rem}.content-section-heading{max-width:31ch;scroll-margin-top:calc(var(--header-height) + 1.2rem);color:var(--ink);font-family:var(--font-content);align-items:baseline;gap:.5rem;font-weight:620;line-height:1.2;display:flex}h2.content-section-heading{letter-spacing:-.012em;margin:3.4rem 0 1.2rem;font-size:clamp(1.65rem,3vw,2.15rem)}h3.content-section-heading{margin:2.1rem 0 .8rem;font-size:1.32rem}.heading-anchor{opacity:0;color:var(--accent);font-family:var(--font-interface);font-size:.75em;text-decoration:none}.content-section-heading:hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.callout{background:var(--surface-muted);border:1px solid var(--border);border-left:4px solid var(--accent);break-inside:avoid;max-width:74ch;margin:1.4rem 0;padding:.85rem 1rem .9rem}.callout--warning{border-left-color:var(--warning)}.callout--error{border-left-color:var(--error)}.callout--definition{background:var(--surface);border-left-color:var(--ink-soft)}.callout--practice{border-left-color:var(--practice-accent)}.callout__label{color:var(--ink-soft);font-family:var(--font-interface);letter-spacing:.09em;text-transform:uppercase;margin:0 0 .3rem;font-size:.7rem;font-weight:790}.callout__body>:first-child{margin-top:0}.callout__body>:last-child{margin-bottom:0}.table-scroll{border:1px solid var(--border);scrollbar-width:thin;max-width:100%;margin:1.4rem 0 1.8rem;overflow-x:auto}.table-scroll table{border-collapse:collapse;width:100%;min-width:42rem;font-family:var(--font-interface);font-size:.78rem;line-height:1.45}.table-scroll th,.table-scroll td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);text-align:left;vertical-align:top;padding:.65rem .7rem}.table-scroll th{color:var(--ink);background:var(--surface-muted);font-weight:760}.table-scroll tr:last-child td{border-bottom:0}.table-scroll th:last-child,.table-scroll td:last-child{border-right:0}.http-message{background:var(--surface);border:1px solid var(--border-strong);break-inside:avoid;max-width:74ch;margin:1.5rem 0}.http-message figcaption{color:var(--ink-soft);background:var(--surface-muted);border-bottom:1px solid var(--border);font-family:var(--font-interface);justify-content:space-between;align-items:center;gap:1rem;padding:.48rem .7rem;font-size:.72rem;font-weight:680;display:flex}.http-message__kind{font-family:var(--font-code);text-transform:uppercase;font-size:.66rem}.http-message__content>:first-child,.code-frame pre{margin:0}.code-frame{max-width:100%;position:relative}.code-frame pre{max-width:100%;font-family:var(--font-code);scrollbar-width:thin;border-radius:0;padding:1.05rem 1rem 1.15rem;font-size:.82rem;line-height:1.55;overflow-x:auto;background:var(--code-surface)!important}html[data-theme=dark] .astro-code,html[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.copy-button{min-height:1.8rem;color:var(--ink-soft);background:var(--surface);border:1px solid var(--border-strong);font-family:var(--font-interface);border-radius:2px;padding:.2rem .45rem;font-size:.68rem;position:absolute;top:.55rem;right:.55rem}.sequence-diagram{background:var(--surface);border:1px solid var(--border-strong);break-inside:avoid;max-width:100%;margin:2rem 0;padding:1rem;overflow-x:auto}.sequence-diagram figcaption{font-family:var(--font-interface);margin-bottom:1rem;font-size:.8rem;font-weight:750}.sequence-diagram__flow{align-items:stretch;min-width:58rem;display:flex}.sequence-node{border:1px solid var(--border-strong);min-width:8.8rem;font-family:var(--font-interface);grid-template-columns:auto 1fr;align-content:center;column-gap:.45rem;padding:.75rem;display:grid}.sequence-node strong{color:var(--accent);grid-row:span 2}.sequence-node span{font-size:.78rem;font-weight:760}.sequence-node small{color:var(--ink-soft);font-size:.66rem}.sequence-arrow{min-width:4.5rem;color:var(--ink-soft);font-family:var(--font-interface);place-items:center;font-size:.62rem;display:grid}.sequence-arrow b{color:var(--ink);font-size:1.2rem}.concurrency-timeline{max-width:74ch;scroll-margin-top:calc(var(--header-height) + 1rem);background:var(--surface);border:1px solid var(--border-strong);break-inside:avoid;margin:2rem 0;padding:1rem}.concurrency-timeline figcaption{font-family:var(--font-interface);font-size:.8rem;font-weight:750}.concurrency-timeline__legend{color:var(--ink-soft);font-family:var(--font-interface);flex-wrap:wrap;gap:1rem;margin:.75rem 0 1.2rem;font-size:.68rem;display:flex}.concurrency-timeline__legend span{align-items:center;gap:.35rem;display:inline-flex}.concurrency-timeline__legend i{border:1px solid var(--border-strong);width:1.2rem;height:.55rem}.concurrency-timeline__case+.concurrency-timeline__case{border-top:1px solid var(--border);margin-top:1.4rem;padding-top:1.2rem}.concurrency-timeline__case header{font-family:var(--font-interface);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;display:flex}.concurrency-timeline__case header strong{font-size:.76rem}.concurrency-timeline__case header span{color:var(--ink-soft);font-size:.66rem}.concurrency-timeline__axis{color:var(--ink-soft);font-family:var(--font-interface);justify-content:space-between;margin:.65rem 0 .3rem 5.4rem;font-size:.58rem;display:flex}.concurrency-timeline__lane{grid-template-columns:4.7rem minmax(28rem,1fr);align-items:center;gap:.7rem;display:grid;overflow-x:auto}.concurrency-timeline__lane+.concurrency-timeline__lane{margin-top:.35rem}.concurrency-timeline__lane b{font-family:var(--font-interface);font-size:.66rem}.concurrency-timeline__track{min-width:28rem;min-height:2rem;display:flex}.concurrency-timeline__track span{flex:var(--size);border:1px solid var(--border-strong);min-width:0;font-family:var(--font-interface);text-align:center;place-items:center;padding:.3rem;font-size:.58rem;display:grid}.concurrency-timeline .is-work{color:var(--surface);background:var(--accent)}.concurrency-timeline .is-wait{color:var(--ink-soft);background:var(--surface-muted)}.concurrency-timeline .is-empty{background:0 0;border-color:#0000}.cross-reference{border-top:1px solid var(--border);border-bottom:1px solid var(--border);max-width:74ch;font-family:var(--font-interface);grid-template-columns:auto 1fr;gap:.8rem;margin:1.4rem 0;padding:.8rem 0;font-size:.8rem;display:grid}.cross-reference>span{color:var(--ink-soft);font-weight:720}.source-list{gap:.8rem;margin:1rem 0;padding:0;list-style:none;display:grid}.source-reference{border-top:1px solid var(--border);max-width:74ch;padding:.85rem 0}.source-reference>a{font-family:var(--font-interface);font-size:.88rem;font-weight:720}.source-reference p{color:var(--ink-soft);margin:.25rem 0 0;font-size:.9rem}.unit-pagination{border-top:1px solid var(--border-strong);font-family:var(--font-interface);grid-template-columns:1fr 1fr;gap:1rem;margin-top:4rem;padding-top:1.25rem;font-size:.78rem;display:grid}.unit-pagination>div{gap:.3rem;display:grid}.unit-pagination__next{text-align:right}.unit-pagination__label{color:var(--ink-soft);letter-spacing:.07em;text-transform:uppercase;font-size:.68rem;font-weight:730}.course-map{gap:1.1rem;margin:2rem 0;display:grid}.course-map__block{border-top:1px solid var(--border-strong);padding:1.1rem 0}.course-map__block h2{font-family:var(--font-content);margin:0;font-size:1.45rem;font-weight:620}.course-map__objective{color:var(--ink-soft)}.course-map__module{margin-top:1.2rem}.course-map__module h3{font-family:var(--font-interface);margin:0 0 .5rem;font-size:.82rem}.unit-list{border-top:1px solid var(--border);margin:0;padding:0;list-style:none}.unit-list li{border-bottom:1px solid var(--border);font-family:var(--font-interface);grid-template-columns:3rem minmax(0,1fr) auto;align-items:baseline;gap:.65rem;padding:.55rem 0;font-size:.8rem;display:grid}.unit-list__id{color:var(--ink-soft);font-family:var(--font-code)}.status-label{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;font-size:.65rem;font-weight:740}.status-label--available{color:var(--accent)}code:not(pre code){background:var(--surface-muted);border:1px solid var(--border);font-family:var(--font-code);border-radius:2px;padding:.08em .26em;font-size:.86em}@media (width<=620px){.course-article,.course-overview{font-size:1rem}.course-article h1,.course-overview h1{font-size:2.05rem}.heading-anchor{opacity:1}.unit-pagination{grid-template-columns:1fr}.unit-pagination__next{text-align:left}.unit-list li{grid-template-columns:2.7rem 1fr}.concurrency-timeline{padding:.8rem;overflow-x:auto}.status-label{grid-column:2}}html[data-surface=learning]{--site-width:92rem;--site-gutter:clamp(1rem, 2.5vw, 2rem);--font-display:var(--font-interface);--paper:#fbfaf7;--surface:#fff;--surface-muted:#f3f1ec;--ink:#202326;--ink-soft:#575b5f;--ink-faint:#77746e;--border:#d8d4cc;--border-strong:#aaa59b;--accent:#315f78;--accent-strong:#23495e;--accent-soft:#eaf1f4;--signal:#9b642b;--header-background:#fbfaf7f5;--interactive-hover:#f1f5f6;--header-height:4.1rem}html[data-surface=learning][data-theme=dark]{--paper:#111416;--surface:#181c1f;--surface-muted:#202529;--ink:#e8e6df;--ink-soft:#adb3b7;--ink-faint:#92999d;--border:#30363a;--border-strong:#4d565c;--accent:#80b8d2;--accent-strong:#a5cfe1;--accent-soft:#19313c;--signal:#d9a064;--header-background:#111416f2;--interactive-hover:#202a2f}html[data-surface=learning] body{background:var(--paper);font-family:var(--font-interface)}html[data-surface=learning] ::selection{color:var(--highlight-ink);background:var(--highlight-background)}html[data-surface=learning] .site-header{min-height:var(--header-height);background:var(--header-background);border-bottom:1px solid var(--border);backdrop-filter:blur(14px)saturate(115%);padding:0;display:block}html[data-surface=learning] .site-header__inner{width:min(calc(100% - 2rem), var(--site-width));min-height:var(--header-height);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(.8rem,2vw,2rem);margin-inline:auto;display:grid}html[data-surface=learning] .site-tools{align-items:center;gap:.35rem;display:flex}html[data-surface=learning] .site-tools .theme-toggle,html[data-surface=learning] .site-tools .search-trigger{color:var(--ink);background:var(--surface);border-color:var(--border)}html[data-surface=learning] .site-tools .search-trigger{min-width:8.25rem}html[data-surface=learning] .site-tools .theme-toggle:hover,html[data-surface=learning] .site-tools .search-trigger:hover{background:var(--interactive-hover);border-color:var(--border-strong)}html[data-surface=learning] .search-dialog{top:calc(var(--header-height) + .5rem)}html[data-surface=learning] .site-footer{color:var(--ink-soft);background:var(--surface);border-top:1px solid var(--border);text-align:left;padding:0}html[data-surface=learning] .site-footer__inner{width:min(calc(100% - 2rem), var(--site-width));justify-content:space-between;gap:2rem;margin-inline:auto;padding:1.15rem 0;display:flex}html[data-surface=learning] .site-footer__inner p{margin:0;font-size:.72rem}html[data-surface=learning] .shell{width:min(calc(100% - 2rem), var(--site-width));padding-inline:var(--site-gutter)}@media (width<=800px){html[data-surface=learning]{--header-height:4.1rem}html[data-surface=learning] .site-header__inner{grid-template-columns:1fr auto;gap:.6rem;width:calc(100% - 1rem)}html[data-surface=learning] .site-tools .search-trigger{min-width:auto}html[data-surface=learning] .search-dialog{top:calc(var(--header-height) + .35rem)}html[data-surface=learning] .site-footer__inner{gap:.3rem;width:calc(100% - 2rem);display:grid}html[data-surface=learning] .shell{width:100%;padding-inline:1rem}}@media (prefers-contrast:more){html[data-surface=learning] .site-header,html[data-surface=learning] .site-header .site-nav a[aria-current=page],html[data-surface=learning] .site-tools .theme-toggle,html[data-surface=learning] .site-tools .search-trigger{border-color:currentColor}}@media print{@page{size:A4;margin:18mm 17mm 20mm}:root{--paper:#fff;--surface:#fff;--surface-muted:#f4f4f4;--ink:#000;--ink-soft:#333;--border:#b8b8b8;--border-strong:#777;--accent:#000}html,body{background:#fff;font-size:10.5pt}.site-header,.site-footer,.course-sidebar,.course-toc,.practice-sidebar,.practice-toc,.practice-filter,.practice-response__state button,.breadcrumbs,.unit-pagination,.copy-button,.skip-link{display:none!important}.course-shell,.course-shell--without-toc,.practice-shell,.practice-shell--without-toc{max-width:none;padding:0;display:block}.course-main,.practice-main{padding:0}.course-article,.course-overview,.practice-page{font-size:10.5pt;line-height:1.5}.practice-card,.practice-series,.practice-case-grid>section{break-inside:avoid}.practice-card__body>summary,.practice-series__body>summary,.practice-hints{display:none}.practice-card__body>.practice-card__content,.practice-series__body>.practice-card__content{display:block!important}.course-article h1{max-width:none;font-size:24pt}.section-heading,.content-section-heading{break-after:avoid;max-width:none}.heading-anchor{display:none}.callout,.http-message,.sequence-diagram,.code-frame,.table-scroll,table,pre{break-inside:avoid}.table-scroll,.sequence-diagram,.code-frame pre{overflow:visible}.sequence-diagram__flow{transform-origin:0 0;width:126%;min-width:0;margin-bottom:-.7rem;transform:scale(.79)}.source-reference a[href^=http]:after{content:" (" attr(href) ")";color:#333;font-family:var(--font-code);overflow-wrap:anywhere;font-size:7.5pt}}
