:root{--font-ui: "Onest", system-ui, -apple-system, "Segoe UI", sans-serif;--font-read: "Source Serif 4", Georgia, "Times New Roman", serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--fs-11: .6875rem;--fs-12: .75rem;--fs-13: .8125rem;--fs-14: .875rem;--fs-15: .9375rem;--fs-16: 1rem;--fs-18: 1.125rem;--fs-20: 1.25rem;--fs-24: 1.5rem;--fs-30: 1.875rem;--fs-38: 2.375rem;--fs-48: 3rem;--fs-60: 3.75rem;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--lh-tight: 1.12;--lh-snug: 1.28;--lh-normal: 1.5;--lh-read: 1.72;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--sp-9: 48px;--sp-10: 64px;--sp-11: 80px;--sp-12: 96px;--sp-13: 128px;--r-xs: 4px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-xl: 20px;--r-2xl: 28px;--r-pill: 999px;--maxw: 1200px;--maxw-wide: 1320px;--read-measure: 70ch;--header-h: 64px;--accent-50: oklch(.972 .018 185);--accent-100: oklch(.94 .03 185);--accent-200: oklch(.89 .045 184);--accent-300: oklch(.815 .058 183);--accent-400: oklch(.7 .066 182);--accent-500: oklch(.6 .066 181);--accent-600: oklch(.52 .062 181);--accent-700: oklch(.448 .054 181);--accent-800: oklch(.38 .044 182);--accent-900: oklch(.31 .034 184);--accent: var(--accent-600);--accent-hover: var(--accent-700);--accent-press: var(--accent-800);--accent-soft: var(--accent-50);--accent-soft-border: var(--accent-200);--on-accent: oklch(.99 .005 185);--bg: oklch(.987 .004 195);--bg-sunken: oklch(.965 .005 195);--surface: oklch(1 0 0);--surface-2: oklch(.978 .004 195);--surface-3: oklch(.955 .006 195);--text: oklch(.255 .012 220);--text-secondary: oklch(.46 .012 220);--text-muted: oklch(.585 .012 220);--text-faint: oklch(.69 .01 220);--border: oklch(.91 .006 215);--border-strong: oklch(.855 .008 215);--border-faint: oklch(.945 .005 215);--ring: oklch(.6 .066 181 / .45);--note-bg: oklch(.965 .022 235);--note-border: oklch(.86 .046 235);--note-fg: oklch(.47 .09 250);--note-icon: oklch(.56 .105 252);--tip-bg: oklch(.965 .03 165);--tip-border: oklch(.855 .06 165);--tip-fg: oklch(.43 .08 168);--tip-icon: oklch(.53 .095 165);--warn-bg: oklch(.97 .034 75);--warn-border: oklch(.875 .072 75);--warn-fg: oklch(.48 .09 60);--warn-icon: oklch(.62 .13 62);--example-bg: oklch(.966 .022 300);--example-border: oklch(.865 .046 300);--example-fg: oklch(.46 .085 305);--example-icon: oklch(.54 .1 305);--lvl-beg-bg: oklch(.955 .034 160);--lvl-beg-fg: oklch(.44 .08 162);--lvl-int-bg: oklch(.96 .03 235);--lvl-int-fg: oklch(.45 .08 248);--lvl-adv-bg: oklch(.958 .032 25);--lvl-adv-fg: oklch(.48 .095 25);--code-bg: oklch(.975 .005 215);--code-border: oklch(.905 .007 215);--code-inline-bg: oklch(.948 .01 195);--code-inline-fg: oklch(.4 .045 200);--syn-kw: oklch(.47 .14 300);--syn-str: oklch(.47 .09 150);--syn-num: oklch(.52 .12 40);--syn-com: oklch(.64 .018 215);--syn-fn: oklch(.47 .11 250);--syn-builtin: oklch(.5 .1 200);--syn-punc: oklch(.42 .015 220);--sh-xs: 0 1px 2px oklch(.4 .02 220 / .05);--sh-sm: 0 1px 2px oklch(.4 .02 220 / .06), 0 1px 3px oklch(.4 .02 220 / .05);--sh-md: 0 2px 4px oklch(.4 .02 220 / .05), 0 6px 16px oklch(.4 .02 220 / .07);--sh-lg: 0 4px 8px oklch(.4 .02 220 / .05), 0 16px 36px oklch(.4 .02 220 / .1);--sh-pop: 0 8px 24px oklch(.3 .02 220 / .14), 0 2px 6px oklch(.3 .02 220 / .08);--focus-ring: 0 0 0 3px var(--ring)}[data-theme=dark]{--accent-50: oklch(.3 .03 184);--accent-100: oklch(.35 .038 184);--accent-200: oklch(.42 .048 183);--accent-300: oklch(.52 .058 182);--accent-400: oklch(.62 .066 181);--accent-500: oklch(.7 .07 180);--accent-600: oklch(.76 .072 179);--accent-700: oklch(.82 .066 178);--accent-800: oklch(.88 .05 178);--accent-900: oklch(.93 .034 178);--accent: var(--accent-600);--accent-hover: var(--accent-700);--accent-press: var(--accent-500);--accent-soft: oklch(.33 .034 184 / .55);--accent-soft-border: oklch(.44 .046 183);--on-accent: oklch(.18 .02 200);--bg: oklch(.205 .01 220);--bg-sunken: oklch(.182 .01 220);--surface: oklch(.245 .011 220);--surface-2: oklch(.27 .012 220);--surface-3: oklch(.3 .013 220);--text: oklch(.945 .006 210);--text-secondary: oklch(.79 .01 210);--text-muted: oklch(.66 .012 210);--text-faint: oklch(.56 .012 210);--border: oklch(.33 .012 218);--border-strong: oklch(.42 .014 218);--border-faint: oklch(.295 .011 218);--ring: oklch(.7 .07 180 / .5);--note-bg: oklch(.33 .04 245 / .4);--note-border: oklch(.48 .06 245);--note-fg: oklch(.84 .06 240);--note-icon: oklch(.76 .09 245);--tip-bg: oklch(.33 .04 165 / .4);--tip-border: oklch(.47 .06 165);--tip-fg: oklch(.83 .07 165);--tip-icon: oklch(.76 .09 165);--warn-bg: oklch(.35 .05 70 / .4);--warn-border: oklch(.52 .075 68);--warn-fg: oklch(.86 .075 75);--warn-icon: oklch(.79 .11 70);--example-bg: oklch(.33 .04 305 / .4);--example-border: oklch(.48 .06 305);--example-fg: oklch(.84 .065 305);--example-icon: oklch(.77 .09 305);--lvl-beg-bg: oklch(.35 .05 162 / .5);--lvl-beg-fg: oklch(.83 .07 162);--lvl-int-bg: oklch(.35 .05 245 / .5);--lvl-int-fg: oklch(.83 .065 245);--lvl-adv-bg: oklch(.36 .055 28 / .5);--lvl-adv-fg: oklch(.84 .075 30);--code-bg: oklch(.225 .012 220);--code-border: oklch(.33 .012 220);--code-inline-bg: oklch(.305 .016 195);--code-inline-fg: oklch(.84 .046 190);--syn-kw: oklch(.76 .11 305);--syn-str: oklch(.78 .09 150);--syn-num: oklch(.79 .09 55);--syn-com: oklch(.56 .016 215);--syn-fn: oklch(.77 .09 250);--syn-builtin: oklch(.79 .08 195);--syn-punc: oklch(.72 .012 220);--sh-xs: 0 1px 2px oklch(0 0 0 / .3);--sh-sm: 0 1px 2px oklch(0 0 0 / .35), 0 1px 3px oklch(0 0 0 / .3);--sh-md: 0 2px 4px oklch(0 0 0 / .35), 0 6px 16px oklch(0 0 0 / .45);--sh-lg: 0 4px 8px oklch(0 0 0 / .35), 0 16px 36px oklch(0 0 0 / .55);--sh-pop: 0 8px 24px oklch(0 0 0 / .55), 0 2px 6px oklch(0 0 0 / .4)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-ui);font-size:var(--fs-15);line-height:var(--lh-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body.no-scroll{overflow:hidden}html:has(.preview-overlay){overflow:hidden}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}img{max-width:100%;display:block}::selection{background:var(--accent-200);color:var(--text)}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}.skip-link{position:fixed;top:8px;left:8px;z-index:200;background:var(--surface);color:var(--text);padding:8px 14px;border-radius:var(--r-md);border:1px solid var(--border);transform:translateY(-200%);transition:transform .15s}.skip-link:focus{transform:translateY(0)}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 20px}.container-wide{max-width:var(--maxw-wide)}@media (min-width: 640px){.container{padding:0 28px}}@media (min-width: 1024px){.container{padding:0 40px}}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-main{flex:1 1 auto}.eyebrow{font-size:var(--fs-12);font-weight:var(--fw-semibold);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-700);font-family:var(--font-mono)}[data-theme=dark] .eyebrow{color:var(--accent-500)}.site-header{position:sticky;top:0;z-index:100;background:color-mix(in oklab,var(--bg) 86%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--border-faint)}.site-header__inner{height:var(--header-h);display:flex;align-items:center;gap:var(--sp-5)}.brand{display:flex;align-items:center;gap:10px;flex:0 0 auto}.brand__mark{width:30px;height:30px;border-radius:8px;background:var(--accent-600);color:var(--on-accent);display:grid;place-items:center;font-weight:var(--fw-bold);font-size:15px;box-shadow:var(--sh-sm);position:relative;overflow:hidden}.brand__mark:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 40%,color-mix(in oklab,var(--on-accent) 22%,transparent) 41% 46%,transparent 47%),linear-gradient(135deg,transparent 58%,color-mix(in oklab,var(--on-accent) 22%,transparent) 59% 64%,transparent 65%)}.brand__name{font-weight:var(--fw-bold);font-size:var(--fs-18);letter-spacing:-.01em}.brand__dot{color:var(--accent-600)}.site-nav{display:none}@media (min-width: 880px){.site-nav{display:flex;align-items:center;gap:2px;margin-left:8px}}.site-nav a{padding:8px 14px;border-radius:var(--r-md);font-size:var(--fs-14);font-weight:var(--fw-medium);color:var(--text-secondary);transition:background .14s,color .14s}.site-nav a:hover{background:var(--surface-3);color:var(--text)}.site-nav a.is-active{color:var(--text);background:var(--accent-soft)}.site-nav a.is-active,[data-theme=dark] .site-nav a.is-active{color:var(--accent-700)}.header-spacer{flex:1 1 auto}.header-actions{display:flex;align-items:center;gap:8px}.icon-btn{width:38px;height:38px;border-radius:var(--r-md);display:grid;place-items:center;background:transparent;border:1px solid transparent;color:var(--text-secondary);transition:background .14s,color .14s,border-color .14s}.icon-btn:hover{background:var(--surface-3);color:var(--text)}.icon-btn svg{width:19px;height:19px}.nav-toggle{display:inline-grid}@media (min-width: 880px){.nav-toggle{display:none}}.mobile-nav{display:none}.mobile-nav.is-open{display:block}.mobile-nav__panel{border-top:1px solid var(--border-faint);background:var(--surface);padding:10px 0 16px}.mobile-nav__panel a{display:block;padding:13px 20px;font-size:var(--fs-16);font-weight:var(--fw-medium);color:var(--text-secondary)}.mobile-nav__panel a.is-active{color:var(--accent-700)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-ui);font-weight:var(--fw-semibold);font-size:var(--fs-14);line-height:1;padding:11px 18px;border-radius:var(--r-md);border:1px solid transparent;background:var(--surface-3);color:var(--text);transition:background .14s,color .14s,border-color .14s,box-shadow .14s,transform .08s;white-space:nowrap;min-height:42px}.btn:active{transform:translateY(1px)}.btn svg{width:17px;height:17px;flex:0 0 auto}.btn--primary{background:var(--accent-600);color:var(--on-accent);box-shadow:var(--sh-sm)}.btn--primary:hover{background:var(--accent-hover)}.btn--primary:active{background:var(--accent-press)}.btn--secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn--secondary:hover{background:var(--surface-3);border-color:var(--border-strong)}.btn--ghost{background:transparent;color:var(--accent-700)}[data-theme=dark] .btn--ghost{color:var(--accent-600)}.btn--ghost:hover{background:var(--accent-soft)}.btn--lg{font-size:var(--fs-15);padding:14px 24px;min-height:50px;border-radius:var(--r-lg)}.btn--sm{font-size:var(--fs-13);padding:8px 13px;min-height:36px}.btn--block{width:100%}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;pointer-events:none}.link-arrow{display:inline-flex;align-items:center;gap:6px;color:var(--accent-700);font-weight:var(--fw-semibold);font-size:var(--fs-14)}[data-theme=dark] .link-arrow{color:var(--accent-600)}.link-arrow svg{width:16px;height:16px;transition:transform .18s}.link-arrow:hover svg{transform:translate(3px)}.badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-12);font-weight:var(--fw-semibold);padding:4px 10px;border-radius:var(--r-pill);line-height:1.3;white-space:nowrap}.badge--dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}.level-beginner{background:var(--lvl-beg-bg);color:var(--lvl-beg-fg)}.level-intermediate{background:var(--lvl-int-bg);color:var(--lvl-int-fg)}.level-advanced{background:var(--lvl-adv-bg);color:var(--lvl-adv-fg)}.tag{display:inline-flex;align-items:center;font-size:var(--fs-12);font-weight:var(--fw-medium);padding:3px 9px;border-radius:var(--r-sm);background:var(--surface-3);color:var(--text-secondary);border:1px solid var(--border-faint)}.tag-row{display:flex;flex-wrap:wrap;gap:6px}.course-grid{display:grid;gap:18px;grid-template-columns:1fr}@media (min-width: 640px){.course-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.course-grid{grid-template-columns:repeat(3,1fr);gap:20px}}.catalog-grid{padding-bottom:var(--sp-8)}.course-card{display:flex;flex-direction:column;min-height:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;transition:border-color .16s,box-shadow .16s,transform .16s;position:relative;overflow:hidden}.course-card:hover{border-color:var(--border-strong);box-shadow:var(--sh-md);transform:translateY(-2px)}.course-card__top{display:flex;align-items:flex-start;gap:14px;margin-bottom:14px}.course-mark{width:46px;height:46px;flex:0 0 auto;border-radius:12px;display:grid;place-items:center;font-family:var(--font-mono);font-weight:var(--fw-bold);font-size:var(--fs-16);background:var(--accent-soft);color:var(--accent-700);border:1px solid var(--accent-soft-border)}[data-theme=dark] .course-mark{color:var(--accent-700)}.course-card__heading{flex:1 1 auto;min-width:0}.course-card__title{font-size:var(--fs-18);font-weight:var(--fw-semibold);line-height:var(--lh-snug);letter-spacing:-.01em;margin:0 0 4px;text-wrap:balance}.course-card:hover .course-card__title{color:var(--accent-700)}[data-theme=dark] .course-card:hover .course-card__title{color:var(--accent-600)}.course-card__desc{color:var(--text-secondary);font-size:var(--fs-14);line-height:var(--lh-normal);margin:0 0 16px;text-wrap:pretty;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.course-card__meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:auto;padding-top:14px;border-top:1px solid var(--border-faint);color:var(--text-muted);font-size:var(--fs-13)}.course-card__meta .meta-item{display:inline-flex;align-items:center;gap:5px}.course-card__meta svg{width:15px;height:15px;opacity:.8}.course-card__badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.course-card__link{position:absolute;inset:0;z-index:1}.course-card__cta{margin-top:14px}.stat-chip{display:inline-flex;align-items:center;gap:6px}.site-footer{border-top:1px solid var(--border-faint);background:var(--bg-sunken)}.site-footer__inner{padding-block:48px 40px;display:grid;gap:32px}@media (min-width: 760px){.site-footer__inner{grid-template-columns:1.4fr 1fr 1fr}}.site-footer__about{max-width:38ch}.site-footer__desc{color:var(--text-muted);font-size:var(--fs-14);margin:12px 0 0;line-height:var(--lh-normal)}.footer-col h4{font-size:var(--fs-13);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 14px;font-weight:var(--fw-semibold)}.footer-col ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}.footer-col a{color:var(--text-secondary);font-size:var(--fs-14)}.footer-col a:hover{color:var(--text)}.site-footer__bottom{border-top:1px solid var(--border-faint);padding:18px 0;color:var(--text-faint);font-size:var(--fs-13);display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:space-between}@media (max-width: 1023px){.site-footer__inner{justify-items:start;text-align:left}.site-footer__about{max-width:34ch}.site-footer__bottom{justify-content:flex-start;text-align:left}}.hero{padding:clamp(40px,7vw,88px) 0 clamp(36px,5vw,64px);position:relative}.hero__grid{display:grid;gap:44px;align-items:center}@media (min-width: 960px){.hero__grid{grid-template-columns:1.05fr .95fr;gap:56px}}.hero__title{font-size:clamp(2.1rem,5.2vw,3.5rem);line-height:1.05;letter-spacing:-.025em;font-weight:var(--fw-bold);margin:18px 0 0;text-wrap:balance}.hero__sub{font-size:clamp(1.05rem,2vw,1.3rem);color:var(--text-secondary);line-height:var(--lh-normal);margin:20px 0 0;max-width:48ch;text-wrap:pretty}.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.hero-figure{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:22px;box-shadow:var(--sh-lg);position:relative;overflow:hidden}.hero-figure__label{font-family:var(--font-mono);font-size:var(--fs-12);color:var(--text-muted);margin-bottom:14px;display:flex;align-items:center;gap:8px}.hero-figure__label .dot{width:8px;height:8px;border-radius:50%;background:var(--accent-500)}.flow-step{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surface-2);border:1px solid var(--border-faint);border-radius:var(--r-md)}.flow-step+.flow-connector{height:14px;width:2px;margin-left:33px;background:var(--border-strong)}.flow-step__num{width:28px;height:28px;border-radius:8px;flex:0 0 auto;display:grid;place-items:center;font-family:var(--font-mono);font-weight:var(--fw-bold);font-size:var(--fs-13);background:var(--accent-soft);color:var(--accent-700);border:1px solid var(--accent-soft-border)}[data-theme=dark] .flow-step__num{color:var(--accent-700)}.flow-step__title{font-weight:var(--fw-semibold);font-size:var(--fs-15)}.flow-step__hint{color:var(--text-muted);font-size:var(--fs-13)}.section{padding:clamp(44px,6vw,72px) 0}.section--sunken{background:var(--bg-sunken);border-top:1px solid var(--border-faint);border-bottom:1px solid var(--border-faint)}.section__head{margin-bottom:28px}.section__head--row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}.section__title{font-size:clamp(1.5rem,3vw,2rem);font-weight:var(--fw-bold);letter-spacing:-.02em;margin:8px 0 0;text-wrap:balance}.section__lead{color:var(--text-secondary);font-size:var(--fs-16);margin:10px 0 0;max-width:60ch;line-height:var(--lh-normal);text-wrap:pretty}.approach{display:grid;gap:16px;grid-template-columns:1fr}@media (min-width: 720px){.approach{grid-template-columns:repeat(4,1fr)}}.approach__step{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;position:relative}.approach__icon{width:40px;height:40px;border-radius:10px;background:var(--accent-soft);color:var(--accent-700);display:grid;place-items:center;margin-bottom:14px;border:1px solid var(--accent-soft-border)}[data-theme=dark] .approach__icon{color:var(--accent-700)}.approach__icon svg{width:21px;height:21px}.approach__step h3{font-size:var(--fs-16);font-weight:var(--fw-semibold);margin:0 0 6px}.approach__step p{color:var(--text-secondary);font-size:var(--fs-14);margin:0;line-height:var(--lh-normal)}.startpath{display:grid;gap:14px;counter-reset:step}@media (min-width: 720px){.startpath{grid-template-columns:repeat(2,1fr)}}.startpath__item{display:flex;gap:16px;align-items:flex-start;padding:18px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);transition:border-color .14s,box-shadow .14s}.startpath__item:hover{border-color:var(--border-strong);box-shadow:var(--sh-sm)}.startpath__num{font-family:var(--font-mono);font-weight:var(--fw-bold);color:var(--accent-600);font-size:var(--fs-20);flex:0 0 auto;width:30px}.startpath__item h3{font-size:var(--fs-16);font-weight:var(--fw-semibold);margin:2px 0 4px}.startpath__item p{color:var(--text-secondary);font-size:var(--fs-14);margin:0;line-height:var(--lh-normal)}.page-head{padding:clamp(32px,5vw,52px) 0 clamp(20px,3vw,28px)}.page-head__title{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:var(--fw-bold);letter-spacing:-.02em;margin:12px 0 0;text-wrap:balance}.page-head__lead{color:var(--text-secondary);font-size:var(--fs-16);margin:12px 0 0;max-width:62ch;line-height:var(--lh-normal);text-wrap:pretty}.catalog-layout{display:grid;gap:28px;padding-bottom:64px}.catalog-toolbar{display:grid;gap:14px;margin-bottom:8px}@media (min-width: 760px){.catalog-toolbar{grid-template-columns:1fr auto;align-items:center}}.search-input{position:relative;display:flex;align-items:center}.search-input svg{position:absolute;left:14px;width:18px;height:18px;color:var(--text-muted);pointer-events:none}.search-input input{width:100%;font-family:inherit;font-size:var(--fs-15);color:var(--text);padding:12px 14px 12px 42px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);transition:border-color .14s,box-shadow .14s}.search-input input::placeholder{color:var(--text-faint)}.search-input input:focus{border-color:var(--accent-500);box-shadow:var(--focus-ring);outline:none}.search-input__clear{position:absolute;right:8px;width:30px;height:30px;border-radius:7px;border:none;background:transparent;color:var(--text-muted);display:grid;place-items:center}.search-input__clear:hover{background:var(--surface-3);color:var(--text)}.toolbar-controls{display:flex;gap:10px;flex-wrap:wrap}.select{position:relative;display:inline-flex;align-items:center}.select select{appearance:none;font-family:inherit;font-size:var(--fs-14);font-weight:var(--fw-medium);color:var(--text);padding:11px 38px 11px 14px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);min-height:44px;transition:border-color .14s,box-shadow .14s}.select select:focus{border-color:var(--accent-500);box-shadow:var(--focus-ring);outline:none}.select svg{position:absolute;right:12px;width:16px;height:16px;color:var(--text-muted);pointer-events:none}.filter-chips{display:flex;flex-wrap:wrap;gap:8px}.chip{font-size:var(--fs-13);font-weight:var(--fw-medium);padding:8px 14px;border-radius:var(--r-pill);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary);min-height:38px;transition:background .14s,color .14s,border-color .14s;white-space:nowrap}.chip:hover{border-color:var(--accent-400);color:var(--text)}.chip.is-active{background:var(--accent-600);border-color:var(--accent-600);color:var(--on-accent)}.chip__count{opacity:.7;margin-left:5px;font-variant-numeric:tabular-nums}.catalog-meta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--text-muted);font-size:var(--fs-14);margin-bottom:18px}.catalog-meta strong{color:var(--text);font-weight:var(--fw-semibold)}.filters-bar{display:flex;flex-wrap:wrap;gap:16px 24px;align-items:center}.filter-group{display:flex;flex-direction:column;gap:8px}.filter-group__label{font-size:var(--fs-12);font-weight:var(--fw-semibold);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.filter-mobile-toggle{display:inline-flex}@media (min-width: 760px){.filter-mobile-toggle{display:none}}.filters-collapsible{display:block}@media (max-width: 759px){.filters-collapsible{display:none}.filters-collapsible.is-open{display:block}}.course-hero{padding:clamp(28px,4vw,44px) 0;border-bottom:1px solid var(--border-faint)}.course-hero__grid{display:grid;gap:32px}@media (min-width: 1000px){.course-hero__grid{grid-template-columns:1fr 320px;gap:44px;align-items:start}}.course-hero__mark{width:60px;height:60px;border-radius:14px;display:grid;place-items:center;font-family:var(--font-mono);font-weight:var(--fw-bold);font-size:var(--fs-24);background:var(--accent-soft);color:var(--accent-700);border:1px solid var(--accent-soft-border);margin-bottom:18px}[data-theme=dark] .course-hero__mark{color:var(--accent-700)}.course-hero__title{font-size:clamp(1.7rem,3.6vw,2.5rem);font-weight:var(--fw-bold);letter-spacing:-.02em;margin:0 0 14px;line-height:1.1;text-wrap:balance}.course-hero__desc{font-size:var(--fs-18);color:var(--text-secondary);line-height:var(--lh-normal);margin:0 0 20px;max-width:60ch;text-wrap:pretty}.course-hero__badges{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.info-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-sm);position:sticky;top:calc(var(--header-h) + 18px)}.info-card__stats{display:grid;gap:2px;margin-bottom:18px}.info-stat{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border-faint)}.info-stat:last-child{border-bottom:none}.info-stat__label{color:var(--text-muted);font-size:var(--fs-14);display:inline-flex;align-items:center;gap:9px}.info-stat__label svg{width:16px;height:16px;opacity:.85}.info-stat__value{font-weight:var(--fw-semibold);font-size:var(--fs-14);text-align:right}.course-section{padding:clamp(36px,5vw,56px) 0}.course-section__grid{display:grid;gap:40px;max-width:860px}.outcomes{display:grid;gap:12px;grid-template-columns:1fr}@media (min-width: 640px){.outcomes{grid-template-columns:1fr 1fr}}.outcome{display:flex;gap:12px;align-items:flex-start}.outcome__check{width:24px;height:24px;flex:0 0 auto;border-radius:50%;background:var(--tip-bg);color:var(--tip-icon);display:grid;place-items:center;margin-top:1px}.outcome__check svg{width:14px;height:14px}.outcome span{color:var(--text-secondary);font-size:var(--fs-15);line-height:var(--lh-normal)}.outline{display:grid;gap:12px}.block-acc{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;transition:border-color .14s}.block-acc.is-open{border-color:var(--border-strong)}.block-acc__head{width:100%;display:flex;align-items:center;gap:16px;text-align:left;padding:18px 20px;background:transparent;border:none;color:inherit}.block-acc__head:hover{background:var(--surface-2)}.block-acc__num{width:34px;height:34px;flex:0 0 auto;border-radius:9px;display:grid;place-items:center;font-family:var(--font-mono);font-weight:var(--fw-bold);font-size:var(--fs-14);background:var(--accent-soft);color:var(--accent-700);border:1px solid var(--accent-soft-border)}[data-theme=dark] .block-acc__num{color:var(--accent-700)}.block-acc__info{flex:1 1 auto;min-width:0}.block-acc__title{font-size:var(--fs-17);font-weight:var(--fw-semibold);margin:0;line-height:1.3}.block-acc__desc{color:var(--text-muted);font-size:var(--fs-13);margin:3px 0 0;line-height:var(--lh-normal)}.block-acc__meta{color:var(--text-faint);font-size:var(--fs-13);flex:0 0 auto;font-variant-numeric:tabular-nums;display:none}@media (min-width: 560px){.block-acc__meta{display:block}}.block-acc__chev{flex:0 0 auto;color:var(--text-muted);transition:transform .2s}.block-acc__chev svg{width:20px;height:20px;display:block}.block-acc.is-open .block-acc__chev{transform:rotate(180deg)}.block-acc__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .24s ease}.block-acc.is-open .block-acc__body{grid-template-rows:1fr}.block-acc__body-inner{overflow:hidden}.lesson-list{list-style:none;margin:0;padding:4px 12px 14px;display:grid;gap:2px}.lesson-item{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:var(--r-md);position:relative;transition:background .14s}.lesson-item:hover{background:var(--surface-2)}.lesson-item__index{width:26px;height:26px;flex:0 0 auto;border-radius:7px;display:grid;place-items:center;font-family:var(--font-mono);font-size:var(--fs-12);font-weight:var(--fw-medium);color:var(--text-muted);background:var(--surface-3);border:1px solid var(--border-faint)}.lesson-item__main{flex:1 1 auto;min-width:0}.lesson-item__title{font-size:var(--fs-15);font-weight:var(--fw-medium);line-height:1.35}.lesson-item:hover .lesson-item__title{color:var(--accent-700)}[data-theme=dark] .lesson-item:hover .lesson-item__title{color:var(--accent-600)}.lesson-item__desc{color:var(--text-muted);font-size:var(--fs-13);margin-top:2px;line-height:var(--lh-normal);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.lesson-item__time{color:var(--text-faint);font-size:var(--fs-12);flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums}.lesson-item__time svg{width:14px;height:14px}.lesson-item__link{position:absolute;inset:0}.lesson-item__open{flex:0 0 auto;color:var(--text-faint);opacity:0;transition:opacity .14s,transform .14s}.lesson-item:hover .lesson-item__open{opacity:1;transform:translate(2px)}.lesson-item__open svg{width:17px;height:17px}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-size:var(--fs-13);color:var(--text-muted)}.breadcrumbs a:hover{color:var(--text)}.breadcrumbs__sep{color:var(--text-faint)}.breadcrumbs__current{color:var(--text-secondary);font-weight:var(--fw-medium)}.reader{--rail: 268px;--toc: 240px}.reader__top{border-bottom:1px solid var(--border-faint);padding:22px 0 26px;background:var(--surface)}.reader__eyebrow{color:var(--text-muted);font-size:var(--fs-13);margin:12px 0 8px;font-weight:var(--fw-medium)}.reader__title{font-size:clamp(1.6rem,3.4vw,2.3rem);font-weight:var(--fw-bold);letter-spacing:-.02em;margin:0;line-height:1.12;font-family:var(--font-ui);text-wrap:balance}.reader__lead{font-size:var(--fs-17);color:var(--text-secondary);line-height:var(--lh-normal);margin:14px 0 0;max-width:62ch;text-wrap:pretty}.reader__meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:16px;color:var(--text-muted);font-size:var(--fs-13)}.reader__meta .meta-item{display:inline-flex;align-items:center;gap:6px}.reader__meta svg{width:15px;height:15px}.reader__grid{display:grid;grid-template-columns:1fr;gap:0}@media (min-width: 1024px){.reader__grid{grid-template-columns:var(--rail) minmax(0,1fr) var(--toc);align-items:start}}.reader-rail{display:none;position:sticky;top:var(--header-h);align-self:start;max-height:calc(100vh - var(--header-h));overflow-y:auto;border-right:1px solid var(--border-faint);padding:26px 22px 60px}@media (min-width: 1024px){.reader-rail{display:block}}.reader-rail__course{display:flex;align-items:center;gap:10px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--border-faint)}.reader-rail__course-mark{width:32px;height:32px;border-radius:8px;background:var(--accent-soft);color:var(--accent-700);display:grid;place-items:center;font-family:var(--font-mono);font-weight:var(--fw-bold);font-size:var(--fs-13);border:1px solid var(--accent-soft-border);flex:0 0 auto}[data-theme=dark] .reader-rail__course-mark{color:var(--accent-700)}.reader-rail__course-name{font-size:var(--fs-13);font-weight:var(--fw-semibold);line-height:1.3}.reader-rail__course-sub{font-size:var(--fs-12);color:var(--text-muted)}.rail-block{margin-bottom:16px}.rail-block__title{font-size:var(--fs-11);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);margin:0 0 8px;padding:0 8px}.rail-lessons{list-style:none;margin:0;padding:0;display:grid;gap:1px}.rail-lesson{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);font-size:var(--fs-13);color:var(--text-secondary);line-height:1.3;transition:background .12s,color .12s;border-left:2px solid transparent}.rail-lesson:hover{background:var(--surface-2);color:var(--text)}.rail-lesson.is-current{background:var(--accent-soft);color:var(--accent-700);font-weight:var(--fw-semibold);border-left-color:var(--accent-600)}[data-theme=dark] .rail-lesson.is-current{color:var(--accent-700)}.rail-lesson__num{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--text-faint);flex:0 0 auto}.rail-lesson.is-current .rail-lesson__num{color:var(--accent-600)}.reader-main{min-width:0;padding:30px 0 40px}@media (min-width: 1024px){.reader-main{padding:36px 44px}}.reader-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:8px}@media (min-width: 1024px){.reader-toolbar.reader-toolbar--mobile{display:none}}.reader-toc{display:none;position:sticky;top:var(--header-h);align-self:start;max-height:calc(100vh - var(--header-h));overflow-y:auto;padding:36px 22px 60px}@media (min-width: 1024px){.reader-toc{display:block}}.reader-toc__title{font-size:var(--fs-11);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.07em;color:var(--text-faint);margin:0 0 12px}.toc-list{list-style:none;margin:0;padding:0;display:grid;gap:1px;border-left:2px solid var(--border)}.toc-link{display:block;padding:6px 0 6px 14px;margin-left:-2px;border-left:2px solid transparent;font-size:var(--fs-13);color:var(--text-muted);line-height:1.4;transition:color .12s,border-color .12s}.toc-link:hover{color:var(--text)}.toc-link.lvl-2{padding-left:26px;font-size:var(--fs-13)}.toc-link.lvl-3{padding-left:38px;font-size:var(--fs-12);color:var(--text-faint)}.toc-link.is-active{color:var(--accent-700);border-left-color:var(--accent-600);font-weight:var(--fw-semibold)}[data-theme=dark] .toc-link.is-active{color:var(--accent-700)}.lesson-nav{display:grid;gap:12px;margin-top:44px;padding-top:28px;border-top:1px solid var(--border)}@media (min-width: 560px){.lesson-nav{grid-template-columns:1fr 1fr}}.lesson-nav__btn{display:flex;flex-direction:column;gap:4px;padding:16px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);transition:border-color .14s,box-shadow .14s,transform .12s;min-height:74px;justify-content:center}.lesson-nav__btn:hover{border-color:var(--border-strong);box-shadow:var(--sh-sm);transform:translateY(-1px)}.lesson-nav__btn--next{text-align:right;align-items:flex-end}.lesson-nav__dir{font-size:var(--fs-12);color:var(--text-muted);font-weight:var(--fw-medium);display:inline-flex;align-items:center;gap:6px}.lesson-nav__dir svg{width:15px;height:15px}.lesson-nav__t{font-size:var(--fs-15);font-weight:var(--fw-semibold);color:var(--text);line-height:1.3}.lesson-nav__btn:hover .lesson-nav__t{color:var(--accent-700)}[data-theme=dark] .lesson-nav__btn:hover .lesson-nav__t{color:var(--accent-600)}.lesson-nav__btn--empty{opacity:.55;pointer-events:none}.lesson-nav__back{grid-column:1 / -1;text-align:center;margin-top:4px}.sheet-backdrop{position:fixed;inset:0;background:#11171973;z-index:150;opacity:0;pointer-events:none;transition:opacity .18s}.sheet-backdrop.is-open{opacity:1;pointer-events:auto}.sheet{position:fixed;top:0;bottom:0;left:0;width:min(340px,86vw);z-index:160;background:var(--surface);border-right:1px solid var(--border);box-shadow:var(--sh-pop);transform:translate(-100%);transition:transform .22s ease;overflow-y:auto;padding:18px 18px 50px}.sheet.sheet--right{left:auto;right:0;border-right:none;border-left:1px solid var(--border);transform:translate(100%)}.sheet.is-open{transform:translate(0)}.sheet__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.sheet__title{font-size:var(--fs-15);font-weight:var(--fw-bold)}.prose{font-family:var(--font-read);color:var(--text);font-size:calc(1.075rem * var(--reading-scale, 1));line-height:var(--lh-read);max-width:var(--read-measure)}.prose>*:first-child{margin-top:0}.prose h1{font-family:var(--font-ui);font-size:clamp(1.6rem,3vw,2rem);font-weight:var(--fw-bold);letter-spacing:-.02em;line-height:1.15;margin:0 0 8px;scroll-margin-top:calc(var(--header-h) + 16px)}.prose h2{font-family:var(--font-ui);font-size:1.5rem;font-weight:var(--fw-semibold);letter-spacing:-.01em;line-height:1.25;margin:2.2em 0 .7em;padding-top:.3em;scroll-margin-top:calc(var(--header-h) + 16px)}.prose h3{font-family:var(--font-ui);font-size:1.2rem;font-weight:var(--fw-semibold);margin:1.8em 0 .6em;scroll-margin-top:calc(var(--header-h) + 16px)}.prose h4{font-family:var(--font-ui);font-size:1.05rem;font-weight:var(--fw-semibold);margin:1.5em 0 .5em;scroll-margin-top:calc(var(--header-h) + 16px)}.prose h5{font-family:var(--font-ui);font-size:1rem;font-weight:var(--fw-semibold);margin:1.4em 0 .4em;scroll-margin-top:calc(var(--header-h) + 16px)}.prose h6{font-family:var(--font-ui);font-size:.9375rem;font-weight:var(--fw-semibold);color:var(--text-secondary);margin:1.3em 0 .4em;scroll-margin-top:calc(var(--header-h) + 16px)}.prose p{margin:0 0 1.15em;text-wrap:pretty}.prose a{color:var(--accent-700);text-decoration:underline;text-decoration-color:var(--accent-300);text-underline-offset:3px;text-decoration-thickness:1.5px}[data-theme=dark] .prose a{color:var(--accent-600)}.prose a:hover{text-decoration-color:var(--accent-600)}.prose strong{font-weight:var(--fw-bold);color:var(--text)}.prose em{font-style:italic}.prose ul,.prose ol{margin:0 0 1.15em;padding-left:1.4em}.prose li{margin:0 0 .5em;padding-left:.25em}.prose li::marker{color:var(--text-muted)}.prose ol li::marker{font-family:var(--font-ui);font-weight:var(--fw-semibold);color:var(--accent-700)}[data-theme=dark] .prose ol li::marker{color:var(--accent-600)}.prose .md-hr{border:none;border-top:1px solid var(--border);margin:2.2em 0}.prose code{font-family:var(--font-mono);font-size:.86em;background:var(--code-inline-bg);color:var(--code-inline-fg);padding:.12em .4em;border-radius:5px;font-feature-settings:normal;word-break:break-word}.prose .md-math{font-family:var(--font-read);font-style:italic;padding:0 .15em;letter-spacing:.01em}.prose blockquote.md-quote{margin:1.5em 0;padding:4px 0 4px 22px;border-left:3px solid var(--accent-300);color:var(--text-secondary);font-style:italic}.prose blockquote.md-quote p:last-child{margin-bottom:0}.md-table-wrap{margin:1.5em 0;overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-md);-webkit-overflow-scrolling:touch}.md-table{width:100%;border-collapse:collapse;font-family:var(--font-ui);font-size:var(--fs-14)}.md-table th{padding:11px 16px;text-align:left;border-bottom:1px solid var(--border-faint);white-space:nowrap}.md-table td{padding:11px 16px;text-align:left;border-bottom:1px solid var(--border-faint)}.md-table thead th{background:var(--surface-2);font-weight:var(--fw-semibold);color:var(--text);font-size:var(--fs-13);position:sticky;top:0}.md-table tbody tr:last-child td{border-bottom:none}.md-table tbody tr:hover{background:var(--surface-2)}.md-table code{white-space:nowrap}.codeblock{margin:1.5em 0;border:1px solid var(--code-border);border-radius:var(--r-md);overflow:hidden;background:var(--code-bg)}.codeblock__bar{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 8px 14px;background:color-mix(in oklab,var(--code-bg) 92%,var(--text) 5%);border-bottom:1px solid var(--code-border)}.codeblock__lang{font-family:var(--font-mono);font-size:var(--fs-12);color:var(--text-muted);text-transform:lowercase;letter-spacing:.03em}.codeblock__copy{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-12);font-weight:var(--fw-medium);color:var(--text-muted);background:transparent;border:1px solid transparent;padding:5px 9px;border-radius:var(--r-sm);transition:background .12s,color .12s}.codeblock__copy:hover{background:var(--surface-3);color:var(--text)}.codeblock__copy svg{width:15px;height:15px}.codeblock__copy.is-copied{color:var(--tip-icon)}.codeblock__pre{margin:0;padding:16px;overflow-x:auto;-webkit-overflow-scrolling:touch}.codeblock__pre code{font-family:var(--font-mono);font-size:var(--fs-14);line-height:1.65;color:var(--text);background:none;padding:0;border-radius:0;white-space:pre;display:block}.codeblock__raw{display:none}.t-kw{color:var(--syn-kw);font-weight:var(--fw-medium)}.t-str{color:var(--syn-str)}.t-num{color:var(--syn-num)}.t-com{color:var(--syn-com);font-style:italic}.t-fn{color:var(--syn-fn)}.t-bi{color:var(--syn-builtin)}.callout{margin:1.6em 0;border:1px solid var(--note-border);background:var(--note-bg);border-radius:var(--r-md);padding:16px 18px}.callout__head{display:flex;align-items:center;gap:9px;margin-bottom:8px}.callout__icon{width:22px;height:22px;flex:0 0 auto;color:var(--note-icon)}.callout__icon svg{width:22px;height:22px}.callout__title{font-family:var(--font-ui);font-weight:var(--fw-bold);font-size:var(--fs-14);color:var(--note-fg);letter-spacing:.01em}.callout__body{color:var(--text);font-size:1rem;line-height:var(--lh-normal)}.callout__body>*:first-child{margin-top:0}.callout__body>*:last-child{margin-bottom:0}.callout__body p{margin:0 0 .6em}.callout__body ul,.callout__body ol{margin:.4em 0}.callout__body .codeblock{margin:.9em 0}.callout--note{border-color:var(--note-border);background:var(--note-bg)}.callout--note .callout__icon{color:var(--note-icon)}.callout--note .callout__title{color:var(--note-fg)}.callout--tip{border-color:var(--tip-border);background:var(--tip-bg)}.callout--tip .callout__icon{color:var(--tip-icon)}.callout--tip .callout__title{color:var(--tip-fg)}.callout--warning{border-color:var(--warn-border);background:var(--warn-bg)}.callout--warning .callout__icon{color:var(--warn-icon)}.callout--warning .callout__title{color:var(--warn-fg)}.callout--example{border-color:var(--example-border);background:var(--example-bg)}.callout--example .callout__icon{color:var(--example-icon)}.callout--example .callout__title{color:var(--example-fg)}.skeleton{background:var(--surface-3);border-radius:var(--r-sm);position:relative;overflow:hidden}.skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in oklab,var(--surface) 60%,transparent),transparent);transform:translate(-100%);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translate(100%)}}.admin-courses{padding:var(--sp-8) 0 var(--sp-8)}.admin-courses__top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-5);margin-bottom:var(--sp-5)}.admin-courses__top h1{margin:0;font-size:var(--fs-38);line-height:var(--lh-tight)}.admin-courses__back{display:inline-flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4);color:var(--text-secondary);font-size:var(--fs-14);text-decoration:none}.admin-courses__refresh{align-self:flex-start;margin-top:var(--sp-4)}.course-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3);margin-bottom:var(--sp-5)}.course-summary__item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-xs)}.course-summary__item span{color:var(--text-secondary);font-size:var(--fs-13);font-weight:var(--fw-medium)}.course-summary__item strong{font-size:var(--fs-20);line-height:1}.admin-courses__layout{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:var(--sp-5);align-items:start}.course-form,.course-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-xs)}.course-form{display:grid;gap:var(--sp-4);padding:var(--sp-5)}.course-form h2,.course-list h2{margin:0;font-size:var(--fs-20);line-height:var(--lh-snug)}.course-form label{display:grid;gap:var(--sp-2);color:var(--text-secondary);font-size:var(--fs-14);font-weight:var(--fw-medium)}.course-form input,.course-form textarea{width:100%;padding:var(--sp-3);color:var(--text);font:inherit;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm)}.course-form input{min-height:42px}.course-form input:focus,.course-form textarea:focus{outline:none;border-color:var(--accent-500);box-shadow:var(--focus-ring)}.course-list{overflow:hidden}.course-list__head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-5);border-bottom:1px solid var(--border)}.course-list__head span{color:var(--text-muted);font-size:var(--fs-14)}.course-table__row{display:grid;grid-template-columns:minmax(0,1.5fr) 130px minmax(220px,.8fr);gap:var(--sp-4);align-items:center;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border-faint)}.course-table__row--head{color:var(--text-muted);font-size:var(--fs-12);font-weight:var(--fw-semibold);text-transform:uppercase;background:var(--surface-2)}.course-table__title{display:grid;gap:var(--sp-1);min-width:0}.course-table__title strong,.course-table__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-table__title span{color:var(--text-muted);font-size:var(--fs-13);font-family:var(--font-mono)}.course-table__actions{display:flex;gap:var(--sp-2);justify-content:flex-end;min-width:0}.status-pill{display:inline-flex;justify-content:center;width:fit-content;min-width:88px;padding:5px 9px;color:var(--text-secondary);background:var(--surface-3);border:1px solid var(--border);border-radius:var(--r-pill);font-size:var(--fs-12);font-weight:var(--fw-semibold)}.status-pill--published{color:var(--tip-fg);background:var(--tip-bg);border-color:var(--tip-border)}.status-pill--draft{color:var(--note-fg);background:var(--note-bg);border-color:var(--note-border)}.admin-message{margin:var(--sp-5);color:var(--text-secondary);line-height:var(--lh-normal)}.course-form .admin-message{margin:0}.admin-message--error{padding:var(--sp-3);color:var(--warn-fg);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--r-sm);font-size:var(--fs-14)}@media (max-width: 980px){.admin-courses__layout{grid-template-columns:1fr}}@media (max-width: 720px){.admin-courses{padding-top:var(--sp-6)}.admin-courses__top{flex-direction:column;gap:var(--sp-3)}.admin-courses__top h1{font-size:var(--fs-30)}.admin-courses__refresh{width:100%;margin-top:0}.course-summary{grid-template-columns:1fr;gap:var(--sp-2)}.course-summary__item{padding:var(--sp-3) var(--sp-4)}.course-table{display:grid}.course-table__row{grid-template-columns:1fr;gap:var(--sp-3);padding:var(--sp-5)}.course-table__row--head{display:none}.course-table__title strong,.course-table__title span{white-space:normal}.course-table__actions{justify-content:flex-start;flex-wrap:wrap}.course-table__actions .btn{min-width:118px}.status-pill{min-width:auto}}.agents-page{padding:var(--sp-9) 0 var(--sp-8)}.agents-page__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-6);margin-bottom:var(--sp-5)}.agents-page__header h1{margin:var(--sp-2) 0 var(--sp-3);font-size:var(--fs-38);line-height:var(--lh-tight)}.agents-page__header p:last-child{max-width:760px;margin:0;color:var(--text-secondary);font-size:var(--fs-16);line-height:var(--lh-normal)}.agents-page__actions{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.agents-back{display:inline-flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);color:var(--text-secondary);font-size:var(--fs-14);text-decoration:none}.agents-back:hover{color:var(--text)}.agents-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-3);margin-bottom:var(--sp-5)}.agents-summary__item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm)}.agents-summary__item span{color:var(--text-secondary);font-size:var(--fs-13);font-weight:var(--fw-medium)}.agents-summary__item strong{font-size:var(--fs-20);line-height:1}.agents-workbench{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--sp-5);align-items:start;margin-bottom:var(--sp-6)}.agents-panel,.agents-create,.agents-disclosure{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-xs)}.agents-panel,.agents-create{padding:var(--sp-5)}.agents-panel__head{display:flex;align-items:flex-start;gap:var(--sp-3);margin-bottom:var(--sp-4)}.agents-panel__icon,.agent-card__icon{display:grid;place-items:center;width:34px;height:34px;flex:0 0 auto;color:var(--accent-700);background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:var(--r-sm)}.agents-panel h2,.agents-section h2{margin:0;font-size:var(--fs-20);line-height:var(--lh-snug)}.agents-panel__head p{margin:var(--sp-1) 0 0;color:var(--text-secondary);line-height:var(--lh-normal)}.agents-section{margin-bottom:var(--sp-6)}.agents-section--primary{margin-bottom:0}.agents-section__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}.agents-section__head span{display:block;margin-top:var(--sp-1);color:var(--text-muted);font-size:var(--fs-14)}.agents-search{display:inline-flex;align-items:center;gap:var(--sp-2);min-width:220px;min-height:38px;padding:0 var(--sp-3);color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm)}.agents-search input{width:100%;min-width:0;border:0;outline:0;color:var(--text);background:transparent;font:inherit}.registered-agents,.agents-proposals,.agents-role-list{display:grid;gap:var(--sp-2)}.registered-agent{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);min-height:72px;padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm)}.registered-agent h3{margin:0 0 2px;font-size:var(--fs-16);line-height:var(--lh-snug)}.registered-agent p{margin:0;color:var(--text-secondary);line-height:var(--lh-normal)}.registered-agent__identity{min-width:0}.registered-agent__identity h3,.registered-agent__identity p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.registered-agent__stats{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.registered-agent__stats span{display:inline-flex;align-items:baseline;gap:4px;min-height:26px;padding:0 var(--sp-2);color:var(--text-secondary);background:var(--surface-2);border:1px solid var(--border-faint);border-radius:var(--r-pill);font-size:var(--fs-12);white-space:nowrap}.registered-agent__stats strong{color:var(--text);font-size:var(--fs-14)}.registered-agent__meta{color:var(--text-muted);font-size:var(--fs-13);white-space:nowrap}.registered-agent__actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2)}.registered-agent__stats{grid-column:1 / -1}.registered-agent__meta{grid-column:1}.registered-agent__actions{grid-column:2}.agent-card__status{display:inline-flex;align-items:center;justify-content:center;min-height:26px;min-width:76px;padding:0 var(--sp-3);color:var(--text-secondary);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-pill);font-size:var(--fs-12);font-weight:var(--fw-semibold);white-space:nowrap}.agent-card__status--ready{color:var(--tip-fg);background:var(--tip-bg);border-color:var(--tip-border)}.agents-panel--review{position:sticky;top:var(--sp-5);display:grid;gap:var(--sp-3)}.agents-proposal{display:grid;gap:var(--sp-1);padding:var(--sp-3);color:inherit;text-decoration:none;background:var(--surface-2);border:1px solid var(--border-faint);border-radius:var(--r-sm)}.agents-proposal:hover{border-color:var(--border-strong)}.agents-proposal strong{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:var(--lh-snug)}.agents-proposal span{color:var(--text-muted);font-size:var(--fs-12);font-family:var(--font-mono)}.agents-review-link{justify-self:start}.agents-create__form{display:grid;grid-template-columns:minmax(220px,1fr) minmax(180px,.75fr) auto;gap:var(--sp-3);align-items:end}.agents-create__form label{display:grid;gap:var(--sp-2);color:var(--text-secondary);font-size:var(--fs-14);font-weight:var(--fw-medium)}.agents-create__form input{width:100%;min-height:42px;padding:var(--sp-3);color:var(--text);font:inherit;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm)}.agents-create__form input:focus{outline:none;border-color:var(--accent-500);box-shadow:var(--focus-ring)}.agents-create__message{margin:var(--sp-4) 0 0}.agents-secret{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-4);padding:var(--sp-4);background:var(--tip-bg);border:1px solid var(--tip-border);border-radius:var(--r-sm)}.agents-secret div{display:grid;gap:var(--sp-2);min-width:0;color:var(--tip-fg);line-height:var(--lh-normal)}.agents-secret strong{color:var(--text)}.agents-secret span{overflow-wrap:anywhere}.agents-secret code{color:var(--code-inline-fg);background:color-mix(in oklab,var(--code-inline-bg) 86%,var(--surface));border-radius:var(--r-xs);padding:2px 5px;font-family:var(--font-mono);font-size:var(--fs-13)}.agents-disclosure{margin-bottom:var(--sp-6)}.agents-disclosure summary{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);cursor:pointer;list-style:none}.agents-disclosure summary::-webkit-details-marker{display:none}.agents-disclosure summary span{display:grid;gap:2px;min-width:0}.agents-disclosure summary strong{color:var(--text)}.agents-disclosure summary em{color:var(--text-muted);font-size:var(--fs-13);font-style:normal}.agents-disclosure[open] summary app-icon{transform:rotate(180deg)}.agents-disclosure__body{display:grid;gap:var(--sp-4);padding:0 var(--sp-5) var(--sp-5);border-top:1px solid var(--border)}.agents-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-3);margin:var(--sp-5) 0 0;padding:0;list-style:none;counter-reset:pipeline}.agents-pipeline li{counter-increment:pipeline;display:grid;gap:var(--sp-2);padding:var(--sp-3);background:var(--surface-2);border:1px solid var(--border-faint);border-radius:var(--r-sm)}.agents-pipeline li:before{content:counter(pipeline);display:grid;place-items:center;width:22px;height:22px;color:var(--on-accent);background:var(--accent);border-radius:var(--r-pill);font-size:var(--fs-12);font-weight:var(--fw-bold)}.agents-pipeline strong,.agent-card h3{color:var(--text);font-size:var(--fs-15);line-height:var(--lh-snug)}.agents-pipeline span,.agent-card p,.agents-rules{color:var(--text-secondary);line-height:var(--lh-normal)}.agents-rules{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-5);margin:0;padding-left:var(--sp-5)}.agent-card{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm)}.agent-card h3,.agent-card p{margin:0}.agents-empty{display:grid;gap:var(--sp-2);padding:var(--sp-5);color:var(--text-secondary);background:var(--surface-2);border:1px solid var(--border-faint);border-radius:var(--r-sm)}.agents-empty strong{color:var(--text)}@media (max-width: 1120px){.agents-workbench{grid-template-columns:1fr}.agents-panel--review{position:static}.agents-create__form{grid-template-columns:repeat(2,minmax(0,1fr))}.agents-create__form .btn{grid-column:1 / -1}.agents-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.agents-page{padding-top:var(--sp-6)}.agents-page__header{flex-direction:column;gap:var(--sp-4)}.agents-page__header h1{font-size:var(--fs-30)}.agents-page__actions,.agents-page__actions .btn{width:100%}.agents-summary,.agents-pipeline{grid-template-columns:1fr}.agents-summary{gap:var(--sp-2)}.agents-summary__item{padding:var(--sp-3)}.agents-panel,.agents-create{padding:var(--sp-4)}.agents-create__form{grid-template-columns:1fr}.agents-secret{flex-direction:column}.agents-section__head{align-items:stretch;flex-direction:column;gap:var(--sp-3)}.agents-search{width:100%}.registered-agent{grid-template-columns:1fr;align-items:start}.registered-agent__stats,.registered-agent__meta,.registered-agent__actions{grid-column:1}.registered-agent__actions{justify-content:flex-start}.registered-agent__identity h3,.registered-agent__identity p,.registered-agent__meta{white-space:normal}.agent-card{grid-template-columns:34px minmax(0,1fr)}.agent-card__status{grid-column:2;justify-self:start}.agents-disclosure summary{align-items:flex-start;padding:var(--sp-4)}.agents-disclosure__body{padding:0 var(--sp-4) var(--sp-4)}}@media (prefers-reduced-motion: reduce){.skeleton:after{animation:none}}.num-stepper{display:inline-flex;align-items:stretch;border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden;background:var(--bg)}.num-stepper__btn{width:28px;border:none;background:var(--surface-2);color:var(--text-secondary);cursor:pointer;font-size:var(--fs-16);line-height:1;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;flex-shrink:0;-webkit-user-select:none;user-select:none;outline:none}.num-stepper__btn:hover{background:var(--surface-3);color:var(--text-primary)}.num-stepper__btn:active{background:var(--accent-500, #38b2ac);color:#fff}.num-stepper__btn:focus-visible{box-shadow:var(--focus-ring)}.num-stepper__input{width:48px;text-align:center;border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);background:var(--bg);color:var(--text-primary);font-size:var(--fs-14);padding:var(--sp-2) 0;-moz-appearance:textfield}.num-stepper__input:focus{outline:none;background:var(--surface-2)}.num-stepper__input::-webkit-inner-spin-button,.num-stepper__input::-webkit-outer-spin-button{-webkit-appearance:none}.custom-checkbox{position:relative;width:18px;height:18px;flex-shrink:0;border:1.5px solid var(--border);border-radius:4px;background:var(--bg);cursor:pointer;transition:background .15s,border-color .15s}.custom-checkbox input[type=checkbox]{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.custom-checkbox:after{content:"";position:absolute;left:5px;top:2px;width:5px;height:9px;border:2px solid transparent;border-top:none;border-left:none;transform:rotate(45deg);transition:border-color .12s}.custom-checkbox--checked{background:var(--accent-500, #38b2ac);border-color:var(--accent-500, #38b2ac)}.custom-checkbox--checked:after{border-color:#fff}.sk-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px}.sk-line{height:12px;margin-bottom:10px}.sk-block{display:grid;gap:0}.state-panel{text-align:center;max-width:460px;margin:0 auto;padding:64px 20px;display:grid;place-items:center;gap:8px}.state-panel__icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;margin-bottom:12px;background:var(--surface-3);color:var(--text-muted)}.state-panel__icon svg{width:30px;height:30px}.state-panel--error .state-panel__icon{background:var(--warn-bg);color:var(--warn-icon)}.state-panel__title{font-size:var(--fs-20);font-weight:var(--fw-bold);margin:0}.state-panel__text{color:var(--text-secondary);font-size:var(--fs-15);margin:4px 0 14px;line-height:var(--lh-normal)}.state-panel__actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.notfound{text-align:center;padding:clamp(60px,12vw,130px) 20px;display:grid;place-items:center;gap:10px}.notfound__code{font-family:var(--font-mono);font-size:clamp(4rem,14vw,8rem);font-weight:var(--fw-bold);line-height:1;color:var(--accent-600);letter-spacing:-.04em}.notfound__title{font-size:clamp(1.3rem,3vw,1.8rem);font-weight:var(--fw-bold);margin:8px 0 0}.notfound__text{color:var(--text-secondary);font-size:var(--fs-16);margin:6px 0 18px;max-width:44ch}.about-prose{max-width:68ch;padding-bottom:var(--sp-8)}.about-lead{font-size:clamp(1.2rem,2.4vw,1.5rem);line-height:1.5;color:var(--text);font-weight:var(--fw-medium);margin:0 0 28px;text-wrap:pretty}.about-prose p{color:var(--text-secondary);font-size:var(--fs-17);line-height:var(--lh-normal);margin:0 0 18px}.about-prose h2{font-size:var(--fs-24);font-weight:var(--fw-bold);margin:40px 0 14px;letter-spacing:-.01em}.about-points{display:grid;gap:14px;margin:24px 0}@media (min-width: 640px){.about-points{grid-template-columns:1fr 1fr}}.about-point{display:flex;gap:14px;align-items:flex-start;padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.about-point__icon{width:38px;height:38px;border-radius:10px;background:var(--accent-soft);color:var(--accent-700);display:grid;place-items:center;flex:0 0 auto;border:1px solid var(--accent-soft-border)}[data-theme=dark] .about-point__icon{color:var(--accent-700)}.about-point__icon svg{width:20px;height:20px}.about-point h3{font-size:var(--fs-15);font-weight:var(--fw-semibold);margin:0 0 4px}.about-point p{font-size:var(--fs-14);color:var(--text-secondary);margin:0;line-height:var(--lh-normal)}.prose-skeleton{max-width:var(--read-measure);display:grid;gap:0}[id]{scroll-margin-top:calc(var(--header-h) + 14px)}.route-bar{position:fixed;top:0;left:0;height:2px;background:var(--accent-500);z-index:300;transition:width .2s ease,opacity .3s;box-shadow:0 0 8px var(--accent-400)}.muted{color:var(--text-muted)}.center{text-align:center}.mono{font-family:var(--font-mono)}.divider{height:1px;background:var(--border-faint);border:none;margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cselect{position:relative;display:inline-flex}.cselect__trigger{display:inline-flex;align-items:center;gap:8px;font-family:inherit;font-size:var(--fs-14);font-weight:var(--fw-medium);color:var(--text);padding:0 14px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);min-height:44px;cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s;white-space:nowrap;-webkit-user-select:none;user-select:none}.cselect__trigger:focus-visible{border-color:var(--accent-500);box-shadow:var(--focus-ring);outline:none}.cselect__trigger:hover{border-color:var(--accent-500)}.cselect.is-open .cselect__trigger{border-color:var(--accent-500);box-shadow:var(--focus-ring);background:var(--accent-soft)}.cselect.is-active:not(.is-open) .cselect__trigger{border-color:var(--accent-400);color:var(--accent-600);background:var(--accent-soft)}.cselect__chevron{flex-shrink:0;color:var(--text-muted);transition:transform .2s cubic-bezier(.4,0,.2,1)}.cselect.is-open .cselect__chevron,.cselect.is-active:not(.is-open) .cselect__chevron{color:var(--accent-600)}.cselect.is-open .cselect__chevron{transform:rotate(180deg)}.cselect__dropdown{position:absolute;top:calc(100% + 6px);left:0;min-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:0 12px 32px #0000001a,0 2px 8px #0000000f;overflow-x:hidden;overflow-y:auto;max-height:260px;z-index:200;padding:4px;opacity:0;transform:translateY(-6px) scaleY(.97);transform-origin:top center;pointer-events:none;transition:opacity .16s cubic-bezier(.4,0,.2,1),transform .16s cubic-bezier(.4,0,.2,1);scrollbar-width:thin;scrollbar-color:var(--border) transparent}.cselect__dropdown::-webkit-scrollbar{width:6px}.cselect__dropdown::-webkit-scrollbar-track{background:transparent;margin:4px}.cselect__dropdown::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.cselect__dropdown::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.cselect.is-open .cselect__dropdown{opacity:1;transform:translateY(0) scaleY(1);pointer-events:all}.cselect__option{display:block;width:100%;text-align:left;font-family:inherit;font-size:var(--fs-14);font-weight:var(--fw-regular);color:var(--text);padding:9px 12px;background:transparent;border:none;border-radius:var(--r-sm);cursor:pointer;transition:background .1s;white-space:nowrap}.cselect__option:hover{background:var(--surface-2)}.cselect__option.is-selected{font-weight:var(--fw-medium);color:var(--accent-600);background:var(--accent-soft)}.cdk-drag-preview{box-shadow:0 4px 16px #0000001f,0 2px 6px #00000014;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border);opacity:.95}.cdk-drag-placeholder{opacity:.3}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .cdk-drag:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}
