<!DOCTYPE html><html lang="en" dir="ltr" data-critters-container><head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
  <base href="/">

  <!-- Primary SEO -->
  <title>TutorialChamp — Master Artificial Intelligence End-to-End. Free AI Tutorials.</title>
  <meta name="description" content="Free AI tutorials on TutorialChamp covering Python, ML, Deep Learning, NLP, LLMs, and MLOps. 7 chapters with 20+ interview Q&amp;As.">
  <meta name="keywords" content="AI tutorial, machine learning course, deep learning tutorial, TutorialChamp, python AI, NLP LLM tutorial, MLOps">
  <meta name="author" content="TutorialChamp">
  <meta name="robots" content="index, follow">
  <meta name="language" content="en">
  <meta name="rating" content="General">

  <!-- Open Graph -->
  <meta property="og:type" content="website">
  <meta property="og:site_name" content="TutorialChamp">
  <meta property="og:title" content="TutorialChamp — Master Artificial Intelligence End-to-End. Free AI Tutorials.">
  <meta property="og:description" content="Free AI tutorials on TutorialChamp covering Python, ML, Deep Learning, NLP, LLMs, and MLOps. 7 chapters with 20+ interview Q&amp;As.">
  <meta property="og:image" content="https://tutorialchamp.com/assets/images/og-default.svg">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="630">
  <meta property="og:url" content="https://tutorialchamp.com/">
  <meta property="og:locale" content="en_US">

  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@TutorialChamp">
  <meta name="twitter:creator" content="@TutorialChamp">
  <meta name="twitter:title" content="TutorialChamp — Master Artificial Intelligence End-to-End. Free AI Tutorials.">
  <meta name="twitter:description" content="Free AI tutorials on TutorialChamp covering Python, ML, Deep Learning, NLP, LLMs, and MLOps. 7 chapters with 20+ interview Q&amp;As.">
  <meta name="twitter:image" content="https://tutorialchamp.com/assets/images/og-default.svg">

  <!-- Theme & Brand -->
  <meta name="theme-color" content="#00E5CC">
  <meta name="color-scheme" content="dark">
  <meta name="application-name" content="TutorialChamp">
  <meta name="apple-mobile-web-app-title" content="TutorialChamp">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  <meta name="msapplication-TileColor" content="#0A0E1A">
  <meta name="msapplication-config" content="/browserconfig.xml">

  <!-- Favicon & Icons -->
  <link rel="icon" type="image/svg+xml" href="assets/icons/logo-mark.svg">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link rel="apple-touch-icon" href="assets/icons/logo-mark.svg">
  <link rel="manifest" href="manifest.webmanifest">

  <!-- Canonical -->
  <link rel="canonical" href="https://tutorialchamp.com/">

  <!-- Preconnect for performance -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link rel="preconnect" href="https://pagead2.googlesyndication.com">
  <link rel="dns-prefetch" href="https://fonts.googleapis.com">
  <link rel="dns-prefetch" href="https://pagead2.googlesyndication.com">

  <!-- Fonts -->
  <style>@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Syne';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Syne';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Syne';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Syne';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Syne';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Syne';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Syne';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Syne';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Syne';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style>

  <!-- Google AdSense (replace with real publisher ID) -->
  <!-- <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-XXXXXXXXXXXXXXXX" crossorigin="anonymous"></script> -->

  <!-- Organization Schema -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "TutorialChamp",
    "url": "https://tutorialchamp.com",
    "logo": {
      "@type": "ImageObject",
      "url": "https://tutorialchamp.com/assets/icons/logo.svg",
      "width": 220, "height": 48
    },
    "sameAs": ["https://twitter.com/TutorialChamp", "https://github.com/tutorialchamp"],
    "contactPoint": {
      "@type": "ContactPoint",
      "email": "support.tutorialchamp@gmail.com",
      "contactType": "customer support",
      "availableLanguage": "English"
    },
    "description": "TutorialChamp is a free AI learning platform offering comprehensive tutorials on Python, Machine Learning, Deep Learning, NLP, LLMs, and MLOps."
  }
  </script>

  <!-- WebSite Schema with SearchAction -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "TutorialChamp",
    "url": "https://tutorialchamp.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": { "@type": "EntryPoint", "urlTemplate": "https://tutorialchamp.com/tutorials?q={search_term_string}" },
      "query-input": "required name=search_term_string"
    }
  }
  </script>

  <!-- Critical CSS inline for above-the-fold -->
  <style>
    body { background: #0A0E1A; color: #E2E8F0; margin: 0; font-family: 'DM Sans', system-ui, sans-serif; }
    app-root { display: block; min-height: 100vh; }
    /* Prevent FOUC on nav */
    .site-header { background: #111827; height: 60px; border-bottom: 1px solid #1E2D4A; }
  </style>
<style>@charset "UTF-8";@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--cfx-teal: #00E5CC;--cfx-teal-dark: #00A882;--cfx-purple: #7C5CFC;--cfx-purple-lt: #A78BFA;--cfx-coral: #FF6B6B;--cfx-gold: #F59E0B;--bg: #0A0E1A;--bg-alt: #0D1424;--surface: #111827;--surface2: #1A2236;--surface3: #1E2D4A;--border: #1E2D4A;--border-lt: #2D3F5A;--text: #E2E8F0;--text-secondary: #8892A4;--text-dim: #4A5568;--text-muted: #2D3F5A;--accent: var(--cfx-teal);--accent2: var(--cfx-purple);--danger: var(--cfx-coral);--warning: var(--cfx-gold);--success: #34D399;--code-bg: #0D1117;--code-text: #A8D8A8;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--shadow-sm: 0 2px 8px rgba(0,0,0,.3);--shadow-md: 0 8px 24px rgba(0,0,0,.4);--shadow-lg: 0 20px 60px rgba(0,0,0,.5);--glow-teal: 0 0 30px rgba(0,229,204,.25);--glow-purple: 0 0 30px rgba(124,92,252,.25);--t-fast: .15s ease;--t-base: .25s ease;--t-slow: .4s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}body{background-color:var(--bg);color:var(--text);font-family:DM Sans,system-ui,-apple-system,sans-serif;line-height:1.65;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease,color .3s ease}*{scrollbar-width:thin;scrollbar-color:var(--border) var(--bg)}h1,h2,h3{font-family:Syne,Arial Black,sans-serif;font-weight:700;line-height:1.15;color:var(--text)}p{margin-bottom:1rem;color:var(--text-secondary);line-height:1.75}a{color:var(--cfx-teal);text-decoration:none;transition:color var(--t-fast)}a:hover{color:var(--cfx-teal-dark)}.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}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}router-outlet+*{animation:fadeInUp .3s ease}.card-hover{transition:transform var(--t-base),border-color var(--t-base),box-shadow var(--t-base)}.card-hover:hover{transform:translateY(-2px);border-color:var(--border-lt);box-shadow:var(--shadow-md)}.level-beginner{background:#00e5cc1a;color:var(--cfx-teal)}.level-intermediate{background:#f59e0b1a;color:var(--cfx-gold)}.level-advanced{background:#ff6b6b1a;color:var(--cfx-coral)}@media (max-width: 768px){h1{font-size:clamp(24px,6vw,36px)}h2{font-size:clamp(20px,5vw,28px)}}@media print{.ad-sidebar,.nav-sidebar,.site-header{display:none!important}body{background:#fff;color:#000}.page-content{overflow:visible}}
</style><style>@charset "UTF-8";@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6h9Q.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K4.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2NL9Hz_.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm25L9Hz_.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/syne/v24/8vIH7w4qzmVxm2BL9A.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--cfx-teal: #00E5CC;--cfx-teal-dark: #00A882;--cfx-purple: #7C5CFC;--cfx-purple-lt: #A78BFA;--cfx-coral: #FF6B6B;--cfx-gold: #F59E0B;--bg: #0A0E1A;--bg-alt: #0D1424;--surface: #111827;--surface2: #1A2236;--surface3: #1E2D4A;--border: #1E2D4A;--border-lt: #2D3F5A;--text: #E2E8F0;--text-secondary: #8892A4;--text-dim: #4A5568;--text-muted: #2D3F5A;--accent: var(--cfx-teal);--accent2: var(--cfx-purple);--danger: var(--cfx-coral);--warning: var(--cfx-gold);--success: #34D399;--code-bg: #0D1117;--code-text: #A8D8A8;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--shadow-sm: 0 2px 8px rgba(0,0,0,.3);--shadow-md: 0 8px 24px rgba(0,0,0,.4);--shadow-lg: 0 20px 60px rgba(0,0,0,.5);--glow-teal: 0 0 30px rgba(0,229,204,.25);--glow-purple: 0 0 30px rgba(124,92,252,.25);--t-fast: .15s ease;--t-base: .25s ease;--t-slow: .4s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}body{background-color:var(--bg);color:var(--text);font-family:DM Sans,system-ui,-apple-system,sans-serif;line-height:1.65;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease,color .3s ease}*{scrollbar-width:thin;scrollbar-color:var(--border) var(--bg)}h1,h2,h3{font-family:Syne,Arial Black,sans-serif;font-weight:700;line-height:1.15;color:var(--text)}p{margin-bottom:1rem;color:var(--text-secondary);line-height:1.75}a{color:var(--cfx-teal);text-decoration:none;transition:color var(--t-fast)}a:hover{color:var(--cfx-teal-dark)}.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}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}router-outlet+*{animation:fadeInUp .3s ease}.card-hover{transition:transform var(--t-base),border-color var(--t-base),box-shadow var(--t-base)}.card-hover:hover{transform:translateY(-2px);border-color:var(--border-lt);box-shadow:var(--shadow-md)}.level-beginner{background:#00e5cc1a;color:var(--cfx-teal)}.level-intermediate{background:#f59e0b1a;color:var(--cfx-gold)}.level-advanced{background:#ff6b6b1a;color:var(--cfx-coral)}@media (max-width: 768px){h1{font-size:clamp(24px,6vw,36px)}h2{font-size:clamp(20px,5vw,28px)}}@media print{.ad-sidebar,.nav-sidebar,.site-header{display:none!important}body{background:#fff;color:#000}.page-content{overflow:visible}}
</style><link rel="stylesheet" href="styles-L2Y6U6Y7.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-L2Y6U6Y7.css" media="all"></noscript><link rel="modulepreload" href="chunk-MJIVWTLH.js"><link rel="modulepreload" href="chunk-TMC7WMLO.js"><style>@charset "UTF-8";[_nghost-ng-c1079170881]{--header-h: 60px;--ad-sidebar-w: 10%;--nav-sidebar-w: 240px;--min-ad-w: 120px;--max-ad-w: 180px}.shell[_ngcontent-ng-c1079170881]{display:flex;flex-direction:column;min-height:100vh;background:var(--bg, #0a0e1a)}.site-header[_ngcontent-ng-c1079170881]{position:sticky;top:0;z-index:200;height:var(--header-h);background:#111827f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border, #1e2d4a);box-shadow:0 2px 20px #0006;flex-shrink:0}.header-inner[_ngcontent-ng-c1079170881]{height:100%;display:flex;align-items:center;gap:12px;padding:0 16px}.header-left[_ngcontent-ng-c1079170881]{display:flex;align-items:center;gap:12px;flex-shrink:0}.hamburger-btn[_ngcontent-ng-c1079170881]{width:36px;height:36px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .2s;flex-shrink:0}.hamburger-btn[_ngcontent-ng-c1079170881]:hover{background:var(--surface2, #1a2236)}.ham-line[_ngcontent-ng-c1079170881], .ham-line[_ngcontent-ng-c1079170881]:before, .ham-line[_ngcontent-ng-c1079170881]:after{display:block;width:18px;height:2px;background:var(--text-secondary, #8892a4);border-radius:2px;transition:all .3s;position:relative}.ham-line[_ngcontent-ng-c1079170881]:before, .ham-line[_ngcontent-ng-c1079170881]:after{content:"";position:absolute;left:0}.ham-line[_ngcontent-ng-c1079170881]:before{top:-6px}.ham-line[_ngcontent-ng-c1079170881]:after{top:6px}.ham-line.open[_ngcontent-ng-c1079170881]{background:transparent}.ham-line.open[_ngcontent-ng-c1079170881]:before{transform:rotate(45deg) translate(4px,4px)}.ham-line.open[_ngcontent-ng-c1079170881]:after{transform:rotate(-45deg) translate(4px,-4px)}.logo-link[_ngcontent-ng-c1079170881]{display:flex;align-items:center;text-decoration:none}.logo-svg[_ngcontent-ng-c1079170881]{height:38px;width:auto}.header-search[_ngcontent-ng-c1079170881]{flex:1;max-width:400px;position:relative;margin:0 auto}.search-icon[_ngcontent-ng-c1079170881]{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:14px;pointer-events:none;z-index:1}.search-input[_ngcontent-ng-c1079170881]{width:100%;padding:8px 14px 8px 34px;background:var(--surface2, #1a2236);border:1px solid var(--border, #1e2d4a);border-radius:8px;color:var(--text, #e8eaf6);font-size:14px;outline:none;transition:border-color .2s;font-family:DM Sans,sans-serif}.search-input[_ngcontent-ng-c1079170881]:focus{border-color:#00e5cc}.search-input[_ngcontent-ng-c1079170881]::placeholder{color:var(--text-dim, #4a5568)}.search-dropdown[_ngcontent-ng-c1079170881]{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface, #111827);border:1px solid var(--border, #1e2d4a);border-radius:10px;box-shadow:0 12px 40px #00000080;z-index:300;overflow:hidden}.search-result[_ngcontent-ng-c1079170881]{display:flex;align-items:center;gap:12px;padding:12px 16px;text-decoration:none;color:var(--text, #e8eaf6);border-bottom:1px solid var(--border, #1e2d4a);transition:background .15s}.search-result[_ngcontent-ng-c1079170881]:last-child{border-bottom:none}.search-result[_ngcontent-ng-c1079170881]:hover{background:var(--surface2, #1a2236)}.sr-icon[_ngcontent-ng-c1079170881]{font-size:20px;flex-shrink:0}.sr-title[_ngcontent-ng-c1079170881]{font-size:14px;font-weight:600;color:var(--text, #e8eaf6);margin-bottom:2px}.sr-desc[_ngcontent-ng-c1079170881]{font-size:12px;color:var(--text-secondary, #8892a4)}.sr-level[_ngcontent-ng-c1079170881]{font-size:11px;font-weight:700;padding:2px 8px;border-radius:4px;margin-left:auto;flex-shrink:0}.level-beginner[_ngcontent-ng-c1079170881]{background:#00e5cc1a;color:#00e5cc}.level-intermediate[_ngcontent-ng-c1079170881]{background:#f59e0b1a;color:#f59e0b}.level-advanced[_ngcontent-ng-c1079170881]{background:#ff6b6b1a;color:#ff6b6b}.header-right[_ngcontent-ng-c1079170881]{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto}.header-nav[_ngcontent-ng-c1079170881]{display:flex;gap:4px}.header-nav[_ngcontent-ng-c1079170881]   a[_ngcontent-ng-c1079170881]{padding:7px 14px;border-radius:8px;font-size:14px;font-weight:500;color:var(--text-secondary, #8892a4);text-decoration:none;transition:all .2s;white-space:nowrap}.header-nav[_ngcontent-ng-c1079170881]   a[_ngcontent-ng-c1079170881]:hover, .header-nav[_ngcontent-ng-c1079170881]   a.nav-active[_ngcontent-ng-c1079170881]{background:var(--surface2, #1a2236);color:var(--text, #e8eaf6)}.theme-toggle[_ngcontent-ng-c1079170881]{width:36px;height:36px;border:1px solid var(--border, #1e2d4a);background:var(--surface2, #1a2236);border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s;flex-shrink:0}.theme-toggle[_ngcontent-ng-c1079170881]:hover{border-color:var(--cfx-teal, #00E5CC);background:#00e5cc14}.mobile-search[_ngcontent-ng-c1079170881]{display:none;position:relative;padding:8px 16px;background:var(--surface, #111827);border-bottom:1px solid var(--border, #1e2d4a);align-items:center;gap:8px}.mobile-search[_ngcontent-ng-c1079170881]   .search-icon[_ngcontent-ng-c1079170881]{top:50%;transform:translateY(-50%)}.mobile-search[_ngcontent-ng-c1079170881]   .search-input[_ngcontent-ng-c1079170881]{width:100%}.layout-body[_ngcontent-ng-c1079170881]{flex:1;display:flex;overflow:hidden;position:relative;height:calc(100vh - var(--header-h))}.nav-sidebar[_ngcontent-ng-c1079170881]{width:var(--nav-sidebar-w);flex-shrink:0;background:var(--surface, #111827);border-right:1px solid var(--border, #1e2d4a);overflow-y:auto;overflow-x:hidden;transition:transform .3s ease,width .3s ease;position:relative}.nav-sidebar-inner[_ngcontent-ng-c1079170881]{padding:16px 0;display:flex;flex-direction:column;height:100%}.nav-section-title[_ngcontent-ng-c1079170881]{font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--text-dim, #4a5568);padding:0 16px 10px}.nav-item[_ngcontent-ng-c1079170881]{display:flex;align-items:center;gap:10px;padding:10px 16px;text-decoration:none;transition:background .15s;border-left:3px solid transparent}.nav-item[_ngcontent-ng-c1079170881]:hover{background:var(--surface2, #1a2236)}.nav-item.nav-item-active[_ngcontent-ng-c1079170881]{background:var(--surface2, #1a2236);border-left-color:var(--item-color, #00E5CC)}.nav-item-icon[_ngcontent-ng-c1079170881]{font-size:18px;flex-shrink:0}.nav-item-info[_ngcontent-ng-c1079170881]{flex:1;min-width:0}.nav-item-name[_ngcontent-ng-c1079170881]{font-size:13px;font-weight:600;color:var(--text, #e8eaf6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-item-level[_ngcontent-ng-c1079170881]{font-size:11px;color:var(--text-secondary, #8892a4);margin-top:1px}.nav-progress[_ngcontent-ng-c1079170881]{height:3px;background:var(--border, #1e2d4a);border-radius:2px;margin-top:4px;overflow:hidden}.nav-progress-fill[_ngcontent-ng-c1079170881]{height:100%;border-radius:2px;transition:width .5s ease}.nav-done[_ngcontent-ng-c1079170881]{width:18px;height:18px;border-radius:50%;background:#00e5cc;color:#0a0e1a;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0}.nav-stats[_ngcontent-ng-c1079170881]{display:flex;align-items:center;justify-content:center;gap:20px;padding:16px;margin-top:auto;border-top:1px solid var(--border, #1e2d4a)}.nav-stat[_ngcontent-ng-c1079170881]{text-align:center}.ns-val[_ngcontent-ng-c1079170881]{display:block;font-family:Syne,sans-serif;font-size:22px;font-weight:800;color:#00e5cc}.ns-lbl[_ngcontent-ng-c1079170881]{font-size:11px;color:var(--text-dim, #4a5568);text-transform:uppercase;letter-spacing:.5px}.nav-stat-div[_ngcontent-ng-c1079170881]{width:1px;height:36px;background:var(--border, #1e2d4a)}.nav-interview-cta[_ngcontent-ng-c1079170881]{display:flex;align-items:center;justify-content:center;gap:8px;margin:12px 16px;padding:12px;background:linear-gradient(135deg,#00e5cc1a,#7c5cfc1a);border:1px solid rgba(0,229,204,.2);border-radius:10px;font-size:13px;font-weight:700;color:#00e5cc;text-decoration:none;transition:all .2s}.nav-interview-cta[_ngcontent-ng-c1079170881]:hover{background:#00e5cc26;border-color:#00e5cc}.page-content[_ngcontent-ng-c1079170881]{flex:1;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth}.ad-sidebar[_ngcontent-ng-c1079170881]{width:clamp(var(--min-ad-w),var(--ad-sidebar-w),var(--max-ad-w));flex-shrink:0;background:var(--surface, #111827);border-left:1px solid var(--border, #1e2d4a);overflow-y:auto;overflow-x:hidden}.ad-sidebar.hidden[_ngcontent-ng-c1079170881]{display:none}.ad-sidebar-inner[_ngcontent-ng-c1079170881]{padding:12px 8px;display:flex;flex-direction:column}.ad-spacer[_ngcontent-ng-c1079170881]{height:12px}.nav-overlay[_ngcontent-ng-c1079170881]{position:fixed;inset:0;background:#000000b3;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sr-only[_ngcontent-ng-c1079170881]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 1199px){[_nghost-ng-c1079170881]{--nav-sidebar-w: 200px}.header-nav[_ngcontent-ng-c1079170881]   a[_ngcontent-ng-c1079170881]{padding:7px 10px;font-size:13px}.logo-svg[_ngcontent-ng-c1079170881]{height:32px}}@media (max-width: 767px){.header-nav[_ngcontent-ng-c1079170881], .header-search[_ngcontent-ng-c1079170881]{display:none}.mobile-search[_ngcontent-ng-c1079170881]{display:flex}.logo-svg[_ngcontent-ng-c1079170881]{height:28px}.nav-sidebar[_ngcontent-ng-c1079170881]{position:fixed;top:var(--header-h);left:0;bottom:0;z-index:150;transform:translate(-100%);width:280px!important;box-shadow:4px 0 20px #00000080}.nav-sidebar.open[_ngcontent-ng-c1079170881]{transform:translate(0)}.ad-sidebar[_ngcontent-ng-c1079170881]{display:none!important}.layout-body[_ngcontent-ng-c1079170881]{height:calc(100vh - var(--header-h) - 44px)}}@media (min-width: 1200px) and (max-width: 1399px){[_nghost-ng-c1079170881]{--ad-sidebar-w: 9%;--min-ad-w: 110px;--max-ad-w: 160px}}@media (min-width: 1400px){[_nghost-ng-c1079170881]{--ad-sidebar-w: 10%;--max-ad-w: 200px}}@media print{.site-header[_ngcontent-ng-c1079170881], .ad-sidebar[_ngcontent-ng-c1079170881], .nav-sidebar[_ngcontent-ng-c1079170881]{display:none!important}.page-content[_ngcontent-ng-c1079170881]{overflow:visible}}</style><style>.ad-slot[_ngcontent-ng-c4279136063]{position:relative;border-radius:10px;overflow:hidden;transition:opacity .3s}.ad-slot--collapsed[_ngcontent-ng-c4279136063]{display:none}.ad-label[_ngcontent-ng-c4279136063]{display:flex;align-items:center;justify-content:space-between;padding:4px 10px;background:var(--surface2, #1a2236);border-bottom:1px solid var(--border, #1e2d4a)}.ad-label-text[_ngcontent-ng-c4279136063]{font-size:10px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim, #4a5568)}.ad-close-btn[_ngcontent-ng-c4279136063]{background:none;border:none;color:var(--text-dim, #4a5568);font-size:16px;cursor:pointer;line-height:1;padding:0 2px;transition:color .15s}.ad-close-btn[_ngcontent-ng-c4279136063]:hover{color:var(--text, #e8eaf6)}.ad-slot--video-sidebar[_ngcontent-ng-c4279136063]{background:var(--surface, #111827);border:1px solid var(--border, #1e2d4a);width:100%}.video-mock[_ngcontent-ng-c4279136063]{position:relative;background:linear-gradient(135deg,#0d1117,#1a2236);aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden}.video-mock[_ngcontent-ng-c4279136063]:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#00e5cc1a,#7c5cfc1a)}.video-play-btn[_ngcontent-ng-c4279136063]{width:52px;height:52px;border-radius:50%;background:#ffffff26;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff;border:2px solid rgba(255,255,255,.3);transition:transform .2s}.video-mock[_ngcontent-ng-c4279136063]:hover   .video-play-btn[_ngcontent-ng-c4279136063]{transform:scale(1.1)}.video-ad-info[_ngcontent-ng-c4279136063]{position:absolute;bottom:8px;left:8px;right:8px;display:flex;align-items:center;justify-content:space-between}.video-ad-brand[_ngcontent-ng-c4279136063]{font-size:11px;color:#fffc;font-weight:600}.video-ad-cta[_ngcontent-ng-c4279136063]{font-size:11px;padding:3px 10px;background:#00e5cc;color:#0a0e1a;border-radius:4px;font-weight:700;cursor:pointer}.video-timer[_ngcontent-ng-c4279136063]{position:absolute;top:8px;right:8px;font-size:10px;background:#00000080;color:#fff;padding:2px 6px;border-radius:3px;font-family:JetBrains Mono,monospace}.sidebar-banner-slot[_ngcontent-ng-c4279136063]{padding:10px}.banner-mock[_ngcontent-ng-c4279136063]{display:flex;align-items:center;gap:10px;padding:12px;background:var(--surface2, #1a2236);border-radius:8px;border:1px solid var(--border, #1e2d4a);cursor:pointer;transition:border-color .2s}.banner-mock[_ngcontent-ng-c4279136063]:hover{border-color:#00e5cc}.banner-icon[_ngcontent-ng-c4279136063]{font-size:24px;flex-shrink:0}.banner-title[_ngcontent-ng-c4279136063]{font-size:12px;font-weight:700;color:var(--text, #e8eaf6)}.banner-sub[_ngcontent-ng-c4279136063]{font-size:11px;color:var(--text-secondary, #8892a4)}.banner-cta[_ngcontent-ng-c4279136063]{margin-left:auto;font-size:12px;color:#00e5cc;font-weight:700}.ad-slot--inline-banner[_ngcontent-ng-c4279136063]{background:var(--surface, #111827);border:1px solid var(--border, #1e2d4a);border-left:3px solid #7C5CFC}.inline-ad-mock[_ngcontent-ng-c4279136063]{display:flex;align-items:center;gap:16px;padding:16px 20px;cursor:pointer;transition:background .2s}.inline-ad-mock[_ngcontent-ng-c4279136063]:hover{background:#7c5cfc0d}.inline-ad-tag[_ngcontent-ng-c4279136063]{display:inline-block;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#7c5cfc;background:#7c5cfc1a;padding:2px 8px;border-radius:3px;margin-bottom:6px}.inline-ad-headline[_ngcontent-ng-c4279136063]{font-size:15px;font-weight:700;color:var(--text, #e8eaf6);margin-bottom:4px}.inline-ad-body[_ngcontent-ng-c4279136063]{font-size:13px;color:var(--text-secondary, #8892a4);line-height:1.5;margin-bottom:8px}.inline-ad-cta-row[_ngcontent-ng-c4279136063]{display:flex;align-items:center;gap:12px}.inline-ad-cta[_ngcontent-ng-c4279136063]{font-size:13px;font-weight:700;color:#7c5cfc}.inline-ad-domain[_ngcontent-ng-c4279136063]{font-size:11px;color:var(--text-dim, #4a5568)}.inline-ad-img[_ngcontent-ng-c4279136063]{font-size:40px;flex-shrink:0;opacity:.7}.ad-slot--leaderboard[_ngcontent-ng-c4279136063]{background:linear-gradient(90deg,#00e5cc14,#7c5cfc14);border:1px solid rgba(0,229,204,.2)}.leaderboard-mock[_ngcontent-ng-c4279136063]{display:flex;align-items:center;gap:20px;padding:12px 20px;cursor:pointer}.lb-brand[_ngcontent-ng-c4279136063]{font-size:14px;font-weight:800;color:#00e5cc;white-space:nowrap}.lb-text[_ngcontent-ng-c4279136063]{font-size:13px;color:var(--text-secondary, #8892a4);flex:1}.lb-cta[_ngcontent-ng-c4279136063]{font-size:13px;font-weight:700;padding:7px 18px;background:#00e5cc;color:#0a0e1a;border-radius:6px;white-space:nowrap}.ad-slot--rectangle[_ngcontent-ng-c4279136063]{background:var(--surface, #111827);border:1px solid var(--border, #1e2d4a)}.rectangle-mock[_ngcontent-ng-c4279136063]{display:flex;flex-direction:column;align-items:center;padding:16px;text-align:center;cursor:pointer;gap:8px}.rect-visual[_ngcontent-ng-c4279136063]{font-size:32px}.rect-title[_ngcontent-ng-c4279136063]{font-size:14px;font-weight:700;color:var(--text, #e8eaf6)}.rect-sub[_ngcontent-ng-c4279136063]{font-size:12px;color:var(--text-secondary, #8892a4)}.rect-cta[_ngcontent-ng-c4279136063]{font-size:12px;font-weight:700;padding:6px 16px;background:#00e5cc26;color:#00e5cc;border:1px solid rgba(0,229,204,.3);border-radius:6px;margin-top:4px}</style><style>@charset "UTF-8";.site-footer[_ngcontent-ng-c4109311077]{background:var(--surface, #111827);border-top:1px solid var(--border, #1e2d4a);margin-top:auto;flex-shrink:0}.footer-inner[_ngcontent-ng-c4109311077]{max-width:1300px;margin:0 auto;padding:48px 24px 40px;display:grid;grid-template-columns:2fr 1fr 1fr 1.4fr;gap:40px}.footer-brand[_ngcontent-ng-c4109311077]{display:flex;flex-direction:column;gap:14px}.footer-logo[_ngcontent-ng-c4109311077]{display:inline-flex;text-decoration:none}.footer-logo-svg[_ngcontent-ng-c4109311077]{height:36px;width:auto}.footer-tagline[_ngcontent-ng-c4109311077]{font-size:13.5px;color:var(--text-secondary, #8892a4);line-height:1.7;max-width:300px;margin:0}.footer-contact[_ngcontent-ng-c4109311077]{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#00e5cc0f;border:1px solid rgba(0,229,204,.2);border-radius:8px;width:fit-content}.contact-icon[_ngcontent-ng-c4109311077]{font-size:14px;color:var(--cfx-teal, #00E5CC)}.contact-email[_ngcontent-ng-c4109311077]{font-size:13px;font-weight:600;color:var(--cfx-teal, #00E5CC);text-decoration:none;letter-spacing:.2px}.contact-email[_ngcontent-ng-c4109311077]:hover{text-decoration:underline}.footer-social[_ngcontent-ng-c4109311077]{display:flex;gap:10px}.social-link[_ngcontent-ng-c4109311077]{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:var(--surface2, #1a2236);border:1px solid var(--border, #1e2d4a);border-radius:6px;font-size:12px;font-weight:600;color:var(--text-secondary, #8892a4);text-decoration:none;transition:all .2s}.social-link[_ngcontent-ng-c4109311077]:hover{border-color:var(--cfx-teal, #00E5CC);color:var(--cfx-teal, #00E5CC)}.footer-col[_ngcontent-ng-c4109311077]{display:flex;flex-direction:column;gap:6px}.footer-heading[_ngcontent-ng-c4109311077]{font-family:Syne,sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--text, #e8eaf6);margin-bottom:8px}.footer-col[_ngcontent-ng-c4109311077]   nav[_ngcontent-ng-c4109311077]{display:flex;flex-direction:column;gap:6px}.footer-col[_ngcontent-ng-c4109311077]   nav[_ngcontent-ng-c4109311077]   a[_ngcontent-ng-c4109311077]{font-size:13.5px;color:var(--text-secondary, #8892a4);text-decoration:none;transition:color .15s;padding:3px 0}.footer-col[_ngcontent-ng-c4109311077]   nav[_ngcontent-ng-c4109311077]   a[_ngcontent-ng-c4109311077]:hover{color:var(--cfx-teal, #00E5CC)}.footer-contact-block[_ngcontent-ng-c4109311077]{display:flex;flex-direction:column;gap:10px;margin-top:4px}.contact-row[_ngcontent-ng-c4109311077]{display:flex;flex-direction:column;gap:2px}.cr-label[_ngcontent-ng-c4109311077]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim, #4a5568)}.cr-value[_ngcontent-ng-c4109311077]{font-size:13px;color:var(--text-secondary, #8892a4);text-decoration:none;transition:color .15s}.cr-value[_ngcontent-ng-c4109311077]:hover{color:var(--cfx-teal, #00E5CC)}.email-link[_ngcontent-ng-c4109311077]{color:var(--cfx-teal, #00E5CC)!important;font-weight:600;word-break:break-all}.footer-bottom[_ngcontent-ng-c4109311077]{border-top:1px solid var(--border, #1e2d4a);background:var(--bg, #0a0e1a)}.footer-bottom-inner[_ngcontent-ng-c4109311077]{max-width:1300px;margin:0 auto;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.copyright[_ngcontent-ng-c4109311077]{font-size:12px;color:var(--text-dim, #4a5568)}.footer-bottom-links[_ngcontent-ng-c4109311077]{display:flex;align-items:center;gap:8px}.footer-bottom-links[_ngcontent-ng-c4109311077]   a[_ngcontent-ng-c4109311077]{font-size:12px;color:var(--text-dim, #4a5568);text-decoration:none;transition:color .15s}.footer-bottom-links[_ngcontent-ng-c4109311077]   a[_ngcontent-ng-c4109311077]:hover{color:var(--cfx-teal, #00E5CC)}.sep[_ngcontent-ng-c4109311077]{color:var(--text-muted, #2d3f5a)}@media (max-width: 1024px){.footer-inner[_ngcontent-ng-c4109311077]{grid-template-columns:1fr 1fr}.footer-brand[_ngcontent-ng-c4109311077]{grid-column:1/-1}}@media (max-width: 640px){.footer-inner[_ngcontent-ng-c4109311077]{grid-template-columns:1fr;padding:32px 16px 24px;gap:28px}.footer-bottom-inner[_ngcontent-ng-c4109311077]{flex-direction:column;text-align:center}.footer-tagline[_ngcontent-ng-c4109311077]{max-width:100%}}</style><style>.home[_ngcontent-ng-c3306783236]{max-width:1100px;margin:0 auto;padding:0 24px 80px}.leaderboard-ad[_ngcontent-ng-c3306783236], .inline-ad-wrap[_ngcontent-ng-c3306783236]{margin:16px 0}.hero[_ngcontent-ng-c3306783236]{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;padding:52px 0 60px}.hero-badge[_ngcontent-ng-c3306783236]{display:inline-flex;align-items:center;gap:8px;padding:6px 16px;border-radius:20px;font-size:13px;font-weight:600;color:var(--cfx-teal, #00E5CC);background:#00e5cc14;border:1px solid rgba(0,229,204,.25);margin-bottom:20px}.pulse[_ngcontent-ng-c3306783236]{width:8px;height:8px;border-radius:50%;background:var(--cfx-teal, #00E5CC);animation:_ngcontent-ng-c3306783236_pulse 2s infinite}@keyframes _ngcontent-ng-c3306783236_pulse{0%,to{opacity:1;box-shadow:0 0 #00e5cc66}50%{opacity:.7;box-shadow:0 0 0 8px #00e5cc00}}.hero-title[_ngcontent-ng-c3306783236]{font-family:Syne,sans-serif;font-weight:900;font-size:clamp(32px,4vw,50px);line-height:1.08;color:var(--text);margin-bottom:18px}.g-brand[_ngcontent-ng-c3306783236]{background:linear-gradient(135deg,var(--cfx-teal, #00E5CC),#7C5CFC,#FF6B6B);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-sub[_ngcontent-ng-c3306783236]{font-size:17px;color:var(--text-secondary);line-height:1.7;margin-bottom:30px;max-width:520px}.hero-cta[_ngcontent-ng-c3306783236]{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:36px}.btn-primary-lg[_ngcontent-ng-c3306783236]{display:inline-flex;align-items:center;padding:13px 28px;background:var(--cfx-teal, #00E5CC);color:#0a0e1a;border-radius:10px;font-size:15px;font-weight:700;text-decoration:none;font-family:DM Sans,sans-serif;transition:all .2s}.btn-primary-lg[_ngcontent-ng-c3306783236]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00e5cc4d;color:#0a0e1a}.btn-ghost-lg[_ngcontent-ng-c3306783236]{display:inline-flex;align-items:center;padding:13px 28px;background:transparent;border:1px solid var(--border);color:var(--text-secondary);border-radius:10px;font-size:15px;font-weight:600;text-decoration:none;transition:all .2s}.btn-ghost-lg[_ngcontent-ng-c3306783236]:hover{border-color:var(--cfx-teal);color:var(--cfx-teal)}.hero-stats[_ngcontent-ng-c3306783236]{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.hs[_ngcontent-ng-c3306783236]{text-align:center}.hs-num[_ngcontent-ng-c3306783236]{display:block;font-family:Syne,sans-serif;font-size:26px;font-weight:800;color:var(--cfx-teal, #00E5CC)}.hs-label[_ngcontent-ng-c3306783236]{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.hs-div[_ngcontent-ng-c3306783236]{width:1px;height:36px;background:var(--border)}.hero-deco[_ngcontent-ng-c3306783236]{position:relative;height:340px}.deco-hex[_ngcontent-ng-c3306783236]{position:absolute;width:80px;height:80px;display:flex;align-items:center;justify-content:center;border:2px solid rgba(0,229,204,.2);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-md, 0 8px 24px rgba(0, 0, 0, .4));animation:_ngcontent-ng-c3306783236_float 6s ease-in-out infinite}.deco-inner[_ngcontent-ng-c3306783236]{font-size:32px}.hex-1[_ngcontent-ng-c3306783236]{top:15%;left:5%;animation-delay:0s}.hex-2[_ngcontent-ng-c3306783236]{top:5%;right:10%;animation-delay:1.5s}.hex-3[_ngcontent-ng-c3306783236]{bottom:20%;left:20%;animation-delay:3s}.hex-4[_ngcontent-ng-c3306783236]{bottom:8%;right:5%;animation-delay:4.5s}@keyframes _ngcontent-ng-c3306783236_float{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.deco-orb[_ngcontent-ng-c3306783236]{position:absolute;border-radius:50%;filter:blur(60px);opacity:.25;pointer-events:none}.orb-a[_ngcontent-ng-c3306783236]{width:180px;height:180px;background:var(--cfx-teal, #00E5CC);top:30%;left:25%}.orb-b[_ngcontent-ng-c3306783236]{width:130px;height:130px;background:#7c5cfc;bottom:15%;right:20%}.sec-hdr[_ngcontent-ng-c3306783236]{text-align:center;margin-bottom:40px}.sec-title[_ngcontent-ng-c3306783236]{font-family:Syne,sans-serif;font-size:32px;font-weight:800;color:var(--text);margin-bottom:10px}.sec-sub[_ngcontent-ng-c3306783236]{font-size:16px;color:var(--text-secondary);max-width:560px;margin:0 auto;line-height:1.6}.tech-section[_ngcontent-ng-c3306783236]{margin-bottom:20px}.tech-grid[_ngcontent-ng-c3306783236]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}.tech-card[_ngcontent-ng-c3306783236]{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;position:relative;cursor:pointer;transition:all .25s}.tech-card[_ngcontent-ng-c3306783236]:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--cc);opacity:0;transition:opacity .2s}.tech-card[_ngcontent-ng-c3306783236]:hover{border-color:var(--cc, var(--cfx-teal));transform:translateY(-3px);box-shadow:var(--shadow-md)}.tech-card[_ngcontent-ng-c3306783236]:hover:before{opacity:1}.tc-top[_ngcontent-ng-c3306783236]{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 12px}.tc-icon[_ngcontent-ng-c3306783236]{font-size:40px}.tc-badges[_ngcontent-ng-c3306783236]{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.tc-level[_ngcontent-ng-c3306783236]{font-size:11px;font-weight:700;padding:3px 9px;border-radius:4px;text-transform:uppercase}.tc-hours[_ngcontent-ng-c3306783236]{font-size:11px;color:var(--text-dim)}.tc-body[_ngcontent-ng-c3306783236]{padding:0 18px 18px}.tc-title[_ngcontent-ng-c3306783236]{font-family:Syne,sans-serif;font-size:18px;font-weight:700;color:var(--text);margin-bottom:6px}.tc-desc[_ngcontent-ng-c3306783236]{font-size:13px;color:var(--text-secondary);line-height:1.5;margin-bottom:14px}.tc-prog-row[_ngcontent-ng-c3306783236]{display:flex;align-items:center;gap:10px;margin-bottom:12px}.tc-prog-label[_ngcontent-ng-c3306783236]{font-size:11px;color:var(--text-dim);flex-shrink:0}.tc-prog-bar[_ngcontent-ng-c3306783236]{flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden}.tc-prog-fill[_ngcontent-ng-c3306783236]{height:100%;border-radius:2px;transition:width .6s ease}.tc-footer[_ngcontent-ng-c3306783236]{display:flex;align-items:center;justify-content:space-between}.tc-meta[_ngcontent-ng-c3306783236]{font-size:12px;color:var(--text-dim)}.tc-cta[_ngcontent-ng-c3306783236]{font-size:13px;font-weight:700;text-decoration:none;transition:opacity .2s}.tc-cta[_ngcontent-ng-c3306783236]:hover{opacity:.8}.tc-completed[_ngcontent-ng-c3306783236]{position:absolute;top:12px;right:12px;font-size:20px}.features-section[_ngcontent-ng-c3306783236]{margin-bottom:60px}.feat-grid[_ngcontent-ng-c3306783236]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.feat-card[_ngcontent-ng-c3306783236]{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px 20px}.feat-icon[_ngcontent-ng-c3306783236]{font-size:32px;margin-bottom:14px}.feat-title[_ngcontent-ng-c3306783236]{font-family:Syne,sans-serif;font-size:16px;font-weight:700;color:var(--text);margin-bottom:7px}.feat-desc[_ngcontent-ng-c3306783236]{font-size:13px;color:var(--text-secondary);line-height:1.6}.interview-section[_ngcontent-ng-c3306783236]{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:44px;margin-bottom:40px}.int-inner[_ngcontent-ng-c3306783236]{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}.int-badge[_ngcontent-ng-c3306783236]{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;background:#00e5cc14;border:1px solid rgba(0,229,204,.25);border-radius:20px;font-size:13px;color:var(--cfx-teal, #00E5CC);font-weight:600;margin-bottom:14px}.int-title[_ngcontent-ng-c3306783236]{font-family:Syne,sans-serif;font-size:30px;font-weight:800;color:var(--text);margin-bottom:14px}.int-sub[_ngcontent-ng-c3306783236]{font-size:15px;color:var(--text-secondary);line-height:1.7;margin-bottom:18px}.int-features[_ngcontent-ng-c3306783236]{list-style:none;padding:0;margin-bottom:24px}.int-features[_ngcontent-ng-c3306783236]   li[_ngcontent-ng-c3306783236]{padding:7px 0;font-size:14px;color:var(--text-secondary);border-bottom:1px solid var(--border)}.int-features[_ngcontent-ng-c3306783236]   li[_ngcontent-ng-c3306783236]:last-child{border-bottom:none}.mock-card[_ngcontent-ng-c3306783236]{background:var(--bg);border:1px solid var(--border);border-radius:14px;padding:22px;box-shadow:var(--shadow-lg)}.mock-q[_ngcontent-ng-c3306783236]{font-size:15px;font-weight:600;color:var(--text);margin-bottom:14px}.mock-tabs[_ngcontent-ng-c3306783236]{display:flex;gap:8px;margin-bottom:14px}.mock-tab[_ngcontent-ng-c3306783236]{padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;border:1px solid var(--border);color:var(--text-secondary)}.mock-tab.active[_ngcontent-ng-c3306783236]{background:#00e5cc1a;border-color:var(--cfx-teal);color:var(--cfx-teal)}.mock-ans[_ngcontent-ng-c3306783236]{font-size:13px;color:var(--text-secondary);line-height:1.7;padding:12px 14px;background:var(--surface);border-radius:8px;border-left:3px solid var(--cfx-teal, #00E5CC);margin-bottom:12px}.mock-tags[_ngcontent-ng-c3306783236]{display:flex;gap:6px}.mock-tags[_ngcontent-ng-c3306783236]   span[_ngcontent-ng-c3306783236]{font-size:11px;padding:2px 8px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text-dim)}@media (max-width: 900px){.hero[_ngcontent-ng-c3306783236], .int-inner[_ngcontent-ng-c3306783236]{grid-template-columns:1fr}.hero-deco[_ngcontent-ng-c3306783236], .int-mock[_ngcontent-ng-c3306783236]{display:none}}@media (max-width: 640px){.home[_ngcontent-ng-c3306783236]{padding:0 16px 60px}.interview-section[_ngcontent-ng-c3306783236]{padding:24px}}</style><script id="ld-json" type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"TutorialChamp","url":"https://tutorialchamp.com","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://tutorialchamp.com/tutorials?q={search_term_string}"},"query-input":"required name=search_term_string"}}</script></head>

<body><!--nghm--><!--nghm-->
  <!-- Skip to content -->
  <a href="#main-content" style="position:absolute;top:-50px;left:16px;z-index:9999;padding:10px 20px;background:#00E5CC;color:#0A0E1A;font-weight:700;border-radius:0 0 8px 8px;text-decoration:none;transition:top 0.2s;" onfocus="this.style.top='0'" onblur="this.style.top='-50px'">Skip to main content</a>

  <!-- Angular app root -->
  <app-root ng-version="17.3.12" ngh="7" ng-server-context="ssr"><router-outlet></router-outlet><app-shell _nghost-ng-c1079170881 ngh="6"><div _ngcontent-ng-c1079170881 class="shell"><header _ngcontent-ng-c1079170881 role="banner" class="site-header"><div _ngcontent-ng-c1079170881 class="header-inner"><div _ngcontent-ng-c1079170881 class="header-left"><button _ngcontent-ng-c1079170881 aria-controls="nav-sidebar" aria-label="Toggle navigation" class="hamburger-btn" aria-expanded="false"><span _ngcontent-ng-c1079170881 class="ham-line"></span></button><a _ngcontent-ng-c1079170881 routerlink="/" aria-label="TutorialChamp Home" class="logo-link" href="/"><svg _ngcontent-ng-c1079170881="" viewBox="0 0 200 42" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="logo-svg"><defs _ngcontent-ng-c1079170881=""><linearGradient _ngcontent-ng-c1079170881="" id="lg1" x1="0%" y1="0%" x2="100%" y2="100%"><stop _ngcontent-ng-c1079170881="" offset="0%" stop-color="#00E5CC"/><stop _ngcontent-ng-c1079170881="" offset="100%" stop-color="#7C5CFC"/></linearGradient><linearGradient _ngcontent-ng-c1079170881="" id="lg2" x1="0%" y1="0%" x2="100%" y2="100%"><stop _ngcontent-ng-c1079170881="" offset="0%" stop-color="#00E5CC"/><stop _ngcontent-ng-c1079170881="" offset="50%" stop-color="#7C5CFC"/><stop _ngcontent-ng-c1079170881="" offset="100%" stop-color="#FF6B6B"/></linearGradient></defs><polygon _ngcontent-ng-c1079170881="" points="21,2 35,10 35,26 21,34 7,26 7,10" fill="none" stroke="url(#lg1)" stroke-width="2"/><circle _ngcontent-ng-c1079170881="" cx="21" cy="18" r="3.5" fill="url(#lg1)"/><line _ngcontent-ng-c1079170881="" x1="21" y1="4" x2="21" y2="14.5" stroke="#00E5CC" stroke-width="1.5"/><line _ngcontent-ng-c1079170881="" x1="21" y1="21.5" x2="21" y2="32" stroke="#7C5CFC" stroke-width="1.5"/><line _ngcontent-ng-c1079170881="" x1="9" y1="12" x2="17.5" y2="16" stroke="#00E5CC" stroke-width="1.5"/><line _ngcontent-ng-c1079170881="" x1="24.5" y1="20" x2="33" y2="24" stroke="#7C5CFC" stroke-width="1.5"/><line _ngcontent-ng-c1079170881="" x1="33" y1="12" x2="24.5" y2="16" stroke="#00E5CC" stroke-width="1.5"/><line _ngcontent-ng-c1079170881="" x1="17.5" y1="20" x2="9" y2="24" stroke="#7C5CFC" stroke-width="1.5"/><circle _ngcontent-ng-c1079170881="" cx="21" cy="4" r="2" fill="#00E5CC"/><circle _ngcontent-ng-c1079170881="" cx="9" cy="12" r="2" fill="#00E5CC"/><circle _ngcontent-ng-c1079170881="" cx="33" cy="12" r="2" fill="#00E5CC"/><circle _ngcontent-ng-c1079170881="" cx="21" cy="32" r="2" fill="#7C5CFC"/><circle _ngcontent-ng-c1079170881="" cx="9" cy="24" r="2" fill="#7C5CFC"/><circle _ngcontent-ng-c1079170881="" cx="33" cy="24" r="2" fill="#7C5CFC"/><text _ngcontent-ng-c1079170881="" x="44" y="25" font-family="Syne,sans-serif" font-weight="800" font-size="17" fill="url(#lg2)">Tutorial</text><text _ngcontent-ng-c1079170881="" x="111" y="25" font-family="Syne,sans-serif" font-weight="800" font-size="17" fill="#E2E8F0">Champ</text><text _ngcontent-ng-c1079170881="" x="44" y="36" font-family="Inter,sans-serif" font-size="7" fill="#4A5568" letter-spacing="1.5">AI LEARNING PLATFORM</text></svg></a></div><div _ngcontent-ng-c1079170881 role="search" class="header-search"><label _ngcontent-ng-c1079170881 for="site-search" class="sr-only">Search AI tutorials</label><span _ngcontent-ng-c1079170881 aria-hidden="true" class="search-icon">🔍</span><input _ngcontent-ng-c1079170881 id="site-search" type="search" placeholder="Search tutorials, topics..." autocomplete="off" aria-autocomplete="list" class="search-input ng-untouched ng-pristine ng-valid" aria-expanded="false" value><!----></div><div _ngcontent-ng-c1079170881 class="header-right"><nav _ngcontent-ng-c1079170881 aria-label="Main navigation" class="header-nav"><a _ngcontent-ng-c1079170881 routerlink="/" routerlinkactive="nav-active" href="/" class>Home</a><a _ngcontent-ng-c1079170881 routerlink="/tutorials" routerlinkactive="nav-active" href="/tutorials" class>Tutorials</a><a _ngcontent-ng-c1079170881 routerlink="/interview-prep" routerlinkactive="nav-active" href="/interview-prep" class>Interview Prep</a></nav><button _ngcontent-ng-c1079170881 class="theme-toggle" aria-label="Switch to light mode" title="Light mode"><span _ngcontent-ng-c1079170881>☀</span><!----><!----></button></div></div><!----></header><div _ngcontent-ng-c1079170881 class="layout-body"><aside _ngcontent-ng-c1079170881 id="nav-sidebar" aria-label="Course navigation" class="nav-sidebar" aria-hidden="true"><!----><div _ngcontent-ng-c1079170881 class="nav-sidebar-inner"><div _ngcontent-ng-c1079170881 class="nav-section-title">AI Technologies</div><nav _ngcontent-ng-c1079170881 aria-label="Technology list"><a _ngcontent-ng-c1079170881 routerlinkactive="nav-item-active" class="nav-item" style="--item-color: #00E5CC;" href="/tutorials/python-ai"><span _ngcontent-ng-c1079170881 aria-hidden="true" class="nav-item-icon">🐍</span><div _ngcontent-ng-c1079170881 class="nav-item-info"><div _ngcontent-ng-c1079170881 class="nav-item-name">Python for AI</div><div _ngcontent-ng-c1079170881 class="nav-item-level">Beginner · 3 ch.</div><div _ngcontent-ng-c1079170881 role="progressbar" aria-valuemin="0" aria-valuemax="100" class="nav-progress" aria-valuenow="0"><div _ngcontent-ng-c1079170881 class="nav-progress-fill" style="width: 0%; background: #00E5CC;"></div></div></div><!----></a><a _ngcontent-ng-c1079170881 routerlinkactive="nav-item-active" class="nav-item" style="--item-color: #7C5CFC;" href="/tutorials/ml-fundamentals"><span _ngcontent-ng-c1079170881 aria-hidden="true" class="nav-item-icon">🧠</span><div _ngcontent-ng-c1079170881 class="nav-item-info"><div _ngcontent-ng-c1079170881 class="nav-item-name">Machine Learning Fundamentals</div><div _ngcontent-ng-c1079170881 class="nav-item-level">Intermediate · 1 ch.</div><div _ngcontent-ng-c1079170881 role="progressbar" aria-valuemin="0" aria-valuemax="100" class="nav-progress" aria-valuenow="0"><div _ngcontent-ng-c1079170881 class="nav-progress-fill" style="width: 0%; background: #7C5CFC;"></div></div></div><!----></a><a _ngcontent-ng-c1079170881 routerlinkactive="nav-item-active" class="nav-item" style="--item-color: #FF6B6B;" href="/tutorials/deep-learning"><span _ngcontent-ng-c1079170881 aria-hidden="true" class="nav-item-icon">🔬</span><div _ngcontent-ng-c1079170881 class="nav-item-info"><div _ngcontent-ng-c1079170881 class="nav-item-name">Deep Learning</div><div _ngcontent-ng-c1079170881 class="nav-item-level">Advanced · 1 ch.</div><div _ngcontent-ng-c1079170881 role="progressbar" aria-valuemin="0" aria-valuemax="100" class="nav-progress" aria-valuenow="0"><div _ngcontent-ng-c1079170881 class="nav-progress-fill" style="width: 0%; background: #FF6B6B;"></div></div></div><!----></a><a _ngcontent-ng-c1079170881 routerlinkactive="nav-item-active" class="nav-item" style="--item-color: #34D399;" href="/tutorials/nlp-llms"><span _ngcontent-ng-c1079170881 aria-hidden="true" class="nav-item-icon">💬</span><div _ngcontent-ng-c1079170881 class="nav-item-info"><div _ngcontent-ng-c1079170881 class="nav-item-name">NLP &amp; Large Language Models</div><div _ngcontent-ng-c1079170881 class="nav-item-level">Advanced · 1 ch.</div><div _ngcontent-ng-c1079170881 role="progressbar" aria-valuemin="0" aria-valuemax="100" class="nav-progress" aria-valuenow="0"><div _ngcontent-ng-c1079170881 class="nav-progress-fill" style="width: 0%; background: #34D399;"></div></div></div><!----></a><a _ngcontent-ng-c1079170881 routerlinkactive="nav-item-active" class="nav-item" style="--item-color: #60A5FA;" href="/tutorials/mlops"><span _ngcontent-ng-c1079170881 aria-hidden="true" class="nav-item-icon">⚙️</span><div _ngcontent-ng-c1079170881 class="nav-item-info"><div _ngcontent-ng-c1079170881 class="nav-item-name">MLOps</div><div _ngcontent-ng-c1079170881 class="nav-item-level">Advanced · 1 ch.</div><div _ngcontent-ng-c1079170881 role="progressbar" aria-valuemin="0" aria-valuemax="100" class="nav-progress" aria-valuenow="0"><div _ngcontent-ng-c1079170881 class="nav-progress-fill" style="width: 0%; background: #60A5FA;"></div></div></div><!----></a><!----></nav><div _ngcontent-ng-c1079170881 class="nav-stats"><div _ngcontent-ng-c1079170881 class="nav-stat"><span _ngcontent-ng-c1079170881 class="ns-val">0</span><span _ngcontent-ng-c1079170881 class="ns-lbl">Done</span></div><div _ngcontent-ng-c1079170881 class="nav-stat-div"></div><div _ngcontent-ng-c1079170881 class="nav-stat"><span _ngcontent-ng-c1079170881 class="ns-val">0</span><span _ngcontent-ng-c1079170881 class="ns-lbl">Mastered</span></div></div><a _ngcontent-ng-c1079170881 routerlink="/interview-prep" class="nav-interview-cta" href="/interview-prep"> 🎯 Interview Prep Hub </a></div></aside><main _ngcontent-ng-c1079170881 id="main-content" tabindex="-1" role="main" class="page-content"><router-outlet _ngcontent-ng-c1079170881></router-outlet><app-home _nghost-ng-c3306783236 ngh="2"><div _ngcontent-ng-c3306783236 class="home"><div _ngcontent-ng-c3306783236 class="leaderboard-ad"><app-ad-slot _ngcontent-ng-c3306783236 type="leaderboard" slotid="home-top" _nghost-ng-c4279136063 ngh="0"><div _ngcontent-ng-c4279136063 role="complementary" class="ad-slot ad-slot--leaderboard" aria-label="Advertisement"><div _ngcontent-ng-c4279136063 class="ad-label"><span _ngcontent-ng-c4279136063 class="ad-label-text">Advertisement</span><!----></div><!----><!----><div _ngcontent-ng-c4279136063 class="leaderboard-container"><div _ngcontent-ng-c4279136063 class="leaderboard-mock"><span _ngcontent-ng-c4279136063 class="lb-brand">🚀 TutorialChamp Pro</span><span _ngcontent-ng-c4279136063 class="lb-text">Ad-free learning + exclusive content</span><span _ngcontent-ng-c4279136063 class="lb-cta">Upgrade Now</span></div></div><!----><!----></div></app-ad-slot></div><section _ngcontent-ng-c3306783236 aria-label="Hero" itemscope itemtype="https://schema.org/WebSite" class="hero"><div _ngcontent-ng-c3306783236 class="hero-content"><div _ngcontent-ng-c3306783236 class="hero-badge"><span _ngcontent-ng-c3306783236 aria-hidden="true" class="pulse"></span>Free · Structured · Production-Ready</div><h1 _ngcontent-ng-c3306783236 itemprop="name" class="hero-title">Master <span _ngcontent-ng-c3306783236 class="g-brand">Artificial Intelligence</span><br _ngcontent-ng-c3306783236>End-to-End</h1><p _ngcontent-ng-c3306783236 itemprop="description" class="hero-sub">Chapter-by-chapter tutorials for Python, ML, Deep Learning, NLP, LLMs, and MLOps. Built like W3Schools, but for the AI era.</p><div _ngcontent-ng-c3306783236 class="hero-cta"><a _ngcontent-ng-c3306783236 routerlink="/tutorials/python-ai" class="btn-primary-lg" href="/tutorials/python-ai">Start Learning →</a><a _ngcontent-ng-c3306783236 routerlink="/interview-prep" class="btn-ghost-lg" href="/interview-prep">🎯 Interview Prep</a></div><div _ngcontent-ng-c3306783236 role="list" class="hero-stats"><div _ngcontent-ng-c3306783236 role="listitem" class="hs"><span _ngcontent-ng-c3306783236 class="hs-num">7</span><span _ngcontent-ng-c3306783236 class="hs-label">Chapters</span></div><div _ngcontent-ng-c3306783236 aria-hidden="true" class="hs-div"></div><div _ngcontent-ng-c3306783236 role="listitem" class="hs"><span _ngcontent-ng-c3306783236 class="hs-num">20+</span><span _ngcontent-ng-c3306783236 class="hs-label">Interview Q&amp;As</span></div><div _ngcontent-ng-c3306783236 aria-hidden="true" class="hs-div"></div><div _ngcontent-ng-c3306783236 role="listitem" class="hs"><span _ngcontent-ng-c3306783236 class="hs-num">5</span><span _ngcontent-ng-c3306783236 class="hs-label">Technologies</span></div><div _ngcontent-ng-c3306783236 aria-hidden="true" class="hs-div"></div><div _ngcontent-ng-c3306783236 role="listitem" class="hs"><span _ngcontent-ng-c3306783236 class="hs-num">Free</span><span _ngcontent-ng-c3306783236 class="hs-label">Forever</span></div></div></div><div _ngcontent-ng-c3306783236 aria-hidden="true" class="hero-deco"><div _ngcontent-ng-c3306783236 class="deco-hex hex-1"><div _ngcontent-ng-c3306783236 class="deco-inner">🐍</div></div><div _ngcontent-ng-c3306783236 class="deco-hex hex-2"><div _ngcontent-ng-c3306783236 class="deco-inner">🧠</div></div><div _ngcontent-ng-c3306783236 class="deco-hex hex-3"><div _ngcontent-ng-c3306783236 class="deco-inner">💬</div></div><div _ngcontent-ng-c3306783236 class="deco-hex hex-4"><div _ngcontent-ng-c3306783236 class="deco-inner">⚙️</div></div><div _ngcontent-ng-c3306783236 class="deco-orb orb-a"></div><div _ngcontent-ng-c3306783236 class="deco-orb orb-b"></div></div></section><section _ngcontent-ng-c3306783236 aria-labelledby="tech-h" class="tech-section"><div _ngcontent-ng-c3306783236 class="sec-hdr"><h2 _ngcontent-ng-c3306783236 id="tech-h" class="sec-title">Choose Your Technology</h2><p _ngcontent-ng-c3306783236 class="sec-sub">Each technology is a self-contained module with chapters, exercises, and interview prep.</p></div><div _ngcontent-ng-c3306783236 role="list" class="tech-grid"><article _ngcontent-ng-c3306783236 role="listitem" itemscope itemtype="https://schema.org/Course" class="tech-card card-hover" style="--cc: #00E5CC;"><div _ngcontent-ng-c3306783236 class="tc-top" style="background: linear-gradient(135deg, #00E5CC18, transparent);"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="tc-icon">🐍</div><div _ngcontent-ng-c3306783236 class="tc-badges"><span _ngcontent-ng-c3306783236 class="tc-level level-beginner">Beginner</span><span _ngcontent-ng-c3306783236 class="tc-hours">~8h</span></div></div><div _ngcontent-ng-c3306783236 class="tc-body"><h3 _ngcontent-ng-c3306783236 itemprop="name" class="tc-title">Python for AI</h3><p _ngcontent-ng-c3306783236 itemprop="description" class="tc-desc">Master Python fundamentals for AI — data structures, OOP, NumPy, and the scientific ecosystem that powers all ML workflows.</p><div _ngcontent-ng-c3306783236 class="tc-prog-row"><span _ngcontent-ng-c3306783236 class="tc-prog-label">0%</span><div _ngcontent-ng-c3306783236 class="tc-prog-bar"><div _ngcontent-ng-c3306783236 class="tc-prog-fill" style="width: 0%; background: #00E5CC;"></div></div></div><div _ngcontent-ng-c3306783236 class="tc-footer"><span _ngcontent-ng-c3306783236 class="tc-meta">3 chapters · 4 Q&amp;As</span><a _ngcontent-ng-c3306783236 itemprop="url" class="tc-cta" style="color: #00E5CC;" href="/tutorials/python-ai"> Start → </a></div></div><!----></article><article _ngcontent-ng-c3306783236 role="listitem" itemscope itemtype="https://schema.org/Course" class="tech-card card-hover" style="--cc: #7C5CFC;"><div _ngcontent-ng-c3306783236 class="tc-top" style="background: linear-gradient(135deg, #A78BFA18, transparent);"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="tc-icon">🧠</div><div _ngcontent-ng-c3306783236 class="tc-badges"><span _ngcontent-ng-c3306783236 class="tc-level level-intermediate">Intermediate</span><span _ngcontent-ng-c3306783236 class="tc-hours">~12h</span></div></div><div _ngcontent-ng-c3306783236 class="tc-body"><h3 _ngcontent-ng-c3306783236 itemprop="name" class="tc-title">Machine Learning Fundamentals</h3><p _ngcontent-ng-c3306783236 itemprop="description" class="tc-desc">Core ML algorithms, bias-variance tradeoff, model evaluation, and building production-grade scikit-learn pipelines.</p><div _ngcontent-ng-c3306783236 class="tc-prog-row"><span _ngcontent-ng-c3306783236 class="tc-prog-label">0%</span><div _ngcontent-ng-c3306783236 class="tc-prog-bar"><div _ngcontent-ng-c3306783236 class="tc-prog-fill" style="width: 0%; background: #7C5CFC;"></div></div></div><div _ngcontent-ng-c3306783236 class="tc-footer"><span _ngcontent-ng-c3306783236 class="tc-meta">1 chapters · 4 Q&amp;As</span><a _ngcontent-ng-c3306783236 itemprop="url" class="tc-cta" style="color: #7C5CFC;" href="/tutorials/ml-fundamentals"> Start → </a></div></div><!----></article><article _ngcontent-ng-c3306783236 role="listitem" itemscope itemtype="https://schema.org/Course" class="tech-card card-hover" style="--cc: #FF6B6B;"><div _ngcontent-ng-c3306783236 class="tc-top" style="background: linear-gradient(135deg, #FF6B6B18, transparent);"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="tc-icon">🔬</div><div _ngcontent-ng-c3306783236 class="tc-badges"><span _ngcontent-ng-c3306783236 class="tc-level level-advanced">Advanced</span><span _ngcontent-ng-c3306783236 class="tc-hours">~20h</span></div></div><div _ngcontent-ng-c3306783236 class="tc-body"><h3 _ngcontent-ng-c3306783236 itemprop="name" class="tc-title">Deep Learning</h3><p _ngcontent-ng-c3306783236 itemprop="description" class="tc-desc">Neural networks, backpropagation, CNNs, Transformers, and modern architectures using PyTorch. From theory to production.</p><div _ngcontent-ng-c3306783236 class="tc-prog-row"><span _ngcontent-ng-c3306783236 class="tc-prog-label">0%</span><div _ngcontent-ng-c3306783236 class="tc-prog-bar"><div _ngcontent-ng-c3306783236 class="tc-prog-fill" style="width: 0%; background: #FF6B6B;"></div></div></div><div _ngcontent-ng-c3306783236 class="tc-footer"><span _ngcontent-ng-c3306783236 class="tc-meta">1 chapters · 4 Q&amp;As</span><a _ngcontent-ng-c3306783236 itemprop="url" class="tc-cta" style="color: #FF6B6B;" href="/tutorials/deep-learning"> Start → </a></div></div><!----></article><article _ngcontent-ng-c3306783236 role="listitem" itemscope itemtype="https://schema.org/Course" class="tech-card card-hover" style="--cc: #34D399;"><div _ngcontent-ng-c3306783236 class="tc-top" style="background: linear-gradient(135deg, #34D39918, transparent);"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="tc-icon">💬</div><div _ngcontent-ng-c3306783236 class="tc-badges"><span _ngcontent-ng-c3306783236 class="tc-level level-advanced">Advanced</span><span _ngcontent-ng-c3306783236 class="tc-hours">~18h</span></div></div><div _ngcontent-ng-c3306783236 class="tc-body"><h3 _ngcontent-ng-c3306783236 itemprop="name" class="tc-title">NLP &amp; Large Language Models</h3><p _ngcontent-ng-c3306783236 itemprop="description" class="tc-desc">Text embeddings, BERT vs GPT, RAG, prompt engineering, LoRA fine-tuning, and building production LLM applications.</p><div _ngcontent-ng-c3306783236 class="tc-prog-row"><span _ngcontent-ng-c3306783236 class="tc-prog-label">0%</span><div _ngcontent-ng-c3306783236 class="tc-prog-bar"><div _ngcontent-ng-c3306783236 class="tc-prog-fill" style="width: 0%; background: #34D399;"></div></div></div><div _ngcontent-ng-c3306783236 class="tc-footer"><span _ngcontent-ng-c3306783236 class="tc-meta">1 chapters · 4 Q&amp;As</span><a _ngcontent-ng-c3306783236 itemprop="url" class="tc-cta" style="color: #34D399;" href="/tutorials/nlp-llms"> Start → </a></div></div><!----></article><article _ngcontent-ng-c3306783236 role="listitem" itemscope itemtype="https://schema.org/Course" class="tech-card card-hover" style="--cc: #60A5FA;"><div _ngcontent-ng-c3306783236 class="tc-top" style="background: linear-gradient(135deg, #60A5FA18, transparent);"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="tc-icon">⚙️</div><div _ngcontent-ng-c3306783236 class="tc-badges"><span _ngcontent-ng-c3306783236 class="tc-level level-advanced">Advanced</span><span _ngcontent-ng-c3306783236 class="tc-hours">~15h</span></div></div><div _ngcontent-ng-c3306783236 class="tc-body"><h3 _ngcontent-ng-c3306783236 itemprop="name" class="tc-title">MLOps</h3><p _ngcontent-ng-c3306783236 itemprop="description" class="tc-desc">Deploy, monitor, and scale ML systems. Covers MLflow, Docker, FastAPI serving, CI/CD pipelines, and production monitoring.</p><div _ngcontent-ng-c3306783236 class="tc-prog-row"><span _ngcontent-ng-c3306783236 class="tc-prog-label">0%</span><div _ngcontent-ng-c3306783236 class="tc-prog-bar"><div _ngcontent-ng-c3306783236 class="tc-prog-fill" style="width: 0%; background: #60A5FA;"></div></div></div><div _ngcontent-ng-c3306783236 class="tc-footer"><span _ngcontent-ng-c3306783236 class="tc-meta">1 chapters · 4 Q&amp;As</span><a _ngcontent-ng-c3306783236 itemprop="url" class="tc-cta" style="color: #60A5FA;" href="/tutorials/mlops"> Start → </a></div></div><!----></article><!----></div></section><div _ngcontent-ng-c3306783236 class="inline-ad-wrap"><app-ad-slot _ngcontent-ng-c3306783236 type="inline-banner" slotid="home-mid-1" _nghost-ng-c4279136063 ngh="1"><div _ngcontent-ng-c4279136063 role="complementary" class="ad-slot ad-slot--inline-banner" aria-label="Advertisement"><div _ngcontent-ng-c4279136063 class="ad-label"><span _ngcontent-ng-c4279136063 class="ad-label-text">Advertisement</span><!----></div><!----><div _ngcontent-ng-c4279136063 class="inline-ad-container"><div _ngcontent-ng-c4279136063 class="inline-ad-mock"><div _ngcontent-ng-c4279136063 class="inline-ad-left"><div _ngcontent-ng-c4279136063 class="inline-ad-tag">Sponsored</div><div _ngcontent-ng-c4279136063 class="inline-ad-headline">Master AI with Hands-On Projects</div><div _ngcontent-ng-c4279136063 class="inline-ad-body">Join 50,000+ learners building real AI systems. Get certified.</div><div _ngcontent-ng-c4279136063 class="inline-ad-cta-row"><span _ngcontent-ng-c4279136063 class="inline-ad-cta">Explore Courses →</span><span _ngcontent-ng-c4279136063 class="inline-ad-domain">partner-courses.com</span></div></div><div _ngcontent-ng-c4279136063 aria-hidden="true" class="inline-ad-img">🤖</div></div></div><!----><!----><!----></div></app-ad-slot></div><section _ngcontent-ng-c3306783236 aria-labelledby="feat-h" class="features-section"><h2 _ngcontent-ng-c3306783236 id="feat-h" class="sec-title" style="text-align: center; margin-bottom: 32px;">Why TutorialChamp?</h2><div _ngcontent-ng-c3306783236 role="list" class="feat-grid"><div _ngcontent-ng-c3306783236 role="listitem" class="feat-card"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="feat-icon">📖</div><h3 _ngcontent-ng-c3306783236 class="feat-title">Chapter-by-Chapter</h3><p _ngcontent-ng-c3306783236 class="feat-desc">Structured learning with clear progression. Each chapter builds on the previous one.</p></div><div _ngcontent-ng-c3306783236 role="listitem" class="feat-card"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="feat-icon">⚡</div><h3 _ngcontent-ng-c3306783236 class="feat-title">Hands-On Exercises</h3><p _ngcontent-ng-c3306783236 class="feat-desc">Every chapter has a coding exercise with hints and a full solution.</p></div><div _ngcontent-ng-c3306783236 role="listitem" class="feat-card"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="feat-icon">🎯</div><h3 _ngcontent-ng-c3306783236 class="feat-title">Interview Ready</h3><p _ngcontent-ng-c3306783236 class="feat-desc">Short &amp; detailed answers for every Q&amp;A. Filter by difficulty and technology.</p></div><div _ngcontent-ng-c3306783236 role="listitem" class="feat-card"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="feat-icon">🧩</div><h3 _ngcontent-ng-c3306783236 class="feat-title">Modular Design</h3><p _ngcontent-ng-c3306783236 class="feat-desc">Each technology is a self-contained module. Jump in anywhere.</p></div><div _ngcontent-ng-c3306783236 role="listitem" class="feat-card"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="feat-icon">📈</div><h3 _ngcontent-ng-c3306783236 class="feat-title">Progress Tracking</h3><p _ngcontent-ng-c3306783236 class="feat-desc">Your progress is saved locally. Pick up exactly where you left off.</p></div><div _ngcontent-ng-c3306783236 role="listitem" class="feat-card"><div _ngcontent-ng-c3306783236 aria-hidden="true" class="feat-icon">🔍</div><h3 _ngcontent-ng-c3306783236 class="feat-title">SEO-First</h3><p _ngcontent-ng-c3306783236 class="feat-desc">Every page has JSON-LD structured data, canonical URLs, and Open Graph tags.</p></div><!----></div></section><section _ngcontent-ng-c3306783236 aria-labelledby="int-h" class="interview-section"><div _ngcontent-ng-c3306783236 class="int-inner"><div _ngcontent-ng-c3306783236 class="int-text"><div _ngcontent-ng-c3306783236 class="int-badge">🎯 Interview Preparation Hub</div><h2 _ngcontent-ng-c3306783236 id="int-h" class="int-title">Ace Your AI Interview</h2><p _ngcontent-ng-c3306783236 class="int-sub">20+ curated questions from basic to FAANG-level advanced. Every question has a quick answer and a detailed explanation.</p><ul _ngcontent-ng-c3306783236 role="list" class="int-features"><li _ngcontent-ng-c3306783236>⚡ Short answers for rapid review</li><li _ngcontent-ng-c3306783236>📖 Detailed answers with real code examples</li><li _ngcontent-ng-c3306783236>🏷 Filter by technology and difficulty</li><li _ngcontent-ng-c3306783236>📝 Covers all 5 technologies</li></ul><a _ngcontent-ng-c3306783236 routerlink="/interview-prep" class="btn-primary-lg" style="display: inline-flex;" href="/interview-prep">Explore All Questions →</a></div><div _ngcontent-ng-c3306783236 aria-hidden="true" class="int-mock"><div _ngcontent-ng-c3306783236 class="mock-card"><div _ngcontent-ng-c3306783236 class="mock-q">Q: What is backpropagation?</div><div _ngcontent-ng-c3306783236 class="mock-tabs"><span _ngcontent-ng-c3306783236 class="mock-tab active">⚡ Quick</span><span _ngcontent-ng-c3306783236 class="mock-tab">📖 Detailed</span></div><div _ngcontent-ng-c3306783236 class="mock-ans">Backpropagation computes gradients of the loss w.r.t. all parameters using the chain rule, enabling gradient descent to update each weight...</div><div _ngcontent-ng-c3306783236 class="mock-tags"><span _ngcontent-ng-c3306783236>#backprop</span><span _ngcontent-ng-c3306783236>#gradients</span></div></div></div></div></section><div _ngcontent-ng-c3306783236 class="leaderboard-ad"><app-ad-slot _ngcontent-ng-c3306783236 type="leaderboard" slotid="home-bottom" _nghost-ng-c4279136063 ngh="0"><div _ngcontent-ng-c4279136063 role="complementary" class="ad-slot ad-slot--leaderboard" aria-label="Advertisement"><div _ngcontent-ng-c4279136063 class="ad-label"><span _ngcontent-ng-c4279136063 class="ad-label-text">Advertisement</span><!----></div><!----><!----><div _ngcontent-ng-c4279136063 class="leaderboard-container"><div _ngcontent-ng-c4279136063 class="leaderboard-mock"><span _ngcontent-ng-c4279136063 class="lb-brand">🚀 TutorialChamp Pro</span><span _ngcontent-ng-c4279136063 class="lb-text">Ad-free learning + exclusive content</span><span _ngcontent-ng-c4279136063 class="lb-cta">Upgrade Now</span></div></div><!----><!----></div></app-ad-slot></div></div></app-home><!----></main><aside _ngcontent-ng-c1079170881 aria-label="Advertisement sidebar" class="ad-sidebar"><div _ngcontent-ng-c1079170881 class="ad-sidebar-inner"><app-ad-slot _ngcontent-ng-c1079170881 type="video-sidebar" slotid="right-video-1" _nghost-ng-c4279136063 ngh="3"><div _ngcontent-ng-c4279136063 role="complementary" class="ad-slot ad-slot--video-sidebar" aria-label="Advertisement"><div _ngcontent-ng-c4279136063 class="ad-label"><span _ngcontent-ng-c4279136063 class="ad-label-text">Advertisement</span><button _ngcontent-ng-c4279136063 aria-label="Close advertisement" class="ad-close-btn">×</button><!----></div><div _ngcontent-ng-c4279136063 class="video-ad-container"><div _ngcontent-ng-c4279136063 class="video-ad-placeholder"><div _ngcontent-ng-c4279136063 class="video-mock"><div _ngcontent-ng-c4279136063 aria-hidden="true" class="video-play-btn">▶</div><div _ngcontent-ng-c4279136063 class="video-ad-info"><div _ngcontent-ng-c4279136063 class="video-ad-brand">🎯 Your Ad Here</div><div _ngcontent-ng-c4279136063 class="video-ad-cta">Learn More</div></div><div _ngcontent-ng-c4279136063 class="video-timer">0:30</div></div></div><div _ngcontent-ng-c4279136063 class="sidebar-banner-slot"><div _ngcontent-ng-c4279136063 class="banner-mock"><div _ngcontent-ng-c4279136063 class="banner-icon">📚</div><div _ngcontent-ng-c4279136063 class="banner-text"><div _ngcontent-ng-c4279136063 class="banner-title">Upgrade Your Skills</div><div _ngcontent-ng-c4279136063 class="banner-sub">AI Certification Courses</div></div><div _ngcontent-ng-c4279136063 class="banner-cta">Start →</div></div></div></div><!----><!----><!----><!----></div></app-ad-slot><div _ngcontent-ng-c1079170881 class="ad-spacer"></div><app-ad-slot _ngcontent-ng-c1079170881 type="rectangle" slotid="right-rect-1" _nghost-ng-c4279136063 ngh="4"><div _ngcontent-ng-c4279136063 role="complementary" class="ad-slot ad-slot--rectangle" aria-label="Advertisement"><div _ngcontent-ng-c4279136063 class="ad-label"><span _ngcontent-ng-c4279136063 class="ad-label-text">Advertisement</span><!----></div><!----><!----><!----><div _ngcontent-ng-c4279136063 class="rectangle-container"><div _ngcontent-ng-c4279136063 class="rectangle-mock"><div _ngcontent-ng-c4279136063 aria-hidden="true" class="rect-visual">📊</div><div _ngcontent-ng-c4279136063 class="rect-text"><div _ngcontent-ng-c4279136063 class="rect-title">AI Tools Newsletter</div><div _ngcontent-ng-c4279136063 class="rect-sub">Weekly AI insights, tools &amp; tutorials</div><div _ngcontent-ng-c4279136063 class="rect-cta">Subscribe Free</div></div></div></div><!----></div></app-ad-slot><div _ngcontent-ng-c1079170881 class="ad-spacer"></div><app-ad-slot _ngcontent-ng-c1079170881 type="rectangle" slotid="right-rect-2" _nghost-ng-c4279136063 ngh="4"><div _ngcontent-ng-c4279136063 role="complementary" class="ad-slot ad-slot--rectangle" aria-label="Advertisement"><div _ngcontent-ng-c4279136063 class="ad-label"><span _ngcontent-ng-c4279136063 class="ad-label-text">Advertisement</span><!----></div><!----><!----><!----><div _ngcontent-ng-c4279136063 class="rectangle-container"><div _ngcontent-ng-c4279136063 class="rectangle-mock"><div _ngcontent-ng-c4279136063 aria-hidden="true" class="rect-visual">📊</div><div _ngcontent-ng-c4279136063 class="rect-text"><div _ngcontent-ng-c4279136063 class="rect-title">AI Tools Newsletter</div><div _ngcontent-ng-c4279136063 class="rect-sub">Weekly AI insights, tools &amp; tutorials</div><div _ngcontent-ng-c4279136063 class="rect-cta">Subscribe Free</div></div></div></div><!----></div></app-ad-slot></div></aside></div><app-footer _ngcontent-ng-c1079170881 _nghost-ng-c4109311077 ngh="5"><footer _ngcontent-ng-c4109311077 role="contentinfo" class="site-footer"><div _ngcontent-ng-c4109311077 class="footer-inner"><div _ngcontent-ng-c4109311077 class="footer-brand"><a _ngcontent-ng-c4109311077 routerlink="/" aria-label="TutorialChamp Home" class="footer-logo" href="/"><svg _ngcontent-ng-c4109311077="" viewBox="0 0 230 42" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="footer-logo-svg"><defs _ngcontent-ng-c4109311077=""><linearGradient _ngcontent-ng-c4109311077="" id="flg1" x1="0%" y1="0%" x2="100%" y2="100%"><stop _ngcontent-ng-c4109311077="" offset="0%" stop-color="#00E5CC"/><stop _ngcontent-ng-c4109311077="" offset="100%" stop-color="#7C5CFC"/></linearGradient><linearGradient _ngcontent-ng-c4109311077="" id="flg2" x1="0%" y1="0%" x2="100%" y2="100%"><stop _ngcontent-ng-c4109311077="" offset="0%" stop-color="#00E5CC"/><stop _ngcontent-ng-c4109311077="" offset="50%" stop-color="#7C5CFC"/><stop _ngcontent-ng-c4109311077="" offset="100%" stop-color="#FF6B6B"/></linearGradient></defs><polygon _ngcontent-ng-c4109311077="" points="21,2 35,10 35,26 21,34 7,26 7,10" fill="none" stroke="url(#flg1)" stroke-width="2"/><circle _ngcontent-ng-c4109311077="" cx="21" cy="18" r="3.5" fill="url(#flg1)"/><line _ngcontent-ng-c4109311077="" x1="21" y1="4" x2="21" y2="14.5" stroke="#00E5CC" stroke-width="1.5"/><line _ngcontent-ng-c4109311077="" x1="21" y1="21.5" x2="21" y2="32" stroke="#7C5CFC" stroke-width="1.5"/><line _ngcontent-ng-c4109311077="" x1="9" y1="12" x2="17.5" y2="16" stroke="#00E5CC" stroke-width="1.5"/><line _ngcontent-ng-c4109311077="" x1="24.5" y1="20" x2="33" y2="24" stroke="#7C5CFC" stroke-width="1.5"/><line _ngcontent-ng-c4109311077="" x1="33" y1="12" x2="24.5" y2="16" stroke="#00E5CC" stroke-width="1.5"/><line _ngcontent-ng-c4109311077="" x1="17.5" y1="20" x2="9" y2="24" stroke="#7C5CFC" stroke-width="1.5"/><circle _ngcontent-ng-c4109311077="" cx="21" cy="4" r="2" fill="#00E5CC"/><circle _ngcontent-ng-c4109311077="" cx="9" cy="12" r="2" fill="#00E5CC"/><circle _ngcontent-ng-c4109311077="" cx="33" cy="12" r="2" fill="#00E5CC"/><circle _ngcontent-ng-c4109311077="" cx="21" cy="32" r="2" fill="#7C5CFC"/><circle _ngcontent-ng-c4109311077="" cx="9" cy="24" r="2" fill="#7C5CFC"/><circle _ngcontent-ng-c4109311077="" cx="33" cy="24" r="2" fill="#7C5CFC"/><text _ngcontent-ng-c4109311077="" x="44" y="25" font-family="Syne,sans-serif" font-weight="800" font-size="17" fill="url(#flg2)">Tutorial</text><text _ngcontent-ng-c4109311077="" x="113" y="25" font-family="Syne,sans-serif" font-weight="800" font-size="17" fill="#E2E8F0">Champ</text><text _ngcontent-ng-c4109311077="" x="44" y="36" font-family="Inter,sans-serif" font-size="7" fill="#4A5568" letter-spacing="1.5">AI LEARNING PLATFORM</text></svg></a><p _ngcontent-ng-c4109311077 class="footer-tagline"> Master Artificial Intelligence end-to-end — Python, ML, Deep Learning, NLP, LLMs, and MLOps. Free tutorials with hands-on exercises and interview prep. </p><div _ngcontent-ng-c4109311077 class="footer-contact"><span _ngcontent-ng-c4109311077 aria-hidden="true" class="contact-icon">✉</span><a _ngcontent-ng-c4109311077 href="mailto:support.tutorialchamp@gmail.com" class="contact-email"> support.tutorialchamp@gmail.com </a></div><div _ngcontent-ng-c4109311077 aria-label="Social media links" class="footer-social"><a _ngcontent-ng-c4109311077 href="https://twitter.com/TutorialChamp" target="_blank" rel="noopener noreferrer" aria-label="Follow TutorialChamp on Twitter" class="social-link"> 𝕏 Twitter </a><a _ngcontent-ng-c4109311077 href="https://github.com/tutorialchamp" target="_blank" rel="noopener noreferrer" aria-label="TutorialChamp on GitHub" class="social-link"> ⌥ GitHub </a></div></div><div _ngcontent-ng-c4109311077 class="footer-col"><h3 _ngcontent-ng-c4109311077 class="footer-heading">Tutorials</h3><nav _ngcontent-ng-c4109311077 aria-label="Tutorial links"><a _ngcontent-ng-c4109311077 routerlink="/tutorials/python-ai" href="/tutorials/python-ai">🐍 Python for AI</a><a _ngcontent-ng-c4109311077 routerlink="/tutorials/ml-fundamentals" href="/tutorials/ml-fundamentals">🧠 ML Fundamentals</a><a _ngcontent-ng-c4109311077 routerlink="/tutorials/deep-learning" href="/tutorials/deep-learning">🔬 Deep Learning</a><a _ngcontent-ng-c4109311077 routerlink="/tutorials/nlp-llms" href="/tutorials/nlp-llms">💬 NLP &amp; LLMs</a><a _ngcontent-ng-c4109311077 routerlink="/tutorials/mlops" href="/tutorials/mlops">⚙️ MLOps</a></nav></div><div _ngcontent-ng-c4109311077 class="footer-col"><h3 _ngcontent-ng-c4109311077 class="footer-heading">Resources</h3><nav _ngcontent-ng-c4109311077 aria-label="Resource links"><a _ngcontent-ng-c4109311077 routerlink="/interview-prep" href="/interview-prep">🎯 Interview Prep</a><a _ngcontent-ng-c4109311077 routerlink="/tutorials" href="/tutorials">📚 All Tutorials</a><a _ngcontent-ng-c4109311077 href="https://tutorialchamp.com/sitemap.xml" target="_blank" rel="noopener">🗺 Sitemap</a><a _ngcontent-ng-c4109311077 href="mailto:support.tutorialchamp@gmail.com">📧 Contact Support</a></nav></div><div _ngcontent-ng-c4109311077 class="footer-col"><h3 _ngcontent-ng-c4109311077 class="footer-heading">Contact Us</h3><div _ngcontent-ng-c4109311077 class="footer-contact-block"><div _ngcontent-ng-c4109311077 class="contact-row"><span _ngcontent-ng-c4109311077 class="cr-label">Support</span><a _ngcontent-ng-c4109311077 href="mailto:support.tutorialchamp@gmail.com" class="cr-value email-link"> support.tutorialchamp@gmail.com </a></div><div _ngcontent-ng-c4109311077 class="contact-row"><span _ngcontent-ng-c4109311077 class="cr-label">Website</span><a _ngcontent-ng-c4109311077 href="https://tutorialchamp.com" target="_blank" rel="noopener" class="cr-value"> tutorialchamp.com </a></div><div _ngcontent-ng-c4109311077 class="contact-row"><span _ngcontent-ng-c4109311077 class="cr-label">Twitter</span><a _ngcontent-ng-c4109311077 href="https://twitter.com/TutorialChamp" target="_blank" rel="noopener noreferrer" class="cr-value"> @TutorialChamp </a></div></div></div></div><div _ngcontent-ng-c4109311077 class="footer-bottom"><div _ngcontent-ng-c4109311077 class="footer-bottom-inner"><span _ngcontent-ng-c4109311077 class="copyright"> © 2026 TutorialChamp. All rights reserved. </span><span _ngcontent-ng-c4109311077 class="footer-bottom-links"><a _ngcontent-ng-c4109311077 href="mailto:support.tutorialchamp@gmail.com">Support</a><span _ngcontent-ng-c4109311077 aria-hidden="true" class="sep">·</span><a _ngcontent-ng-c4109311077 href="https://tutorialchamp.com/privacy" target="_blank" rel="noopener">Privacy</a><span _ngcontent-ng-c4109311077 aria-hidden="true" class="sep">·</span><a _ngcontent-ng-c4109311077 href="https://tutorialchamp.com/terms" target="_blank" rel="noopener">Terms</a></span></div></div></footer></app-footer></div></app-shell><!----></app-root>

  <!-- Noscript fallback -->
  <noscript>
    <style>
      .noscript { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; padding: 40px; text-align: center; background: #0A0E1A; color: #8892A4; font-family: sans-serif; }
      .noscript h1 { color: #00E5CC; font-size: 32px; margin-bottom: 16px; }
    </style>
    <div class="noscript">
      <h1>TutorialChamp</h1>
      <p>This site requires JavaScript. Please enable it in your browser settings.</p>
      <p>TutorialChamp is a free AI learning platform covering Python, Machine Learning, Deep Learning, NLP, LLMs, and MLOps.</p>
    </div>
  </noscript>
<script src="polyfills-FFHMD2TL.js" type="module"></script><script src="main-F4SBBU7T.js" type="module"></script>

<script id="ng-state" type="application/json">{"__nghData__":[{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[],"5":[],"6":[],"7":[{"i":"t10","r":1}],"8":[]}},{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[],"5":[],"6":[{"i":"t9","r":1}],"7":[],"8":[]}},{"t":{"67":"t12","74":"t14"},"c":{"67":[{"i":"t12","r":1,"t":{"24":"t13"},"c":{"24":[]},"x":5}],"74":[{"i":"t14","r":1,"x":6}]}},{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[{"i":"t7","r":1}],"5":[{"i":"t8","r":1}],"6":[],"7":[],"8":[]}},{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[],"5":[],"6":[],"7":[],"8":[{"i":"t11","r":1}]}},{},{"t":{"42":"t0","52":"t1","53":"t2","54":"t3","57":"t4","62":"t5"},"c":{"42":[],"52":[{"i":"t1","r":1}],"53":[],"54":[],"57":[],"62":[{"i":"t5","r":1,"t":{"10":"t6"},"c":{"10":[]},"x":5}],"78":[{"i":"c3306783236","r":1}]}},{"c":{"0":[{"i":"c1079170881","r":1}]}}]}</script><script id="ng-state" type="application/json">{"__nghData__":[{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[],"5":[],"6":[],"7":[{"i":"t10","r":1}],"8":[]}},{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[],"5":[],"6":[{"i":"t9","r":1}],"7":[],"8":[]}},{"t":{"67":"t12","74":"t14"},"c":{"67":[{"i":"t12","r":1,"t":{"24":"t13"},"c":{"24":[]},"x":5}],"74":[{"i":"t14","r":1,"x":6}]}},{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[{"i":"t7","r":1}],"5":[{"i":"t8","r":1}],"6":[],"7":[],"8":[]}},{"t":{"4":"t7","5":"t8","6":"t9","7":"t10","8":"t11"},"c":{"4":[],"5":[],"6":[],"7":[],"8":[{"i":"t11","r":1}]}},{},{"t":{"42":"t0","52":"t1","53":"t2","54":"t3","57":"t4","62":"t5"},"c":{"42":[],"52":[{"i":"t1","r":1}],"53":[],"54":[],"57":[],"62":[{"i":"t5","r":1,"t":{"10":"t6"},"c":{"10":[]},"x":5}],"78":[{"i":"c3306783236","r":1}]}},{"c":{"0":[{"i":"c1079170881","r":1}]}}]}</script></body></html>