@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./manrope-latin-wght-normal.DHIcAJRg.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--family-font-display:"Songti SC", "Noto Serif CJK SC", "STSong", serif;--family-font-body:"Manrope Variable", "PingFang SC", "Microsoft YaHei", sans-serif;--family-font-mono:"Geist Mono Variable", "SFMono-Regular", Consolas, monospace;--family-text-caption:.75rem;--family-text-control:.875rem;--family-text-body:1rem;--family-leading-body:1.6;--family-leading-reading:1.85;--family-space-1:4px;--family-space-2:8px;--family-space-3:12px;--family-space-4:16px;--family-space-5:24px;--family-space-6:32px;--family-space-7:48px;--family-radius-small:6px;--family-radius-control:10px;--family-radius-surface:14px;--family-radius-panel:18px;--family-radius-icon:25%;--family-control-compact:36px;--family-control-comfortable:44px;--family-touch-target:44px;--family-control-height:var(--family-control-comfortable);--family-panel-padding:var(--family-space-5);--family-bg:#f3f4f6;--family-surface:#fff;--family-surface-raised:#fafafc;--family-text:#1d1d1f;--family-text-secondary:#454a50;--family-text-muted:#6d7279;--family-border:#d8dce2;--family-accent:#5c6873;--family-accent-soft:#e9edf2;--family-focus:#5c6873;--family-focus-width:2px;--family-focus-offset:3px;--family-shadow-small:0 1px 3px #1d1d1f0f;--family-shadow-panel:0 2px 4px #1d1d1f0a, 0 16px 48px #1d1d1f0a;--family-ease-out:cubic-bezier(.23, 1, .32, 1);--family-ease-in-out:cubic-bezier(.77, 0, .175, 1);--family-ease-drawer:cubic-bezier(.32, .72, 0, 1);--family-duration-press:.12s;--family-duration-fast:.14s;--family-duration-base:.18s;--family-duration-panel:.24s;--family-duration-exit:.1s;--family-press-scale:.985}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--family-bg:#17191c;--family-surface:#22262b;--family-surface-raised:#2b333b;--family-text:#f2f4f6;--family-text-secondary:#d6dce2;--family-text-muted:#a5adb6;--family-border:#3b424a;--family-accent:#b5c2ce;--family-accent-soft:#2b333b;--family-focus:#c3ced8;--family-shadow-small:0 1px 3px #0003;--family-shadow-panel:0 2px 4px #0000001a, 0 16px 48px #0000001f}[data-ui-density=compact]{--family-control-height:var(--family-control-compact);--family-panel-padding:var(--family-space-4)}[data-ui-density=comfortable]{--family-control-height:var(--family-control-comfortable);--family-panel-padding:var(--family-space-5)}:where(a,button,summary,input,textarea,select,[role=button],[role=combobox]){touch-action:manipulation;-webkit-tap-highlight-color:transparent}@layer base{:focus-visible{outline:var(--family-focus-width) solid var(--family-focus);outline-offset:var(--family-focus-offset)}}.family-control{min-height:var(--family-control-height)}.family-action{transition:background-color var(--family-duration-fast) var(--family-ease-out),border-color var(--family-duration-fast) var(--family-ease-out),color var(--family-duration-fast) var(--family-ease-out),opacity var(--family-duration-fast) var(--family-ease-out),box-shadow var(--family-duration-fast) var(--family-ease-out),transform var(--family-duration-press) var(--family-ease-out)}.family-action:active:not(:disabled):not([aria-disabled=true]):not(:focus-visible){transform:scale(var(--family-press-scale))}.family-action:where(:disabled,[aria-disabled=true]){cursor:not-allowed;opacity:.45}.family-action:focus-visible{transition:none}@media (pointer:coarse){.family-control{min-width:var(--family-touch-target);min-height:var(--family-touch-target)}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.family-action:active:not(:disabled):not([aria-disabled=true]){transform:none}}:root{--mineral:var(--family-bg);--porcelain:var(--family-surface);--ink:var(--family-text);--pewter:var(--family-text-muted);--hairline:var(--family-border);--lacquer:var(--family-accent);--ink-soft:var(--family-text-secondary);--dark-line:#3b4148;--dark-muted:#9aa1a9;--accent-light:#87939f;--accent-wash:var(--family-accent-soft);--frame:#1d1d1f;--frame-muted:#636366;--focus:var(--family-focus);--shadow-color:#1d1d1f38;--shadow-soft:#1d1d1f1f;--shadow-strong:#1d1d1f3d;--frame-ring:#ffffff9e;--ease-out:var(--family-ease-out);--ease-in-out:var(--family-ease-in-out);--font-display:var(--family-font-display);--font-body:var(--family-font-body);--font-utility:var(--family-font-mono);--page-header:76px;--sidebar-width:clamp(230px, 22vw, 288px);--type-display:clamp(32px, 3.4vw, 48px);--type-display-course:clamp(30px, 3vw, 42px);--type-stage:clamp(26px, 2.5vw, 36px);--space-page:clamp(20px, 3.2vw, 48px);--space-section:clamp(24px, 3vw, 40px);--space-block:var(--family-space-4);--radius-control:var(--family-radius-control);--radius-panel:var(--family-radius-panel);--surface-line:color-mix(in srgb, var(--hairline) 70%, transparent);--surface-shadow:var(--family-shadow-panel);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.dark{--dark-line:#4b555f;--dark-muted:#aab4be;--accent-light:#c3ced8;--frame:#111315;--frame-muted:#737d87;--shadow-color:#00000070;--shadow-soft:#00000052;--shadow-strong:#00000085;--frame-ring:#ffffff14;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:after,:before{box-sizing:border-box}html{background:var(--mineral);min-width:320px;scroll-padding-top:calc(var(--page-header) + 20px)}body{color:var(--ink);font-family:var(--font-body);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6}a,button,input{color:inherit;font:inherit;-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:not-allowed;opacity:.45}a{text-decoration:none}::selection{background:var(--lacquer);color:var(--porcelain)}[tabindex="-1"]:focus{outline:none}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:20;border-radius:var(--radius-control);background:var(--ink);color:var(--porcelain);padding:10px 16px;position:absolute;top:12px;left:16px;transform:translateY(-160%)}.skip-link:focus{transform:none}.site-root{flex-direction:column;min-height:100svh;display:flex}.site-page{flex:1;min-width:0}.site-page>main{min-width:0;min-height:0}.site-header{z-index:10;height:var(--page-header);border-bottom:1px solid var(--surface-line);background:color-mix(in srgb,var(--mineral) 92%,transparent);-webkit-backdrop-filter:blur(20px);position:sticky;top:0}.site-header__inner{grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr);align-items:center;gap:24px;width:min(1680px,100%);height:100%;margin:0 auto;padding-inline:clamp(20px,2.4vw,40px);display:grid}.brand{border-radius:var(--radius-control);justify-self:start;align-items:center;gap:12px;display:inline-flex}.brand__seal{background:var(--lacquer);width:34px;height:34px;color:var(--porcelain);font-family:var(--font-display);border-radius:50%;flex:none;place-items:center;font-size:18px;display:grid;overflow:hidden}.brand__seal .progressive-image,.brand__seal .progressive-image>img{width:100%;height:100%}.brand__seal .progressive-image>img{-o-object-fit:contain;object-fit:contain}.brand__seal--image{background:var(--porcelain)}.brand__seal--avatar .progressive-image>img{-o-object-fit:cover;object-fit:cover}.brand__wordmark{font-family:var(--font-display);letter-spacing:.06em;white-space:nowrap;font-size:18px;font-weight:600}.type-filter{border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);align-items:center;gap:4px;padding:4px;display:flex}.type-filter__item{border-radius:var(--radius-control);min-width:76px;min-height:38px;color:var(--pewter);white-space:nowrap;justify-content:center;align-items:center;padding:0 16px;font-size:14px;font-weight:600;display:inline-flex}.type-filter__item.is-active{background:var(--porcelain);color:var(--ink);box-shadow:0 1px 4px color-mix(in srgb,var(--shadow-soft) 70%,transparent)}.header-tools{justify-content:flex-end;align-items:center;gap:6px;display:flex}.header-tool{border-radius:var(--radius-control);width:40px;height:40px;color:var(--pewter);font-family:var(--font-body);place-items:center;font-size:12px;font-weight:650;display:grid}.header-tool svg,.theme-icon{stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px;display:block}.site-icp{min-height:44px;padding:10px 20px calc(10px + env(safe-area-inset-bottom,0px));color:var(--pewter);font-size:var(--family-text-caption);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;line-height:1.5;display:flex}.site-icp a{border-radius:var(--family-radius-small)}.home-page{grid-template-rows:var(--page-header) minmax(0,1fr);height:calc(100svh - 44px);min-height:700px;display:grid}.catalogue-screen{grid-template-columns:var(--sidebar-width) minmax(0,1fr);gap:clamp(16px,2vw,28px);width:min(1680px,100%);height:100%;margin:0 auto;padding:24px clamp(20px,2.4vw,40px) 8px;display:grid;position:relative}.catalogue-sidebar{grid-template-rows:auto minmax(0,1fr);gap:28px;min-width:0;min-height:0;padding-top:8px;display:grid}.maker-card{align-items:center;gap:12px;min-width:0;padding:0 12px;display:flex}.maker-card__avatar{border:1px solid var(--surface-line);background:var(--ink);width:42px;height:42px;color:var(--porcelain);font-family:var(--font-display);border-radius:50%;flex:none;place-items:center;font-size:20px;display:grid;position:relative;overflow:hidden}.maker-card__avatar .progressive-image,.maker-card__avatar .progressive-image>img{width:100%;height:100%}.maker-card__avatar .progressive-image>img{-o-object-fit:cover;object-fit:cover}.maker-card__identity{flex:1;gap:2px;min-width:0;display:grid}.maker-card__identity small{color:var(--pewter);font-size:12px}.maker-card__identity strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.product-index{grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.product-index__header{padding:0 12px 10px}.product-index__header h2{color:var(--pewter);margin:0;font-size:13px;font-weight:500}.product-index__items{scrollbar-color:var(--hairline) transparent;scrollbar-width:thin;min-height:0;padding:4px;overflow:auto}.product-index__item{border-radius:var(--family-radius-surface);text-align:left;border:1px solid #0000;grid-template-columns:40px minmax(0,1fr);align-items:start;gap:12px;width:100%;margin-bottom:6px;padding:16px 12px;display:grid;position:relative}.product-index__icon,.product-index__item .progressive-image,.product-index__item img{border-radius:var(--family-radius-icon);-o-object-fit:cover;object-fit:cover;place-items:center;width:40px;height:40px;display:grid}.product-index__item .progressive-image{overflow:hidden;width:40px!important;height:40px!important}.product-index__item .progressive-image>img{-o-object-fit:cover;object-fit:cover}.product-index__icon{background:var(--accent-wash);color:var(--ink);font-family:var(--font-display);font-size:20px}.product-index__copy{gap:5px;min-width:0;display:grid}.product-index__copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:650;overflow:hidden}.product-index__copy p{color:var(--pewter);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:13px;line-height:1.6;display:-webkit-box;overflow:hidden}.product-index__item.is-active{border-color:var(--surface-line);background:var(--porcelain);box-shadow:0 2px 6px color-mix(in srgb,var(--shadow-soft) 35%,transparent)}.product-index__empty{color:var(--pewter);padding:16px 12px;font-size:14px}.product-index__empty p{margin:0}.catalogue-workspace{border:1px solid var(--surface-line);border-radius:var(--radius-panel);background:var(--porcelain);min-width:0;min-height:0;box-shadow:var(--surface-shadow);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.workspace-toolbar{justify-content:space-between;align-items:center;gap:16px;min-height:60px;padding:10px 24px;display:flex}.workspace-product{min-width:0;color:var(--pewter);flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:12px;display:flex}.workspace-product__status{border-radius:var(--family-radius-small);background:var(--mineral);padding:2px 8px}.workspace-toolbar__nav{flex:none;align-items:center;gap:4px;display:flex}.workspace-toolbar__nav>span{color:var(--pewter);font-family:var(--font-utility);font-size:var(--family-text-caption);font-variant-numeric:tabular-nums;margin-right:12px}.icon-button{border-radius:var(--radius-control);width:36px;height:36px;color:var(--pewter);place-items:center;font-size:16px;display:grid}.workspace-body{scrollbar-color:var(--hairline) transparent;scrollbar-width:thin;min-width:0;min-height:0;display:grid;overflow-y:auto}.product-stage{grid-template-rows:minmax(240px,1fr) auto;min-width:0;display:grid}.product-stage__canvas{align-items:center;min-width:0;min-height:0;padding:8px clamp(24px,3vw,48px) 20px;display:grid}.resource-preview{width:min(100%,980px);min-width:0;margin-inline:auto}.resource-preview__frame{aspect-ratio:16/10;border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);background:var(--mineral);width:100%;box-shadow:0 6px 24px color-mix(in srgb,var(--shadow-soft) 60%,transparent);margin:0;position:relative;overflow:hidden}.resource-preview__frame>.progressive-image,.resource-preview__frame>.progressive-image>img{position:absolute;inset:0}.resource-preview__frame>.progressive-image{position:absolute!important}.resource-preview__frame>.progressive-image>img{-o-object-fit:contain;object-fit:contain;width:100%;height:100%;display:block}.resource-preview__frame--icon{box-shadow:none;border-color:#0000;place-items:center;display:grid}.resource-preview__frame--icon>.progressive-image>img{width:50%;height:50%;inset:25%}.resource-preview__initial{color:var(--lacquer);font-family:var(--font-display);font-size:80px}.preview-controls{justify-content:space-between;align-items:center;gap:16px;margin-top:12px;display:flex}.preview-controls__items{scrollbar-width:thin;scrollbar-color:var(--hairline) transparent;gap:6px;min-width:0;padding:4px;display:flex;overflow-x:auto}.preview-controls__item{border-radius:var(--radius-control);opacity:.55;border:1px solid #0000;flex:0 0 60px;height:44px;padding:3px;display:grid;overflow:hidden}.preview-controls__item .progressive-image,.preview-controls__item .progressive-image>img{width:100%;height:100%}.preview-controls__item .progressive-image{border-radius:var(--family-radius-small);overflow:hidden}.preview-controls__item .progressive-image>img{-o-object-fit:cover;object-fit:cover;min-height:0}.preview-controls__item[aria-pressed=true]{border-color:var(--lacquer);opacity:1}.preview-controls__position{color:var(--pewter);font-family:var(--font-utility);font-size:var(--family-text-caption);font-variant-numeric:tabular-nums;flex:none}.product-stage__details{border-top:1px solid var(--surface-line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(24px,3vw,48px);padding:28px clamp(24px,3vw,48px) 32px;display:grid}.product-stage__copy h2{overflow-wrap:anywhere;font-family:var(--font-display);font-size:var(--type-stage);letter-spacing:-.025em;margin:0;font-weight:600;line-height:1.25}.product-stage__copy>p{max-width:640px;color:var(--ink-soft);text-wrap:pretty;margin:12px 0 0;font-size:15px;line-height:1.8}.capability-list{color:var(--pewter);flex-wrap:wrap;gap:6px 16px;margin:16px 0 0;padding:0;font-size:12px;list-style:none;display:flex}.capability-list li{position:relative}.capability-list li+li:before{content:"·";color:var(--pewter);position:absolute;left:-10px}.detail-aside__actions,.product-stage__actions{align-content:start;gap:8px;display:grid}.course-shelf__action,.empty-stage__retry,.portal-primary,.portal-secondary,.product-stage__action,.product-stage__details-link{min-height:var(--family-control-height);border-radius:var(--radius-control);background:var(--ink);color:var(--porcelain);text-align:center;border:1px solid #0000;justify-content:center;align-items:center;gap:16px;padding:10px 18px;font-size:14px;font-weight:600;line-height:1.5;display:inline-flex}.product-stage__action{justify-content:space-between;min-width:164px}.portal-secondary,.product-stage__details-link{border-color:var(--surface-line);color:var(--ink-soft);background:0 0}.course-shelf__action i,.product-stage__action i,.product-stage__details-link i{font-family:var(--font-utility);font-size:15px;font-style:normal}.course-shelf{grid-template-columns:minmax(160px,.7fr) minmax(0,1fr);align-items:center;gap:clamp(32px,4vw,64px);padding:clamp(28px,4vw,60px);display:grid}.course-shelf__cover{aspect-ratio:4/5;border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);background:var(--mineral);width:min(100%,300px);box-shadow:var(--surface-shadow);margin:0 auto;display:grid;overflow:hidden}.course-shelf__cover>.progressive-image,.course-shelf__cover>.progressive-image>img{width:100%;height:100%}.course-shelf__cover>.progressive-image>img{-o-object-fit:cover;object-fit:cover}.course-shelf__cover--icon>.progressive-image>img{-o-object-fit:contain;object-fit:contain;padding:24%}.course-shelf__text-cover{flex-direction:column;justify-content:space-between;padding:28px;display:flex}.course-shelf__text-cover span{color:var(--pewter);font-size:12px}.course-shelf__text-cover strong{font-size:30px;line-height:1.4}.course-shelf__copy h2,.course-shelf__text-cover strong{overflow-wrap:anywhere;font-family:var(--font-display);font-weight:600}.course-shelf__copy h2{font-size:var(--type-display-course);letter-spacing:-.035em;margin:0;line-height:1.25}.course-shelf__description{color:var(--ink-soft);margin:20px 0 0;font-size:16px;line-height:1.85}.course-shelf__action{justify-content:space-between;min-width:180px;margin-top:28px}.translation-fallback{color:var(--pewter);font-family:var(--font-body);margin-top:8px;font-size:12px;font-weight:400;display:inline-block}.empty-stage{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:260px;padding:40px 24px;display:flex}.empty-stage h2{margin:0;font-size:22px;font-weight:600;line-height:1.4}.empty-stage>span{max-width:420px;color:var(--pewter);font-size:14px}.empty-stage__retry{margin-top:8px}.empty-stage--loading h2{color:var(--pewter);font-size:15px;font-weight:400}.loading-indicator{gap:5px;display:flex}.loading-indicator i{background:var(--hairline);border-radius:50%;width:5px;height:5px}.loading-indicator i:nth-child(2){background:var(--pewter)}.detail-page{--pewter:color-mix(in srgb, var(--family-text-muted) 90%, var(--family-text-secondary))}.detail-shell{width:min(1160px,100%);padding:32px var(--space-page) 72px;margin:0 auto}.detail-shell--reading{width:min(1360px,100%);padding-top:16px}.detail-back{border-radius:var(--radius-control);min-height:40px;color:var(--pewter);align-items:center;gap:9px;margin-bottom:28px;padding:0 8px;font-size:13px;display:inline-flex}.detail-header{max-width:800px}.detail-header__meta{color:var(--pewter);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;font-size:13px;display:flex}.detail-header__meta .translation-fallback{margin:0}.detail-header h1{overflow-wrap:anywhere;font-family:var(--font-display);font-size:var(--type-display);letter-spacing:-.035em;text-wrap:balance;margin:0;font-weight:600;line-height:1.25}.detail-lede{max-width:700px;color:var(--ink-soft);text-wrap:pretty;margin:16px 0 0;font-size:17px;line-height:1.85}.detail-header__facts{color:var(--pewter);flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:20px;font-size:13px;display:flex}.detail-tags{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.detail-tags li{border:1px solid var(--surface-line);border-radius:var(--family-radius-small);color:var(--pewter);overflow-wrap:anywhere;padding:4px 10px;font-size:13px}.detail-grid{grid-template-columns:224px minmax(0,1fr);gap:clamp(32px,4.5vw,64px);margin-top:40px;display:grid}.detail-shell--reading .detail-grid{margin-top:28px}.detail-grid--with-toc{grid-template-columns:minmax(180px,224px) minmax(0,1fr) minmax(152px,184px);gap:clamp(24px,3vw,48px)}.detail-grid--with-toc>.detail-aside{grid-area:1/1}.detail-grid--with-toc>.detail-content{grid-area:1/2;max-width:none}.detail-grid--with-toc>.article-toc{grid-area:1/3}.detail-aside{top:calc(var(--page-header) + 28px);align-self:start;min-width:0;position:sticky}.detail-aside>.progressive-image{border-radius:var(--family-radius-icon);box-shadow:var(--surface-shadow);margin-bottom:24px;width:64px!important;height:64px!important}.detail-aside>.progressive-image>img{-o-object-fit:cover;object-fit:cover}.detail-aside__facts{margin:0 0 24px}.detail-aside__facts>div{border-bottom:1px solid var(--surface-line);padding:12px 0}.detail-aside dt{color:var(--pewter);font-size:12px}.detail-aside dd{color:var(--ink-soft);overflow-wrap:anywhere;margin:6px 0 0;font-size:14px;line-height:1.7}.detail-aside__actions>a{width:100%;min-width:0}.course-author-contact{border-top:1px solid var(--surface-line);color:var(--ink-soft);justify-content:space-between;align-items:center;gap:12px;margin-top:20px;padding-top:16px;font-size:13px;display:flex}.course-author-contact .creator-contacts{flex:none}.article-toc{top:calc(var(--page-header) + 28px);border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);background:color-mix(in srgb,var(--porcelain) 35%,var(--mineral));align-self:start;min-width:0;padding:16px;position:sticky}.article-toc h2{color:var(--ink-soft);margin:0 0 12px;font-size:13px;font-weight:650}.article-toc ol{gap:4px;margin:0;padding:0;list-style:none;display:grid}.article-toc li{border-radius:var(--family-radius-small)}.article-toc li+li{margin-top:2px}.article-toc a{color:var(--pewter);overflow-wrap:anywhere;padding:6px 8px;font-size:12px;line-height:1.6;display:block}.article-toc__item--level-3 a{padding-left:20px}.article-toc__item--level-4 a{padding-left:32px}.detail-content{--reading-surface:color-mix(in srgb, var(--porcelain) 60%, var(--mineral));width:100%;min-width:0;max-width:800px;margin-inline:auto}.course-reader,.detail-content>.detail-markdown{border:1px solid var(--surface-line);border-radius:var(--radius-panel);background:var(--reading-surface);padding:clamp(24px,3vw,40px)}.detail-content>.detail-markdown{max-width:none}.detail-previews{margin-bottom:36px}.detail-markdown{max-width:42em;color:var(--ink-soft);font-size:16px;line-height:var(--family-leading-reading);overflow-wrap:break-word}.detail-markdown--reading{font-size:17px}.detail-markdown blockquote>:first-child,.detail-markdown>:first-child,.detail-markdown>div>:first-child{margin-top:0}.detail-markdown blockquote>:last-child,.detail-markdown>:last-child,.detail-markdown>div>:last-child{margin-bottom:0}.detail-markdown :where(h1,h2,h3,h4){color:var(--ink);scroll-margin-top:calc(var(--page-header) + 24px);margin:1.8em 0 .7em;font-weight:600;line-height:1.45}.detail-markdown :where(h1,h2){letter-spacing:-.025em;font-size:26px}.detail-markdown :where(h3,h4){font-size:20px}.detail-markdown :where(p,ul,ol,blockquote,pre,table){margin:1.2em 0}.detail-markdown :where(ul,ol){padding-left:1.4em}.detail-markdown li+li{margin-top:.35em}.detail-markdown a{border-radius:var(--family-radius-small);color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--accent-light);text-decoration-color:var(--accent-light);text-underline-offset:4px}.detail-markdown blockquote{border-left:2px solid var(--lacquer);background:var(--mineral);color:var(--ink-soft);margin-inline:0;padding:12px 20px}.detail-markdown code{border-radius:var(--family-radius-small);background:var(--accent-wash);font-family:var(--font-utility);padding:2px 5px;font-size:.85em}.detail-markdown pre{border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);background:var(--mineral);scrollbar-width:thin;padding:20px;line-height:1.75;overflow-x:auto}.detail-markdown pre code{color:inherit;background:0 0;padding:0}.detail-markdown .markdown-progressive-image,.detail-markdown img{border-radius:var(--family-radius-surface);max-width:100%;height:auto;display:block}.detail-markdown .markdown-progressive-image{width:100%;aspect-ratio:var(--progressive-ratio,16/10);height:auto!important}.detail-markdown .markdown-progressive-image>img{-o-object-fit:contain;object-fit:contain}.detail-markdown table{border-collapse:collapse;scrollbar-width:thin;max-width:100%;font-size:15px;display:block;overflow-x:auto}.detail-markdown :where(th,td){border-bottom:1px solid var(--hairline);text-align:left;padding:10px 16px}.detail-markdown th{background:var(--mineral);color:var(--ink);font-weight:600}.detail-markdown hr{border:0;margin:32px 0}.detail-markdown hr,.download-list{border-top:1px solid var(--hairline)}.download-list{min-width:0;margin-top:48px;padding-top:28px}.download-list>h2{margin:0 0 20px;font-size:20px;font-weight:600}.download-list__items{gap:10px;display:grid}.download-file{border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);min-width:0;padding:18px 20px}.download-file--latest{background:var(--porcelain);box-shadow:0 2px 6px color-mix(in srgb,var(--shadow-soft) 25%,transparent)}.download-file__heading{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.download-file h3{overflow-wrap:anywhere;margin:0;font-size:16px;font-weight:650}.download-file__badge{color:var(--pewter);font-size:12px}.download-file--latest .download-file__badge{border-radius:var(--family-radius-small);background:var(--accent-wash);color:var(--ink-soft);padding:2px 8px}.download-file__size{color:var(--pewter);font-family:var(--font-utility);font-size:var(--family-text-caption);white-space:nowrap;margin-left:auto}.download-file__link{border-radius:var(--radius-control);min-height:44px;color:var(--ink-soft);overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:16px;padding-block:8px;font-size:14px;display:flex}.download-file__link>span{flex:none;font-size:16px}.download-file__verification{color:var(--pewter);font-size:12px}.download-file__verification summary{border-radius:var(--family-radius-small);cursor:pointer;width:fit-content;padding:6px 0}.download-file__verification code{border-radius:var(--radius-control);background:var(--mineral);color:var(--ink-soft);font-family:var(--font-utility);font-size:var(--family-text-caption);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;margin-top:6px;padding:12px;line-height:1.8;display:block}.download-history-toggle{border-radius:var(--radius-control);width:100%;min-height:44px;color:var(--ink-soft);justify-content:center;align-items:center;gap:10px;margin-top:12px;padding:8px 16px;font-size:13px;display:flex}.download-history-toggle i{transition:transform var(--family-duration-fast) var(--ease-out);font-style:normal}.download-history-toggle[aria-expanded=true] i{transform:rotate(180deg)}.download-guide{color:var(--pewter);margin:20px 0 0;font-size:13px;line-height:1.85}.download-guide strong{color:var(--ink-soft);font-weight:500}.course-detail-cover{aspect-ratio:4/5;border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);background:var(--porcelain);width:100%;box-shadow:var(--surface-shadow);margin:0 0 20px;display:grid;overflow:hidden}.course-detail-cover>.progressive-image,.course-detail-cover>.progressive-image>img{width:100%;height:100%}.course-detail-cover>.progressive-image>img{-o-object-fit:cover;object-fit:cover}.course-detail-cover--icon>.progressive-image>img{-o-object-fit:contain;object-fit:contain;padding:24%}.course-detail-cover>div{flex-direction:column;justify-content:space-between;padding:24px;display:flex}.course-detail-cover>div span{color:var(--pewter);font-size:12px}.course-detail-cover>div strong{overflow-wrap:anywhere;font-family:var(--font-display);font-size:26px;font-weight:600;line-height:1.4}.course-outline{border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);background:color-mix(in srgb,var(--porcelain) 35%,var(--mineral));padding:4px 16px 12px}.course-outline--desktop{max-height:calc(100svh - var(--page-header) - 56px);scrollbar-width:thin;scrollbar-color:var(--hairline) transparent;overflow-y:auto}.course-outline summary{border-radius:var(--radius-control);cursor:pointer;min-height:44px;color:var(--ink-soft);align-items:center;gap:12px;font-size:13px;font-weight:600;list-style:none;display:flex}.course-outline summary::-webkit-details-marker{display:none}.course-outline summary:after{content:"";width:7px;height:7px;transition:transform var(--family-duration-fast) var(--ease-out);border-bottom:1px solid;border-right:1px solid;margin-right:3px;transform:rotate(45deg)}.course-outline[open] summary:after{transform:rotate(225deg)}.course-outline summary small{color:var(--pewter);font-family:var(--font-utility);font-size:var(--family-text-caption);margin-left:auto;font-weight:400}.course-outline ol{gap:4px;margin:8px 0 0;padding:0;list-style:none;display:grid}.course-outline li{border-bottom:1px solid var(--surface-line);padding:0 0 8px}.course-outline li:last-child{border-bottom:0}.course-outline li>a{border-radius:var(--radius-control);text-align:left;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:44px;padding:8px;font-size:14px;line-height:1.6;display:flex}.course-outline li>a>span{overflow-wrap:anywhere}.course-outline li.is-active>a{background:var(--accent-wash);font-weight:600}.course-outline li small{color:var(--pewter);margin:0 8px;font-size:12px;line-height:1.75;display:block}.course-outline__lock{color:var(--pewter);font-size:var(--family-text-caption);flex:none;font-weight:400}.course-outline--mobile{display:none}.course-reader{min-width:0}.course-chapter{scroll-margin-top:calc(var(--page-header) + 28px)}.course-gate{border:1px solid var(--surface-line);border-radius:var(--radius-panel);background:var(--mineral);scroll-margin-top:calc(var(--page-header) + 24px);padding:clamp(24px,3vw,36px)}.course-gate h2{font-size:24px}.course-gate>p:not(.portal-message){color:var(--pewter);margin:14px 0 24px;font-size:15px;line-height:1.85}.course-gate__consent{margin-bottom:16px}.course-gate__login{border-radius:var(--family-radius-small);min-height:44px;color:var(--pewter);text-underline-offset:4px;align-items:center;margin-left:16px;font-size:13px;text-decoration:underline;display:inline-flex}.course-navigation{border-top:1px solid var(--hairline);grid-template-columns:1fr 1fr;gap:12px;margin-top:40px;padding-top:24px;display:grid}.course-navigation a{border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);text-align:left;align-content:start;gap:6px;padding:14px 16px;display:grid}.course-navigation small{color:var(--pewter);font-size:12px}.course-navigation span{overflow-wrap:anywhere;font-size:14px}.course-navigation__next{grid-column:2}#course-content,#course-introduction{scroll-margin-top:calc(var(--page-header) + 28px)}.portal-main{padding:44px 24px 72px}.portal-shell{width:min(520px,100%);margin:0 auto}.portal-shell .detail-back{margin-bottom:20px}.portal-card{border:1px solid var(--surface-line);border-radius:var(--radius-panel);background:var(--porcelain);box-shadow:var(--surface-shadow);padding:36px}.account-header h1,.portal-shell h1{letter-spacing:-.035em;overflow-wrap:anywhere;margin:0;font-size:30px;font-weight:650;line-height:1.35}.portal-description{color:var(--pewter);margin:12px 0 28px;font-size:14px;line-height:1.85}.portal-form{gap:20px;display:grid}.portal-form>label:not(.portal-checkbox){gap:8px;display:grid}.portal-form label>span{color:var(--ink-soft);font-size:14px;font-weight:500}.portal-form input:not([type=checkbox]){width:100%;min-height:calc(var(--family-control-height) + 4px);border:1px solid var(--hairline);border-radius:var(--radius-control);background:color-mix(in srgb,var(--mineral) 45%,var(--porcelain));color:var(--ink);transition:border-color var(--family-duration-fast) ease,background-color var(--family-duration-fast) ease,box-shadow var(--family-duration-fast) ease;padding:11px 14px;font-size:16px;line-height:1.5}.portal-form input:not([type=checkbox]):focus{border-color:var(--lacquer);background:var(--porcelain);box-shadow:0 0 0 3px color-mix(in srgb,var(--lacquer) 14%,transparent)}.portal-field-hint{color:var(--pewter);font-size:12px;line-height:1.5}.portal-checkbox{color:var(--ink-soft);cursor:pointer;align-items:flex-start;gap:10px;padding-block:4px;font-size:13px;line-height:1.85;display:flex}.portal-checkbox input{width:18px;height:18px;accent-color:var(--lacquer);flex:none;margin:3px 0 0}.portal-form>.portal-primary{width:100%;margin-top:4px}.portal-links{flex-wrap:wrap;justify-content:space-between;gap:0 16px;padding-top:4px;display:flex}.account-footer :is(a,button),.portal-links a{border-radius:var(--family-radius-small);min-height:40px;color:var(--pewter);align-items:center;font-size:13px;display:inline-flex}.portal-message{border:1px solid var(--surface-line);border-radius:var(--radius-control);background:var(--mineral);color:var(--ink-soft);overflow-wrap:anywhere;margin:8px 0 0;padding:12px 14px;font-size:13px;line-height:1.75}.portal-message.is-error{border-color:var(--ink-soft);color:var(--ink)}.portal-message.is-success:before{content:"✓";margin-right:8px}.portal-result{justify-items:start;gap:20px;display:grid}.portal-result h2{margin:0;font-size:20px;font-weight:600}.portal-result p{color:var(--ink-soft);margin:0;font-size:14px;line-height:1.85}.portal-result>.portal-primary{width:100%}.account-shell{width:min(760px,100%);margin:0 auto}.account-header{margin-bottom:28px}.account-section{border:1px solid var(--surface-line);border-radius:var(--family-radius-surface);background:var(--porcelain);margin-top:16px;padding:28px}.account-section h2{margin:0 0 18px;font-size:16px;font-weight:650}.account-section>p{color:var(--pewter);margin:0;font-size:14px;line-height:1.85}.account-facts{margin:0}.account-facts>div,.account-grants li{border-top:1px solid var(--surface-line);grid-template-columns:minmax(100px,.4fr) minmax(0,1fr);gap:20px;padding:12px 0;display:grid}.account-facts>div:last-child{padding-bottom:0}.account-facts dt,.account-grants span{color:var(--pewter);font-size:13px}.account-facts dd{overflow-wrap:anywhere;margin:0;font-size:14px}.account-actions:not(:empty),.account-section>.portal-secondary{margin-top:20px}.account-actions{flex-wrap:wrap;gap:12px;display:flex}.account-grants{margin:0;padding:0;list-style:none}.account-grants li{grid-template-columns:minmax(0,1fr) auto}.account-grants strong{overflow-wrap:anywhere;font-size:14px;font-weight:500}.account-footer{flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:24px;display:flex}.error-page{align-items:center;min-height:calc(100svh - 44px);display:grid}.error-page__main{width:min(520px,100%);margin:0 auto;padding:48px 24px}.error-page__code{border:1px solid var(--hairline);border-radius:var(--family-radius-small);color:var(--pewter);font-family:var(--font-utility);margin:0 0 24px;padding:5px 10px;font-size:13px;display:inline-block}.error-page h1{letter-spacing:-.035em;margin:0;font-size:32px;font-weight:600;line-height:1.35}.error-page__main>p:not(.error-page__code){color:var(--pewter);margin:16px 0 28px;font-size:15px;line-height:1.8}.course-outline li>a{transition:background-color var(--family-duration-fast) var(--ease-out),color var(--family-duration-fast) var(--ease-out)}.course-outline summary:focus-visible:after,.download-history-toggle:focus-visible i{transition:none}.workspace-swap-enter-active{transition:opacity var(--family-duration-fast) var(--ease-out)}.workspace-swap-leave-active{transition:opacity var(--family-duration-exit) var(--ease-out)}.preview-swap-enter-from,.preview-swap-leave-to,.workspace-swap-enter-from,.workspace-swap-leave-to{opacity:0}.preview-swap-enter-active{z-index:2;transition:opacity var(--family-duration-base) var(--ease-out)}.preview-swap-leave-active{z-index:1;transition:opacity var(--family-duration-press) var(--ease-out)}@media (hover:hover) and (pointer:fine){.course-navigation a:hover,.course-outline li>a:hover,.detail-back:hover,.download-history-toggle:hover,.header-tool:hover,.icon-button:hover:not(:disabled),.type-filter__item:hover:not(.is-active){background:var(--accent-wash);color:var(--ink)}.product-index__item:hover:not(.is-active){background:color-mix(in srgb,var(--porcelain) 65%,transparent)}.preview-controls__item:hover{opacity:1}.course-shelf__action:hover,.empty-stage__retry:hover,.portal-primary:hover:not(:disabled),.product-stage__action:hover{background:var(--ink-soft)}.portal-secondary:hover:not(:disabled),.product-stage__details-link:hover{border-color:var(--hairline);background:var(--mineral)}.account-footer :is(a,button):hover,.download-file__link:hover,.portal-links a:hover,.site-icp a:hover{color:var(--ink);text-underline-offset:4px;text-decoration:underline}}@media (width>=761px){.product-stage__canvas .resource-preview{width:min(100%,1.6*clamp(220px,100svh - 440px,500px))}}@media (width<=1100px){.site-header__inner{grid-template-columns:minmax(160px,1fr) auto minmax(130px,1fr);gap:16px}.type-filter__item{min-width:66px;padding-inline:12px}.product-stage__details{grid-template-columns:minmax(0,1fr);gap:20px}.product-stage__actions{flex-wrap:wrap;display:flex}.course-shelf{grid-template-columns:1fr;align-content:start;gap:28px}.course-shelf__cover{width:min(200px,60%);margin-left:0}.detail-grid{grid-template-columns:200px minmax(0,1fr);gap:32px}.detail-grid--reading:has(.course-reader){grid-template-columns:minmax(0,1fr)}.detail-grid--with-toc{grid-template-columns:minmax(0,1fr)}.detail-grid--with-toc>.article-toc,.detail-grid--with-toc>.detail-aside,.detail-grid--with-toc>.detail-content{grid-area:auto/1}.course-outline--desktop{display:none}.detail-aside--reading:has(.course-outline--desktop){display:block;position:static}.course-outline--mobile{margin-bottom:24px;display:block}.article-toc{margin-bottom:24px;position:static}.detail-grid--with-toc:has(.course-reader)>.article-toc{order:1}.detail-grid--with-toc:has(.course-reader)>.detail-content{order:2}.detail-grid--with-toc:has(.course-reader)>.detail-aside{order:3}}@media (width<=760px){:root{--page-header:118px;--space-page:24px}.site-header__inner{grid-template-rows:60px 58px;grid-template-columns:minmax(0,1fr) auto;gap:0 12px;padding-inline:20px}.brand__wordmark{font-size:17px}.brand__seal{width:30px;height:30px}.header-tools{grid-area:1/2;gap:2px}.type-filter{border:0;grid-area:2/1/auto/-1;justify-content:space-between;align-self:start;padding:4px 0}.type-filter__item{flex:1;min-width:0;min-height:44px;padding-inline:10px;font-size:14px}.home-page{height:auto;min-height:0;display:block}.catalogue-screen{grid-template-columns:minmax(0,1fr);gap:20px;height:auto;padding:20px 20px 12px}.catalogue-sidebar{flex-direction:column;gap:16px;padding:0;display:flex}.maker-card{gap:8px;padding-inline:4px}.maker-card__avatar{width:26px;height:26px;font-size:14px}.maker-card__identity{align-items:baseline;gap:8px;display:flex}.maker-card__identity strong{font-size:13px}.product-index__header{display:none}.product-index__items{scroll-snap-type:x proximity;gap:8px;padding:4px;display:flex}.product-index__item{border-color:var(--surface-line);scroll-snap-align:start;flex:0 0 218px;gap:10px;margin:0;padding:12px}.product-index__copy p{-webkit-line-clamp:1}.product-index__empty{padding-block:4px}.catalogue-workspace{min-height:360px}.workspace-toolbar{min-height:56px;padding-inline:20px}.workspace-body{overflow:visible}.icon-button{width:40px;height:40px}.product-stage{grid-template-rows:auto auto}.product-stage__canvas{padding:8px 20px 20px}.product-stage__details{gap:20px;padding:24px}.product-stage__copy>p{font-size:16px}.course-shelf{grid-template-columns:minmax(130px,.65fr) minmax(0,1fr);align-items:start;padding:24px}.course-shelf__cover{width:100%;margin:0}.course-shelf__copy h2{font-size:28px}.course-shelf__description{margin-top:16px}.detail-shell{padding-top:24px}.detail-shell--reading{padding-top:16px}.detail-back{margin-bottom:20px}.detail-grid{grid-template-columns:minmax(0,1fr);gap:32px;margin-top:28px}.detail-grid--with-toc>.article-toc{order:1}.detail-grid--with-toc>.detail-content{order:2}.detail-aside{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:20px;display:grid;position:static}.detail-aside>.progressive-image{grid-row:1/3;margin:0;width:56px!important;height:56px!important}.detail-aside__facts{flex-wrap:wrap;grid-column:2;gap:12px 24px;margin:0;display:flex}.detail-aside__facts>div{border:0;padding:0}.detail-aside__actions{flex-wrap:wrap;grid-column:2;display:flex}.detail-aside__actions>a{width:auto}.course-author-contact{grid-column:1/-1}.detail-aside--reading{grid-template-columns:108px minmax(0,1fr)}.course-detail-cover{grid-row:1/3;margin:0}.course-detail-cover>div{padding:12px}.course-detail-cover>div strong{font-size:18px}.course-detail-cover>div span{font-size:var(--family-text-caption)}.detail-previews{margin-bottom:28px}.course-reader,.detail-content>.detail-markdown{margin-inline:calc(var(--space-page)*-1);padding:24px var(--space-page);border-inline:0;border-radius:0}.portal-main{padding-top:28px}}@media (width<=480px){:root{--space-page:20px}.site-header__inner{padding-inline:16px}.brand{gap:8px}.header-tool{width:36px;height:40px}.catalogue-screen{gap:16px;padding-inline:12px}.workspace-toolbar{gap:8px;padding-inline:16px}.workspace-product{gap:4px 8px}.workspace-toolbar__nav>span{display:none}.product-stage__canvas{padding-inline:12px}.product-stage__details{padding:22px 20px}.product-stage__actions{grid-template-columns:1fr;display:grid}.product-stage__action{min-width:0}.capability-list{gap:6px 14px}.course-shelf{grid-template-columns:1fr;padding:20px}.course-shelf__cover{width:140px}.course-shelf__text-cover{padding:16px}.course-shelf__text-cover strong{font-size:24px}.detail-aside__actions{grid-column:1/-1}.detail-aside__actions>a{flex:auto}.detail-lede,.detail-markdown--reading{font-size:16px}.download-file{padding:16px}.download-file__size{margin-left:0}.course-navigation{grid-template-columns:1fr}.course-navigation__next{grid-column:1}.course-gate{padding:20px}.course-gate__login{margin:8px 0 0}.portal-main{padding-inline:16px}.portal-card{padding:24px}.account-header h1,.portal-shell h1{font-size:27px}.portal-links{justify-content:flex-start}.account-section{padding:22px}.account-facts>div{grid-template-columns:1fr;gap:6px}}@media (pointer:coarse){.header-tool,.icon-button,.type-filter__item{min-width:var(--family-touch-target);min-height:var(--family-touch-target)}}.acceptance-banner[data-v-06bdc03b]{text-align:center;margin:0;padding:8px 24px;font-size:12px}
