@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--fg: #dedee3;--muted: #a5a5af;--bg: #18181b;--card: #202024;--raised: #28282d;--accent: #e4e4e8;--accent-fg: #202024;--border: #393940;--selected: linear-gradient(160deg, #38383f 0%, #2c2c32 100%);--selected-edge: rgba(222, 222, 227, .1);--ok: #78bd91;--err: #ee9292;--chip-bg: #2b2b30;--chip-fg: #c5c5cd;--ok-bg: #13231a;--ok-border: #2b4b35;--err-bg: #2b1719;--err-border: #563036;--accent-ring: rgba(196, 196, 205, .15);--code-bg: #1d1d21;--scrollbar: rgba(222, 222, 227, .18);--scrollbar-hover: rgba(222, 222, 227, .36);--chrome: rgba(0, 0, 0, .52);--glass: rgba(0, 0, 0, .25);--popover: rgba(36, 36, 41, .94);--err-fg: #fff;--overlay: rgba(0, 0, 0, .35);--shadow-rgb: 0 0 0;--hover-ring: rgba(238, 238, 239, .12);--ease: cubic-bezier(.2, .7, .2, 1);--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ui-size: 15px;--ui-line-height: 1.55;--heading-weight: 700;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, "Courier New", monospace;--brand-weight: 600;--brand-letter-spacing: -.025em;--font-sans: -apple-system, BlinkMacSystemFont, "Inter Variable", "Segoe UI", Roboto, sans-serif;--surface: #1c1c20;--header-bg: rgba(24, 24, 27, .72);--line: rgba(222, 222, 227, .08);--line-strong: rgba(222, 222, 227, .16);--sheen: rgba(238, 238, 242, .09);--silver: linear-gradient(180deg, #ffffff 0%, #e6e6ea 38%, #a9a9b3 100%);--silver-edge: linear-gradient(180deg, rgba(255, 255, 255, .22), rgba(255, 255, 255, .04));--aurora-a: rgba(176, 184, 214, .13);--aurora-b: rgba(214, 214, 224, .08);--aurora-c: rgba(120, 132, 170, .1);--grain: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='160'%20height='160'%20viewBox='0%200%20160%20160'%3e%3c!--%20Static,%20seamless%20monochrome%20grain.%20Only%20the%20background%20is%20textured.%20--%3e%3cfilter%20id='grain'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%20color-interpolation-filters='sRGB'%3e%3cfeTurbulence%20type='fractalNoise'%20baseFrequency='0.85'%20numOctaves='3'%20seed='19'%20stitchTiles='stitch'/%3e%3cfeColorMatrix%20type='saturate'%20values='0'/%3e%3cfeComponentTransfer%3e%3cfeFuncA%20type='linear'%20slope='0.12'/%3e%3c/feComponentTransfer%3e%3c/filter%3e%3crect%20width='160'%20height='160'%20filter='url(%23grain)'/%3e%3c/svg%3e");--grain-size: 160px 160px;--sparkle: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3e%3c!--%20The%20four-point%20star%20of%20the%20OpenCourse%20mark.%20Used%20as%20a%20mask,%20so%20only%20its%20shape%20matters.%20--%3e%3cpath%20d='M12%200C12.7%206.1%2017.9%2011.3%2024%2012C17.9%2012.7%2012.7%2017.9%2012%2024C11.3%2017.9%206.1%2012.7%200%2012C6.1%2011.3%2011.3%206.1%2012%200Z'%20fill='%23fff'/%3e%3c/svg%3e");--chevron: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3e%3cpath%20d='m2%204%204%204%204-4'%20stroke='%23dedee3'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e");--radius-xs: 4px;--radius-sm: 5px;--radius: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-xl: 18px;--radius-pill: 999px;--shadow-sm: 0 1px 3px rgb(var(--shadow-rgb) / .2);--shadow-md: 0 6px 20px rgb(var(--shadow-rgb) / .25);--shadow-lg: 0 12px 40px rgb(var(--shadow-rgb) / .35);--shadow-xl: 0 18px 48px rgb(var(--shadow-rgb) / .28), 0 40px 120px rgb(var(--shadow-rgb) / .35);--dur-fast: .14s;--dur: .2s;--dur-slow: .38s;--spring: cubic-bezier(.34, 1.4, .64, 1);--text-xs: .75rem;--text-sm: .875rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: clamp(1.6rem, 1.2rem + 1.4vw, 2.1rem);--text-3xl: clamp(2rem, 1.4rem + 2.4vw, 3rem);--text-display: clamp(2.5rem, 1.5rem + 4.6vw, 4.75rem);--content: 1180px;--gutter: clamp(16px, 4vw, 32px);color-scheme:dark}@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){:root{--chrome: #1c1c20;--glass: #18181b;--popover: #242429;--header-bg: #1c1c20;--grain: none}}@media(prefers-contrast:more){:root{--border: #74747c;--muted: #c5c5cd;--selected-edge: rgba(222, 222, 227, .55);--line: rgba(222, 222, 227, .4);--line-strong: rgba(222, 222, 227, .6)}}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--ui-size);line-height:var(--ui-line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;background:var(--bg)}h1,h2,h3,h4,h5,h6{font-weight:var(--heading-weight);line-height:1.2;letter-spacing:-.015em;margin:0}p{margin:0}img,svg,video{max-width:100%}img{display:block}::selection{background:#dedee338;color:#fff}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{min-width:32px;min-height:32px;background-color:var(--scrollbar);background-clip:content-box;border:3px solid transparent;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-hover);border-width:2px}::-webkit-scrollbar-thumb:active{background-color:var(--accent);border-width:2px}code,kbd,pre,samp{font-family:var(--font-mono)}.oc-wrap{width:100%;max-width:var(--content);margin:0 auto;padding:0 var(--gutter)}.oc-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.oc-brand{display:inline-flex;align-items:center;gap:.5rem;color:var(--fg);font-weight:var(--brand-weight);letter-spacing:var(--brand-letter-spacing);font-size:15px;white-space:nowrap}.oc-brand img{width:25px;height:25px;flex:none;object-fit:contain}.oc-silver-text{background:var(--silver);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.oc-eyebrow{display:inline-block;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:600;color:var(--muted)}.oc-btn{--btn-bg: var(--accent);--btn-fg: var(--accent-fg);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:var(--btn-bg);color:var(--btn-fg);border:1px solid transparent;border-radius:var(--radius-sm);padding:.45rem .9rem;font:inherit;font-weight:600;line-height:1.3;cursor:pointer;white-space:nowrap;text-decoration:none;user-select:none;transition:background-color var(--dur-fast) ease,color var(--dur-fast) ease,border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) var(--ease),opacity var(--dur-fast) ease}.oc-btn:hover:not(:disabled):not([aria-disabled=true]){box-shadow:inset 0 0 0 1px var(--hover-ring),0 6px 22px -6px #e4e4e859}.oc-btn:active:not(:disabled):not([aria-disabled=true]){transform:translateY(1px)}.oc-btn:disabled,.oc-btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.oc-btn svg{width:1.05em;height:1.05em;flex:none}.oc-btn.secondary{--btn-bg: var(--chip-bg);--btn-fg: var(--fg);border-color:var(--border)}.oc-btn.secondary:hover:not(:disabled){border-color:var(--line-strong);background:var(--raised);box-shadow:none}.oc-btn.ghost{--btn-bg: transparent;--btn-fg: var(--fg);font-weight:500}.oc-btn.ghost:hover:not(:disabled){background:var(--sheen);box-shadow:none}.oc-btn.danger{--btn-bg: var(--err-bg);--btn-fg: var(--err);border-color:var(--err-border)}.oc-btn.danger:hover:not(:disabled){--btn-bg: #3a1d20;box-shadow:none}.oc-btn.danger-solid{--btn-bg: #c94a4a;--btn-fg: var(--err-fg)}.oc-btn.sm{padding:.3rem .65rem;font-size:.82rem}.oc-btn.lg{padding:.75rem 1.35rem;font-size:1rem;border-radius:var(--radius)}.oc-btn.xl{padding:.95rem 1.7rem;font-size:1.05rem;border-radius:var(--radius-md)}.oc-btn.icon{padding:.45rem;aspect-ratio:1}.oc-btn.shine{overflow:hidden;background:var(--silver);border-color:#ffffff59}.oc-btn.shine:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.75) 50%,transparent 70%);transform:translate(-120%)}.oc-btn.shine:hover:after{animation:oc-shine .9s var(--ease)}.oc-input,.oc-select,.oc-textarea{width:100%;background:var(--card);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.55rem .75rem;font:inherit;line-height:1.4;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,background-color var(--dur-fast) ease}.oc-input::placeholder,.oc-textarea::placeholder{color:#75757f}.oc-input:hover,.oc-select:hover,.oc-textarea:hover{border-color:#4a4a52}.oc-input:focus,.oc-select:focus,.oc-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.oc-input[aria-invalid=true]{border-color:var(--err-border)}.oc-select{appearance:none;cursor:pointer;background-image:var(--chevron);background-repeat:no-repeat;background-position:right 12px center;background-size:12px 12px;padding-right:36px}.oc-textarea{resize:vertical;min-height:5rem}.oc-field{display:flex;flex-direction:column;gap:.4rem}.oc-label{font-size:var(--text-sm);font-weight:600;color:var(--fg)}.oc-hint{font-size:.8rem;color:var(--muted)}.oc-error-text{font-size:.82rem;color:var(--err)}.oc-chip{display:inline-flex;align-items:center;gap:.4rem;background:var(--chip-bg);color:var(--chip-fg);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.22rem .7rem;font-size:.8rem;line-height:1.4;white-space:nowrap;cursor:pointer;text-decoration:none;transition:background-color var(--dur-fast) ease,color var(--dur-fast) ease,border-color var(--dur-fast) ease,transform var(--dur-fast) var(--ease)}.oc-chip:hover{border-color:var(--line-strong);color:var(--fg)}.oc-chip:active{transform:scale(.97)}.oc-chip .count{color:var(--muted);font-size:.72rem;font-variant-numeric:tabular-nums}.oc-chip.on,.oc-chip[aria-pressed=true],.oc-chip[aria-current=true]{background:var(--selected);color:var(--fg);border-color:transparent;box-shadow:inset 0 0 0 1px var(--selected-edge)}.oc-tag{display:inline-flex;align-items:center;border-radius:var(--radius-pill);background:var(--chip-bg);color:var(--chip-fg);padding:.1rem .55rem;font-size:.74rem}.oc-pill{display:inline-flex;align-items:center;gap:.35rem;border-radius:var(--radius-pill);padding:.12rem .55rem;font-size:.72rem;font-weight:600;letter-spacing:.01em;border:1px solid var(--border);color:var(--chip-fg);background:var(--chip-bg);white-space:nowrap}.oc-pill.ok{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-border)}.oc-pill.err{color:var(--err);background:var(--err-bg);border-color:var(--err-border)}.oc-pill.silver{color:var(--accent-fg);background:var(--silver);border-color:transparent}.oc-pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.oc-segment{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg)}.oc-segment button,.oc-segment a{border:0;background:transparent;color:var(--muted);font:inherit;font-size:.8rem;font-weight:600;padding:.3rem .8rem;border-radius:6px;cursor:pointer;white-space:nowrap;transition:background-color var(--dur-fast) ease,color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.oc-segment button:hover,.oc-segment a:hover{color:var(--fg)}.oc-segment [aria-pressed=true],.oc-segment [aria-selected=true],.oc-segment [aria-current=page]{background:var(--bg);color:var(--fg);box-shadow:var(--shadow-sm)}.oc-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.4em;font:600 .7rem/1.5 var(--font-sans);color:var(--muted);border:1px solid var(--border);border-bottom-width:2px;border-radius:var(--radius-xs);padding:0 .3rem}.oc-card{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md)}.oc-panel{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem 1.4rem}.oc-glass{background-color:var(--header-bg);background-image:var(--grain);background-size:var(--grain-size);-webkit-backdrop-filter:blur(20px) saturate(140%);backdrop-filter:blur(20px) saturate(140%)}.oc-popover{background-color:var(--popover);background-image:var(--grain);background-size:var(--grain-size);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.oc-edge:before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:var(--silver-edge);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}.oc-glow{isolation:isolate}.oc-glow:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:2;background:radial-gradient(420px circle at var(--mx, 50%) var(--my, -40%),var(--sheen),transparent 45%);opacity:0;transition:opacity var(--dur) ease}.oc-glow:hover:after{opacity:1}.oc-sparkle{display:inline-block;width:1em;height:1em;flex:none;background:var(--silver);-webkit-mask:var(--sparkle) center / contain no-repeat;mask:var(--sparkle) center / contain no-repeat}.oc-aurora{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.oc-aurora:before{content:"";position:absolute;inset:-30% -10% auto;height:140%;background:radial-gradient(42% 38% at 22% 28%,var(--aurora-a),transparent 70%),radial-gradient(36% 34% at 78% 18%,var(--aurora-b),transparent 70%),radial-gradient(50% 40% at 55% 75%,var(--aurora-c),transparent 72%);filter:blur(20px);animation:oc-aurora 24s ease-in-out infinite alternate}.oc-aurora:after{content:"";position:absolute;inset:0;background-image:var(--grain);background-size:var(--grain-size);opacity:.6;-webkit-mask:linear-gradient(to bottom,#000 40%,transparent);mask:linear-gradient(to bottom,#000 40%,transparent)}.oc-divider{height:1px;border:0;margin:0;background:linear-gradient(90deg,transparent,var(--line-strong),transparent)}.oc-skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--chip-bg) 0%,#34343a 45%,var(--chip-bg) 90%);background-size:300% 100%;animation:oc-shimmer 1.6s ease-in-out infinite}.oc-spinner{width:1.1em;height:1.1em;animation:oc-spin-star 1.4s var(--ease) infinite}.oc-prose{font-size:15.5px;line-height:1.7;color:var(--fg);overflow-wrap:anywhere}.oc-prose>*+*{margin-top:1em}.oc-prose h1{font-size:1.9rem;margin:0 0 1rem;letter-spacing:-.02em}.oc-prose h2{font-size:1.4rem;margin:2.4rem 0 .7rem;letter-spacing:-.015em}.oc-prose h3{font-size:1.12rem;margin:1.8rem 0 .5rem}.oc-prose h4,.oc-prose h5{font-size:1rem;margin:1.5rem 0 .4rem}.oc-prose h2+*,.oc-prose h3+*,.oc-prose h4+*{margin-top:.5em}.oc-prose a{color:var(--accent);text-decoration:underline;text-decoration-color:#e4e4e859;text-underline-offset:3px}.oc-prose a:hover{text-decoration-color:var(--accent)}.oc-prose strong{color:#f0f0f3}.oc-prose ul,.oc-prose ol{padding-left:1.3rem}.oc-prose li+li{margin-top:.3em}.oc-prose li>ul,.oc-prose li>ol{margin-top:.3em}.oc-prose code{font-size:.86em;background:var(--chip-bg);padding:.12em .38em;border-radius:var(--radius-xs);border:1px solid var(--line)}.oc-prose pre{background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius);padding:.95rem 1.1rem;overflow-x:auto;line-height:1.55}.oc-prose pre code{background:none;border:0;padding:0;font-size:.84rem}.oc-prose blockquote{margin:1rem 0;padding:.55rem 1rem;border-left:3px solid var(--accent);background:var(--chip-bg);border-radius:0 6px 6px 0;color:var(--chip-fg)}.oc-prose table{border-collapse:collapse;width:100%;display:block;overflow-x:auto;font-size:.9rem}.oc-prose th,.oc-prose td{border:1px solid var(--border);padding:.45rem .7rem;text-align:left;vertical-align:top}.oc-prose th{background:var(--chip-bg);font-weight:600}.oc-prose tr:nth-child(2n) td{background:#ffffff04}.oc-prose img{max-width:100%;border-radius:6px}.oc-prose hr{border:0;height:1px;background:var(--border);margin:2rem 0}@keyframes oc-fade{0%{opacity:0}}@keyframes oc-rise{0%{opacity:0;transform:translateY(14px)}}@keyframes oc-rise-sm{0%{opacity:0;transform:translateY(4px)}}@keyframes oc-pop{0%{opacity:0;transform:scale(.96)}}@keyframes oc-dialog{0%{opacity:0;transform:translateY(8px) scale(.97)}}@keyframes oc-toast{0%{opacity:0;transform:translateY(16px) scale(.98)}}@keyframes oc-twinkle{0%,to{opacity:.25;transform:scale(.6)}50%{opacity:1;transform:scale(1)}}@keyframes oc-aurora{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(3%,2%,0) scale(1.06)}to{transform:translate3d(-3%,-1%,0) scale(1.02)}}@keyframes oc-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes oc-shine{0%{transform:translate(-120%)}to{transform:translate(120%)}}@keyframes oc-spin-star{0%{transform:rotate(0) scale(.85)}50%{transform:rotate(90deg) scale(1)}to{transform:rotate(180deg) scale(.85)}}@keyframes oc-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes oc-pulse{0%,to{opacity:1}50%{opacity:.35}}.oc-enter{animation:oc-rise .52s var(--ease) both}.oc-enter-sm{animation:oc-rise-sm .22s var(--ease) both}.oc-fade-in{animation:oc-fade .26s var(--ease) both}.oc-stagger>*{animation:oc-rise .56s var(--ease) both}.oc-stagger>:nth-child(2){animation-delay:45ms}.oc-stagger>:nth-child(3){animation-delay:90ms}.oc-stagger>:nth-child(4){animation-delay:135ms}.oc-stagger>:nth-child(5){animation-delay:.18s}.oc-stagger>:nth-child(6){animation-delay:225ms}.oc-stagger>:nth-child(7){animation-delay:.27s}.oc-stagger>:nth-child(8){animation-delay:315ms}.oc-stagger>:nth-child(9){animation-delay:.36s}.oc-stagger>:nth-child(10){animation-delay:405ms}.oc-stagger>:nth-child(11){animation-delay:.45s}.oc-stagger>:nth-child(n+12){animation-delay:495ms}@supports (animation-timeline: view()){.oc-reveal{animation:oc-rise linear both;animation-timeline:view();animation-range:entry 0% entry 38%}}.oc-twinkle{animation:oc-twinkle 4.8s ease-in-out infinite}.oc-twinkle:nth-child(2n){animation-duration:6.2s;animation-delay:-1.4s}.oc-twinkle:nth-child(3n){animation-duration:5.4s;animation-delay:-3.1s}.oc-twinkle:nth-child(5n){animation-duration:7.1s;animation-delay:-2.2s}.oc-float{animation:oc-float 7s ease-in-out infinite}@view-transition{navigation:auto}::view-transition-old(root){animation:.16s ease both oc-vt-out}::view-transition-new(root){animation:.26s var(--ease) both oc-vt-in}@keyframes oc-vt-out{to{opacity:0}}@keyframes oc-vt-in{0%{opacity:0;transform:translateY(6px)}}::view-transition-group(*){animation-duration:.34s;animation-timing-function:var(--ease)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){.oc-glass,.oc-popover{-webkit-backdrop-filter:none;backdrop-filter:none}.oc-aurora:before{display:none}}body{overflow-x:hidden}.site{min-height:100vh;display:flex;flex-direction:column}.site-main{flex:1;outline:none}.muted{color:var(--muted)}.small{font-size:.82rem}.ok-text{color:var(--ok);display:inline-flex;align-items:center;gap:.3rem}.ok-text svg{width:14px;height:14px}.danger-text{color:var(--err)!important}code{font-size:.86em;background:var(--chip-bg);border:1px solid var(--line);border-radius:var(--radius-xs);padding:.08em .38em}.skip-link{position:absolute;left:12px;top:-48px;z-index:100;background:var(--accent);color:var(--accent-fg);padding:.5rem .9rem;border-radius:var(--radius-sm);font-weight:600;transition:top var(--dur) var(--ease)}.skip-link:focus{top:12px}.link-button{background:none;border:0;padding:0;color:var(--fg);font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}.link-button:hover{text-decoration-color:var(--fg)}.link-button svg{width:14px;height:14px}.site-header{position:sticky;top:0;z-index:40;border-bottom:1px solid var(--line);view-transition-name:site-header}.site-header-row{display:flex;align-items:center;gap:1.25rem;height:60px}.site-header-start{display:flex;align-items:center;gap:.85rem;min-width:0;flex:0 1 auto}.site-divider{width:1px;height:18px;background:var(--line-strong);flex:none}.site-server{color:var(--muted);font-size:.88rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px;transition:color var(--dur-fast) ease}.site-server:hover{color:var(--fg)}.site-nav{display:flex;align-items:center;gap:.15rem;margin-left:.5rem}.site-nav a{position:relative;padding:.35rem .7rem;border-radius:var(--radius-pill);color:var(--muted);font-size:.88rem;font-weight:500;transition:color var(--dur-fast) ease,background-color var(--dur-fast) ease}.site-nav a:hover{color:var(--fg);background:var(--sheen)}.site-nav a.active{color:var(--fg);background:var(--selected);box-shadow:inset 0 0 0 1px var(--selected-edge)}.site-header-end{margin-left:auto;display:flex;align-items:center;gap:.5rem}.header-search{display:flex;align-items:center;gap:.45rem;height:34px;padding:0 .6rem;background:var(--glass);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,width var(--dur) var(--ease)}.header-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.header-search svg{width:15px;height:15px;color:var(--muted);flex:none}.header-search input{background:none;border:0;color:var(--fg);font:inherit;font-size:.85rem;width:160px;outline:none}.header-search input::placeholder{color:#75757f}.header-search input::-webkit-search-cancel-button{display:none}.user-chip{display:inline-flex;align-items:center;gap:.45rem;height:34px;padding:0 .55rem 0 .25rem;background:var(--chip-bg);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--fg);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:border-color var(--dur-fast) ease,background-color var(--dur-fast) ease}.user-chip:hover,.user-chip[aria-expanded=true]{border-color:var(--line-strong);background:var(--raised)}.user-chip-caret{width:14px;height:14px;color:var(--muted);transition:transform var(--dur) var(--ease)}.user-chip[aria-expanded=true] .user-chip-caret{transform:rotate(180deg)}.avatar{display:inline-grid;place-items:center;flex:none;border-radius:50%;color:var(--accent-fg);font-weight:700;letter-spacing:0;background:var(--silver);box-shadow:inset 0 0 0 1px #ffffff4d}.avatar.sm{width:26px;height:26px;font-size:.75rem}.avatar.lg{width:56px;height:56px;font-size:1.4rem}.avatar.a1{background:linear-gradient(160deg,#e9e9f2,#a5abc6)}.avatar.a2{background:linear-gradient(160deg,#eef2ec,#a3b3a3)}.avatar.a3{background:linear-gradient(160deg,#f3ece9,#bba7a0)}.avatar.a4{background:linear-gradient(160deg,#ecebf3,#aea4c0)}.progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--accent),transparent);background-size:40% 100%;background-repeat:no-repeat;opacity:0;transition:opacity var(--dur) ease}.progress.active{opacity:1;animation:progress-run 1.1s ease-in-out infinite}@keyframes progress-run{0%{background-position:-40% 0}to{background-position:140% 0}}.menu-panel{position:fixed;z-index:60;min-width:220px;padding:.35rem;animation:oc-pop .16s var(--ease);transform-origin:top right}.menu-panel.up{transform-origin:bottom right}.menu-header{padding:.55rem .65rem .6rem;border-bottom:1px solid var(--line);margin-bottom:.3rem}.menu-account{display:flex;flex-direction:column;min-width:0}.menu-account strong{font-size:.9rem}.menu-account span{font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-separator{height:1px;background:var(--line);margin:.3rem .2rem}.menu-item{display:flex;align-items:center;gap:.6rem;width:100%;padding:.45rem .65rem;background:none;border:0;border-radius:6px;color:var(--fg);font:inherit;font-size:.86rem;text-align:left;cursor:pointer}.menu-item svg{width:16px;height:16px;color:var(--muted);flex:none}.menu-item:hover,.menu-item:focus-visible{background:var(--selected);box-shadow:inset 0 0 0 1px var(--selected-edge);outline:none}.menu-item.danger,.menu-item.danger svg{color:var(--err)}.menu-item:disabled{opacity:.5;cursor:not-allowed}.toasts{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;align-items:center;gap:.5rem;pointer-events:none;width:min(92vw,460px)}.toast{pointer-events:auto;display:flex;align-items:center;gap:.6rem;width:100%;padding:.65rem .6rem .65rem .85rem;border-radius:var(--radius-md);background:var(--popover);background-image:var(--grain);background-size:var(--grain-size);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);box-shadow:var(--shadow-lg);font-size:.88rem;animation:oc-toast .26s var(--spring)}.toast>svg{width:18px;height:18px;flex:none}.toast.ok>svg{color:var(--ok)}.toast.err{border-color:var(--err-border)}.toast.err>svg{color:var(--err)}.toast.info>svg{color:var(--muted)}.toast span{flex:1}.toast.leaving{opacity:0;transform:translateY(8px);transition:opacity .16s ease,transform .16s ease}.toast-close{background:none;border:0;color:var(--muted);padding:.2rem;border-radius:4px;cursor:pointer;display:grid;place-items:center}.toast-close:hover{color:var(--fg);background:var(--sheen)}.toast-close svg{width:15px;height:15px}.dialog{padding:0;border:1px solid var(--border);border-radius:var(--radius-xl);color:var(--fg);background:var(--card);box-shadow:var(--shadow-xl);width:min(92vw,480px);max-height:88vh}.dialog.wide{width:min(92vw,640px)}.dialog.danger{border-color:var(--err-border)}.dialog[open]{animation:oc-dialog .22s var(--spring)}.dialog::backdrop{background:#08080a8c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:oc-fade .2s ease}.dialog.closing{opacity:0;transform:translateY(6px) scale(.98);transition:opacity .14s ease,transform .14s ease}.dialog>form,.dialog>div{padding:1.4rem 1.5rem 1.25rem;display:flex;flex-direction:column;gap:1rem}.dialog-head{display:flex;align-items:flex-start;gap:1rem;justify-content:space-between}.dialog-head h2{font-size:1.12rem;letter-spacing:-.01em}.dialog-description{color:var(--muted);font-size:.9rem;margin-top:.35rem;line-height:1.5}.dialog-x{margin:-.3rem -.4rem 0 0}.dialog-x svg{width:18px;height:18px}.dialog-body{display:flex;flex-direction:column;gap:.9rem}.dialog-foot{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap;padding-top:.25rem}.dialog-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.dialog-steps li{display:flex;gap:.85rem}.dialog-steps p{color:var(--muted);font-size:.88rem;margin-top:.15rem}.dialog-steps .server-address{margin-top:.5rem}.page{padding-top:2.25rem;padding-bottom:4rem}.page.narrow{max-width:860px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.75rem}.page-header-text{display:flex;flex-direction:column;gap:.45rem;min-width:0}.page-header .oc-eyebrow{display:inline-flex;align-items:center;gap:.4rem}.page-header .oc-eyebrow svg{width:14px;height:14px}.page-header h1{font-size:var(--text-3xl);letter-spacing:-.03em;overflow-wrap:anywhere}.page-description{color:var(--muted);max-width:640px}.page-header-actions{display:flex;gap:.5rem;flex-wrap:wrap}.back-link{display:inline-flex;align-items:center;gap:.35rem;color:var(--muted);font-size:.86rem;font-weight:500;margin-bottom:1.25rem;transition:color var(--dur-fast) ease,gap var(--dur) var(--ease)}.back-link:hover{color:var(--fg);gap:.5rem}.back-link svg{width:15px;height:15px}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.75rem;padding:4rem 1rem}.empty-art{position:relative;width:140px;height:110px;display:grid;place-items:center;margin-bottom:.5rem}.empty-art img{width:64px;height:64px;border-radius:16px;box-shadow:var(--shadow-lg),0 0 60px #e4e4e81f}.empty-state h2{font-size:var(--text-xl)}.empty-text{color:var(--muted);max-width:520px}.empty-actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;margin-top:.75rem}.pager{display:flex;align-items:center;justify-content:center;gap:.75rem;margin:2.5rem 0 0;flex-wrap:wrap}.pager-pages{display:flex;align-items:center;gap:.2rem}.pager-slot{display:inline-flex;align-items:center;gap:.2rem}.pager-pages a{min-width:34px;height:34px;display:inline-grid;place-items:center;border-radius:var(--radius);color:var(--muted);font-size:.86rem;font-variant-numeric:tabular-nums;transition:background-color var(--dur-fast) ease,color var(--dur-fast) ease}.pager-pages a:hover{color:var(--fg);background:var(--sheen)}.pager-pages a.current{color:var(--fg);background:var(--selected);box-shadow:inset 0 0 0 1px var(--selected-edge)}.pager-gap{color:var(--muted);padding:0 .15rem}.stat{display:flex;flex-direction:column;gap:.15rem;min-width:0}.stat-value{font-size:1.15rem;font-weight:650;letter-spacing:-.01em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stat-label{font-size:.74rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:600}.spinner{display:inline-grid;place-items:center}.callout{display:flex;gap:.85rem;padding:1rem 1.15rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--card);margin-bottom:1.5rem}.callout>svg{width:20px;height:20px;flex:none;margin-top:.1rem}.callout p{margin-top:.3rem}.callout.err{border-color:var(--err-border);background:var(--err-bg)}.callout.err>svg{color:var(--err)}.form-error{display:flex;align-items:flex-start;gap:.55rem;padding:.65rem .8rem;border-radius:var(--radius);border:1px solid var(--err-border);background:var(--err-bg);color:#f5c4c4;font-size:.87rem;animation:oc-rise-sm .2s var(--ease)}.form-error svg{width:16px;height:16px;flex:none;margin-top:.15rem;color:var(--err)}.copy-button.copied{color:var(--ok);border-color:var(--ok-border)}.server-address{display:flex;align-items:center;gap:.5rem;padding:.4rem .4rem .4rem .75rem;border-radius:var(--radius);background:var(--code-bg);border:1px solid var(--border)}.server-address code{flex:1;min-width:0;background:none;border:0;padding:0;font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sparkles{position:absolute;inset:0;pointer-events:none;z-index:0}.sparkles>.oc-sparkle{position:absolute;width:14px;height:14px;opacity:.6}.sparkles>:nth-child(1){top:18%;left:8%;width:18px;height:18px}.sparkles>:nth-child(2){top:62%;left:14%;width:10px;height:10px}.sparkles>:nth-child(3){top:24%;left:84%;width:22px;height:22px}.sparkles>:nth-child(4){top:70%;left:78%;width:12px;height:12px}.sparkles>:nth-child(5){top:12%;left:56%;width:9px;height:9px}.sparkles>:nth-child(6){top:48%;left:92%;width:11px;height:11px}.sparkles>:nth-child(7){top:80%;left:40%;width:8px;height:8px}.sparkles>:nth-child(8){top:38%;left:3%;width:8px;height:8px}.empty-art .sparkles>:nth-child(1){top:6%;left:14%}.empty-art .sparkles>:nth-child(2){top:70%;left:8%}.empty-art .sparkles>:nth-child(3){top:4%;left:78%;width:16px;height:16px}.empty-art .sparkles>:nth-child(4){top:72%;left:86%}.empty-art .sparkles>:nth-child(5){top:40%;left:96%}.cover{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--chip-bg)}.cover img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}.cover-fallback{display:flex;align-items:flex-end;padding:.9rem 1rem;isolation:isolate}.cover-fallback:before{content:"";position:absolute;inset:0;z-index:-1;background-image:var(--grain);background-size:var(--grain-size);opacity:.9}.cover-fallback.v0{background:radial-gradient(120% 90% at 85% 10%,#4a4d5c 0%,transparent 60%),linear-gradient(160deg,#2c2d35,#1c1c21)}.cover-fallback.v1{background:radial-gradient(120% 90% at 15% 10%,#3f4a52 0%,transparent 60%),linear-gradient(160deg,#262b30,#1b1c20)}.cover-fallback.v2{background:radial-gradient(120% 90% at 80% 90%,#474252 0%,transparent 60%),linear-gradient(200deg,#2b2830,#1b1b1f)}.cover-fallback.v3{background:radial-gradient(120% 90% at 20% 85%,#3f4a44 0%,transparent 60%),linear-gradient(160deg,#262a28,#1b1c1e)}.cover-fallback.v4{background:radial-gradient(120% 90% at 70% 15%,#50463f 0%,transparent 60%),linear-gradient(160deg,#2d2925,#1c1b1c)}.cover-fallback.v5{background:radial-gradient(120% 90% at 50% 0%,#484a50 0%,transparent 65%),linear-gradient(180deg,#2a2a2f,#19191d)}.cover-star{position:absolute;top:18%;right:12%;width:42px;height:42px;opacity:.85;filter:drop-shadow(0 0 18px rgba(255,255,255,.25))}.cover-label{position:relative;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:#dedee3bf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:75%}.catalog-hero{position:relative;overflow:hidden;padding:clamp(3rem,8vw,6rem) 0 clamp(2.25rem,5vw,3.5rem);border-bottom:1px solid var(--line)}.catalog-hero-inner{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:1.1rem}.hero-eyebrow{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .85rem .3rem .65rem;border-radius:var(--radius-pill);border:1px solid var(--line-strong);background:var(--glass);font-size:.78rem;font-weight:600;color:var(--chip-fg);letter-spacing:.02em}.hero-eyebrow .oc-sparkle{width:12px;height:12px}.hero-title{font-size:var(--text-display);letter-spacing:-.045em;line-height:1.02;max-width:15ch;padding-bottom:.08em}.hero-lede{font-size:var(--text-lg);color:var(--muted);max-width:620px}.hero-search{display:flex;gap:.6rem;width:100%;max-width:680px;margin-top:.9rem}.hero-search-field{flex:1;display:flex;align-items:center;gap:.65rem;height:52px;padding:0 .8rem 0 1.05rem;background:#202024b8;border:1px solid var(--line-strong);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-md);transition:border-color var(--dur-fast) ease,box-shadow var(--dur) ease}.hero-search-field:focus-within{border-color:var(--accent);box-shadow:var(--shadow-md),0 0 0 4px var(--accent-ring),0 0 60px #e4e4e814}.hero-search-field>svg{width:19px;height:19px;color:var(--muted);flex:none}.hero-search-field input{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--fg);font:inherit;font-size:1rem}.hero-search-field input::placeholder{color:#7a7a84}.hero-search-field input::-webkit-search-cancel-button{display:none}.hero-search-clear{background:none;border:0;color:var(--muted);cursor:pointer;display:grid;place-items:center;padding:.25rem;border-radius:50%}.hero-search-clear:hover{color:var(--fg);background:var(--sheen)}.hero-search-clear svg{width:16px;height:16px}.hero-search .oc-btn{height:52px;border-radius:var(--radius-lg);padding:0 1.4rem}.hero-skeleton{width:min(560px,80vw);height:120px;border-radius:var(--radius-lg)}.catalog-body{padding-top:1.75rem;padding-bottom:4rem}.tag-row{display:flex;gap:.45rem;flex-wrap:wrap;margin-bottom:1.4rem}.results-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}.results-count{color:var(--muted);font-size:.9rem;display:flex;align-items:baseline;gap:.35rem;flex-wrap:wrap}.results-count strong{color:var(--fg)}.results-clear{margin-left:.5rem;color:var(--fg);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px;font-size:.85rem}.course-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:1.25rem;transition:opacity var(--dur) ease}.course-grid.is-loading{opacity:.55}.course-card{overflow:hidden;transition:transform .32s var(--ease),border-color var(--dur) ease,box-shadow .32s var(--ease)}.course-card:hover{transform:translateY(-3px);border-color:#4a4a53;box-shadow:var(--shadow-lg)}.course-card:hover .cover img{transform:scale(1.045)}.course-card-link{display:flex;flex-direction:column;height:100%;color:inherit}.course-card-link:focus-visible{outline-offset:-2px;border-radius:inherit}.course-card .cover{border-bottom:1px solid var(--border)}.course-card-body{display:flex;flex-direction:column;gap:.45rem;padding:1rem 1.1rem 1.05rem;flex:1}.course-card h3{font-size:1.04rem;font-weight:650;letter-spacing:-.01em;line-height:1.3}.course-card-meta{font-size:.8rem;color:var(--muted)}.course-card-summary{font-size:.87rem;color:var(--chip-fg);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-card-foot{display:flex;align-items:center;gap:.6rem;margin-top:auto;padding-top:.55rem;font-size:.78rem;color:var(--muted)}.course-card-stat{display:inline-flex;align-items:center;gap:.25rem;font-variant-numeric:tabular-nums}.course-card-stat svg{width:13px;height:13px}.course-card-publisher{margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skeleton-card{pointer-events:none}.skeleton-card .cover{border-radius:0}.oc-skeleton.line{height:12px}.w40{width:40%}.w60{width:60%}.w70{width:70%}.w90{width:90%}.how{margin-top:4.5rem}.how-head{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.25rem}.how-head h2{font-size:var(--text-2xl);letter-spacing:-.025em}.how-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:1rem}.how-steps li{display:flex;flex-direction:column;gap:.5rem}.how-steps h3{font-size:1rem}.how-steps p{color:var(--muted);font-size:.9rem}.how-n{display:inline-grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:var(--silver);color:var(--accent-fg);font-size:.8rem;font-weight:700;box-shadow:0 0 24px #e4e4e82e}.how-link{display:inline-flex;align-items:center;gap:.3rem;font-weight:600;font-size:.88rem;margin-top:auto;transition:gap var(--dur) var(--ease)}.how-link:hover{gap:.5rem}.how-link svg{width:15px;height:15px}.course-hero{position:relative;overflow:hidden;padding:1.75rem 0 2rem;border-bottom:1px solid var(--line)}.course-hero-glow{position:absolute;inset:-20%;width:140%;height:140%;object-fit:cover;filter:blur(70px) saturate(120%);opacity:.28;z-index:0;pointer-events:none}.course-hero .oc-wrap{position:relative;z-index:1}.course-hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,3rem);align-items:center}.course-hero-cover{border-radius:var(--radius-xl);border:1px solid var(--line-strong);box-shadow:var(--shadow-xl)}.course-hero-text{display:flex;flex-direction:column;gap:.9rem;min-width:0}.course-hero-text h1{font-size:var(--text-3xl);letter-spacing:-.035em;line-height:1.08;overflow-wrap:anywhere}.course-chips{display:flex;flex-wrap:wrap;gap:.4rem}.course-chips .oc-pill svg{width:12px;height:12px}.course-byline{color:var(--muted);font-size:.92rem}.course-byline strong{color:var(--fg);font-weight:600}.course-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.4rem}.course-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:2rem;padding:1.1rem 1.3rem;border-radius:var(--radius-lg);border:1px solid var(--line);background:#18181b99;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.course-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:2.5rem;padding-top:2.5rem;padding-bottom:4rem;align-items:start}.course-main{display:flex;flex-direction:column;gap:2.75rem;min-width:0}.course-section>h2,.section-head h2{font-size:var(--text-xl);letter-spacing:-.02em;margin-bottom:1rem}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.section-head p{margin-bottom:1rem}.count-list{list-style:none;margin:0 0 1rem;padding:0;display:flex;flex-wrap:wrap;gap:.9rem;color:var(--muted);font-size:.84rem}.count-list li{display:inline-flex;align-items:center;gap:.35rem}.count-list svg{width:14px;height:14px}.prereqs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}.prereqs li{display:flex;gap:.6rem;align-items:baseline}.prereqs .oc-sparkle{width:11px;height:11px;transform:translateY(1px)}.outline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.outline-module{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);overflow:hidden;transition:border-color var(--dur) ease;interpolate-size:allow-keywords}.outline-module[open]{border-color:#45454d}.outline-module summary{display:flex;align-items:center;gap:.9rem;padding:.85rem 1rem;cursor:pointer;list-style:none;user-select:none}.outline-module summary::-webkit-details-marker{display:none}.outline-module summary:hover{background:var(--sheen)}.outline-n{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);flex:none}.outline-title{flex:1;min-width:0;font-weight:600;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.outline-meta{color:var(--muted);font-size:.8rem;white-space:nowrap}.outline-caret{width:16px;height:16px;color:var(--muted);flex:none;transition:transform var(--dur) var(--ease)}.outline-module[open] .outline-caret{transform:rotate(180deg)}.outline-module::details-content{height:0;overflow:clip;transition:height .28s var(--ease),content-visibility .28s allow-discrete}.outline-module[open]::details-content{height:auto}.outline-lessons{list-style:none;margin:0;padding:.2rem 1rem .85rem 3rem;display:flex;flex-direction:column}.outline-lessons li{display:flex;align-items:center;gap:.7rem;padding:.45rem 0;border-top:1px solid var(--line);font-size:.9rem}.outline-lessons li:first-child{border-top:0}.outline-dot{width:6px;height:6px;border-radius:50%;background:var(--border);flex:none}.outline-mins{margin-left:auto;color:var(--muted);font-size:.78rem;white-space:nowrap;font-variant-numeric:tabular-nums}.timeline{list-style:none;margin:0;padding:0 0 0 1.4rem;position:relative;display:flex;flex-direction:column;gap:1.2rem}.timeline:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:linear-gradient(to bottom,var(--line-strong),transparent)}.timeline li{position:relative}.timeline-dot{position:absolute;left:-1.4rem;top:.38rem;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--border)}.timeline li.current .timeline-dot{border-color:var(--ok);box-shadow:0 0 0 4px #78bd9126}.timeline-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.timeline-head time{color:var(--muted);font-size:.82rem}.timeline-note{color:var(--chip-fg);font-size:.9rem;margin-top:.35rem;white-space:pre-line}.course-aside{position:sticky;top:84px}.aside-card{display:flex;flex-direction:column;gap:1rem}.aside-card .oc-eyebrow{display:inline-flex;align-items:center;gap:.4rem}.aside-card .oc-eyebrow svg{width:14px;height:14px}.mini-steps{margin:0;padding-left:1.15rem;display:flex;flex-direction:column;gap:.45rem;font-size:.88rem;color:var(--chip-fg)}.aside-get{justify-content:center}.auth{position:relative;overflow:hidden;display:grid;place-items:center;padding:clamp(2rem,7vw,5rem) 16px;min-height:calc(100vh - 200px)}.auth-sparkles{opacity:.8}.auth-card{position:relative;z-index:1;width:min(100%,420px);padding:2rem 1.9rem 1.6rem;border-radius:var(--radius-xl);display:flex;flex-direction:column;gap:.9rem}.auth-mark{width:52px;height:52px;border-radius:13px;box-shadow:0 10px 30px #00000073,0 0 40px #e4e4e81a;margin-bottom:.2rem}.auth-card h1{font-size:1.55rem;letter-spacing:-.03em}.auth-subtitle{color:var(--muted);font-size:.92rem;margin-top:-.4rem}.auth-form{display:flex;flex-direction:column;gap:.95rem;margin-top:.35rem}.auth-footer{border-top:1px solid var(--line);padding-top:1rem;margin-top:.4rem;color:var(--muted);font-size:.88rem;text-align:center}.auth-footer a{color:var(--fg);font-weight:600;display:inline-flex;align-items:center;gap:.3rem}.auth-footer a svg{width:14px;height:14px}.auth-steps{list-style:none;margin:0 0 .2rem;padding:0;display:flex;gap:1rem;font-size:.78rem;color:var(--muted)}.auth-steps li{display:flex;align-items:center;gap:.4rem}.auth-steps li.now{color:var(--fg)}.auth-step-dot{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:.7rem;font-weight:700;border:1px solid var(--border);background:var(--chip-bg);transition:background var(--dur) ease,color var(--dur) ease}.auth-steps li.now .auth-step-dot{background:var(--silver);color:var(--accent-fg);border-color:transparent}.auth-steps li.done .auth-step-dot{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}.auth-step-dot svg{width:11px;height:11px}.forgot-link{align-self:flex-end;font-size:.83rem;color:var(--muted);margin-top:-.45rem}.forgot-link:hover{color:var(--fg)}.oc-btn.block{width:100%}.auth-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-size:.85rem;flex-wrap:wrap}.resend{font-size:.85rem}.code-row{display:flex;align-items:center;gap:.75rem}.code-icon{width:20px;height:20px;color:var(--muted);flex:none}.code-input{display:flex;gap:.45rem;flex:1}.code-input input{width:100%;min-width:0;aspect-ratio:.82;max-height:58px;text-align:center;font:600 1.35rem/1 var(--font-mono);color:var(--fg);background:var(--card);border:1px solid var(--border);border-radius:var(--radius);caret-color:var(--accent);transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) var(--ease)}.code-input input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);transform:translateY(-1px)}.code-input.invalid input{border-color:var(--err-border);animation:shake .32s ease}@keyframes shake{20%,60%{transform:translate(-3px)}40%,80%{transform:translate(3px)}}.password-input{position:relative}.password-input .oc-input{padding-right:2.6rem}.password-toggle{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--muted);padding:.35rem;border-radius:5px;cursor:pointer;display:grid;place-items:center}.password-toggle:hover{color:var(--fg);background:var(--sheen)}.password-toggle svg{width:16px;height:16px}.strength{display:inline-flex;align-items:center;gap:.55rem}.strength-bar{display:inline-flex;gap:3px}.strength-bar span{width:22px;height:4px;border-radius:2px;background:var(--border);transition:background var(--dur) ease}.strength-bar.s1 span:nth-child(-n+1){background:var(--err)}.strength-bar.s2 span:nth-child(-n+2){background:#d9b26a}.strength-bar.s3 span:nth-child(-n+3){background:var(--ok)}.strength-bar.s4 span{background:var(--ok)}.row-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.row-card{display:flex;align-items:center;gap:1rem;padding:.7rem 1rem .7rem .7rem;color:inherit;transition:transform var(--dur) var(--ease),border-color var(--dur) ease}.row-card:hover{border-color:#4a4a53;transform:translate(2px)}.row-thumb{width:104px;flex:none;border-radius:var(--radius);border:1px solid var(--border)}.row-thumb.cover-fallback{padding:.4rem .5rem}.row-thumb .cover-star{width:20px;height:20px}.row-thumb .cover-label{font-size:.55rem}.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.row-title{font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-meta{color:var(--muted);font-size:.82rem}.row-stat{display:inline-flex;align-items:center;gap:.3rem;color:var(--muted);font-size:.84rem;font-variant-numeric:tabular-nums;min-width:3.5rem;justify-content:flex-end}.row-stat svg{width:14px;height:14px}.row-chevron{width:17px;height:17px;color:var(--muted);flex:none;transition:transform var(--dur) var(--ease)}.row-card:hover .row-chevron{transform:translate(3px);color:var(--fg)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;padding:1.1rem 1.3rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);margin-bottom:2.25rem}.panel-section .section-head{margin-bottom:.25rem}.panel-section .section-head h2{margin-bottom:.4rem}.panel-section .section-head p{font-size:.88rem;max-width:560px}.version-list{list-style:none;margin:0 0 1rem;padding:0;display:flex;flex-direction:column;gap:.5rem}.version-row{display:flex;align-items:center;gap:1rem;padding:.85rem 1rem}.version-row.current{border-color:var(--ok-border);background:linear-gradient(90deg,rgba(120,189,145,.06),transparent 40%),var(--card)}.version-row.deleted{opacity:.55}.version-main{flex:1;min-width:0}.version-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.version-head .muted{font-size:.82rem}.version-note{color:var(--chip-fg);font-size:.88rem;margin-top:.35rem;white-space:pre-line}.version-actions{display:flex;gap:.3rem;flex:none}.settings{display:flex;flex-direction:column;gap:1rem}.settings-section{padding:1.35rem 1.5rem}.settings-section.danger{border-color:var(--err-border)}.settings-head{display:flex;gap:.9rem;align-items:flex-start;margin-bottom:1.15rem}.settings-head h2{font-size:1.05rem;margin-bottom:.2rem}.settings-head p{font-size:.88rem}.settings-icon{width:34px;height:34px;flex:none;border-radius:9px;display:grid;place-items:center;background:var(--selected);box-shadow:inset 0 0 0 1px var(--selected-edge)}.settings-icon svg{width:17px;height:17px}.settings-section.danger .settings-icon{background:var(--err-bg);box-shadow:inset 0 0 0 1px var(--err-border);color:var(--err)}.settings-body{display:flex;flex-direction:column;gap:1rem}.profile-row{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.profile-facts{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,auto));gap:.5rem 2rem;flex:1}.profile-facts dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:600}.profile-facts dd{margin:.15rem 0 0;font-weight:500;overflow-wrap:anywhere}.inline-form{display:flex;flex-direction:column;gap:.9rem;padding-top:1rem;border-top:1px solid var(--line)}.settings-body>.inline-form:first-child{border-top:0;padding-top:0}.two-up{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:.9rem;align-items:start}.form-actions{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.form-actions.start{justify-content:flex-start}.session-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.session-row{display:flex;align-items:center;gap:.9rem;padding:.75rem 0;border-top:1px solid var(--line)}.session-row:first-child{border-top:0;padding-top:0}.session-icon{width:36px;height:36px;flex:none;border-radius:9px;display:grid;place-items:center;background:var(--chip-bg);color:var(--muted)}.session-icon svg{width:18px;height:18px}.session-main{flex:1;min-width:0;display:flex;flex-direction:column}.session-main strong{font-size:.92rem}.session-main .muted{font-size:.8rem}.admin-tabs{margin-bottom:1.75rem}.admin-section{display:flex;flex-direction:column;gap:1rem}.stat-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.stat-tile{display:flex;flex-direction:column;gap:.15rem;padding:1.15rem 1.25rem 1.1rem;color:inherit;overflow:hidden;transition:transform var(--dur) var(--ease),border-color var(--dur) ease}.stat-tile:hover{transform:translateY(-2px);border-color:#4a4a53}.stat-tile-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:var(--selected);box-shadow:inset 0 0 0 1px var(--selected-edge);margin-bottom:.75rem}.stat-tile-icon svg{width:16px;height:16px}.stat-tile-value{font-size:2rem;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1}.stat-tile-label{font-weight:600}.stat-tile-sub{color:var(--muted);font-size:.8rem}.admin-search{display:flex;gap:.5rem;flex-wrap:wrap}.admin-search-field{position:relative;flex:1;min-width:220px}.admin-search-field svg{position:absolute;left:.7rem;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted)}.admin-search-field .oc-input{padding-left:2.2rem}.admin-filter{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card)}.data-table{width:100%;border-collapse:collapse;font-size:.88rem}.data-table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;padding:.7rem 1rem;border-bottom:1px solid var(--border);background:#ffffff04;white-space:nowrap}.data-table td{padding:.7rem 1rem;border-top:1px solid var(--line);vertical-align:middle}.data-table tbody tr{transition:background-color var(--dur-fast) ease}.data-table tbody tr:hover{background:#ffffff05}.data-table tr.disabled td{opacity:.7}.cell-account{display:flex;align-items:center;gap:.7rem;min-width:220px}.cell-account>div,.cell-course{display:flex;flex-direction:column;min-width:0}.cell-account .muted,.cell-course .muted{font-size:.8rem}.cell-course{min-width:220px;gap:.1rem}.cell-reason{display:inline-flex;align-items:center;gap:.3rem;color:var(--err);font-size:.78rem;margin-top:.2rem}.cell-reason svg{width:13px;height:13px;flex:none}.cell-actions{text-align:right;white-space:nowrap}.cell-actions>*+*{margin-left:.25rem}.audit-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);overflow:hidden}.audit-row{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:1rem;align-items:baseline;padding:.75rem 1rem;border-top:1px solid var(--line);font-size:.88rem}.audit-row:first-child{border-top:0}.audit-row time{color:var(--muted);font-size:.8rem}.audit-detail{color:var(--muted)}.audit-action{font-size:.72rem;color:var(--muted)}.site-footer{border-top:1px solid var(--line);background:linear-gradient(to bottom,#00000026,#00000059);padding:2.5rem 0 1.5rem;margin-top:auto}.site-footer-row{display:grid;grid-template-columns:1.2fr 1.4fr auto;gap:2rem;align-items:start}.site-footer-brand{display:flex;flex-direction:column;gap:.75rem}.site-footer-brand p,.site-footer-connect p{color:var(--muted);font-size:.88rem;max-width:360px}.site-footer-connect{display:flex;flex-direction:column;gap:.5rem}.site-footer-links{display:flex;flex-direction:column;gap:.45rem;font-size:.88rem}.site-footer-links a{color:var(--muted);transition:color var(--dur-fast) ease}.site-footer-links a:hover{color:var(--fg)}.site-footer-legal{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:2rem;padding-top:1.25rem;border-top:1px solid var(--line);color:#7c7c86;font-size:.8rem}::view-transition-group(course-cover){animation-duration:.42s}::view-transition-old(course-cover),::view-transition-new(course-cover){height:100%;object-fit:cover}@media(max-width:960px){.course-layout{grid-template-columns:1fr}.course-aside{position:static}.site-footer-row{grid-template-columns:1fr}.site-nav{display:none}}@media(max-width:760px){.site-server,.site-divider,.header-search,.get-app span,.hero-search-field .oc-kbd{display:none}.tag-row{flex-wrap:nowrap;overflow-x:auto;margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter));padding:0 var(--gutter) .35rem;-webkit-mask:linear-gradient(90deg,transparent,#000 var(--gutter),#000 calc(100% - var(--gutter)),transparent);mask:linear-gradient(90deg,transparent,#000 var(--gutter),#000 calc(100% - var(--gutter)),transparent)}.tag-row>*{flex:none}.course-hero-grid{grid-template-columns:1fr}.course-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-search{flex-direction:column}.hero-search .oc-btn{height:46px}.row-stat,.row-chevron{display:none}.row-card{flex-wrap:wrap}.version-row{flex-direction:column;align-items:stretch}.audit-row{grid-template-columns:1fr;gap:.2rem}.audit-action{display:none}}@media(max-width:480px){.user-chip-name{display:none}.site-header-row{gap:.75rem}.auth-card{padding:1.6rem 1.25rem 1.3rem}.code-input{gap:.3rem}.settings-section{padding:1.15rem}}@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){.hero-search-field,.course-stats,.toast{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:var(--card)}.dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background:#08080acc}.course-hero-glow{display:none}}@media(prefers-reduced-motion:reduce){.course-card:hover,.row-card:hover,.stat-tile:hover{transform:none}}.admin-recent{grid-column:1 / -1;margin-top:.5rem}.admin-recent .section-head h2{font-size:1.05rem;margin-bottom:.75rem}.admin-recent .audit-list{border:0;background:none;border-radius:0}.admin-recent .audit-row{padding-left:0;padding-right:0}
