﻿:root{--gray-100: #f8f9fa;--gray-200: #e9ecef;--gray-500: #adb5bd;--color-link: #0055bb;--color-visited-link: #8440f1;--body-background: white;--body-font-color: rgb(74, 74, 74);--icon-filter: none;--topbar-bg: #0065bd;--topbar-text: #ffffff;--topbar-hover-bg: rgba(255, 255, 255, 0.1)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--gray-100: rgba(255, 255, 255, 0.1);--gray-200: rgba(255, 255, 255, 0.2);--gray-500: rgba(255, 255, 255, 0.5);--color-link: #84b2ff;--color-visited-link: #b88dff;--body-background: #343a40;--body-font-color: #e9ecef;--icon-filter: brightness(0) invert(1);--topbar-bg: #1a1a2e;--topbar-text: #ffffff;--topbar-hover-bg: rgba(255, 255, 255, 0.1)}}:root[data-theme=dark]{--gray-100: rgba(255, 255, 255, 0.1);--gray-200: rgba(255, 255, 255, 0.2);--gray-500: rgba(255, 255, 255, 0.5);--color-link: #84b2ff;--color-visited-link: #b88dff;--body-background: #343a40;--body-font-color: #e9ecef;--icon-filter: brightness(0) invert(1);--topbar-bg: #1a1a2e;--topbar-text: #ffffff;--topbar-hover-bg: rgba(255, 255, 255, 0.1)}*,*::before,*::after{box-sizing:border-box}html{line-height:1.15;-webkit-text-size-adjust:100%;font-size:16px;scroll-behavior:smooth;touch-action:manipulation;overflow-x:hidden}body{margin:0}h1,h2,h3,h4,h5,h6{margin-top:0}pre,code,kbd,samp{font-family:monospace,monospace;font-size:1em}b,strong{font-weight:bolder}img{display:block;max-width:100%;border-style:none}button,input,select,textarea{font:inherit;margin:0}button{appearance:none;text-transform:none}button::-moz-focus-inner{border-style:none;padding:0}summary{display:list-item;cursor:pointer}[hidden]{display:none}body{min-width:20rem;color:var(--body-font-color);background:var(--body-background);font-weight:normal;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:BlinkMacSystemFont,-apple-system,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Helvetica","Arial",sans-serif;display:flex;flex-direction:column;min-height:100vh}h1,h2,h3,h4,h5{font-weight:normal}a{text-decoration:none;color:var(--color-link)}:focus{outline-style:auto;outline-color:currentColor}@font-face{font-family:"Roboto";font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url("fonts/roboto-v19-latin-300italic.woff2") format("woff2")}@font-face{font-family:"Roboto";font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url("fonts/roboto-v19-latin-regular.woff2") format("woff2")}@font-face{font-family:"Roboto";font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url("fonts/roboto-v19-latin-700.woff2") format("woff2")}@font-face{font-family:"Roboto Mono";font-style:normal;font-weight:400;font-display:swap;src:local("Roboto Mono"),local("RobotoMono-Regular"),url("fonts/roboto-mono-v6-latin-regular.woff2") format("woff2")}code{font-family:"Roboto Mono",monospace}@media print{.course-menu,.course-footer,.course-toc{display:none}.course-header{display:block}main{display:block !important}}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.justify-between{justify-content:space-between}.align-center{align-items:center}.hidden{display:none}input.toggle{height:0;width:0;overflow:hidden;opacity:0;position:absolute}.container{width:100%;max-width:80rem;margin:0 auto;overflow-x:hidden}.course-page{min-width:0;flex-grow:1;padding:1rem;overflow-wrap:break-word}@media screen and (min-width: 80rem){.course-page{padding:.5rem 1rem 2rem}}.course-header{display:none;margin-bottom:1rem}.course-header label{line-height:0}.course-footer{padding-top:1rem;margin-top:2rem;font-size:.875rem}.course-footer img{height:1em;margin-inline-end:.5rem}.course-footer .flex-wrap{gap:1rem}.course-footer p{margin:0 0 .25rem;font-size:.75rem;opacity:.7}.course-menu{flex:0 0 16rem;font-size:.875rem}@media screen and (max-width: 1400px) and (min-width: 54rem){.course-menu{flex:0 0 12rem}}.course-menu-content{width:16rem;padding:1rem;padding-left:.5rem;padding-right:.5rem;position:sticky;top:0;height:100vh;overflow-x:hidden;overflow-y:auto}@media screen and (max-width: 1400px) and (min-width: 54rem){.course-menu-content{width:12rem}}.course-toc{flex:0 0 14rem;font-size:.75rem}@media screen and (max-width: 1400px) and (min-width: 54rem){.course-toc{flex:0 0 12rem}}.course-toc-content{width:14rem;padding:1rem;padding-left:.5rem;padding-right:.5rem;position:sticky;top:0;height:100vh;overflow-x:hidden;overflow-y:auto}@media screen and (max-width: 1400px) and (min-width: 54rem){.course-toc-content{width:12rem}}.course-toc-mobile{display:none}@media screen and (max-width: 54rem){#menu-control,#toc-control{display:inline}.course-toc{display:none}.course-header{display:block}.course-menu,.course-toc-mobile{display:block;position:fixed;top:0;bottom:0;z-index:5;visibility:hidden;background:var(--body-background);overflow-y:auto;padding-top:2.75rem;transition:transform .2s ease-in-out,visibility .2s ease-in-out}.course-menu .course-menu-content,.course-toc-mobile .course-toc-mobile-content{position:static;width:100%;height:auto;padding:1rem}.course-menu{left:0;width:16rem;transform:translateX(-100%);font-size:16px}.course-toc-mobile{right:0;width:14rem;transform:translateX(100%);font-size:.75rem}#menu-control:checked~main .course-menu{visibility:visible;transform:translateX(0);box-shadow:2px 0 .5rem rgba(0,0,0,.1)}#toc-control:checked~main .course-toc-mobile{visibility:visible;transform:translateX(0);box-shadow:-2px 0 .5rem rgba(0,0,0,.1)}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:4;cursor:pointer}#menu-control:checked~main .sidebar-overlay-menu,#toc-control:checked~main .sidebar-overlay-toc{display:block}}.markdown{max-width:120ch;line-height:1.5;letter-spacing:-.01em}.markdown>:first-child{margin-top:.75rem}.markdown p{margin-bottom:.75em}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:600;line-height:1.25;margin-top:1.5em;margin-bottom:.5em;letter-spacing:-.015em}.markdown h1 a.anchor,.markdown h2 a.anchor,.markdown h3 a.anchor,.markdown h4 a.anchor,.markdown h5 a.anchor,.markdown h6 a.anchor{opacity:0;font-size:.75em;vertical-align:middle;text-decoration:none;padding-left:.5em}.markdown h1:hover a.anchor,.markdown h1 a.anchor:focus,.markdown h2:hover a.anchor,.markdown h2 a.anchor:focus,.markdown h3:hover a.anchor,.markdown h3 a.anchor:focus,.markdown h4:hover a.anchor,.markdown h4 a.anchor:focus,.markdown h5:hover a.anchor,.markdown h5 a.anchor:focus,.markdown h6:hover a.anchor,.markdown h6 a.anchor:focus{opacity:1}.markdown h1:target a.anchor,.markdown h2:target a.anchor,.markdown h3:target a.anchor,.markdown h4:target a.anchor,.markdown h5:target a.anchor,.markdown h6:target a.anchor{opacity:.5}.markdown h1{font-size:1.5rem;letter-spacing:-.02em;margin-top:1.75em}.markdown h2{font-size:1.25rem}.markdown h3{font-size:1.1rem;margin-top:1.25em}.markdown h4{font-size:1rem}.markdown h5{font-size:.875rem}.markdown h6{font-size:.75rem}.markdown b,.markdown strong{font-weight:bolder}.markdown a{text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown a:visited{color:var(--color-visited-link)}.markdown img{max-width:100%}.markdown code{padding:0 .25rem;background:var(--gray-200);border-radius:.25rem;font-size:.875em}.markdown pre{padding:1rem;background:var(--gray-100);border-radius:.25rem;overflow-x:auto}.markdown pre code{padding:0;background:none}.markdown blockquote{margin:1rem 0;padding:.5rem 1rem .5rem .75rem;border-inline-start:.25rem solid var(--gray-200);border-radius:.25rem;font-style:italic}.markdown blockquote :first-child{margin-top:0}.markdown blockquote :last-child{margin-bottom:0}.markdown blockquote.course-hint{font-style:normal;overflow-wrap:break-word}.markdown blockquote.course-hint.warning p:first-child strong:first-child{color:#fd6;display:block;margin-bottom:.5rem}.markdown table{overflow:auto;display:block;border-spacing:0;border-collapse:collapse;margin:1rem 0}.markdown table tr th,.markdown table tr td{padding:.4rem .75rem;border:1px solid var(--gray-200)}.markdown table thead tr{background:var(--gray-100)}.markdown table thead tr th{font-weight:600;border-bottom-width:2px}.markdown table tbody tr:nth-child(2n){background:var(--gray-100)}.markdown hr{height:1px;border:none;background:var(--gray-200);margin:1rem 0}.markdown ul,.markdown ol{margin:.5em 0;padding-inline-start:1.5em}.markdown ul li,.markdown ol li{margin:.2em 0}.markdown ul li p,.markdown ol li p{margin:0}.markdown ul ul,.markdown ol ol,.markdown ul ol,.markdown ol ul{margin:.15em 0}.markdown dl dt{font-weight:bolder;margin-top:1rem}.markdown dl dd{margin-inline-start:1rem;margin-bottom:1rem}.markdown details{padding:1rem;border:1px solid var(--gray-200);border-radius:.25rem}.markdown details summary{line-height:1;padding:1rem;margin:-1rem;cursor:pointer}.markdown details[open] summary{margin-bottom:0}.markdown figure{margin:1rem 0}.markdown figure figcaption p{margin-top:0}.markdown .course-hint.info{border-color:#6bf;background-color:rgba(102,187,255,.1)}.markdown .course-hint.note{border-color:#8b5cf6;background-color:rgba(139,92,246,.1)}.markdown .course-hint.warning{border-color:#fd6;background-color:rgba(255,221,102,.1)}.markdown .course-hint.danger{border-color:#f66;background-color:rgba(255,102,102,.1)}.course-search-modal{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:calc(2.75rem + 1rem) 1rem 1rem;overflow:auto}.course-search-modal.hidden{display:none}.course-search-modal__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.45)}.course-search-modal__dialog{position:relative;width:100%;max-width:56rem;background:var(--body-background);color:var(--body-font-color);border-radius:.25rem;box-shadow:0 12px 40px rgba(0,0,0,.25);z-index:1;display:flex;flex-direction:column;overflow:hidden}.course-search-modal__header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--gray-200)}.course-search-modal__header strong{font-size:1rem;font-weight:bolder}.course-search-modal__close{appearance:none;border:none;background:rgba(0,0,0,0);color:inherit;font-size:1.5rem;line-height:1;padding:.25rem .5rem;border-radius:.25rem;cursor:pointer}.course-search-modal__close:hover{background:var(--gray-100)}.course-search-modal__close:active{background:var(--gray-200)}.course-search-modal__body{padding:1rem}.course-search-modal__label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.course-search-modal__input{width:100%;padding:.5rem 1rem;border:1px solid var(--gray-200);border-radius:.25rem;background:var(--gray-100);color:var(--body-font-color);min-height:2.5rem}.course-search-modal__status{margin-top:.5rem;min-height:1.25rem;opacity:.8}.course-search-modal__results{margin:1rem 0 0 0;padding:0;list-style:none;max-height:min(55vh,32rem);overflow:auto;border:1px solid var(--gray-200);border-radius:.25rem;background:var(--body-background)}.course-search-modal__result{margin:0;padding:0;border-bottom:1px solid var(--gray-200)}.course-search-modal__result:last-child{border-bottom:none}.course-search-modal__result.active{background:var(--gray-100)}.course-search-modal__result-link{display:block;padding:.5rem 1rem;color:inherit;text-decoration:none}.course-search-modal__result-link:hover{background:var(--gray-100)}.course-search-modal__result-link:focus{outline-style:auto;outline-color:currentColor}.course-search-modal__result-title{font-size:.875rem;font-weight:bolder;margin-bottom:.25rem;overflow-wrap:anywhere;word-break:break-word}.course-search-modal__result-snippet{font-size:.75rem;line-height:1.35;opacity:.9;overflow-wrap:anywhere;word-break:break-word}.course-search-modal__result-snippet mark{background:rgba(255,220,0,.35);color:inherit;padding:0 .1em;border-radius:2px}.course-search-modal__footer{padding:.5rem 1rem;border-top:1px solid var(--gray-200);opacity:.75}.course-search-modal__footer small{display:inline}@media screen and (max-width: 54rem){.course-search-modal{padding:calc(2.75rem + .5rem) .5rem .5rem}.course-search-modal__dialog{max-width:100%}.course-search-modal__results{max-height:min(60vh,28rem)}}.topbar{height:2.75rem;background-color:var(--topbar-bg);color:var(--topbar-text);box-shadow:0 1px 3px rgba(0,0,0,.2);position:relative;z-index:10;overflow:hidden}.topbar-content{max-width:80rem;margin:0 auto;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 1rem}.topbar-left{display:flex;align-items:center;gap:.5rem}.topbar-logo{display:flex;align-items:center;height:2rem;gap:.125rem}.topbar-logo .topbar-symbol{height:100%;width:auto}.topbar-logo .topbar-fel-text{height:100%;width:auto}.topbar-brand{color:var(--topbar-text);font-weight:400;font-size:.875rem;line-height:1;white-space:nowrap;margin-left:.5rem}.topbar-brand strong{font-weight:700}.topbar-brand code{font-family:"Roboto Mono",monospace;font-size:.75rem;background:rgba(255,255,255,.15);padding:.1em .4em;border-radius:.25rem;margin-left:.25em}.topbar-brand:hover{color:var(--topbar-text);opacity:.9}.topbar-nav ul{display:flex;list-style:none;margin:0;padding:0;gap:.25rem}.topbar-nav li{margin:0;display:flex;align-items:center}.topbar-nav a{display:flex;align-items:center;gap:.25rem;color:var(--topbar-text);padding:.25rem .5rem;border-radius:.25rem;font-size:.875rem;transition:background-color .15s ease}.topbar-nav a:hover{background-color:var(--topbar-hover-bg);color:var(--topbar-text)}.topbar-nav a svg{flex-shrink:0}@media screen and (max-width: 54rem){.topbar-nav a span{display:none}.topbar-nav a,.topbar-nav button{padding:.5rem}.topbar-nav svg{width:18px;height:18px}.topbar-subject-name{display:none}}@media screen and (max-width: 400px){.topbar-subject-code{display:none}}aside nav ul{padding:0;margin:0;list-style:none}aside nav ul li{margin:0;position:relative}.course-menu nav ul>li{margin:0}.course-menu nav a,.course-menu nav label{display:block;padding:.5em .75em;color:var(--body-font-color);font-size:.75rem;text-decoration:none;word-wrap:break-word;cursor:pointer}.course-menu nav a:hover,.course-menu nav label:hover{opacity:.7}.course-menu nav a.active{color:var(--color-link);font-weight:bold}.course-menu input.toggle+label+ul{display:none}.course-menu input.toggle:checked+label+ul{display:block}.course-menu input.toggle+label::after{content:"▸";float:right}.course-menu input.toggle:checked+label::after{content:"▾"}.course-menu nav ul ul{padding-inline-start:1rem}.course-toc nav a,.course-toc-mobile nav a{display:block;padding:.3em .75em;font-size:.75rem;line-height:1.25;color:inherit;text-decoration:none}.course-toc nav a:hover,.course-toc-mobile nav a:hover{text-decoration:underline}.course-toc nav>ul>li:first-child,.course-toc-mobile nav>ul>li:first-child{margin-top:0}.course-toc nav ul ul,.course-toc-mobile nav ul ul{padding-inline-start:1rem}.course-toc img,.course-toc-mobile img{height:1em}.course-icon{filter:var(--icon-filter)}.markdown pre{font-size:.875rem;line-height:1.5;tab-size:4}.code-block-wrapper{position:relative}.copy-button{position:absolute;top:.5rem;right:.5rem;padding:.25rem .5rem;background:var(--gray-200);border:1px solid var(--gray-200);border-radius:.25rem;cursor:pointer;font-size:.75rem;color:var(--body-font-color);opacity:0;transition:opacity .2s ease;z-index:1}.copy-button:hover{background:var(--gray-500)}.copy-button.copied{background:#4caf50;color:#fff;border-color:#4caf50}.code-block-wrapper:hover .copy-button{opacity:1}.markdown pre:not([data-lang]){background-color:var(--gray-100) !important;color:inherit !important}.markdown pre:not([data-lang]) code{background:none;color:inherit}.markdown pre:not([data-lang]) span{color:inherit !important}.topbar-button,.theme-toggle{background:none;border:none;color:var(--topbar-text);cursor:pointer;padding:.25rem .5rem;border-radius:.25rem;display:flex;align-items:center;transition:background-color .15s ease}.topbar-button:hover,.theme-toggle:hover{background-color:var(--topbar-hover-bg)}.theme-toggle .sun-icon,.theme-toggle .moon-icon{display:none}:root[data-theme=dark] .theme-toggle .auto-icon{display:none}:root[data-theme=dark] .theme-toggle .sun-icon{display:block}:root[data-theme=light] .theme-toggle .auto-icon{display:none}:root[data-theme=light] .theme-toggle .moon-icon{display:block}:root[data-theme=light] pre{background:#fafafa !important}:root[data-theme=dark] pre{background:#2b303b !important}