.scroll-progress-btn-container{z-index:999;opacity:0;pointer-events:none;will-change:opacity, transform;transition:opacity .3s,transform .3s cubic-bezier(.16,1,.3,1);position:fixed;bottom:28px;right:28px;transform:translateY(20px)scale(.9)translateZ(0)}.scroll-progress-btn-container.visible{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.scroll-progress-btn{cursor:pointer;background:radial-gradient(circle at 30% 30%,#1e2230,#0d1017);border:none;border-radius:50%;outline:none;justify-content:center;align-items:center;width:48px;height:48px;padding:0;transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s,background .25s;display:flex;position:relative;box-shadow:0 4px 18px #000000b3,0 0 0 1px #6c6ea04d}.scroll-progress-btn:hover{background:radial-gradient(circle at 30% 30%,#252a3b,#121520);transform:scale(1.1)translateY(-2px);box-shadow:0 8px 24px #ff105359,0 0 14px #66c7f44d,0 0 0 1px #ff105380}.progress-ring-svg{pointer-events:none;position:absolute;top:0;left:0;transform:rotate(-90deg)}.progress-ring-bg{fill:#0000;stroke:#6c6ea047}.progress-ring-stroke{fill:#0000;stroke:#ff1053;stroke-linecap:round;filter:drop-shadow(0 0 5px #ff1053a6);transition:stroke-dashoffset .15s ease-out,stroke .3s}.btn-icon-wrapper{color:#fff;justify-content:center;align-items:center;width:18px;height:18px;transition:color .2s;display:flex;position:relative}.scroll-progress-btn:hover .btn-icon-wrapper{color:#66c7f4}.icon-arrow-up,.icon-close{transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .3s;position:absolute}.icon-arrow-up{opacity:1;transform:rotate(0)scale(1)}.icon-close{opacity:0;transform:rotate(-90deg)scale(.7)}.scroll-progress-btn.panel-open .icon-arrow-up{opacity:0;transform:rotate(90deg)scale(.7)}.scroll-progress-btn.panel-open .icon-close{opacity:1;transform:rotate(0)scale(1)}.scroll-progress-btn.panel-open .progress-ring-stroke{stroke:#66c7f4;filter:drop-shadow(0 0 6px #66c7f499)}
.seamless-skeleton-wrapper{width:100%;box-shadow:none;background:0 0;border:none;flex-direction:column;gap:12px;margin:12px 0;padding:0;display:flex;position:relative}.seamless-skeleton-line{background:#ffffff0d;border-radius:9999px;animation:1.8s ease-in-out infinite alternate seamlessPulse;position:relative;overflow:hidden}.line-main-h1{width:78%;height:36px;margin-bottom:8px}.line-heading-title{width:62%;height:24px;margin-bottom:8px}.line-para-1{width:95%;height:16px}.line-para-2{width:86%;height:16px}.line-para-3{width:68%;height:16px}.seamless-skeleton-card-block{background:#ffffff0a;border-radius:12px;width:100%;height:90px;animation:1.8s ease-in-out infinite alternate seamlessPulse;position:relative;overflow:hidden}@keyframes seamlessPulse{0%{opacity:.3;background:#ffffff0a}to{opacity:.65;background:#ffffff17}}.seamless-skeleton-line:after,.seamless-skeleton-media:after,.seamless-skeleton-card-block:after{content:"";background:linear-gradient(90deg,#0000 0%,#38bdf838 50%,#0000 100%);width:150%;height:100%;animation:2.2s cubic-bezier(.4,0,.2,1) infinite sequentialWaveBeam;position:absolute;top:0;left:-150%}.section-01 .seamless-skeleton-line:after{animation-delay:0s}.section-02 .seamless-skeleton-line:after{animation-delay:.2s}.section-02 .seamless-skeleton-media:after{animation-delay:.35s}.section-03 .seamless-skeleton-line:after{animation-delay:.5s}.section-04 .seamless-skeleton-line:after{animation-delay:.65s}.section-05 .seamless-skeleton-line:after{animation-delay:.8s}.section-06 .seamless-skeleton-line:after{animation-delay:.95s}.section-07 .seamless-skeleton-line:after,.section-07 .seamless-skeleton-card-block:after{animation-delay:1.1s}@keyframes sequentialWaveBeam{0%{left:-150%}65%,to{left:150%}}.seamless-skeleton-media{background:#14172099;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;width:100%;height:300px;margin:12px 0;display:flex;position:relative;overflow:hidden}.neutral-dummy-media-badge{z-index:2;will-change:transform, opacity;background:#12151ef2;border:2px solid #38bdf880;border-radius:50%;justify-content:center;align-items:center;width:54px;height:54px;animation:2s cubic-bezier(.4,0,.2,1) infinite alternate ultraSmoothPulse;display:flex;transform:translateZ(0);box-shadow:0 0 24px #38bdf866,inset 0 0 10px #38bdf833}.neutral-dummy-media-badge svg{filter:drop-shadow(0 0 6px #38bdf8);transform:translate(1px)}@keyframes ultraSmoothPulse{0%{transform:translateZ(0)scale(.94);box-shadow:0 0 16px #38bdf840}to{transform:translateZ(0)scale(1.08);box-shadow:0 0 30px #38bdf8a6,0 0 50px #38bdf840}}[data-theme=light] .seamless-skeleton-line,[data-theme=light] .seamless-skeleton-media,[data-theme=light] .seamless-skeleton-card-block{background:#00000014}[data-theme=light] .seamless-skeleton-line:after,[data-theme=light] .seamless-skeleton-media:after,[data-theme=light] .seamless-skeleton-card-block:after{background:linear-gradient(90deg,#0000 0%,#38bdf84d 50%,#0000 100%)}
.course-scraper-page{color:#fff;box-sizing:border-box;width:100vw;height:100vh;font-family:var(--font-body);background:radial-gradient(circle at 50% 25%,#1b5ed4 0%,#1245a4 30%,#0d2f75 60%,#071942 100%);flex-direction:column;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding:30px 32px;display:flex;position:relative;overflow:hidden}.background-effect{pointer-events:none;z-index:0;background:radial-gradient(circle at 50% 0,#ffffff0f 0%,#0000 70%);width:100%;height:400px;position:absolute;top:0;left:0}.scraper-top-nav-row{z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;width:100%;max-width:1440px;margin-bottom:24px;margin-left:auto;margin-right:auto;display:flex;position:relative}.back-link{color:#c1cad6;align-items:center;gap:8px;font-size:.84rem;text-decoration:none;transition:color .2s,transform .2s;display:inline-flex}.back-link:hover{color:#ff1053;transform:translate(-4px)}.main-3col-wrapper{z-index:1;flex:1;grid-template-columns:240px 1fr 50px;align-items:center;gap:36px;width:100%;max-width:1440px;min-height:0;margin:0 auto;transition:grid-template-columns .38s cubic-bezier(.16,1,.3,1),gap .38s;display:grid;position:relative}.main-3col-wrapper.panel-expanded{grid-template-columns:50px 1fr 340px;gap:28px}@media (max-width:1180px){.course-scraper-page{height:auto;padding:20px 16px;overflow:auto}.main-3col-wrapper{grid-template-columns:1fr;gap:20px;height:auto}.main-3col-wrapper.panel-expanded{grid-template-columns:1fr}.right-panel-col,.left-toc-col{display:none!important}}.left-toc-col{z-index:10;flex-direction:column;justify-content:center;width:100%;height:100%;transition:width .38s cubic-bezier(.16,1,.3,1);display:flex}.left-toc-col.shrunk{width:50px}.toc-sticky-nav{flex-direction:column;gap:14px;display:flex}.toc-nav-links{border-left:1px solid #ffffff26;flex-direction:column;gap:4px;display:flex}.toc-link{color:#c1cad6;font-size:.83rem;font-family:var(--font-body);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-left:2px solid #0000;align-items:center;gap:10px;margin-left:-1px;padding:6px 12px;transition:all .2s;display:flex}.left-toc-col.shrunk .toc-link{justify-content:center;gap:0;padding:6px 0}.toc-link:hover{color:#fff;background:#ffffff0f}.toc-link.active{color:#fff;background:#ff10531f;border-left-color:#ff1053;font-weight:700}.toc-num{color:#6c6ea0;font-size:.72rem;font-weight:700}.toc-link.active .toc-num{color:#66c7f4}.middle-content-col{scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;gap:36px;width:100%;max-width:820px;height:100%;margin:0 auto;padding-right:8px;display:flex;overflow-y:auto}.middle-content-col::-webkit-scrollbar{display:none}.article-header{flex-direction:column;gap:16px;display:flex}.article-main-title{font-family:var(--font-heading);color:var(--text-main);letter-spacing:-.035em;margin:0;font-size:clamp(2rem,4.5vw,3rem);font-weight:900;line-height:1.15}.article-lead-text{color:var(--text-secondary);margin:0;font-size:1.1rem;line-height:1.7}.article-meta-bar{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.meta-pill{border:1px solid var(--border-subtle);color:var(--text-accent);background:#ffffff0a;border-radius:9999px;align-items:center;gap:6px;padding:4px 10px;font-size:.78rem;font-weight:600;display:inline-flex}.article-divider{background:var(--border-subtle);border:none;height:1px;margin:0}.article-section{flex-direction:column;gap:16px;display:flex}.article-h2{font-family:var(--font-heading);color:var(--text-main);letter-spacing:-.02em;margin:0;font-size:1.45rem;font-weight:800}.article-p{color:var(--text-secondary);margin:0;font-size:1rem;line-height:1.75}.article-p code{color:#66c7f4;font-family:var(--font-mono);background:#ffffff14;border-radius:4px;padding:2px 6px;font-size:.85rem}.code-file-link{vertical-align:baseline;text-decoration:none;display:inline}.code-file-link code{color:#66c7f4;font-family:var(--font-mono);cursor:pointer;background:0 0;border:none;border-radius:0;padding:0 2px;font-size:.88rem;transition:color .2s,opacity .2s}.code-file-link:hover code{color:#ff1053;opacity:.95}.inline-plain-media-wrapper{flex-direction:column;gap:10px;width:100%;margin:16px 0;display:flex}.clean-skeleton-card{border:1px solid var(--border-subtle);box-sizing:border-box;background:#161922bf;border-radius:14px;flex-direction:column;gap:14px;width:100%;padding:24px;display:flex}.skeleton-bar{background:#ffffff0d;border-radius:9999px;animation:1.8s ease-in-out infinite alternate skeletonPulse}.bar-title{width:82%;height:18px}.bar-sub1{width:48%;height:14px}.bar-sub2{width:68%;height:14px}.skeleton-media-block{background:#ffffff0a;border-radius:10px;width:100%;height:180px;animation:1.8s ease-in-out infinite alternate skeletonPulse}.bar-sub3{width:38%;height:14px}@keyframes skeletonPulse{0%{opacity:.35;background:#ffffff0a}to{opacity:.7;background:#ffffff14}}.plain-inline-video-gif{object-fit:cover;border-radius:8px;width:100%;height:auto;max-height:420px;transition:opacity .4s,transform .4s;display:block}.plain-inline-video-gif.loading{opacity:0;pointer-events:none;position:absolute;top:0;left:0}.plain-inline-video-gif.loaded{opacity:1;animation:.4s ease-out fadeInMedia;position:relative}@keyframes fadeInMedia{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.media-caption{color:var(--text-muted-color);text-align:center;font-size:.76rem}.article-callout-box{background:#ffffff0a;border-left:3px solid #ff1053;border-radius:0 8px 8px 0;flex-direction:column;gap:6px;margin:8px 0;padding:16px 20px;display:flex}.callout-label{color:#ff1053;letter-spacing:.06em;font-size:.72rem}.callout-text{color:#fff;margin:0;font-size:.94rem;line-height:1.6}.article-bullet-list{color:#c1cad6;flex-direction:column;gap:10px;margin:0;padding-left:20px;font-size:.96rem;line-height:1.65;display:flex}.article-repo-card{box-sizing:border-box;background:#090c18d9;border:1px solid #ffffff26;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;max-width:100%;margin-top:10px;padding:20px 24px;display:flex}.repo-info-text{flex:1;min-width:200px}.repo-info-text h3{color:#fff;word-break:break-word;margin:0 0 4px;font-size:1.05rem;font-weight:800}.repo-info-text p{color:#c1cad6;margin:0;font-size:.85rem}.article-github-btn{white-space:nowrap;box-sizing:border-box;background:#ff10531f;border:1px solid #ff105359;border-radius:8px;align-items:center;gap:8px;padding:10px 18px;font-size:.84rem;font-weight:700;text-decoration:none;transition:all .25s;display:inline-flex;box-shadow:0 2px 10px #0000004d;color:#ff1053!important}@media (max-width:640px){.article-repo-card{flex-direction:column;align-items:flex-start;gap:14px;padding:16px}.repo-info-text h3{word-break:break-all;font-size:.95rem}.article-github-btn{white-space:normal;text-align:center;justify-content:center;width:100%}}.article-github-btn:hover{background:#ff1053;border-color:#ff1053;transform:translateY(-2px);box-shadow:0 4px 18px #ff105366;color:#fff!important}.right-panel-col{z-index:10;flex-direction:column;justify-content:center;align-items:flex-end;width:100%;height:100%;display:flex}.right-panel-card{box-sizing:border-box;border-radius:12px;flex-direction:column;transition:width .38s cubic-bezier(.16,1,.3,1),height .38s cubic-bezier(.16,1,.3,1),transform .25s cubic-bezier(.16,1,.3,1);display:flex;position:relative}.right-panel-card.collapsed{cursor:pointer;width:42px;height:42px;box-shadow:none;background:0 0;border:none;justify-content:center;align-items:center;padding:0}.right-panel-card.collapsed:hover{transform:translate(-4px)scale(1.08)}.right-panel-card.expanded{cursor:default;width:100%;height:100%;max-height:520px;box-shadow:none;background:0 0;border:none;padding:0}.collapsed-chevron-content{color:#ff1053;opacity:1;justify-content:center;align-items:center;transition:opacity .25s,transform .3s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(1)}.right-panel-card.expanded .collapsed-chevron-content{opacity:0;pointer-events:none;transform:translate(-50%,-50%)scale(.3)}.expanded-panel-content{opacity:1;flex-direction:column;gap:14px;width:100%;transition:opacity .35s cubic-bezier(.16,1,.3,1),transform .35s cubic-bezier(.16,1,.3,1);display:flex;transform:scale(1)}.right-panel-card.collapsed .expanded-panel-content{opacity:0;pointer-events:none;visibility:hidden;transform:scale(.92)}.chevron-item{stroke:#ff1053;filter:drop-shadow(0 0 5px #ff105399);transition:transform .2s,opacity .2s,stroke .2s}.right-panel-card.collapsed:hover .chevron-small,.right-panel-card.collapsed:active .chevron-small{animation:.6s cubic-bezier(.4,0,.2,1) infinite chevronWave}.right-panel-card.collapsed:hover .chevron-medium,.right-panel-card.collapsed:active .chevron-medium{animation:.6s cubic-bezier(.4,0,.2,1) .12s infinite chevronWave}.right-panel-card.collapsed:hover .chevron-large,.right-panel-card.collapsed:active .chevron-large{animation:.6s cubic-bezier(.4,0,.2,1) .24s infinite chevronWave}@keyframes chevronWave{0%{opacity:.5;stroke:#ff1053;transform:translate(0)}50%{opacity:1;stroke:#66c7f4;filter:drop-shadow(0 0 10px #ff1053);transform:translate(-4px)}to{opacity:.5;stroke:#ff1053;transform:translate(0)}}.panel-collapse-trigger{color:#c1cad6;cursor:pointer;background:0 0;border:none;padding:4px;transition:all .25s cubic-bezier(.16,1,.3,1)}.panel-collapse-trigger:hover{color:#ff1053;transform:translate(3px)scale(1.08)}.panel-collapse-trigger:hover .chevron-small,.panel-collapse-trigger:active .chevron-small{animation:.6s cubic-bezier(.4,0,.2,1) infinite chevronWaveRight}.panel-collapse-trigger:hover .chevron-medium,.panel-collapse-trigger:active .chevron-medium{animation:.6s cubic-bezier(.4,0,.2,1) .12s infinite chevronWaveRight}.panel-collapse-trigger:hover .chevron-large,.panel-collapse-trigger:active .chevron-large{animation:.6s cubic-bezier(.4,0,.2,1) .24s infinite chevronWaveRight}@keyframes chevronWaveRight{0%{opacity:.5;stroke:#ff1053;transform:translate(0)}50%{opacity:1;stroke:#66c7f4;filter:drop-shadow(0 0 10px #ff1053);transform:translate(4px)}to{opacity:.5;stroke:#ff1053;transform:translate(0)}}.panel-header-row{justify-content:space-between;align-items:center;padding-bottom:4px;display:flex}.panel-title{color:#fff;letter-spacing:-.02em;margin:0;font-size:1.15rem}.panel-header-actions{align-items:center;gap:10px;display:flex}.panel-repo-btn{color:#fff;background:#ffffff0f;border:1px solid #ffffff26;border-radius:6px;align-items:center;gap:4px;padding:4px 10px;font-size:.76rem;font-weight:700;text-decoration:none;transition:all .2s;display:inline-flex}.panel-repo-btn:hover{color:#ff1053;background:#ff105326;border-color:#ff105366;transform:translateY(-1px)}.panel-search-wrapper{width:100%;position:relative}.panel-search-input{color:#fff;background:#0a0e1ce6;border:1px solid #ffffff2e;border-radius:8px;outline:none;width:100%;padding:9px 12px;font-size:.8rem;transition:border-color .2s}.panel-search-input::placeholder{color:#c1cad6;opacity:.7}.panel-search-input:focus{border-color:#66c7f4}.panel-clear-btn{color:#c1cad6;cursor:pointer;background:0 0;border:none;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.panel-filter-pills{flex-wrap:wrap;gap:6px;display:flex}.panel-pill{color:#c1cad6;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff26;border-radius:9999px;padding:4px 10px;font-size:.72rem;transition:all .2s}.panel-pill.active{color:#ff1053;background:#ff10532e;border-color:#ff105373;font-weight:700}.panel-table-scroll{border:1px solid var(--border-color);background:var(--bg-canvas);scrollbar-width:thin;scrollbar-color:var(--border-color) transparent;border-radius:10px;max-height:380px;overflow-y:auto}.panel-csv-table{border-collapse:collapse;text-align:left;width:100%;font-size:.76rem}.panel-csv-table th{background:var(--bg-card);color:var(--text-main);border-bottom:2px solid var(--border-color);letter-spacing:.04em;z-index:2;padding:10px 12px;font-size:.78rem;font-weight:800;position:sticky;top:0}.panel-csv-table td{border-bottom:1px solid var(--border-subtle);vertical-align:top;color:var(--text-main);padding:10px 12px}.panel-csv-table tr:hover td{background:var(--bg-card-hover)}.table-course-title{color:var(--text-main);font-weight:600;line-height:1.3}.table-course-org{color:var(--text-muted-color);margin-top:2px;font-size:.68rem}.table-level-badge{white-space:nowrap;border-radius:6px;padding:3px 8px;font-size:.68rem;font-weight:700;display:inline-block}.table-level-badge.beginner{color:#34d399;background:#10b9812e;border:1px solid #10b98159}.table-level-badge.intermediate{color:#fbbf24;background:#f59e0b2e;border:1px solid #f59e0b59}[data-theme=light] .table-level-badge.beginner{background:#d1fae5;border:1px solid #a7f3d0;color:#065f46!important}[data-theme=light] .table-level-badge.intermediate{background:#fef3c7;border:1px solid #fde68a;color:#92400e!important}.table-rating{color:#f59e0b;white-space:nowrap;font-weight:700}[data-theme=light] .table-rating{font-weight:800;color:#b45309!important}.panel-empty-cell{text-align:center;color:var(--text-muted-color);padding:20px 8px}
