:root{--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "Cascadia Code", monospace;--text-xs: .8125rem;--text-sm: .9375rem;--text-code: .8125rem;--text-base: 1.0625rem;--text-md: 1.1875rem;--text-lg: 1.375rem;--text-xl: 1.625rem;--text-2xl: 2rem;--text-3xl: 2.375rem;--leading-tight: 1.25;--leading-normal: 1.55;--leading-relaxed: 1.7;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 2.5rem;--touch-min: 48px;--color-text-primary: #111111;--color-text-secondary: #4a4a4a;--color-text-tertiary: #767676;--color-background-primary: #ffffff;--color-background-secondary: #f4f6f9;--color-border-secondary: #d8dde5;--color-border-tertiary: #e8ecf1;--border-radius-sm: 8px;--border-radius-md: 12px;--border-radius-lg: 16px;--accent: #185fa5;--accent-light: #e6f1fb;--accent-dark: #0c447c;--success-bg: #e1f5ee;--success-text: #085041;--error-bg: #fcebeb;--error-text: #791f1f;--max-width: 920px;--caption-tracking: .08em}@media(min-width:768px){:root{--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.3125rem;--text-xl: 1.5rem;--text-2xl: 1.875rem;--text-3xl: 2.25rem}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-background-secondary);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--font-mono);font-size:.88em;background:var(--color-background-secondary);padding:3px 7px;border-radius:5px}.caption{display:block;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--caption-tracking);text-transform:uppercase;line-height:var(--leading-tight);color:var(--color-text-tertiary);margin-bottom:var(--space-xs)}.caption--accent{color:var(--accent)}.caption--success{color:#0f6e56}.caption--warn{color:#854f0b}.caption--on-dark{color:#ffffffbf}.caption-pill{display:inline-block;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--caption-tracking);text-transform:uppercase;padding:6px 14px;border-radius:999px;line-height:1}.caption-pill--accent,.caption-pill--cat{color:var(--accent);background:var(--accent-light)}.caption-pill--lang{color:var(--color-text-secondary);background:var(--color-background-secondary);text-transform:none;letter-spacing:0;font-weight:600;margin-bottom:0}.caption-pill,.caption-pill--accent,.caption-pill--cat{margin-bottom:var(--space-md)}.layout{min-height:100vh;display:flex;flex-direction:column}.site-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-background-primary);border-bottom:1px solid var(--color-border-tertiary);position:sticky;top:0;z-index:100}.site-header__search{flex:1 1 12rem;min-width:0;max-width:36rem}.site-search{display:flex;align-items:center;gap:.5rem;width:100%;padding:0 .85rem;border:1px solid var(--color-border-secondary);border-radius:999px;background:var(--color-background-primary);box-shadow:inset 0 1px 2px #0000000a}.site-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.site-search__icon{color:var(--color-text-tertiary);font-size:1.1rem;line-height:1}.site-search__input{flex:1;min-width:0;border:none;background:transparent;font:inherit;font-size:var(--text-sm);padding:.65rem 0;color:var(--color-text-primary)}.site-search__input:focus{outline:none}.site-main:has(.home-page){max-width:none;padding:0}.home-page{width:100%}.home-promo{background:linear-gradient(115deg,#5624d0,#7c3aed 45%,#a855f7);color:#fff;padding:var(--space-xl) var(--space-md) var(--space-2xl)}.home-promo__inner{max-width:72rem;margin:0 auto;display:grid;grid-template-columns:1fr;gap:var(--space-lg);align-items:center}@media(min-width:900px){.home-promo__inner{grid-template-columns:1.1fr .9fr}}.home-promo__copy h1{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;line-height:var(--leading-tight);margin-bottom:var(--space-sm);letter-spacing:-.02em}.home-promo__copy p{font-size:var(--text-md);line-height:var(--leading-relaxed);opacity:.95;max-width:34rem;margin-bottom:var(--space-lg)}.home-promo__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.home-promo__secondary{background:#fff;color:#5624d0;border-color:#fff}.home-promo__secondary:hover:not(:disabled){background:#f5f3ff}.home-promo__visual img{width:100%;max-width:22rem;margin:0 auto;display:block;border-radius:var(--border-radius-lg);box-shadow:0 20px 40px #00000040}.home-section{max-width:72rem;margin:0 auto;padding:var(--space-xl) var(--space-md) var(--space-lg)}.home-section__head{margin-bottom:var(--space-md)}.home-section__head--left{text-align:left}.home-section__head h2{font-size:var(--text-xl);font-weight:800;line-height:var(--leading-tight);letter-spacing:-.01em}.home-section__head p{margin-top:var(--space-xs);color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);max-width:42rem}.home-section__head .link-btn{margin-top:var(--space-xs);padding-left:0}.home-section__footer{margin-top:var(--space-md)}.home-section--results{border-top:1px solid var(--color-border-tertiary)}.category-tabs{display:flex;gap:var(--space-md);overflow-x:auto;padding-bottom:var(--space-sm);margin-bottom:var(--space-md);border-bottom:1px solid var(--color-border-tertiary);scrollbar-width:none}.category-tabs::-webkit-scrollbar{display:none}.category-tab{flex-shrink:0;background:none;border:none;border-bottom:3px solid transparent;margin-bottom:-1px;padding:.5rem 0;font:inherit;font-size:var(--text-sm);font-weight:700;color:var(--color-text-secondary);cursor:pointer;white-space:nowrap}.category-tab.on{color:var(--color-text-primary);border-bottom-color:var(--color-text-primary)}.category-tab:hover{color:var(--color-text-primary)}.course-carousel{position:relative}.course-carousel__controls{position:absolute;top:-3rem;right:0;display:flex;gap:.35rem}.course-carousel__arrow{width:2.25rem;height:2.25rem;border-radius:50%;border:1px solid var(--color-border-secondary);background:var(--color-background-primary);color:var(--color-text-primary);font-size:1.35rem;line-height:1;cursor:pointer;display:grid;place-items:center;box-shadow:0 2px 8px #00000014}.course-carousel__arrow:hover{background:var(--color-background-secondary)}.course-carousel__track{display:flex;gap:var(--space-md);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--space-md);padding-bottom:var(--space-xs);scrollbar-width:thin}.course-compact{flex:0 0 min(100%,18rem);scroll-snap-align:start;display:flex;flex-direction:column;text-decoration:none;color:inherit;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-primary);overflow:hidden;min-height:100%}.course-compact:hover{box-shadow:0 8px 24px #00000014;text-decoration:none}.course-compact--soon{opacity:.85}.course-compact .illustration--card{margin:0}.course-compact .illustration--card img{width:100%;max-height:none;aspect-ratio:16 / 9;object-fit:cover}.course-compact__thumb--placeholder{aspect-ratio:16 / 9;background:linear-gradient(135deg,var(--accent-light),var(--color-background-secondary))}.course-compact__body{padding:var(--space-sm) var(--space-md) var(--space-md);display:flex;flex-direction:column;gap:.35rem;flex:1}.course-compact__cat{font-size:var(--text-xs);font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.course-compact__title{font-size:var(--text-base);font-weight:800;line-height:var(--leading-tight);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-compact__subtitle{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-normal);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-compact__meta{font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--leading-normal)}.course-compact__soon{font-size:var(--text-sm);color:var(--color-text-secondary)}.course-compact .course-langs{margin-top:auto;margin-bottom:0}.course-compact .course-langs-label{display:none}.course-grid--browse{max-width:72rem;margin-inline:auto;grid-template-columns:1fr}@media(min-width:640px){.course-grid--browse{grid-template-columns:repeat(2,1fr);max-width:none}}@media(min-width:1024px){.course-grid--browse{grid-template-columns:repeat(3,1fr)}}@media(min-width:640px){.site-header__search{flex:1 1 16rem}}@media(max-width:767px){.site-header__search{flex:1 1 100%;order:3;max-width:none}.course-carousel__controls{display:none}}.brand{display:flex;align-items:center;color:var(--color-text-primary);text-decoration:none;min-width:0}.brand:hover{text-decoration:none}.brand-logo{display:flex;align-items:center;gap:.65rem;min-width:0}.brand-mark{width:2.25rem;height:2.25rem;flex-shrink:0}.brand-lockup{display:flex;flex-direction:column;gap:.1rem;min-width:0}.brand-wordmark{font-family:Fraunces,Georgia,Times New Roman,serif;font-size:1.2rem;font-weight:700;line-height:1.1;letter-spacing:-.02em;white-space:nowrap}.brand-wordmark-power{color:var(--color-text-primary)}.brand-wordmark-learn{color:var(--accent)}.brand-slogan{font-size:.6875rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-tertiary);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:639px){.brand-lockup{display:none}}@media(max-width:520px){.brand-slogan{display:none}}@media(min-width:768px){.brand-mark{width:2.5rem;height:2.5rem}.brand-wordmark{font-size:1.3125rem}.brand-slogan{font-size:.71875rem}}.site-nav{display:flex;align-items:center;gap:4px;flex-shrink:0;min-width:0}.nav-item{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;padding:8px;border:none;border-radius:var(--border-radius-sm);background:transparent;color:var(--color-text-secondary);font-family:inherit;font-size:var(--text-sm);font-weight:600;text-decoration:none;cursor:pointer;flex-shrink:0}.nav-item:hover,.nav-item:focus-visible{background:var(--color-background-secondary);color:var(--color-text-primary);text-decoration:none;outline:none}.nav-item--primary{background:var(--accent);color:#fff}.nav-item--primary:hover,.nav-item--primary:focus-visible{background:var(--accent-dark);color:#fff}.nav-item__label{display:none}.nav-icon{display:block;flex-shrink:0}.lang-switcher{position:relative;display:flex;align-items:center;flex-shrink:0}.lang-switcher__face{display:inline-flex;align-items:center;justify-content:center;gap:2px;min-width:40px;min-height:40px;padding:0 6px;border-radius:var(--border-radius-sm);background:var(--color-background-secondary);border:1px solid var(--color-border-secondary);color:var(--color-text-secondary);pointer-events:none}.lang-switcher__code{font-size:.6875rem;font-weight:700;letter-spacing:.04em;line-height:1}.lang-switcher__select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;font-size:var(--text-sm)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[dir=rtl] .site-nav,[dir=rtl] .nav-row,[dir=rtl] .prog-header,[dir=rtl] .exam-actions{flex-direction:row-reverse}.user-chip{display:none;font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--color-background-secondary);padding:6px 12px;border-radius:999px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--space-lg) var(--space-md) var(--space-2xl)}.site-main:has(.learning-app){padding-bottom:calc(var(--space-2xl) + 80px)}.site-footer{padding:var(--space-lg) var(--space-md);text-align:center;font-size:var(--text-sm);color:var(--color-text-tertiary);line-height:var(--leading-relaxed);border-top:1px solid var(--color-border-tertiary)}.footer-note{margin-top:var(--space-xs);color:#854f0b;font-size:var(--text-sm)}@media(min-width:640px){.site-header{padding:var(--space-sm) var(--space-lg)}.site-nav{gap:var(--space-sm)}.brand-lockup{display:flex}.nav-item{min-width:auto;min-height:var(--touch-min);padding:8px 12px}.nav-item__label{display:inline}.lang-switcher__face{display:none}.lang-switcher__select{position:static;opacity:1;width:auto;height:auto;min-height:var(--touch-min);max-width:9rem;padding:6px 10px;font-weight:600;color:var(--color-text-secondary);background:var(--color-background-secondary);border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-sm)}.user-chip{display:block}.site-main{padding:var(--space-xl) var(--space-lg) var(--space-2xl)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-size:var(--text-base);font-weight:600;min-height:var(--touch-min);padding:12px 20px;border-radius:var(--border-radius-md);border:2px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,transform .1s;-webkit-tap-highlight-color:transparent}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-ghost{background:var(--color-background-primary);color:var(--color-text-primary);border-color:var(--color-border-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-background-secondary)}.btn-sm{font-size:var(--text-sm);min-height:42px;padding:8px 16px}.btn-lg{font-size:var(--text-md);min-height:54px;padding:14px 28px}.btn-block{width:100%}.btn-google{width:100%;background:#fff;border:1px solid #dadce0;color:#3c4043;font-weight:500;gap:12px}.btn-google:hover:not(:disabled){background:#f8f9fa;border-color:#d2d4d8;box-shadow:0 1px 2px #3c40434d}.btn-google-icon{flex-shrink:0;width:20px;height:20px;display:block}.link-btn{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;font-weight:600;text-decoration:underline;min-height:var(--touch-min)}.hero{text-align:center;padding:var(--space-lg) 0 var(--space-2xl)}.hero h1{font-size:var(--text-3xl);font-weight:800;line-height:var(--leading-tight);margin-bottom:var(--space-md);letter-spacing:-.02em}.hero h1 em{font-style:normal;color:var(--accent)}.hero-lead{font-size:var(--text-md);color:var(--color-text-secondary);line-height:var(--leading-relaxed);max-width:36rem;margin:0 auto var(--space-lg)}.hero-actions{display:flex;flex-direction:column;gap:var(--space-sm)}@media(min-width:480px){.hero-actions{flex-direction:row;justify-content:center;flex-wrap:wrap}}.features,.courses-section,.customize-cta{margin-bottom:var(--space-2xl)}.section-head{text-align:center;margin-bottom:var(--space-lg)}.section-head h2{font-size:var(--text-xl);font-weight:800;line-height:var(--leading-tight);letter-spacing:-.01em}.feature-grid{display:grid;grid-template-columns:1fr;gap:var(--space-md)}@media(min-width:540px){.feature-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:900px){.feature-grid{grid-template-columns:repeat(3,1fr)}}.feature-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);overflow:hidden;display:flex;flex-direction:column}.feature-image{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;background:var(--color-background-secondary)}.feature-card-body{padding:var(--space-lg);flex:1}.feature-card h3{font-size:var(--text-md);font-weight:700;margin-bottom:var(--space-xs);line-height:var(--leading-tight)}.feature-card p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.course-grid{display:grid;gap:var(--space-lg);max-width:42rem;margin-inline:auto}.course-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);overflow:visible;display:flex;flex-direction:column}.course-card .illustration--card{margin:calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg)) var(--space-md);border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0;overflow:hidden}.course-card-body{display:flex;flex-direction:column;flex:1}.course-card-tagline{font-size:var(--text-base);font-weight:600;color:var(--color-text-primary);line-height:var(--leading-normal);margin:0 0 var(--space-sm)}.course-card-toggle{display:inline-flex;align-items:center;gap:.35rem;margin:0 0 var(--space-sm);padding:0;border:none;background:none;font-family:inherit;font-size:var(--text-sm);font-weight:600;color:var(--accent);cursor:pointer;-webkit-tap-highlight-color:transparent}.course-card-toggle:hover{color:var(--accent-dark);text-decoration:underline}.course-card-toggle-icon{display:inline-block;font-size:.85em;line-height:1;transition:transform .15s ease}.course-card-toggle-icon.open{transform:rotate(180deg)}.course-card-details{margin-bottom:var(--space-sm)}.course-card-details .course-card-hook{margin-top:0}.course-card-hook{font-size:var(--text-base);font-weight:500;color:var(--accent-dark);line-height:var(--leading-relaxed);margin:0 0 var(--space-md);padding-left:var(--space-md);border-left:3px solid var(--accent)}.course-card-description{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);margin:0 0 var(--space-md)}.course-card-audience{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.course-card-audience-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary);margin:0 0 var(--space-xs)}.course-card-audience p:last-child{margin:0;font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.illustration{margin:0 0 var(--space-md);max-width:100%}.illustration img{display:block;width:100%;height:auto;border-radius:var(--border-radius-md);border:1px solid var(--color-border-tertiary);background:var(--color-background-secondary)}.illustration--hero img{border-radius:var(--border-radius-lg)}.illustration--banner{margin-bottom:var(--space-lg)}.illustration--banner img{border-radius:var(--border-radius-lg);max-height:220px;object-fit:cover}.illustration--inline img{max-height:280px;object-fit:contain}.illustration--tutorial img{border-color:var(--accent);max-height:320px;object-fit:contain}.illustration--card img{border:none;border-radius:0;border-bottom:1px solid var(--color-border-tertiary);max-height:160px;object-fit:cover}.illustration-caption{margin-top:var(--space-xs);font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--leading-normal)}.illustration-credit{display:block;margin-top:.15rem;font-style:italic}.concept .illustration{margin:var(--space-xs) 0 var(--space-sm)}.analogy .illustration{margin-bottom:var(--space-sm)}.course-intro .illustration--hero{margin-bottom:var(--space-lg)}.course-card h3{font-size:var(--text-lg);font-weight:800;margin:var(--space-xs) 0 var(--space-xs);line-height:var(--leading-tight)}.course-card>p,.course-card-body>p:not(.course-card-hook):not(.course-card-description):not(.course-card-audience-label){color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);margin-bottom:var(--space-md)}.course-meta{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-weight:600;color:var(--color-text-tertiary);margin-bottom:var(--space-lg);margin-top:auto;padding-top:var(--space-sm)}.course-card .btn{margin-top:0}.course-card-actions{display:flex;gap:var(--space-sm);align-items:stretch;position:relative;z-index:2}.course-card-actions .btn-primary{flex:1}.share-course-wrap{position:relative;display:inline-flex;z-index:2}.share-course-wrap--open{z-index:50}.course-card:has(.share-course-wrap--open){position:relative;z-index:20}.share-course-wrap--block{display:flex;width:100%}.share-course-btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;flex-shrink:0;min-width:6.5rem}.share-course-wrap--block .share-course-btn{width:100%}.share-course-menu{position:absolute;top:calc(100% + .35rem);right:0;z-index:50;min-width:11rem;padding:.35rem;background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);box-shadow:0 8px 24px #0000001f}.share-course-menu__item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.55rem .65rem;border:0;border-radius:calc(var(--border-radius-md) - 2px);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.share-course-menu__item:hover,.share-course-menu__item:focus-visible{background:var(--color-background-secondary);outline:none}.share-course-icon{flex-shrink:0}.course-header .share-course-btn{margin-top:0}.course-header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm);margin-bottom:var(--space-sm);position:relative;z-index:3}.course-top-bar{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-lg)}.course-top-bar .content-locale-bar{flex:1 1 16rem;margin-bottom:0}.course-exam-link{flex-shrink:0;align-self:center}.customize-cta{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);text-align:center}.customize-cta h2{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-sm)}.catalog-empty{text-align:center;color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);padding:var(--space-xl)}.catalog-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:flex-end;justify-content:center;max-width:42rem;margin:0 auto var(--space-lg)}.catalog-search{flex:1 1 16rem;min-width:0}.catalog-search input{width:100%;padding:.65rem .9rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font:inherit;font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-background-primary)}.catalog-search input:focus{outline:2px solid var(--accent);outline-offset:1px}.catalog-filter{display:flex;flex-direction:column;gap:4px;flex:0 1 12rem}.catalog-filter-label{font-size:var(--text-xs);font-weight:700;letter-spacing:var(--caption-tracking);text-transform:uppercase;color:var(--color-text-secondary)}.catalog-filter select{width:100%;padding:.65rem .9rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font:inherit;font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-background-primary)}.catalog-summary{text-align:center;font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-md)}.catalog-pagination{display:flex;align-items:center;justify-content:center;gap:var(--space-md);margin-top:var(--space-lg)}.catalog-page-status{font-size:var(--text-sm);color:var(--color-text-secondary)}.course-langs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-sm)}.course-langs-label{font-size:var(--text-xs);font-weight:600;color:var(--color-text-secondary)}.course-langs-list{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding: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}.course-card--soon{opacity:.85}.course-soon-btn{pointer-events:none;width:100%}.sync-banner{font-size:var(--text-sm);font-weight:600;color:var(--accent);background:var(--accent-light);padding:var(--space-sm) var(--space-md);border-radius:var(--border-radius-md);margin-bottom:var(--space-md);text-align:center}.course-loading-shell{padding:var(--space-md) 0}.course-loading-title{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-lg)}.learning-app{padding:0}.course-header{position:relative;z-index:2;margin-bottom:var(--space-lg)}.course-header h1{font-size:var(--text-xl);font-weight:800;line-height:var(--leading-tight);display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.course-icon{font-size:1.75rem;flex-shrink:0}.course-subtitle{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin-top:var(--space-xs);margin-bottom:var(--space-md)}.course-outline{margin-bottom:var(--space-lg)}.course-intro{position:relative;z-index:1;background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg)}.intro-hook-block{margin-bottom:var(--space-md)}.intro-hook{font-size:var(--text-md);font-weight:600;line-height:var(--leading-relaxed);color:var(--color-text-primary);margin:0}.intro-grid{display:grid;grid-template-columns:1fr;gap:var(--space-md)}@media(min-width:640px){.intro-grid{grid-template-columns:1fr 1fr}}.intro-card{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:var(--space-md);margin-bottom:0}.intro-card-assumptions{background:#faeeda;border:1px solid #e8d5a8}.intro-body{font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text-secondary);margin:0}.intro-card-assumptions .intro-body{color:#5c4a1a}.sess-nav{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;margin:0 calc(-1 * var(--space-md));padding-left:var(--space-md);padding-right:var(--space-md);-webkit-overflow-scrolling:touch;scrollbar-width:none}.sess-nav::-webkit-scrollbar{display:none}.sess-card{position:relative;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:9.5rem;min-height:4.5rem;padding:10px 12px;border-radius:var(--border-radius-md);border:2px solid var(--color-border-secondary);background:var(--color-background-primary);color:var(--color-text-primary);cursor:pointer;text-align:left;font-family:inherit;-webkit-tap-highlight-color:transparent;transition:border-color .15s,background .15s}.sess-card-num{font-size:var(--text-xs);font-weight:800;letter-spacing:var(--caption-tracking);text-transform:uppercase;color:var(--color-text-tertiary)}.sess-card-title{font-size:var(--text-sm);font-weight:700;line-height:var(--leading-tight);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sess-card-check{position:absolute;top:8px;right:8px;font-size:var(--text-xs);font-weight:800;color:#0f6e56}.sess-card.on{background:var(--accent);border-color:var(--accent)}.sess-card.on .sess-card-num,.sess-card.on .sess-card-title{color:#e6f1fb}.sess-card.on .sess-card-check{color:#b8f5d8}.sess-card.done:not(.on){border-color:#0f6e56;background:var(--success-bg)}.sess-card.done:not(.on) .sess-card-title{color:#085041}@media(min-width:640px){.sess-nav{margin:0;padding-left:0;padding-right:0;flex-wrap:wrap;overflow-x:visible}.sess-card{width:calc(25% - 8px);min-width:9rem}}.prog-wrap{margin-bottom:var(--space-lg)}.prog-header{display:flex;flex-direction:column;gap:4px;margin-bottom:var(--space-sm)}.prog-title{font-size:var(--text-md);font-weight:700;line-height:var(--leading-tight);color:var(--color-text-primary)}.prog-pct{font-size:var(--text-sm);font-weight:700;color:var(--accent)}.prog-track{height:10px;background:var(--color-background-secondary);border-radius:999px;overflow:hidden;border:1px solid var(--color-border-tertiary)}.prog-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .4s}@media(min-width:480px){.prog-header{flex-direction:row;justify-content:space-between;align-items:baseline}}.exam-banner{display:flex;flex-direction:column;gap:var(--space-md);background:#eaf3de;border:2px solid #3b6d11;border-radius:var(--border-radius-md);padding:var(--space-md);margin-bottom:var(--space-lg)}.exam-banner p{font-size:var(--text-base);font-weight:600;color:#27500a;line-height:var(--leading-relaxed)}.exam-banner .btn{width:100%}@media(min-width:480px){.exam-banner{flex-direction:row;align-items:center;justify-content:space-between}.exam-banner .btn{width:auto}}.stage-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:var(--space-lg)}@media(max-width:720px){.stage-tabs{display:flex;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}.stab{min-width:4.75rem;flex-shrink:0;font-size:var(--text-xs);min-height:64px}}.stab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:72px;padding:var(--space-sm) 6px;font-size:var(--text-sm);font-weight:700;text-align:center;cursor:pointer;background:var(--color-background-primary);color:var(--color-text-secondary);border:2px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-family:inherit;position:relative;-webkit-tap-highlight-color:transparent}.stab.on{background:var(--accent-light);color:var(--accent-dark);border-color:var(--accent)}.stab-icon{font-size:1.5rem;line-height:1}.stab-badge{position:absolute;top:6px;right:8px;font-size:var(--text-xs);font-weight:800;color:#0f6e56}.panel{display:none}.panel.on{display:block}.theory-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-md)}.theory-card h2{font-size:var(--text-lg);font-weight:800;line-height:var(--leading-tight);margin-bottom:var(--space-md)}.theory-objectives,.theory-terms{margin-bottom:var(--space-md)}.theory-objectives__list{margin:0;padding-left:1.25rem;display:grid;gap:.35rem}.theory-objectives__list li{line-height:var(--leading-relaxed)}.concept--term .term{font-weight:700}.text-block{display:flex;align-items:flex-start;gap:.375rem;margin-bottom:var(--space-sm);max-width:100%}.text-block:last-child{margin-bottom:0}.text-block-body{flex:1;min-width:0;max-width:100%;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}.text-block-heading{margin-bottom:var(--space-md)}.text-block-heading h2,.text-block-step-title h4{margin:0}.text-block-question{margin-bottom:var(--space-md)}.text-block-question .q-text{margin-bottom:0}.text-block-inline{flex:1;margin-bottom:0}.text-block-list-item{display:inline-flex;align-items:flex-start;gap:var(--space-sm);width:100%}.keypoint.text-block{gap:var(--space-sm)}.keypoint.text-block .text-block-body{display:flex;align-items:flex-start;gap:var(--space-sm);flex:1;min-width:0}.keypoint.text-block.text-block-playing .text-block-body{display:block}.keypoint.text-block p{margin:0}.exam-banner.text-block{flex-direction:column;gap:var(--space-md)}@media(min-width:480px){.exam-banner.text-block{flex-direction:row;align-items:center;justify-content:space-between}}.feedback.text-block{align-items:flex-start}.prompt-box.text-block{margin:var(--space-sm) 0}.tts-btn{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-top:.15em;padding:0;border:1.5px solid var(--color-border-secondary);border-radius:50%;background:var(--color-background-primary);color:var(--accent);cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent;transition:background .15s,border-color .15s,color .15s}.tts-btn:hover{background:var(--accent-light);border-color:var(--accent)}.tts-btn.playing{background:var(--accent);border-color:var(--accent);color:#fff}.tts-icon{font-size:.5rem;line-height:1}.tts-btn-compact{width:1.375rem;height:1.375rem;margin-top:0}.karaoke-text{display:block;width:100%;max-width:100%;margin:0;line-height:var(--leading-relaxed);overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;white-space:normal}.karaoke-word{display:inline;border-radius:4px;padding:1px 0;transition:background .12s ease,color .12s ease;box-decoration-break:clone;-webkit-box-decoration-break:clone}.karaoke-word.spoken{color:var(--accent-dark)}.karaoke-word.active{background:#ffe566;color:#1a1a1a;font-weight:700;outline:2px solid #ffd43b;outline-offset:1px}.text-block-playing .text-block-body{line-height:var(--leading-relaxed)}.concept.text-block .text-block-body,.feedback.text-block .text-block-body,.prompt-box.text-block .text-block-body{width:100%;max-width:100%}.opt-row .karaoke-text{text-align:left}.opt-row{display:flex;align-items:stretch;gap:8px}.opt-row .opt{flex:1;min-width:0}.concept{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:var(--space-md);margin-bottom:var(--space-sm)}.concept.text-block{margin-bottom:var(--space-sm)}.concept .term{font-size:var(--text-base);font-weight:700;margin-bottom:6px;color:var(--color-text-primary)}.concept .def{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.concept-example{margin-top:var(--space-xs);padding:var(--space-sm) var(--space-md);font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--text-code);line-height:1.45;color:var(--color-text-primary);background:var(--color-background-secondary, #f4f4f5);border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;max-width:100%;box-sizing:border-box}.concept-example-wrap{margin-top:var(--space-sm)}.concept .editable-illustration{margin-bottom:var(--space-sm)}.concept .editable-illustration__missing{margin-bottom:var(--space-xs);font-size:var(--text-sm);color:var(--color-text-secondary)}.analogy{background:var(--accent-light);border-radius:var(--border-radius-md);padding:var(--space-md);margin-top:var(--space-md);border-left:4px solid var(--accent)}.analogy p{font-size:var(--text-base);color:var(--accent-dark);line-height:var(--leading-relaxed)}.keypoint{display:flex;gap:var(--space-sm);align-items:flex-start;margin-bottom:var(--space-sm)}.keypoint span{color:var(--accent);font-size:var(--text-lg);line-height:1.2;flex-shrink:0}.keypoint p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.quiz-wrap{margin-bottom:var(--space-md)}.reinforce-panel h2{font-size:var(--text-lg);margin-bottom:var(--space-sm)}.reinforce-hint{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-md)}.matcher-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}@media(max-width:640px){.matcher-grid{grid-template-columns:1fr}}.matcher-col{display:flex;flex-direction:column;gap:var(--space-sm)}.matcher-row{display:flex;align-items:stretch;gap:8px}.matcher-row .matcher-item{flex:1;min-width:0}.matcher-feedback{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--border-radius-md);background:var(--color-background-secondary);font-size:var(--text-sm);line-height:var(--leading-relaxed);color:var(--color-text-secondary)}.matcher-feedback strong{color:var(--color-text-primary)}.qa-reveal{margin-top:var(--space-sm);padding:var(--space-md);border-radius:var(--border-radius-md);background:var(--color-background-secondary);border:1px dashed var(--color-border-tertiary)}.qa-reveal-hint{margin:0 0 var(--space-sm);font-size:var(--text-sm);color:var(--color-text-secondary)}.qa-answer{margin-top:var(--space-sm);padding:var(--space-md);border-radius:var(--border-radius-md);background:var(--accent-light);border-left:3px solid var(--accent)}.qa-answer p{margin:0;font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text-primary)}.matcher-item{width:100%;text-align:left;padding:var(--space-md);border:2px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-primary);font-size:var(--text-sm);line-height:var(--leading-relaxed);color:var(--color-text-primary);cursor:pointer;font-family:inherit}.matcher-item--def{font-size:var(--text-sm);color:var(--color-text-secondary)}.matcher-item.selected{border-color:var(--accent);background:var(--accent-light)}.matcher-item.matched{border-color:#3b6d11;background:#eaf3de;color:#27500a;cursor:default}.matcher-item.wrong{border-color:#c44;background:var(--error-bg);animation:matcher-shake .45s ease}@keyframes matcher-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.flashcard{width:100%;min-height:220px;margin:var(--space-md) 0 var(--space-sm);padding:0;border:none;background:transparent;cursor:pointer;perspective:1000px}.flashcard-inner{position:relative;width:100%;min-height:220px;transition:transform .45s ease;transform-style:preserve-3d}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;gap:var(--space-sm);padding:var(--space-lg);border-radius:var(--border-radius-lg);border:2px solid var(--color-border-secondary);backface-visibility:hidden;text-align:center}.flashcard-front{background:var(--accent-light);color:var(--accent-dark)}.flashcard-back{background:#eeedfe;color:#3c3489;transform:rotateY(180deg)}.flashcard-face p:last-child{font-size:var(--text-base);line-height:var(--leading-relaxed);margin:0}.flashcard-tap-hint{text-align:center;font-size:var(--text-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-md)}.flashcard-nav{display:flex;justify-content:space-between;gap:var(--space-sm)}.q-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-md)}.q-text{font-size:var(--text-md);font-weight:600;margin-bottom:var(--space-md);line-height:var(--leading-relaxed);color:var(--color-text-primary)}.options{display:flex;flex-direction:column;gap:var(--space-sm)}.options .opt-row .opt{margin:0}.opt{min-height:var(--touch-min);padding:14px 16px;border-radius:var(--border-radius-md);border:2px solid var(--color-border-secondary);background:var(--color-background-secondary);font-size:var(--text-base);font-weight:500;cursor:pointer;text-align:left;font-family:inherit;line-height:var(--leading-normal);transition:border-color .15s,background .15s;-webkit-tap-highlight-color:transparent}.opt:hover:not(:disabled),.opt:focus-visible:not(:disabled){border-color:var(--accent);background:var(--accent-light);outline:none}.opt.selected{border-color:var(--accent);background:var(--accent-light)}.opt.correct{background:var(--success-bg);border-color:#0f6e56;color:var(--success-text)}.opt.wrong{background:var(--error-bg);border-color:#a32d2d;color:var(--error-text)}.opt:disabled{cursor:default}.feedback{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--border-radius-md);font-size:var(--text-base);line-height:var(--leading-relaxed);display:none}.feedback.show{display:block}.feedback.ok{background:var(--success-bg);color:var(--success-text)}.feedback.bad{background:var(--error-bg);color:var(--error-text)}.quiz-score{background:var(--color-background-primary);border:2px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-xl);text-align:center;margin-top:var(--space-md)}.quiz-score .big{font-size:var(--text-3xl);font-weight:800;color:var(--accent);line-height:1}.quiz-score p{font-size:var(--text-base);color:var(--color-text-secondary);margin-top:var(--space-sm);line-height:var(--leading-relaxed)}.retry-btn{margin-top:var(--space-md);width:100%}.tut-panel{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg)}.tut-panel>h2{font-size:var(--text-lg);font-weight:800;line-height:var(--leading-tight);margin-bottom:var(--space-lg)}.tut-step{display:flex;gap:var(--space-md);margin-bottom:var(--space-lg);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-tertiary)}.tut-step:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.tut-num{width:36px;height:36px;border-radius:50%;background:var(--accent-light);color:var(--accent);font-size:var(--text-sm);font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.tut-body h4{font-size:var(--text-base);font-weight:700;margin-bottom:var(--space-xs);line-height:var(--leading-tight)}.tut-body{flex:1;min-width:0;max-width:100%}.tut-body p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin-bottom:var(--space-sm)}.copyable-block{margin:var(--space-sm) 0}.copyable-block__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-xs)}.copy-btn{font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 12px;border:1px solid var(--color-border-secondary);border-radius:6px;background:var(--color-background-primary);color:var(--accent);cursor:pointer}.copy-btn:hover{background:var(--accent-light);border-color:var(--accent)}.prompt-box,.code-box{background:var(--color-background-secondary);border-radius:0 var(--border-radius-sm) var(--border-radius-sm) 0;padding:var(--space-md);margin:0;font-size:var(--text-code);font-family:var(--font-mono);line-height:var(--leading-relaxed);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;overflow-x:auto;max-width:100%;box-sizing:border-box}textarea.prompt-box,textarea.code-box,.web-playground__editor,.python-playground__editor{display:block;width:100%;max-width:100%;box-sizing:border-box;font-size:var(--text-code);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;overflow-x:hidden;resize:vertical}.prompt-box{border-left:4px solid #7f77dd}.code-box{border-left:4px solid var(--accent)}.code-box pre,.prompt-box pre{margin:0;font-family:inherit;white-space:pre-wrap;word-break:break-word}.tutorial-runtime-note{font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--accent-light);border-radius:var(--border-radius-md);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-lg);line-height:var(--leading-relaxed)}.tutorial-colab-banner{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-md);margin-bottom:var(--space-lg);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);color:var(--color-text-secondary);background:color-mix(in srgb,var(--accent) 12%,var(--color-background-secondary));border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);line-height:var(--leading-relaxed)}.tutorial-colab-banner p{flex:1;min-width:14rem;margin:0}.colab-code-block{margin-top:var(--space-sm)}.colab-code-block__actions{display:flex;justify-content:flex-end;margin-bottom:var(--space-xs)}.colab-code-block__pre{margin:0}.python-playground__stdin{margin-bottom:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.python-playground__stdin-hint{margin:0 0 var(--space-sm);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.python-playground__stdin-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.python-playground__stdin-label{display:flex;flex-direction:column;gap:4px;font-size:var(--text-sm);color:var(--color-text-primary)}.python-playground__stdin-label input{padding:.5rem .65rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font:inherit;font-size:var(--text-sm);color:var(--color-text-primary);background:var(--color-background-primary)}.python-playground__dataset-wrap{margin-bottom:var(--space-sm)}.python-playground__dataset-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.python-playground__dataset-download{font-size:var(--text-xs);font-weight:600;color:var(--accent);text-decoration:none;padding:4px 10px;border:1px solid var(--accent);border-radius:6px}.python-playground__dataset-download:hover{background:var(--accent);color:#fff}.python-playground__dataset-panel{margin-top:var(--space-xs);padding:var(--space-sm);border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface)}.python-playground__dataset-scenario{margin:0 0 var(--space-xs);font-size:var(--text-sm);font-weight:600;color:var(--color-text)}.python-playground__dataset-error{margin:var(--space-xs) 0 0;font-size:var(--text-sm);color:var(--color-danger, #c0392b)}.python-playground__columns{margin-top:var(--space-sm)}.python-playground__column-list{margin:var(--space-xs) 0 0;padding-left:1.25rem;font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.python-playground__column-list code{font-size:.9em;color:var(--color-text)}.python-playground__preview-wrap{margin-top:var(--space-sm)}.python-playground__preview-scroll{overflow-x:auto;margin-top:var(--space-xs)}.python-playground__preview{width:100%;border-collapse:collapse;font-size:var(--text-xs)}.python-playground__preview th,.python-playground__preview td{border:1px solid var(--color-border);padding:4px 8px;text-align:left;white-space:nowrap}.python-playground__preview th{background:var(--color-bg-subtle, rgba(0, 0, 0, .04));font-weight:600}.python-playground__dataset-toggle{display:inline-flex;align-items:center;gap:.35rem;padding:0;border:none;background:none;font-family:inherit;font-size:var(--text-sm);font-weight:600;color:var(--color-text-secondary);cursor:pointer;-webkit-tap-highlight-color:transparent}.python-playground__dataset-toggle:hover{color:var(--accent)}.python-playground__dataset-toggle code{font-family:var(--font-mono);font-size:.95em;color:var(--accent-dark)}.python-playground__dataset-icon{display:inline-block;font-size:.85em;line-height:1;transition:transform .15s ease}.python-playground__dataset-icon.open{transform:rotate(180deg)}.python-playground__dataset-desc{margin:var(--space-xs) 0 0;font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.python-playground{margin:var(--space-sm) 0}.python-playground__actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);justify-content:flex-end}.run-btn{font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 14px;border:1px solid var(--accent);border-radius:6px;background:var(--accent);color:#fff;cursor:pointer}.run-btn:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark)}.run-btn:disabled,.copy-btn:disabled{opacity:.6;cursor:not-allowed}.python-playground__editor{width:100%;min-height:8rem;resize:vertical;border:1px solid var(--color-border-secondary);font-family:var(--font-mono);font-size:var(--text-code);line-height:var(--leading-relaxed);color:var(--color-text-primary)}.python-playground__editor:focus{outline:2px solid var(--accent-light);border-color:var(--accent)}.python-playground__output{margin-top:var(--space-sm);background:#0f172a;border-radius:var(--border-radius-md);padding:var(--space-md)}.python-playground__output .caption{color:#94a3b8;margin-bottom:var(--space-xs)}.python-playground__stdout,.python-playground__error,.python-playground__status{margin:0;font-family:var(--font-mono);font-size:var(--text-code);line-height:var(--leading-relaxed);white-space:pre-wrap;word-break:break-word}.python-playground__stdout{color:#e2e8f0}.python-playground__plot{display:block;max-width:100%;height:auto;margin:var(--space-sm) 0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.python-playground__error{color:#fca5a5}.python-playground__status{color:#94a3b8}.python-playground__hint{margin-top:var(--space-xs);font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--leading-relaxed)}.web-playground{margin-top:var(--space-sm);max-width:100%;overflow-x:hidden}.web-playground__actions{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.web-playground__code-panel{padding:0;overflow:hidden}.web-playground__code-panel.code-box{border-left:4px solid var(--accent)}.web-playground__hint{margin-top:var(--space-xs);color:var(--color-text-tertiary);line-height:var(--leading-relaxed)}.web-playground__editor{display:block;width:100%;min-height:8rem;padding:var(--space-md);border:none;border-radius:0;background:var(--color-background-secondary);font-family:var(--font-mono);font-size:var(--text-code);line-height:1.45;color:var(--color-text-primary);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;overflow-x:hidden;resize:vertical;box-sizing:border-box}.web-playground__editor:focus{outline:none;box-shadow:inset 0 0 0 2px var(--accent-light)}.web-playground__preview{margin-top:var(--space-md)}.web-playground__frame{width:100%;min-height:12rem;border:.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:#fff}.tool-tag{display:inline-block;font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:5px 10px;border-radius:6px;margin:4px 6px 4px 0;background:var(--accent-light);color:var(--accent-dark)}.tool-tag.ai{background:#eeedfe;color:#3c3489}.tool-tag.creative{background:#faeeda;color:#854f0b}.tool-tag.analytics{background:#eaf3de;color:#3b6d11}.tool-tag.ads{background:var(--accent-light);color:var(--accent)}.deliverable{background:#eaf3de;border-radius:var(--border-radius-md);padding:var(--space-md);margin-top:var(--space-sm);border-left:4px solid #3b6d11}.deliverable ul{padding-left:1.25rem;margin-top:var(--space-xs)}.deliverable li{font-size:var(--text-base);color:#27500a;line-height:var(--leading-relaxed);margin-bottom:4px}.learning-app .nav-row{position:fixed;bottom:0;left:0;right:0;display:flex;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);padding-bottom:max(var(--space-sm),env(safe-area-inset-bottom));background:var(--color-background-primary);border-top:1px solid var(--color-border-tertiary);box-shadow:0 -4px 20px #0000000f;z-index:90;align-items:center}.learning-app .nav-row .btn{flex:1}.learning-app .stage-status{display:none;font-size:var(--text-sm);font-weight:600;color:var(--color-text-tertiary);text-align:center}@media(min-width:640px){.site-main:has(.learning-app){padding-bottom:var(--space-2xl)}.learning-app .nav-row{position:static;box-shadow:none;padding:0;margin-top:var(--space-lg);background:transparent;border-top:none}.learning-app .nav-row .btn{flex:none}.learning-app .stage-status{display:block;flex:1}.retry-btn{width:auto}}.auth-page{display:flex;justify-content:center;padding:var(--space-lg) 0}.auth-card{width:100%;max-width:420px;background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-xl) var(--space-lg)}.auth-card h1{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-xs)}.auth-sub{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin-bottom:var(--space-lg)}.auth-divider{display:flex;align-items:center;gap:var(--space-md);margin:var(--space-lg) 0;color:var(--color-text-tertiary);font-size:var(--text-sm);font-weight:600}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--color-border-tertiary)}.auth-form{display:flex;flex-direction:column;gap:var(--space-md)}.auth-form label{display:flex;flex-direction:column;gap:6px;font-size:var(--text-sm);font-weight:700}.auth-form label .caption{margin-bottom:2px}.auth-form input{min-height:var(--touch-min);padding:12px 16px;border:2px solid var(--color-border-secondary);border-radius:var(--border-radius-md);font-family:inherit;font-size:var(--text-base)}.auth-form input:focus{outline:none;border-color:var(--accent)}.form-error{color:#a32d2d;font-size:var(--text-base);font-weight:600}.auth-switch,.auth-back{text-align:center;font-size:var(--text-base);color:var(--color-text-secondary);margin-top:var(--space-lg)}.notice{padding:var(--space-md);border-radius:var(--border-radius-md);font-size:var(--text-base);line-height:var(--leading-relaxed);margin-bottom:var(--space-md)}.notice-warn{background:#faeeda;color:#854f0b}.exam-page{max-width:720px;margin:0 auto}.exam-header{margin-bottom:var(--space-xl)}.exam-header h1{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-sm);line-height:var(--leading-tight)}.exam-header p{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed)}.exam-meta{font-size:var(--text-sm);font-weight:600;color:var(--color-text-tertiary);margin-top:var(--space-sm)}.exam-result{text-align:center;padding:var(--space-xl);border-radius:var(--border-radius-lg);margin-top:var(--space-lg)}.exam-result.success{background:var(--success-bg);color:var(--success-text)}.exam-result.fail{background:var(--error-bg);color:var(--error-text)}.exam-result .big{font-size:var(--text-3xl);font-weight:800}.exam-result p{font-size:var(--text-base);margin-top:var(--space-sm);line-height:var(--leading-relaxed)}.exam-actions{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-lg)}@media(min-width:480px){.exam-actions{flex-direction:row;justify-content:center}}.cert-page{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);padding-bottom:var(--space-2xl)}.certificate{width:100%;max-width:860px}.cert-border{background:linear-gradient(135deg,var(--accent) 0%,#0c447c 55%,#2b7fd4 100%);padding:5px;border-radius:var(--border-radius-lg);box-shadow:0 12px 40px #185fa52e}.cert-inner{position:relative;background:linear-gradient(180deg,#fff,#f8fbff);padding:var(--space-2xl) var(--space-xl);text-align:center;border-radius:calc(var(--border-radius-lg) - 3px);overflow:hidden}.cert-corner{position:absolute;width:3.5rem;height:3.5rem;border:2px solid rgba(24,95,165,.22);pointer-events:none}.cert-corner--tl{top:1.25rem;left:1.25rem;border-right:none;border-bottom:none}.cert-corner--tr{top:1.25rem;right:1.25rem;border-left:none;border-bottom:none}.cert-corner--bl{bottom:1.25rem;left:1.25rem;border-right:none;border-top:none}.cert-corner--br{bottom:1.25rem;right:1.25rem;border-left:none;border-top:none}.cert-header{display:flex;justify-content:center;margin-bottom:var(--space-lg)}.cert-brand .brand-lockup{display:flex}.cert-brand .brand-mark{width:3rem;height:3rem}.cert-brand .brand-wordmark{font-size:1.625rem}.cert-eyebrow{margin:0 0 var(--space-xs);font-size:var(--text-sm);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.cert-inner h1{font-family:Fraunces,Georgia,Times New Roman,serif;font-size:clamp(1.75rem,4vw,2.35rem);margin:0 0 var(--space-md);font-weight:800;line-height:var(--leading-tight);color:var(--color-text-primary)}.cert-lead{margin:0 0 var(--space-sm);font-size:var(--text-base);color:var(--color-text-secondary)}.cert-name{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;color:var(--accent-dark);margin:0 0 var(--space-md);font-family:Fraunces,Georgia,serif;line-height:var(--leading-tight)}.cert-body{font-size:var(--text-base);color:var(--color-text-secondary);max-width:34rem;margin:0 auto var(--space-xl);line-height:var(--leading-relaxed)}.cert-footer{display:flex;flex-direction:column;gap:var(--space-xl);border-top:1px solid var(--color-border-tertiary);padding-top:var(--space-xl);text-align:left}@media(min-width:640px){.cert-footer{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:var(--space-2xl)}}.cert-meta{display:grid;gap:var(--space-lg)}.cert-date,.cert-id{font-size:var(--text-base);font-weight:700;margin:0}.cert-id{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:var(--text-sm);letter-spacing:.02em}.cert-signature{display:flex;flex-direction:column;align-items:center;min-width:12rem;margin:0 auto}@media(min-width:640px){.cert-signature{margin:0;align-items:flex-end}}.cert-signature-image{display:block;width:min(180px,100%);height:auto;margin-bottom:var(--space-xs);object-fit:contain}.cert-signature-name{margin:0;font-size:var(--text-base);font-weight:700;color:var(--color-text-primary)}.cert-signature-title{margin:.15rem 0 0;font-size:var(--text-sm);color:var(--color-text-secondary)}.cert-share{width:100%;max-width:860px;padding:var(--space-lg);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.cert-share-hint{margin:0 0 var(--space-md);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.cert-share-row{display:flex;flex-direction:column;gap:var(--space-sm)}@media(min-width:640px){.cert-share-row{flex-direction:row;align-items:stretch}}.cert-share-url{flex:1;min-width:0;padding:.65rem .85rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);background:#fff;font:inherit;font-size:var(--text-sm);color:var(--color-text-primary)}.cert-share-native{margin-top:var(--space-sm)}.cert-actions{display:flex;flex-direction:column;gap:var(--space-sm);width:100%;max-width:860px}@media(min-width:480px){.cert-actions{flex-direction:row;max-width:none;justify-content:center}}.certificates-page{max-width:48rem;margin:0 auto}.certificates-lead{margin:var(--space-sm) 0 0;color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.certificates-empty,.certificates-error{padding:var(--space-xl);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary);text-align:center}.certificates-empty p,.certificates-error{margin:0 0 var(--space-lg);color:var(--color-text-secondary)}.certificates-list{list-style:none;display:grid;gap:var(--space-md);margin-top:var(--space-xl)}.certificates-item{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}@media(min-width:640px){.certificates-item{flex-direction:row;align-items:center;justify-content:space-between}}.certificates-item-body{min-width:0}.certificates-item h2{margin:0 0 var(--space-xs);font-size:var(--text-lg);line-height:var(--leading-tight)}.certificates-item-meta{margin:0;color:var(--color-text-secondary);font-size:var(--text-sm)}.certificates-item-id{margin:var(--space-xs) 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:var(--text-xs);color:var(--color-text-tertiary)}.certificates-item-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);flex-shrink:0}.dashboard-page{max-width:52rem;margin:0 auto}.dashboard-lead{margin:var(--space-sm) 0 0;color:var(--color-text-secondary)}.dashboard-stats{display:grid;gap:var(--space-md);margin-top:var(--space-xl)}@media(min-width:640px){.dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}.dashboard-stat{padding:var(--space-lg);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.dashboard-stat-value{margin:var(--space-xs) 0;font-size:var(--text-2xl);font-weight:800}.dashboard-stat-hint,.dashboard-stat-link{margin:0;font-size:var(--text-sm);color:var(--color-text-secondary)}.dashboard-stat-link{color:var(--accent)}.dashboard-panel{margin-top:var(--space-xl);padding:var(--space-lg);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.dashboard-panel h2{margin:0 0 var(--space-sm)}.dashboard-muted{margin:0 0 var(--space-md);color:var(--color-text-secondary)}.dashboard-grant-form{display:grid;gap:var(--space-md)}@media(min-width:640px){.dashboard-grant-form{grid-template-columns:1fr 10rem auto;align-items:end}}.dashboard-grant-form label{display:flex;flex-direction:column;gap:var(--space-xs);font-size:var(--text-sm);font-weight:600}.dashboard-grant-form input{padding:.65rem .85rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);font:inherit}.dashboard-grant-status{margin:var(--space-md) 0 0;font-size:var(--text-sm);color:var(--accent-dark)}.dashboard-course-list{list-style:none;display:grid;gap:var(--space-sm);margin:0;padding:0}.dashboard-course-item{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);background:#fff}@media(min-width:640px){.dashboard-course-item{flex-direction:row;align-items:center;justify-content:space-between}}.dashboard-course-item h3{margin:0 0 var(--space-xs);font-size:var(--text-base)}.dashboard-course-meta{margin:0;font-size:var(--text-sm);color:var(--color-text-secondary)}.admin-dashboard{margin-top:0}.dashboard-tabs{display:flex;gap:var(--space-xs);flex-wrap:nowrap;padding:var(--space-xs);margin:var(--space-lg) 0 var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.dashboard-tabs::-webkit-scrollbar{display:none}.dashboard-tabs button{flex:0 0 auto;border:none;background:transparent;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:600;padding:var(--space-sm) var(--space-md);border-radius:var(--border-radius-sm);cursor:pointer;white-space:nowrap}.dashboard-tabs button.is-active{background:var(--color-background-primary);color:var(--color-text-primary);box-shadow:0 1px 2px #0000000f}.dashboard-tabs button:disabled{cursor:not-allowed;opacity:.6}.admin-tab-panel+.admin-tab-panel,.admin-tab-panel+.dashboard-panel{margin-top:var(--space-md)}.admin-dashboard .dashboard-tabs{margin-top:var(--space-md)}.admin-dashboard .section-head h2{margin:0}.admin-error{margin:var(--space-md) 0 0;color:var(--color-error, #c0392b);font-size:var(--text-sm)}.admin-users-head{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-md)}@media(min-width:720px){.admin-users-head{flex-direction:row;align-items:flex-end;justify-content:space-between}}.admin-search{display:flex;gap:var(--space-sm);flex-wrap:wrap}.admin-search input{min-width:14rem;padding:.55rem .75rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);font:inherit}.admin-search select{min-width:10rem;padding:.55rem .75rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);font:inherit;background:var(--color-bg-primary)}.admin-search--stacked{flex-direction:column;align-items:stretch}@media(min-width:720px){.admin-search--stacked{flex-direction:row;align-items:center}}.admin-filter-actions{display:flex;gap:var(--space-sm);flex-wrap:wrap}.author-course-list-head{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-md)}@media(min-width:900px){.author-course-list-head{flex-direction:row;align-items:flex-end;justify-content:space-between}.author-course-filters{max-width:42rem}}.category-tabs--results{margin-bottom:var(--space-md)}.admin-table-wrap{overflow-x:auto;margin-top:var(--space-md)}.admin-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.admin-table th,.admin-table td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border-tertiary);vertical-align:middle}.admin-table th{font-weight:600;color:var(--color-text-secondary);white-space:nowrap}.admin-user-cell{display:flex;flex-direction:column;gap:.15rem}.admin-user-email{font-size:var(--text-xs);color:var(--color-text-secondary)}.admin-muted{color:var(--color-text-secondary)}.admin-course-slugs{max-width:12rem;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-grant-inline{display:flex;gap:var(--space-xs);align-items:center}.admin-grant-input{width:4.5rem;padding:.35rem .5rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);font:inherit}.admin-detail-row td{background:var(--color-background);padding-top:0}.admin-user-detail{padding:var(--space-md) 0 var(--space-sm)}.admin-user-detail h4{margin:var(--space-md) 0 var(--space-xs);font-size:var(--text-sm)}.admin-detail-list{margin:0;padding-left:1.25rem;font-size:var(--text-sm)}.admin-pagination{display:flex;align-items:center;justify-content:center;gap:var(--space-md);margin-top:var(--space-lg);font-size:var(--text-sm)}.admin-coauthor-form{display:grid;gap:var(--space-md);margin-top:var(--space-md)}@media(min-width:640px){.admin-coauthor-form{grid-template-columns:1fr 1fr auto;align-items:end}}.admin-coauthor-form label{display:flex;flex-direction:column;gap:var(--space-xs);font-size:var(--text-sm);font-weight:600}.admin-coauthor-form input{padding:.55rem .75rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);font:inherit;font-weight:400}.admin-coauthor-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.admin-coauthor-form--inline{grid-template-columns:1fr}@media(min-width:640px){.admin-coauthor-form--inline{grid-template-columns:minmax(14rem,22rem) auto;align-items:end}}.admin-course-coauthors{padding:var(--space-sm) 0}.admin-course-coauthors h4{margin:0 0 var(--space-xs);font-size:var(--text-base)}.admin-course-coauthor-list{max-width:36rem}.admin-coauthor-list{margin-top:var(--space-md)}.admin-coauthor-list-head{list-style:none;margin-left:-1.25rem}.page-loading--inline{min-height:4rem}.growth-chart{margin-top:var(--space-md)}.growth-chart-summary{margin-bottom:var(--space-sm);font-size:var(--text-sm);font-weight:600;color:var(--color-text-secondary)}.growth-chart-bars{display:flex;align-items:flex-end;gap:2px;height:8rem;padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border-tertiary)}.growth-chart-bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}.growth-chart-bar{width:100%;max-width:1.25rem;background:var(--accent);border-radius:2px 2px 0 0;transition:height .2s ease}.growth-chart-bar-label{margin-top:var(--space-xs);font-size:.6rem;color:var(--color-text-secondary);writing-mode:vertical-rl;transform:rotate(180deg);max-height:2.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:640px){.growth-chart-bar-label{writing-mode:horizontal-tb;transform:none;font-size:.65rem}}.author-subheading{margin:var(--space-lg) 0 var(--space-sm);font-size:var(--text-base)}.author-member-list{list-style:none;margin:var(--space-md) 0 0;padding:0;display:grid;gap:var(--space-sm)}.author-member-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);background:var(--color-background-primary)}.page-loading{display:flex;justify-content:center;padding:var(--space-2xl)}.spinner{width:40px;height:40px;border:3px solid var(--color-border-secondary);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-box{text-align:center;padding:var(--space-xl);background:var(--color-background-primary);border-radius:var(--border-radius-lg);border:1px solid var(--color-border-tertiary)}.error-box h2{font-size:var(--text-lg);font-weight:800;margin-bottom:var(--space-sm)}.error-box p{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);margin-bottom:var(--space-lg)}@media print{.no-print,.site-header,.site-footer,.nav-row{display:none!important}.site-main{max-width:none;padding:0}.cert-border{padding:2px;box-shadow:none}.cert-inner{background:#fff}.cert-page{padding:0}}.content-locale-bar{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-lg);padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised)}.content-locale-bar__label{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);font-size:.9rem;font-weight:600}.content-locale-bar__select{min-width:10rem;padding:.35rem .5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:inherit}.content-locale-bar__note,.content-locale-bar__locked{margin:0;color:var(--text-muted)}.content-locale-bar__cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.content-locale-bar__cta p{margin:0}.author-page{max-width:var(--max-width);margin:0 auto;padding-bottom:var(--space-2xl)}.author-header{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-xl)}@media(min-width:640px){.author-header{flex-direction:row;justify-content:space-between;align-items:flex-start}}.author-header h1{font-size:var(--text-2xl);font-weight:800;line-height:var(--leading-tight);margin:var(--space-xs) 0}.author-muted{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed)}.author-stats{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.author-back-row{margin-bottom:var(--space-md)}.author-panel{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg)}.author-panel h2{font-size:var(--text-lg);font-weight:800;margin-bottom:var(--space-md)}.author-form{display:flex;flex-direction:column;gap:var(--space-lg)}.author-form__fields{display:grid;gap:var(--space-md) var(--space-lg);grid-template-columns:minmax(0,1fr)}@media(min-width:560px){.author-form__fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:960px){.author-form__fields{grid-template-columns:repeat(3,minmax(0,1fr))}.author-form__field--hint{grid-column:span 2}}.author-form label{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0;font-size:var(--text-sm);font-weight:600}.author-form__field--sessions input{max-width:6.5rem}.field-hint{font-size:var(--text-xs);font-weight:400;color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin-top:.125rem}.author-form input,.author-form select,.author-panel input[type=file]{width:100%;margin-bottom:0;font-size:var(--text-base);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-sm);min-height:var(--touch-min)}.author-form__action{display:flex;flex-direction:column;gap:var(--space-xs);padding-top:var(--space-xs)}.author-form__action .btn{width:fit-content;min-width:10rem;white-space:nowrap}.author-source-mode{display:inline-flex;gap:var(--space-xs);padding:var(--space-xs);margin-bottom:var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-source-mode button{border:none;background:transparent;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:600;padding:var(--space-sm) var(--space-md);border-radius:var(--border-radius-sm);cursor:pointer}.author-source-mode button.is-active{background:var(--color-background-primary);color:var(--color-text-primary);box-shadow:0 1px 2px #0000000f}.author-source-mode button:disabled{cursor:not-allowed;opacity:.6}.author-outline-input{width:100%;min-height:220px;padding:var(--space-md);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font:inherit;line-height:1.5;resize:vertical;margin-bottom:var(--space-sm)}.author-outline-count{margin-bottom:var(--space-md)}.author-session-confirm{margin-top:var(--space-lg);padding:var(--space-lg);border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.author-session-confirm h3{font-size:var(--text-base);font-weight:800;margin-bottom:var(--space-sm)}.author-session-confirm-label{font-size:var(--text-sm);font-weight:700;margin:var(--space-md) 0 var(--space-sm)}.author-session-confirm-list{margin:0 0 var(--space-md);padding-left:var(--space-lg);display:grid;gap:var(--space-sm)}.author-session-confirm-list li{display:flex;flex-direction:column;gap:2px;font-size:var(--text-sm)}.author-session-confirm-list li span{color:var(--color-text-secondary)}.author-file-list{list-style:none;margin:var(--space-sm) 0;font-size:var(--text-sm);color:var(--color-text-secondary)}.author-file-list--uploaded{color:var(--success-text);font-weight:600}.author-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.author-error{color:var(--error-text);background:var(--error-bg);padding:var(--space-sm) var(--space-md);border-radius:var(--border-radius-sm);margin-bottom:var(--space-md);font-size:var(--text-sm);font-weight:600}.author-job{margin-top:var(--space-lg);padding:var(--space-md);background:var(--color-background-secondary);border-radius:var(--border-radius-md);border:1px solid var(--color-border-tertiary)}.author-job-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-sm)}.author-job-percent{font-size:var(--text-2xl);font-weight:800;color:var(--accent);line-height:1}.author-job-stage{font-size:var(--text-sm);font-weight:700;color:var(--color-text-primary);text-align:right}.author-job-bar{height:10px;background:var(--color-border-tertiary);border-radius:5px;overflow:hidden;margin-bottom:var(--space-sm)}.author-job-fill{height:100%;background:var(--accent);transition:width .5s ease}.author-job-fill--pulse{animation:author-job-pulse 2s ease-in-out infinite}@keyframes author-job-pulse{0%,to{opacity:1}50%{opacity:.65}}.author-job-message{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin:0 0 var(--space-sm)}.author-job-meta{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);font-size:var(--text-xs);font-weight:600;color:var(--color-text-tertiary);margin-bottom:var(--space-md)}.author-job-hint{width:100%;font-weight:500}.author-job-ill{font-size:var(--text-sm);font-weight:700;color:var(--accent-dark);margin:0 0 var(--space-sm)}.author-job-steps{list-style:none;display:grid;gap:var(--space-xs);margin:0 0 var(--space-md);padding:0}.author-job-step{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--color-text-tertiary)}.author-job-step--done{color:var(--success-text);font-weight:600}.author-job-step--current{color:var(--color-text-primary);font-weight:700}.author-job-step-icon{width:1.25rem;text-align:center;flex-shrink:0}.author-job-note{margin:0;font-size:var(--text-xs)}.author-job-cancel{margin-top:var(--space-sm);color:var(--error-text)}.author-job-cancel:hover{background:var(--error-bg)}.author-course-list{list-style:none;display:grid;gap:var(--space-sm)}.author-course-row{display:flex;gap:var(--space-sm);align-items:stretch}.author-course-row .author-course-item{flex:1}.author-delete-btn{flex-shrink:0;color:var(--error-text);align-self:center}.author-delete-btn:hover{background:var(--error-bg)}.author-course-item{width:100%;text-align:left;background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:var(--space-md);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-md);cursor:pointer;font-size:var(--text-base)}.author-course-item:hover{border-color:var(--accent)}.author-course-item--active{border-color:var(--accent);background:var(--accent-light);box-shadow:inset 0 0 0 1px var(--accent)}.author-course-item strong{flex:1;min-width:10rem}.author-edit-link{margin-left:var(--space-sm)}.author-editor-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-sm)}.author-editor-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-editor-row strong{display:block}.author-course-editor{position:relative}.author-edit-toolbar{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);margin:calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) var(--space-md);background:color-mix(in srgb,var(--accent) 12%,var(--color-background));border-bottom:1px solid var(--color-border-tertiary)}.author-edit-toolbar__left,.author-edit-toolbar__right{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.author-edit-badge{font-size:var(--text-sm);font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.author-edit-save{font-size:var(--text-sm);color:var(--color-text-secondary)}.author-edit-locale{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--text-sm);color:var(--color-text-secondary)}.author-edit-locale select{min-width:8rem;min-height:2rem;padding-top:.35rem;padding-bottom:.35rem}.author-edit-locale-note{margin:0 0 var(--space-md)}.author-edit-error{margin-bottom:var(--space-md)}.author-edit-add-panel{margin-bottom:var(--space-md);padding:var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-form--inline{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:flex-end}.author-inline-field{display:flex;flex-direction:column;gap:var(--space-xs);flex:1;min-width:12rem;font-size:var(--text-sm);font-weight:600}.author-inline-field input,.author-inline-field select{width:100%;margin-bottom:0}.author-inline-field input{font-size:var(--text-base);font-weight:400;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-sm);min-height:var(--touch-min)}.author-inline-field--action{flex:0 0 auto;min-width:auto}.author-inline-field--action:before{content:" ";font-size:var(--text-sm);font-weight:600;line-height:1.4;visibility:hidden;-webkit-user-select:none;user-select:none}.author-inline-field--action .btn{white-space:nowrap}.learning-app--edit .editable-field-wrap{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;min-width:0}.editable-field-label{font-size:var(--text-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-tertiary)}.learning-app--edit .editable-field-display{display:block;width:100%;box-sizing:border-box;cursor:text;border-radius:var(--border-radius-md);border:1px solid transparent;padding:var(--space-sm) var(--space-md);transition:border-color .15s,background .15s,box-shadow .15s}.learning-app--edit .editable-field-display:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--color-border-tertiary));background:color-mix(in srgb,var(--accent) 5%,var(--color-background))}.learning-app--edit .editable-field-input{display:block;width:100%;box-sizing:border-box;margin:0;font-family:inherit;font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text-primary);background:var(--color-background);border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-md);padding:var(--space-sm) var(--space-md);resize:none;transition:border-color .15s,box-shadow .15s}.learning-app--edit .editable-field-input--active{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);outline:none}.learning-app--edit .editable-field-input.term,.learning-app--edit .editable-field-display.term{font-weight:700}.learning-app--edit .editable-field-input.def,.learning-app--edit .editable-field-display.def{color:var(--color-text-secondary)}.learning-app--edit textarea.editable-field-input{min-height:5rem}.learning-app--edit textarea.editable-field-input.prompt-box,.learning-app--edit textarea.editable-field-input.concept-example,.learning-app--edit .editable-field-input.pre{font-family:var(--font-mono);font-size:var(--text-code);min-height:8rem;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;overflow-x:hidden;max-width:100%}.learning-app--edit .editable-field-display.prompt-box,.learning-app--edit .editable-field-display.concept-example{font-size:var(--text-code);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;max-width:100%}.learning-app--edit .editable-field-display.text-block-heading,.learning-app--edit .editable-field-input.text-block-heading{font-size:var(--text-xl);font-weight:700}.learning-app--edit .editable-field-display.course-subtitle,.learning-app--edit .editable-field-input.course-subtitle{font-size:var(--text-lg);color:var(--color-text-secondary)}.editable-placeholder{color:var(--color-text-tertiary);font-style:italic}.learning-app--edit .concept .editable-field-wrap+.editable-field-wrap{margin-top:var(--space-sm)}.learning-app--edit .keypoint{display:flex;gap:var(--space-sm);align-items:flex-start}.learning-app--edit .keypoint .editable-field-wrap{flex:1}.editable-illustration{position:relative}.editable-illustration--edit{margin-bottom:var(--space-md)}.editable-illustration__regen{margin-top:var(--space-sm)}.editable-illustration__missing{padding:var(--space-lg);text-align:center;color:var(--color-text-secondary);border:1px dashed var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-edit-session-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-md);margin:var(--space-md) 0;padding:var(--space-md);background:color-mix(in srgb,var(--accent) 8%,var(--color-background-secondary));border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-regen-part-row{display:flex;justify-content:flex-end;margin:0 0 var(--space-sm)}.author-edit-session-title{flex:1;min-width:12rem;margin:0}.author-edit-session-short{flex:1;min-width:10rem;margin:0}.author-select,.author-form select,.author-inline-field select,.author-edit-locale select{-moz-appearance:none;appearance:none;-webkit-appearance:none;font-family:inherit;font-size:var(--text-sm);font-weight:500;line-height:1.25;color:var(--color-text-primary);background-color:var(--color-background-primary);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center;background-size:1rem;padding:.5rem 2.25rem .5rem .75rem;border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-sm);min-height:2.375rem;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.author-select:hover:not(:disabled),.author-form select:hover:not(:disabled),.author-inline-field select:hover:not(:disabled),.author-edit-locale select:hover:not(:disabled){border-color:color-mix(in srgb,var(--color-text-tertiary) 55%,var(--color-border-secondary))}.author-select:focus,.author-form select:focus,.author-inline-field select:focus,.author-edit-locale select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.author-select:disabled,.author-form select:disabled,.author-inline-field select:disabled,.author-edit-locale select:disabled{opacity:.55;cursor:not-allowed}.author-select--compact{min-width:11rem}.author-edit-session-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md);flex-shrink:0}.author-edit-session-format{display:inline-flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.author-edit-session-format__label{font-size:var(--text-xs);font-weight:700;letter-spacing:var(--caption-tracking);text-transform:uppercase;line-height:1;color:var(--color-text-tertiary);white-space:nowrap;margin:0}.author-edit-pairs{list-style:none;padding:0;margin:var(--space-md) 0 0;display:grid;gap:var(--space-sm)}.author-edit-pair{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(14rem,2fr);gap:var(--space-md);align-items:start;padding:var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}@media(max-width:640px){.author-edit-pair{grid-template-columns:1fr}}.quiz-wrap .opt-edit{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.quiz-wrap .opt-edit .editable-field-wrap{width:100%}.quiz-wrap .opt-edit--correct{color:var(--success-text)}.admin-panel--categories{margin-top:var(--space-xl);padding:var(--space-lg);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.admin-panel__head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-md)}.admin-panel__head h2{margin:0;font-size:var(--text-lg)}.admin-category-form{display:grid;gap:var(--space-md);margin-bottom:var(--space-lg);padding:var(--space-md);border:1px dashed var(--color-border-tertiary);border-radius:var(--border-radius-sm)}@media(min-width:640px){.admin-category-form{grid-template-columns:repeat(2,minmax(0,1fr))}}.admin-category-form label{display:flex;flex-direction:column;gap:var(--space-xs);font-size:var(--text-sm);font-weight:600}.admin-category-form input{font-weight:400;padding:.55rem .75rem;border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-sm);font:inherit}.admin-category-form__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);grid-column:1 / -1}.admin-table__actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);justify-content:flex-end}.admin-success{color:var(--success-text);font-size:var(--text-sm);margin:0 0 var(--space-sm)}
