


    :root{
      --bg:#0a0a12;
      --bg2:#0f0f1a;
      --bg3:#141422;
      --bg4:#1a1a2e;
      --surface:rgba(255,255,255,.03);
      --surface2:rgba(255,255,255,.06);
      --border:rgba(255,255,255,.07);
      --border2:rgba(255,255,255,.12);
      --text:#c8cad8;
      --text2:#8890a6;
      --text3:#555a70;
      --cyan:#00d2ff;
      --cyan-soft:rgba(0,210,255,.12);
      --cyan-glow:rgba(0,210,255,.25);
      --lime:#a3ff12;
      --yellow:#f5c518;
      --yellow-soft:rgba(245,197,24,.12);
      --red:#ff4757;
      --violet:#a78bfa;
      --pink:#f472b6;
      --angular:#ff4081;
      --angular-bg:rgba(221,0,49,.12);
      --angular-border:rgba(221,0,49,.25);
      --font:'Outfit',sans-serif;
      --mono:'JetBrains Mono','Consolas',monospace;
      --radius:12px;
    }

    *,*::before,*::after{
      box-sizing:border-box;
      margin:0;
      padding:0;
    }

    html{
      scroll-behavior:smooth;
      background:var(--bg);
      transition:background-color .25s ease;
    }

    body{
      min-height:100vh;
      font-family:var(--font);
      background:var(--bg);
      color:var(--text);
      line-height:1.6;
      -webkit-font-smoothing:antialiased;
      transition:background-color .25s ease,color .25s ease;
    }

    ::selection{
      background:var(--angular);
      color:#fff;
    }

    ::-webkit-scrollbar{
      width:5px;
    }

    ::-webkit-scrollbar-track{
      background:transparent;
    }

    ::-webkit-scrollbar-thumb{
      background:rgba(255,255,255,.1);
      border-radius:3px;
    }

    a{
      color:var(--cyan);
      text-decoration:none;
    }

    a:hover{
      text-decoration:underline;
    }

    /* TOPBAR */
    .topbar{
      position:fixed;
      top:0;
      left:0;
      right:0;
      z-index:100;
      display:flex;
      align-items:center;
      justify-content:space-between;
      padding:0 24px;
      height:52px;
      background:rgba(10,10,18,.92);
      backdrop-filter:blur(16px);
      border-bottom:1px solid var(--border);
      transition:background-color .25s ease,border-color .25s ease;
    }

    .topbar-left{
      display:flex;
      align-items:center;
      gap:14px;
    }

    .topbar-logo{
      font-family:Syne,sans-serif;
      font-size:1rem;
      font-weight:800;
      color:#fff;
      text-decoration:none;
      display:flex;
      align-items:center;
      gap:8px;
    }

    .topbar-logo:hover{
      color:var(--cyan);
      text-decoration:none;
    }

    .topbar-logo .dot{
      width:8px;
      height:8px;
      border-radius:50%;
      background:var(--cyan);
      box-shadow:0 0 8px var(--cyan-glow);
    }

    .topbar-sep{
      width:1px;
      height:18px;
      background:var(--border2);
    }

    .topbar-page{
      font-size:.74rem;
      font-weight:600;
      color:var(--angular);
    }

    .topbar-right{
      display:flex;
      align-items:center;
      gap:10px;
    }

    .back-link{
      font-size:.72rem;
      font-weight:500;
      color:var(--text2);
      padding:5px 14px;
      border-radius:8px;
      border:1px solid var(--border);
      transition:all .2s;
    }

    .back-link:hover{
      color:var(--cyan);
      border-color:rgba(0,210,255,.25);
      background:rgba(0,210,255,.04);
      text-decoration:none;
    }

    /* HERO */
    .hero{
      padding:90px 24px 40px;
      text-align:center;
      position:relative;
      overflow:hidden;
    }

    .hero::before{
      content:'';
      position:absolute;
      top:52px;
      left:50%;
      transform:translateX(-50%);
      width:600px;
      height:300px;
      background:radial-gradient(ellipse,rgba(221,0,49,.08),transparent 70%);
      pointer-events:none;
    }

    .hero-icon{
      font-size:3.5rem;
      margin-bottom:12px;
      display:block;
    }

    .hero h1{
      font-family:Syne,sans-serif;
      font-size:2.2rem;
      font-weight:800;
      color:#fff;
      margin-bottom:6px;
    }

    .hero h1 span{
      background:linear-gradient(90deg,var(--angular),#ff80ab);
      -webkit-background-clip:text;
      -webkit-text-fill-color:transparent;
      background-clip:text;
    }

    .hero-sub{
      font-size:.95rem;
      color:var(--text2);
      max-width:600px;
      margin:0 auto 20px;
    }

    .hero-stats{
      display:flex;
      justify-content:center;
      gap:32px;
      flex-wrap:wrap;
    }

    .hero-stat{
      text-align:center;
    }

    .hero-stat .num{
      font-family:var(--mono);
      font-size:1.3rem;
      font-weight:700;
      color:var(--angular);
      display:block;
    }

    .hero-stat .label{
      font-size:.68rem;
      color:var(--text3);
      text-transform:uppercase;
      letter-spacing:.08em;
    }

    /* LAYOUT */
    .page-wrap{
      display:flex;
      max-width:1200px;
      margin:0 auto;
      padding:0 20px;
      gap:0;
    }

    .sidebar{
      position:sticky;
      top:64px;
      width:220px;
      flex-shrink:0;
      height:calc(100vh - 64px);
      overflow-y:auto;
      padding:16px 0 40px;
      scrollbar-width:thin;
    }

    .main{
      flex:1;
      min-width:0;
      padding:24px 0 60px 32px;
    }

    .sidebar-nav b{
      display:block;
      font-size:.6rem;
      font-weight:700;
      text-transform:uppercase;
      letter-spacing:.12em;
      color:var(--text3);
      padding:16px 0 6px;
      margin-top:4px;
    }

    .sidebar-nav a{
      display:flex;
      align-items:center;
      gap:8px;
      padding:6px 12px;
      font-size:.76rem;
      color:var(--text2);
      border-radius:8px;
      transition:all .12s;
      text-decoration:none;
      margin-bottom:1px;
    }

    .sidebar-nav a:hover{
      background:var(--surface2);
      color:var(--text);
    }

    .sidebar-nav a.active{
      background:var(--angular-bg);
      color:var(--angular);
      border:1px solid var(--angular-border);
    }

    .sidebar-nav .count{
      margin-left:auto;
      font-size:.6rem;
      font-family:var(--mono);
      color:var(--text3);
    }

    /* SECTIONS */
    .section{
      margin-bottom:48px;
    }

    .section-header{
      display:flex;
      align-items:center;
      gap:12px;
      margin-bottom:6px;
      flex-wrap:wrap;
    }

    .section-header h2{
      font-family:Syne,sans-serif;
      font-size:1.3rem;
      font-weight:800;
      color:#fff;
    }

    .section-icon{
      font-size:1.1rem;
    }

    .badge-section{
      display:inline-block;
      padding:3px 10px;
      font-size:.62rem;
      font-weight:700;
      letter-spacing:.06em;
      text-transform:uppercase;
      border-radius:999px;
      background:var(--angular-bg);
      color:var(--angular);
      border:1px solid var(--angular-border);
    }

    .section-intro{
      font-size:.86rem;
      color:var(--text2);
      line-height:1.6;
      margin:0 0 20px;
      padding:0;
    }

    .section-intro strong{
      color:rgba(255,255,255,.8);
    }

    .section-intro code{
      background:var(--angular-bg);
      color:var(--angular);
      padding:1px 5px;
      border-radius:4px;
      font-family:var(--mono);
      font-size:.78rem;
    }

    /* CARDS */
    .el-card{
      background:var(--bg2);
      border:1px solid var(--border);
      border-radius:var(--radius);
      margin-bottom:10px;
      overflow:hidden;
      transition:border-color .2s,background-color .25s ease;
    }

    .el-card:hover{
      border-color:var(--border2);
    }

    .el-card-header{
      display:flex;
      align-items:center;
      gap:10px;
      padding:12px 16px;
      cursor:pointer;
      user-select:none;
      transition:background .15s;
    }

    .el-card-header:hover{
      background:var(--surface2);
    }

    .el-tag{
      font-size:.58rem;
      font-weight:700;
      padding:2px 8px;
      border-radius:5px;
      text-transform:uppercase;
      letter-spacing:.04em;
      flex-shrink:0;
    }

    .el-tag.angular{
      background:var(--angular-bg);
      color:var(--angular);
      border:1px solid var(--angular-border);
    }

    .el-tag.ts{
      background:rgba(49,120,198,.15);
      color:#3178c6;
      border:1px solid rgba(49,120,198,.3);
    }

    .el-tag.rxjs{
      background:rgba(207,52,118,.15);
      color:#cf3476;
      border:1px solid rgba(207,52,118,.3);
    }

    .el-name{
      font-size:.86rem;
      font-weight:700;
      color:#fff;
      flex-shrink:0;
    }

    .el-brief{
      font-size:.74rem;
      color:var(--text3);
      flex:1;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }

    .el-toggle{
      font-size:.55rem;
      color:var(--text3);
      transition:transform .2s;
      flex-shrink:0;
    }

    .el-card.open .el-toggle{
      transform:rotate(180deg);
    }

    .el-body{
      display:none;
      border-top:1px solid var(--border);
    }

    .el-card.open .el-body{
      display:block;
    }

    .el-body-inner{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:0;
    }

    .el-explanation{
      padding:16px;
      font-size:.82rem;
      color:var(--text2);
      line-height:1.65;
      border-right:1px solid var(--border);
    }

    .el-explanation strong{
      color:rgba(255,255,255,.85);
    }

    .el-explanation code{
      background:var(--angular-bg);
      color:var(--angular);
      padding:1px 4px;
      border-radius:3px;
      font-family:var(--mono);
      font-size:.74rem;
    }

    .el-code{
      padding:0;
      overflow-x:auto;
      background:var(--bg3);
    }

    .el-code pre{
      margin:0;
      padding:14px;
      font-family:var(--mono);
      font-size:.74rem;
      line-height:1.6;
      color:var(--text);
      white-space:pre;
      overflow-x:auto;
    }

    .el-code code{
      font-family:inherit;
      background:none;
      color:inherit;
      padding:0;
    }

    /* FOOTER */
    .footer{
      text-align:center;
      padding:32px 20px;
      border-top:1px solid var(--border);
      font-size:.72rem;
      color:var(--text3);
    }

    .footer a{
      color:var(--cyan);
    }

    /* RESPONSIVE */
    @media(max-width:900px){
      .sidebar{
        display:none;
      }

      .main{
        padding:20px 0;
      }

      .el-body-inner{
        grid-template-columns:1fr;
      }

      .el-explanation{
        border-right:none;
        border-bottom:1px solid var(--border);
      }
    }

    @media(max-width:600px){
      .hero h1{
        font-size:1.5rem;
      }

      .hero-sub{
        font-size:.82rem;
      }

      .topbar{
        padding:0 12px;
      }

      .topbar-logo span:last-child{
        display:none;
      }

      .section-header h2{
        font-size:1.1rem;
      }

      .el-card-header{
        padding:10px 12px;
        gap:8px;
      }

      .el-name{
        font-size:.78rem;
      }

      .el-brief{
        display:none;
      }

      .el-explanation{
        padding:12px;
        font-size:.78rem;
      }

      .el-code pre{
        font-size:.68rem;
        padding:10px;
      }
    }

    /* LIGHT THEME */
    html.light{
      --bg:#f5f6fa;
      --bg2:#ffffff;
      --bg3:#eef0f6;
      --bg4:#e2e5f0;
      --surface:rgba(0,0,0,.02);
      --surface2:rgba(0,0,0,.04);
      --border:rgba(0,0,0,.08);
      --border2:rgba(0,0,0,.12);
      --text:#1a1d2e;
      --text2:#4a5068;
      --text3:#7a7f96;
      --cyan:#0091b3;
      --cyan-soft:rgba(0,145,179,.1);
      --cyan-glow:rgba(0,145,179,.2);
      --angular:#d50032;
      --angular-bg:rgba(213,0,50,.08);
      --angular-border:rgba(213,0,50,.18);
      --yellow:#b38f00;
      --yellow-soft:rgba(179,143,0,.1);
      --red:#d32f2f;
      --lime:#2e7d00;
      --violet:#7c3aed;
      --pink:#c2185b;
    }

    html.light body{
      -webkit-font-smoothing:auto;
    }

    html.light ::selection{
      background:var(--angular);
      color:#fff;
    }

    html.light ::-webkit-scrollbar-thumb{
      background:rgba(0,0,0,.12);
    }

    html.light a{
      color:var(--cyan);
    }

    html.light .topbar{
      background:rgba(255,255,255,.92);
      border-bottom-color:var(--border);
    }

    html.light .topbar-logo{
      color:var(--text);
    }

    html.light .topbar-logo:hover{
      color:var(--cyan);
    }

    html.light .topbar-logo .dot{
      box-shadow:0 0 6px rgba(0,145,179,.3);
    }

    html.light .hero::before{
      background:radial-gradient(ellipse,rgba(213,0,50,.05),transparent 70%);
    }

    html.light .hero h1{
      color:var(--text);
    }

    html.light .el-card{
      background:var(--bg2);
      box-shadow:0 1px 3px rgba(0,0,0,.04);
    }

    html.light .el-name{
      color:var(--text);
    }

    html.light .el-explanation strong{
      color:var(--text);
    }

    html.light .el-code{
      background:var(--bg3);
    }

    html.light .el-code pre{
      color:#2d3250;
    }

    html.light .section-header h2{
      color:var(--text);
    }

    html.light .hero-stat .num{
      color:var(--angular);
    }

    html.light .sidebar-nav a.active{
      background:var(--angular-bg);
      color:var(--angular);
    }

    html.light .back-link{
      color:var(--text2);
      border-color:var(--border);
    }

    html.light .back-link:hover{
      color:var(--cyan);
      border-color:rgba(0,145,179,.3);
      background:rgba(0,145,179,.04);
    }

    html.light .footer{
      border-top-color:var(--border);
    }

    .theme-toggle{
      width:34px;
      height:34px;
      border-radius:50%;
      border:1px solid var(--border);
      background:var(--surface2);
      color:var(--text2);
      font-size:.95rem;
      cursor:pointer;
      display:grid;
      place-items:center;
      transition:all .2s;
      flex-shrink:0;
      line-height:1;
      padding:0;
    }

    .theme-toggle:hover{
      border-color:var(--border2);
      color:var(--text);
      background:var(--surface);
    }
